phorge-ts 0.3.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +2 -0
- package/README.md +134 -0
- package/dist/client.d.ts +14 -14
- package/dist/client.d.ts.map +1 -1
- package/dist/client.e2e.test.d.ts +2 -0
- package/dist/client.e2e.test.d.ts.map +1 -0
- package/dist/client.e2e.test.js +103 -0
- package/dist/client.e2e.test.js.map +1 -0
- package/dist/client.js +28 -38
- package/dist/client.js.map +1 -1
- package/dist/client.test.js +14 -14
- package/dist/client.test.js.map +1 -1
- package/dist/dev.d.ts +2 -0
- package/dist/dev.d.ts.map +1 -0
- package/{src/test.ts → dist/dev.js} +7 -2
- package/dist/dev.js.map +1 -0
- package/dist/models/maniphest.d.ts +40 -47
- package/dist/models/maniphest.d.ts.map +1 -1
- package/dist/models/maniphest.js +60 -61
- package/dist/models/maniphest.js.map +1 -1
- package/dist/models/project.d.ts +25 -25
- package/dist/models/project.d.ts.map +1 -1
- package/dist/models/project.js +37 -37
- package/dist/models/project.js.map +1 -1
- package/dist/models/transaction.d.ts +4 -4
- package/dist/models/transaction.d.ts.map +1 -1
- package/dist/models/transaction.js +2 -2
- package/dist/models/transaction.js.map +1 -1
- package/dist/models/user.d.ts +4 -4
- package/dist/models/user.d.ts.map +1 -1
- package/dist/models/user.js +2 -2
- package/dist/models/user.js.map +1 -1
- package/dist/test.js +5 -1
- package/dist/test.js.map +1 -1
- package/dist/utils.d.ts +3 -3
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +3 -10
- package/dist/utils.js.map +1 -1
- package/package.json +5 -3
- package/src/client.e2e.test.ts +122 -0
- package/src/client.test.ts +17 -17
- package/src/client.ts +37 -47
- package/src/models/maniphest.ts +68 -72
- package/src/models/project.ts +44 -44
- package/src/models/transaction.ts +4 -4
- package/src/models/user.ts +4 -4
- package/src/utils.ts +4 -11
package/.env.example
ADDED
package/README.md
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Phorge-TS
|
|
2
|
+
|
|
3
|
+
A strictly typed TypeScript client for the Phorge (and Phabricator) Conduit API. This library uses [Zod](https://github.com/colinhacks/zod) to validate API responses, ensuring runtime type safety.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Strict Typing**: All API responses are validated against Zod schemas.
|
|
8
|
+
- **Promise-based**: Fully async/await compatible.
|
|
9
|
+
- **Modular**: separate models for Projects, Maniphest (Tasks), Users, and Transactions.
|
|
10
|
+
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install phorge-ts
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
### Initialization
|
|
20
|
+
|
|
21
|
+
Import the `Client` and initialize it with your Phorge instance URI and API token.
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import { Client } from 'phorge-ts';
|
|
25
|
+
|
|
26
|
+
const client = new Client('https://phorge.example.com', 'api-token-...');
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Searching for Tasks (Maniphest)
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
import { Client } from 'phorge-ts';
|
|
33
|
+
|
|
34
|
+
const client = new Client('https://phorge.example.com', 'api-token-...');
|
|
35
|
+
|
|
36
|
+
async function getOpenTasks() {
|
|
37
|
+
try {
|
|
38
|
+
const tasks = await client.searchManiphest({
|
|
39
|
+
constraints: {
|
|
40
|
+
statuses: ['open'],
|
|
41
|
+
},
|
|
42
|
+
limit: 10,
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
for (const task of tasks) {
|
|
46
|
+
console.log(`#${task.id}: ${task.fields.name}`);
|
|
47
|
+
}
|
|
48
|
+
} catch (error) {
|
|
49
|
+
console.error('Failed to search tasks:', error);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
getOpenTasks();
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Creating a Task
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
import { Client } from 'phorge-ts';
|
|
60
|
+
|
|
61
|
+
const client = new Client('https://phorge.example.com', 'api-token-...');
|
|
62
|
+
|
|
63
|
+
async function createNewTask() {
|
|
64
|
+
try {
|
|
65
|
+
const newTask = await client.createManiphest([
|
|
66
|
+
{ type: 'title', value: 'New Task Title' },
|
|
67
|
+
{ type: 'description', value: 'Description of the new task.' },
|
|
68
|
+
{ type: 'priority', value: 80 }, // High priority
|
|
69
|
+
]);
|
|
70
|
+
|
|
71
|
+
console.log(`Created task with PHID: ${newTask.phid}`);
|
|
72
|
+
} catch (error) {
|
|
73
|
+
console.error('Failed to create task:', error);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
createNewTask();
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Working with Projects
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
import { Client } from 'phorge-ts';
|
|
84
|
+
|
|
85
|
+
const client = new Client('https://phorge.example.com', 'api-token-...');
|
|
86
|
+
|
|
87
|
+
async function searchProjects() {
|
|
88
|
+
const projects = await client.searchProject({
|
|
89
|
+
queryKey: 'active',
|
|
90
|
+
});
|
|
91
|
+
console.log(projects);
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Available APIs
|
|
96
|
+
|
|
97
|
+
The client currently supports the following methods:
|
|
98
|
+
|
|
99
|
+
- **Maniphest (Tasks)**
|
|
100
|
+
- `searchManiphest(options?)`
|
|
101
|
+
- `createManiphest(transactions)`
|
|
102
|
+
- `updateManiphest(phid, transactions)`
|
|
103
|
+
- `searchManiphestPriority()`
|
|
104
|
+
- `searchManiphestStatus()`
|
|
105
|
+
- **Project**
|
|
106
|
+
- `searchProject(options?)`
|
|
107
|
+
- `createProject(transactions)`
|
|
108
|
+
- `updateProject(phid, transactions)`
|
|
109
|
+
- **User**
|
|
110
|
+
- `searchUser(options?)`
|
|
111
|
+
- **Transaction**
|
|
112
|
+
- `searchTransaction(options?)`
|
|
113
|
+
|
|
114
|
+
## Development
|
|
115
|
+
|
|
116
|
+
### Build
|
|
117
|
+
|
|
118
|
+
To compile the TypeScript code:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
npm run build
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Test
|
|
125
|
+
|
|
126
|
+
To run the tests using Vitest:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
npm run test
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## License
|
|
133
|
+
|
|
134
|
+
Apache-2.0
|
package/dist/client.d.ts
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ManiphestSearchOptions, ManiphestTask, ManiphestStatus, ManiphestPriority } from "./models/maniphest.js";
|
|
2
2
|
import { CreateObjectResult, type PHID } from "./models/phorge.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import type {
|
|
3
|
+
import { Project, ProjectSearchOptions, ProjectUpdateTransaction } from "./models/project.js";
|
|
4
|
+
import { Transaction, TransactionSearchOptions } from "./models/transaction.js";
|
|
5
|
+
import { User, UserSearchOptions } from "./models/user.js";
|
|
6
|
+
import type { ManiphestUpdateTransaction } from "./models/maniphest.js";
|
|
7
7
|
export declare class Client {
|
|
8
8
|
private uri;
|
|
9
9
|
private token;
|
|
10
10
|
constructor(uri: string, token: string);
|
|
11
11
|
private call;
|
|
12
|
-
searchProject(options?: ProjectSearchOptions): Promise<
|
|
13
|
-
|
|
14
|
-
createProject(transactions:
|
|
12
|
+
searchProject(options?: ProjectSearchOptions): Promise<Project[]>;
|
|
13
|
+
updateProject(phid: PHID<"PROJ">, transactions: ProjectUpdateTransaction[]): Promise<CreateObjectResult>;
|
|
14
|
+
createProject(transactions: ProjectUpdateTransaction[]): Promise<CreateObjectResult>;
|
|
15
15
|
searchManiphestPriority(): Promise<ManiphestPriority[]>;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
searchUser(options?: UserSearchOptions): Promise<
|
|
20
|
-
searchTransaction(options?: TransactionSearchOptions): Promise<
|
|
21
|
-
searchManiphestStatus(): Promise<
|
|
16
|
+
searchManiphest(options?: ManiphestSearchOptions): Promise<ManiphestTask[]>;
|
|
17
|
+
createManiphest(transactions: ManiphestUpdateTransaction[]): Promise<CreateObjectResult>;
|
|
18
|
+
updateManiphest(phid: PHID<"TASK">, transactions: ManiphestUpdateTransaction[]): Promise<CreateObjectResult>;
|
|
19
|
+
searchUser(options?: UserSearchOptions): Promise<User[]>;
|
|
20
|
+
searchTransaction(options?: TransactionSearchOptions): Promise<Transaction[]>;
|
|
21
|
+
searchManiphestStatus(): Promise<ManiphestStatus[]>;
|
|
22
22
|
}
|
|
23
23
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAClH,OAAO,EAAe,kBAAkB,EAAE,KAAK,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAI3D,OAAO,KAAK,EAA2B,0BAA0B,EAA2F,MAAM,uBAAuB,CAAC;AAK1L,qBAAa,MAAM;IACH,OAAO,CAAC,GAAG;IAAU,OAAO,CAAC,KAAK;gBAA1B,GAAG,EAAE,MAAM,EAAU,KAAK,EAAE,MAAM;YAExC,IAAI;IAYZ,aAAa,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA0CjE,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,wBAAwB,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAcxG,aAAa,CAAC,YAAY,EAAE,wBAAwB,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAapF,uBAAuB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAavD,eAAe,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA2C3E,eAAe,CAAC,YAAY,EAAE,0BAA0B,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAcxF,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,0BAA0B,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAe5G,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAqCxD,iBAAiB,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAgC7E,qBAAqB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;CAY5D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.e2e.test.d.ts","sourceRoot":"","sources":["../src/client.e2e.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { describe, test, expect } from "vitest";
|
|
2
|
+
import { Client } from "./client.js";
|
|
3
|
+
import * as dotenv from "dotenv";
|
|
4
|
+
import crypto from "node:crypto";
|
|
5
|
+
dotenv.config();
|
|
6
|
+
const uri = process.env.PHORGE_URI;
|
|
7
|
+
const token = process.env.PHORGE_TOKEN;
|
|
8
|
+
describe("Client E2E", () => {
|
|
9
|
+
if (!uri || !token) {
|
|
10
|
+
test.skip("PHORGE_URI and PHORGE_TOKEN must be set for E2E tests", () => { });
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const client = new Client(uri, token);
|
|
14
|
+
const hash = crypto.randomBytes(4).toString("hex");
|
|
15
|
+
const projectName = `Test Project ${hash}`;
|
|
16
|
+
const taskTitle = `Test Task ${hash}`;
|
|
17
|
+
let projectPHID;
|
|
18
|
+
let taskPHID;
|
|
19
|
+
test("should create a project", async () => {
|
|
20
|
+
const result = await client.createProject([
|
|
21
|
+
{ type: "name", value: projectName },
|
|
22
|
+
{ type: "description", value: "E2E Test Project" }
|
|
23
|
+
]);
|
|
24
|
+
expect(result.phid).toBeDefined();
|
|
25
|
+
projectPHID = result.phid;
|
|
26
|
+
const projects = await client.searchProject({
|
|
27
|
+
constraints: { phids: [projectPHID] }
|
|
28
|
+
});
|
|
29
|
+
expect(projects.length).toBe(1);
|
|
30
|
+
expect(projects[0].fields.name).toBe(projectName);
|
|
31
|
+
});
|
|
32
|
+
test("should update a project", async () => {
|
|
33
|
+
const updatedName = `${projectName} Updated`;
|
|
34
|
+
await client.updateProject(projectPHID, [
|
|
35
|
+
{ type: "name", value: updatedName }
|
|
36
|
+
]);
|
|
37
|
+
const projects = await client.searchProject({
|
|
38
|
+
constraints: { phids: [projectPHID] }
|
|
39
|
+
});
|
|
40
|
+
expect(projects[0].fields.name).toBe(updatedName);
|
|
41
|
+
});
|
|
42
|
+
test("should create a task", async () => {
|
|
43
|
+
const result = await client.createManiphest([
|
|
44
|
+
{ type: "title", value: taskTitle },
|
|
45
|
+
{ type: "description", value: "E2E Test Task" },
|
|
46
|
+
{ type: "projects.add", value: [projectPHID] }
|
|
47
|
+
]);
|
|
48
|
+
expect(result.phid).toBeDefined();
|
|
49
|
+
taskPHID = result.phid;
|
|
50
|
+
const tasks = await client.searchManiphest({
|
|
51
|
+
constraints: { phids: [taskPHID] },
|
|
52
|
+
attachments: { projects: true }
|
|
53
|
+
});
|
|
54
|
+
expect(tasks.length).toBe(1);
|
|
55
|
+
expect(tasks[0].fields.name).toBe(taskTitle);
|
|
56
|
+
expect(tasks[0].attachments.projects.projectPHIDs).toContain(projectPHID);
|
|
57
|
+
});
|
|
58
|
+
test("should update a task", async () => {
|
|
59
|
+
const updatedTitle = `${taskTitle} Updated`;
|
|
60
|
+
await client.updateManiphest(taskPHID, [
|
|
61
|
+
{ type: "title", value: updatedTitle }
|
|
62
|
+
]);
|
|
63
|
+
const tasks = await client.searchManiphest({
|
|
64
|
+
constraints: { phids: [taskPHID] }
|
|
65
|
+
});
|
|
66
|
+
expect(tasks[0].fields.name).toBe(updatedTitle);
|
|
67
|
+
});
|
|
68
|
+
test("should search users", async () => {
|
|
69
|
+
const users = await client.searchUser({ limit: 5 });
|
|
70
|
+
expect(users.length).toBeGreaterThan(0);
|
|
71
|
+
});
|
|
72
|
+
test("should search transactions", async () => {
|
|
73
|
+
const transactions = await client.searchTransaction({
|
|
74
|
+
objectIdentifier: taskPHID,
|
|
75
|
+
limit: 5
|
|
76
|
+
});
|
|
77
|
+
expect(transactions.length).toBeGreaterThan(0);
|
|
78
|
+
});
|
|
79
|
+
test("should search maniphest priorities", async () => {
|
|
80
|
+
const priorities = await client.searchManiphestPriority();
|
|
81
|
+
expect(priorities.length).toBeGreaterThan(0);
|
|
82
|
+
expect(priorities[0]).toHaveProperty("name");
|
|
83
|
+
expect(priorities[0]).toHaveProperty("value");
|
|
84
|
+
});
|
|
85
|
+
test("should search maniphest statuses", async () => {
|
|
86
|
+
const statuses = await client.searchManiphestStatus();
|
|
87
|
+
expect(statuses.length).toBeGreaterThan(0);
|
|
88
|
+
expect(statuses[0]).toHaveProperty("name");
|
|
89
|
+
expect(statuses[0]).toHaveProperty("value");
|
|
90
|
+
});
|
|
91
|
+
test("cleanup: close task", async () => {
|
|
92
|
+
if (!taskPHID)
|
|
93
|
+
return;
|
|
94
|
+
await client.updateManiphest(taskPHID, [
|
|
95
|
+
{ type: "status", value: "closed" }
|
|
96
|
+
]);
|
|
97
|
+
const tasks = await client.searchManiphest({
|
|
98
|
+
constraints: { phids: [taskPHID] }
|
|
99
|
+
});
|
|
100
|
+
expect(tasks[0].fields.status.value).toBe("closed");
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
//# sourceMappingURL=client.e2e.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.e2e.test.js","sourceRoot":"","sources":["../src/client.e2e.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AACnC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;AAEvC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IACxB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,uDAAuD,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC7E,OAAO;IACX,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,gBAAgB,IAAI,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,aAAa,IAAI,EAAE,CAAC;IAEtC,IAAI,WAAyB,CAAC;IAC9B,IAAI,QAAsB,CAAC;IAE3B,IAAI,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;YACtC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE;YACpC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,kBAAkB,EAAE;SACrD,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAClC,WAAW,GAAG,MAAM,CAAC,IAAoB,CAAC;QAE1C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;YACxC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE;SACxC,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,WAAW,GAAG,GAAG,WAAW,UAAU,CAAC;QAC7C,MAAM,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE;YACpC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE;SACvC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;YACxC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE;SACxC,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;YACxC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE;YACnC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE;YAC/C,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE;SACjD,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAClC,QAAQ,GAAG,MAAM,CAAC,IAAoB,CAAC;QAEvC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;YACvC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE;YAClC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAClC,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,YAAY,GAAG,GAAG,SAAS,UAAU,CAAC;QAC5C,MAAM,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE;YACnC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE;SACzC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;YACvC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE;SACrC,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACnC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC;YAChD,gBAAgB,EAAE,QAAQ;YAC1B,KAAK,EAAE,CAAC;SACX,CAAC,CAAC;QACH,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,uBAAuB,EAAE,CAAC;QAC1D,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACtD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACnC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,MAAM,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE;YACnC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;SACtC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;YACvC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE;SACrC,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/dist/client.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ManiphestSearchOptions, ManiphestTask, ManiphestStatus, ManiphestPriority } from "./models/maniphest.js";
|
|
2
2
|
import { PhorgeError, CreateObjectResult } from "./models/phorge.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { AttachmentsObjectToParams, ConstraintObjectToParams,
|
|
3
|
+
import { Project, ProjectSearchOptions, ProjectUpdateTransaction } from "./models/project.js";
|
|
4
|
+
import { Transaction, TransactionSearchOptions } from "./models/transaction.js";
|
|
5
|
+
import { User, UserSearchOptions } from "./models/user.js";
|
|
6
|
+
import { AttachmentsObjectToParams, ConstraintObjectToParams, UpdateTransactionObjectToParams } from "./utils.js";
|
|
7
7
|
export class Client {
|
|
8
8
|
uri;
|
|
9
9
|
token;
|
|
@@ -28,14 +28,10 @@ export class Client {
|
|
|
28
28
|
params.append("queryKey", options.queryKey);
|
|
29
29
|
}
|
|
30
30
|
if (options.constraints !== undefined) {
|
|
31
|
-
|
|
32
|
-
params.append(key, value);
|
|
33
|
-
}
|
|
31
|
+
ConstraintObjectToParams(options.constraints, params);
|
|
34
32
|
}
|
|
35
33
|
if (options.attachments !== undefined && options.attachments !== null) {
|
|
36
|
-
|
|
37
|
-
params.append(key, value);
|
|
38
|
-
}
|
|
34
|
+
AttachmentsObjectToParams(options.attachments, params);
|
|
39
35
|
}
|
|
40
36
|
if (options.order !== undefined) {
|
|
41
37
|
params.append("order", options.order);
|
|
@@ -59,8 +55,9 @@ export class Client {
|
|
|
59
55
|
return resp.result.data;
|
|
60
56
|
}
|
|
61
57
|
}
|
|
62
|
-
async
|
|
63
|
-
let params =
|
|
58
|
+
async updateProject(phid, transactions) {
|
|
59
|
+
let params = new URLSearchParams();
|
|
60
|
+
UpdateTransactionObjectToParams(transactions, params);
|
|
64
61
|
params.append("objectIdentifier", phid);
|
|
65
62
|
params.append("api.token", this.token);
|
|
66
63
|
const resp = await this.call("project.edit", params);
|
|
@@ -72,7 +69,8 @@ export class Client {
|
|
|
72
69
|
}
|
|
73
70
|
}
|
|
74
71
|
async createProject(transactions) {
|
|
75
|
-
let params =
|
|
72
|
+
let params = new URLSearchParams();
|
|
73
|
+
UpdateTransactionObjectToParams(transactions, params);
|
|
76
74
|
params.append("api.token", this.token);
|
|
77
75
|
const resp = await this.call("project.edit", params);
|
|
78
76
|
if (resp.error_code !== null) {
|
|
@@ -90,24 +88,20 @@ export class Client {
|
|
|
90
88
|
throw new PhorgeError(resp.error_code, resp.error_info);
|
|
91
89
|
}
|
|
92
90
|
else {
|
|
93
|
-
return
|
|
91
|
+
return resp.result.data;
|
|
94
92
|
}
|
|
95
93
|
}
|
|
96
|
-
async
|
|
94
|
+
async searchManiphest(options) {
|
|
97
95
|
let params = new URLSearchParams();
|
|
98
96
|
if (options !== undefined) {
|
|
99
97
|
if (options.queryKey) {
|
|
100
98
|
params.append("queryKey", options.queryKey);
|
|
101
99
|
}
|
|
102
100
|
if (options.constraints !== undefined) {
|
|
103
|
-
|
|
104
|
-
params.append(key, value);
|
|
105
|
-
}
|
|
101
|
+
ConstraintObjectToParams(options.constraints, params);
|
|
106
102
|
}
|
|
107
103
|
if (options.attachments !== undefined) {
|
|
108
|
-
|
|
109
|
-
params.append(key, value);
|
|
110
|
-
}
|
|
104
|
+
AttachmentsObjectToParams(options.attachments, params);
|
|
111
105
|
}
|
|
112
106
|
if (options.order !== undefined) {
|
|
113
107
|
params.append("order", options.order);
|
|
@@ -131,8 +125,9 @@ export class Client {
|
|
|
131
125
|
return resp.result.data;
|
|
132
126
|
}
|
|
133
127
|
}
|
|
134
|
-
async
|
|
135
|
-
let params =
|
|
128
|
+
async createManiphest(transactions) {
|
|
129
|
+
let params = new URLSearchParams();
|
|
130
|
+
UpdateTransactionObjectToParams(transactions, params);
|
|
136
131
|
params.append("api.token", this.token);
|
|
137
132
|
const resp = await this.call("maniphest.edit", params);
|
|
138
133
|
if (resp.error_code !== null) {
|
|
@@ -142,8 +137,9 @@ export class Client {
|
|
|
142
137
|
return resp.result.object;
|
|
143
138
|
}
|
|
144
139
|
}
|
|
145
|
-
async
|
|
146
|
-
let params =
|
|
140
|
+
async updateManiphest(phid, transactions) {
|
|
141
|
+
let params = new URLSearchParams();
|
|
142
|
+
UpdateTransactionObjectToParams(transactions, params);
|
|
147
143
|
params.append("objectIdentifier", phid);
|
|
148
144
|
params.append("api.token", this.token);
|
|
149
145
|
const resp = await this.call("maniphest.edit", params);
|
|
@@ -162,14 +158,10 @@ export class Client {
|
|
|
162
158
|
params.append("queryKey", options.queryKey);
|
|
163
159
|
}
|
|
164
160
|
if (options.constraints !== undefined) {
|
|
165
|
-
|
|
166
|
-
params.append(key, value);
|
|
167
|
-
}
|
|
161
|
+
ConstraintObjectToParams(options.constraints, params);
|
|
168
162
|
}
|
|
169
163
|
if (options.attachments) {
|
|
170
|
-
|
|
171
|
-
params.append(key, value);
|
|
172
|
-
}
|
|
164
|
+
AttachmentsObjectToParams(options.attachments, params);
|
|
173
165
|
}
|
|
174
166
|
if (options.order) {
|
|
175
167
|
// TODO: Implement order type
|
|
@@ -190,7 +182,7 @@ export class Client {
|
|
|
190
182
|
throw new PhorgeError(resp.error_code, resp.error_info);
|
|
191
183
|
}
|
|
192
184
|
else {
|
|
193
|
-
return
|
|
185
|
+
return resp.result.data;
|
|
194
186
|
}
|
|
195
187
|
}
|
|
196
188
|
async searchTransaction(options) {
|
|
@@ -204,9 +196,7 @@ export class Client {
|
|
|
204
196
|
params.append("objectType", options.objectType);
|
|
205
197
|
}
|
|
206
198
|
if (options.constraints !== undefined) {
|
|
207
|
-
|
|
208
|
-
params.append(key, value);
|
|
209
|
-
}
|
|
199
|
+
ConstraintObjectToParams(options.constraints, params);
|
|
210
200
|
}
|
|
211
201
|
if (options.before) {
|
|
212
202
|
params.append("before", options.before.toString());
|
|
@@ -223,7 +213,7 @@ export class Client {
|
|
|
223
213
|
throw new PhorgeError(resp.error_code, resp.error_info);
|
|
224
214
|
}
|
|
225
215
|
else {
|
|
226
|
-
return
|
|
216
|
+
return resp.result.data;
|
|
227
217
|
}
|
|
228
218
|
}
|
|
229
219
|
async searchManiphestStatus() {
|
|
@@ -234,7 +224,7 @@ export class Client {
|
|
|
234
224
|
throw new PhorgeError(resp.error_code, resp.error_info);
|
|
235
225
|
}
|
|
236
226
|
else {
|
|
237
|
-
return
|
|
227
|
+
return resp.result.data;
|
|
238
228
|
}
|
|
239
229
|
}
|
|
240
230
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.test.js
CHANGED
|
@@ -2,8 +2,8 @@ import { afterEach, describe, expect, test, vi } from "vitest";
|
|
|
2
2
|
import createFetchMock from "vitest-fetch-mock";
|
|
3
3
|
import { Client } from "./client.js";
|
|
4
4
|
import { PhorgeError } from "./models/phorge.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { Project } from "./models/project.js";
|
|
6
|
+
import { ManiphestTask, ManiphestPriority, ManiphestStatus } from "./models/maniphest.js";
|
|
7
7
|
const fetchMocker = createFetchMock(vi);
|
|
8
8
|
fetchMocker.enableMocks();
|
|
9
9
|
afterEach(() => {
|
|
@@ -123,19 +123,19 @@ describe("Client", () => {
|
|
|
123
123
|
await expect(client.createProject([{ type: "name", value: "New Project" }])).rejects.toThrow(PhorgeError);
|
|
124
124
|
});
|
|
125
125
|
});
|
|
126
|
-
describe("
|
|
126
|
+
describe("updateProject", () => {
|
|
127
127
|
test("should return an updated project object on success", async () => {
|
|
128
128
|
const mockResponse = { id: "1", phid: "PHID-PROJ-123" };
|
|
129
129
|
fetchMocker.mockResponseOnce(JSON.stringify({ result: { object: mockResponse }, error_code: null, error_info: null }));
|
|
130
|
-
const updatedProject = await client.
|
|
130
|
+
const updatedProject = await client.updateProject("PHID-PROJ-123", [{ type: "name", value: "Updated Project" }]);
|
|
131
131
|
expect(updatedProject).toEqual(mockResponse);
|
|
132
132
|
});
|
|
133
133
|
test("should throw a PhorgeError on failure", async () => {
|
|
134
134
|
fetchMocker.mockResponseOnce(JSON.stringify({ error_code: "ERR_INVALID", error_info: "Invalid data" }));
|
|
135
|
-
await expect(client.
|
|
135
|
+
await expect(client.updateProject("PHID-PROJ-123", [{ type: "name", value: "Updated Project" }])).rejects.toThrow(PhorgeError);
|
|
136
136
|
});
|
|
137
137
|
});
|
|
138
|
-
describe("
|
|
138
|
+
describe("searchManiphest", () => {
|
|
139
139
|
test("should return a list of tasks on success", async () => {
|
|
140
140
|
const mockResponse = [
|
|
141
141
|
{
|
|
@@ -191,24 +191,24 @@ describe("Client", () => {
|
|
|
191
191
|
}
|
|
192
192
|
];
|
|
193
193
|
fetchMocker.mockResponseOnce(JSON.stringify({ result: { data: mockResponse }, error_code: null, error_info: null }));
|
|
194
|
-
const tasks = await client.
|
|
194
|
+
const tasks = await client.searchManiphest();
|
|
195
195
|
expect(tasks).toEqual(mockResponse);
|
|
196
196
|
});
|
|
197
197
|
test("should throw a PhorgeError on failure", async () => {
|
|
198
198
|
fetchMocker.mockResponseOnce(JSON.stringify({ error_code: "ERR_NOT_FOUND", error_info: "Task not found" }));
|
|
199
|
-
await expect(client.
|
|
199
|
+
await expect(client.searchManiphest()).rejects.toThrow(PhorgeError);
|
|
200
200
|
});
|
|
201
201
|
});
|
|
202
|
-
describe("
|
|
202
|
+
describe("createManiphest", () => {
|
|
203
203
|
test("should return a new task object on success", async () => {
|
|
204
204
|
const mockResponse = { id: "2", phid: "PHID-TASK-456" };
|
|
205
205
|
fetchMocker.mockResponseOnce(JSON.stringify({ result: { object: mockResponse }, error_code: null, error_info: null }));
|
|
206
|
-
const newTask = await client.
|
|
206
|
+
const newTask = await client.createManiphest([{ type: "title", value: "New Task" }]);
|
|
207
207
|
expect(newTask).toEqual(mockResponse);
|
|
208
208
|
});
|
|
209
209
|
test("should throw a PhorgeError on failure", async () => {
|
|
210
210
|
fetchMocker.mockResponseOnce(JSON.stringify({ error_code: "ERR_INVALID", error_info: "Invalid data" }));
|
|
211
|
-
await expect(client.
|
|
211
|
+
await expect(client.createManiphest([{ type: "title", value: "New Task" }])).rejects.toThrow(PhorgeError);
|
|
212
212
|
});
|
|
213
213
|
});
|
|
214
214
|
describe("searchManiphestPriority", () => {
|
|
@@ -242,16 +242,16 @@ describe("Client", () => {
|
|
|
242
242
|
await expect(client.searchManiphestPriority()).rejects.toThrow(PhorgeError);
|
|
243
243
|
});
|
|
244
244
|
});
|
|
245
|
-
describe("
|
|
245
|
+
describe("updateManiphest", () => {
|
|
246
246
|
test("should return an updated task object on success", async () => {
|
|
247
247
|
const mockResponse = { id: "1", phid: "PHID-TASK-123" };
|
|
248
248
|
fetchMocker.mockResponseOnce(JSON.stringify({ result: { object: mockResponse }, error_code: null, error_info: null }));
|
|
249
|
-
const updatedTask = await client.
|
|
249
|
+
const updatedTask = await client.updateManiphest("PHID-TASK-123", [{ type: "title", value: "Updated Task" }]);
|
|
250
250
|
expect(updatedTask).toEqual(mockResponse);
|
|
251
251
|
});
|
|
252
252
|
test("should throw a PhorgeError on failure", async () => {
|
|
253
253
|
fetchMocker.mockResponseOnce(JSON.stringify({ error_code: "ERR_INVALID", error_info: "Invalid data" }));
|
|
254
|
-
await expect(client.
|
|
254
|
+
await expect(client.updateManiphest("PHID-TASK-122", [{ type: "title", value: "Updated Task" }])).rejects.toThrow(PhorgeError);
|
|
255
255
|
});
|
|
256
256
|
});
|
|
257
257
|
describe("searchUser", () => {
|