phorge-ts 0.2.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 +15 -13
- 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 +48 -23
- package/dist/client.js.map +1 -1
- package/dist/client.test.js +75 -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/dist/dev.js +13 -0
- package/dist/dev.js.map +1 -0
- package/dist/models/maniphest.d.ts +60 -39
- package/dist/models/maniphest.d.ts.map +1 -1
- package/dist/models/maniphest.js +73 -60
- package/dist/models/maniphest.js.map +1 -1
- package/dist/models/phorge.d.ts +1 -1
- package/dist/models/phorge.d.ts.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 +7 -6
- 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 +90 -17
- package/src/client.ts +60 -31
- package/src/models/maniphest.ts +88 -67
- package/src/models/phorge.ts +1 -1
- 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/src/test.ts +0 -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,21 +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:
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
searchProject(options?: ProjectSearchOptions): Promise<Project[]>;
|
|
13
|
+
updateProject(phid: PHID<"PROJ">, transactions: ProjectUpdateTransaction[]): Promise<CreateObjectResult>;
|
|
14
|
+
createProject(transactions: ProjectUpdateTransaction[]): Promise<CreateObjectResult>;
|
|
15
|
+
searchManiphestPriority(): Promise<ManiphestPriority[]>;
|
|
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[]>;
|
|
20
22
|
}
|
|
21
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":"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"}
|
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,10 +28,10 @@ export class Client {
|
|
|
28
28
|
params.append("queryKey", options.queryKey);
|
|
29
29
|
}
|
|
30
30
|
if (options.constraints !== undefined) {
|
|
31
|
-
|
|
31
|
+
ConstraintObjectToParams(options.constraints, params);
|
|
32
32
|
}
|
|
33
33
|
if (options.attachments !== undefined && options.attachments !== null) {
|
|
34
|
-
|
|
34
|
+
AttachmentsObjectToParams(options.attachments, params);
|
|
35
35
|
}
|
|
36
36
|
if (options.order !== undefined) {
|
|
37
37
|
params.append("order", options.order);
|
|
@@ -55,8 +55,9 @@ export class Client {
|
|
|
55
55
|
return resp.result.data;
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
async
|
|
59
|
-
let params =
|
|
58
|
+
async updateProject(phid, transactions) {
|
|
59
|
+
let params = new URLSearchParams();
|
|
60
|
+
UpdateTransactionObjectToParams(transactions, params);
|
|
60
61
|
params.append("objectIdentifier", phid);
|
|
61
62
|
params.append("api.token", this.token);
|
|
62
63
|
const resp = await this.call("project.edit", params);
|
|
@@ -68,7 +69,8 @@ export class Client {
|
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
71
|
async createProject(transactions) {
|
|
71
|
-
let params =
|
|
72
|
+
let params = new URLSearchParams();
|
|
73
|
+
UpdateTransactionObjectToParams(transactions, params);
|
|
72
74
|
params.append("api.token", this.token);
|
|
73
75
|
const resp = await this.call("project.edit", params);
|
|
74
76
|
if (resp.error_code !== null) {
|
|
@@ -78,17 +80,28 @@ export class Client {
|
|
|
78
80
|
return resp.result.object;
|
|
79
81
|
}
|
|
80
82
|
}
|
|
81
|
-
async
|
|
83
|
+
async searchManiphestPriority() {
|
|
84
|
+
let params = new URLSearchParams();
|
|
85
|
+
params.append("api.token", this.token);
|
|
86
|
+
const resp = await this.call("maniphest.priority.search", params);
|
|
87
|
+
if (resp.error_code !== null) {
|
|
88
|
+
throw new PhorgeError(resp.error_code, resp.error_info);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
return resp.result.data;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
async searchManiphest(options) {
|
|
82
95
|
let params = new URLSearchParams();
|
|
83
96
|
if (options !== undefined) {
|
|
84
97
|
if (options.queryKey) {
|
|
85
98
|
params.append("queryKey", options.queryKey);
|
|
86
99
|
}
|
|
87
100
|
if (options.constraints !== undefined) {
|
|
88
|
-
|
|
101
|
+
ConstraintObjectToParams(options.constraints, params);
|
|
89
102
|
}
|
|
90
103
|
if (options.attachments !== undefined) {
|
|
91
|
-
|
|
104
|
+
AttachmentsObjectToParams(options.attachments, params);
|
|
92
105
|
}
|
|
93
106
|
if (options.order !== undefined) {
|
|
94
107
|
params.append("order", options.order);
|
|
@@ -112,8 +125,9 @@ export class Client {
|
|
|
112
125
|
return resp.result.data;
|
|
113
126
|
}
|
|
114
127
|
}
|
|
115
|
-
async
|
|
116
|
-
let params =
|
|
128
|
+
async createManiphest(transactions) {
|
|
129
|
+
let params = new URLSearchParams();
|
|
130
|
+
UpdateTransactionObjectToParams(transactions, params);
|
|
117
131
|
params.append("api.token", this.token);
|
|
118
132
|
const resp = await this.call("maniphest.edit", params);
|
|
119
133
|
if (resp.error_code !== null) {
|
|
@@ -123,8 +137,9 @@ export class Client {
|
|
|
123
137
|
return resp.result.object;
|
|
124
138
|
}
|
|
125
139
|
}
|
|
126
|
-
async
|
|
127
|
-
let params =
|
|
140
|
+
async updateManiphest(phid, transactions) {
|
|
141
|
+
let params = new URLSearchParams();
|
|
142
|
+
UpdateTransactionObjectToParams(transactions, params);
|
|
128
143
|
params.append("objectIdentifier", phid);
|
|
129
144
|
params.append("api.token", this.token);
|
|
130
145
|
const resp = await this.call("maniphest.edit", params);
|
|
@@ -143,10 +158,10 @@ export class Client {
|
|
|
143
158
|
params.append("queryKey", options.queryKey);
|
|
144
159
|
}
|
|
145
160
|
if (options.constraints !== undefined) {
|
|
146
|
-
|
|
161
|
+
ConstraintObjectToParams(options.constraints, params);
|
|
147
162
|
}
|
|
148
163
|
if (options.attachments) {
|
|
149
|
-
|
|
164
|
+
AttachmentsObjectToParams(options.attachments, params);
|
|
150
165
|
}
|
|
151
166
|
if (options.order) {
|
|
152
167
|
// TODO: Implement order type
|
|
@@ -167,7 +182,7 @@ export class Client {
|
|
|
167
182
|
throw new PhorgeError(resp.error_code, resp.error_info);
|
|
168
183
|
}
|
|
169
184
|
else {
|
|
170
|
-
return
|
|
185
|
+
return resp.result.data;
|
|
171
186
|
}
|
|
172
187
|
}
|
|
173
188
|
async searchTransaction(options) {
|
|
@@ -181,7 +196,7 @@ export class Client {
|
|
|
181
196
|
params.append("objectType", options.objectType);
|
|
182
197
|
}
|
|
183
198
|
if (options.constraints !== undefined) {
|
|
184
|
-
|
|
199
|
+
ConstraintObjectToParams(options.constraints, params);
|
|
185
200
|
}
|
|
186
201
|
if (options.before) {
|
|
187
202
|
params.append("before", options.before.toString());
|
|
@@ -198,8 +213,18 @@ export class Client {
|
|
|
198
213
|
throw new PhorgeError(resp.error_code, resp.error_info);
|
|
199
214
|
}
|
|
200
215
|
else {
|
|
201
|
-
|
|
202
|
-
|
|
216
|
+
return resp.result.data;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
async searchManiphestStatus() {
|
|
220
|
+
let params = new URLSearchParams();
|
|
221
|
+
params.append("api.token", this.token);
|
|
222
|
+
const resp = await this.call("maniphest.status.search", params);
|
|
223
|
+
if (resp.error_code !== null) {
|
|
224
|
+
throw new PhorgeError(resp.error_code, resp.error_info);
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
return resp.result.data;
|
|
203
228
|
}
|
|
204
229
|
}
|
|
205
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":"AAAA,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAClH,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAa,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;AAC3D,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,MAAM,YAAY,CAAC;AAQlH,MAAM,OAAO,MAAM;IACK;IAAqB;IAAzC,YAAoB,GAAW,EAAU,KAAa;QAAlC,QAAG,GAAH,GAAG,CAAQ;QAAU,UAAK,GAAL,KAAK,CAAQ;IAAI,CAAC;IAEnD,KAAK,CAAC,IAAI,CAAI,GAAW,EAAE,MAAuB;QACtD,IAAI,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,QAAQ,GAAG,EAAE,EAAE;YAC7C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE;gBACL,cAAc,EAAE,mCAAmC;aACtD;SACJ,CAAC,CAAC;QAEH,OAAO,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAA8B;QAC9C,IAAI,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;QAClC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;YAC/C,CAAC;YAED,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACpC,wBAAwB,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;YACzD,CAAC;YAED,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;gBACpE,yBAAyB,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;YAC1D,CAAC;YAED,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;YACzC,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC/B,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;YACtD,CAAC;YAED,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;YACpD,CAAC;YAED,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;YACpD,CAAC;QACL,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAwB,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAC9E,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAkB,EAAE,YAAwC;QAC5E,IAAI,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;QAClC,+BAA+B,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAwB,cAAc,EAAE,MAAM,CAAC,CAAC;QAC5E,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9B,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,YAAwC;QACxD,IAAI,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;QAClC,+BAA+B,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QACrD,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAwB,cAAc,EAAE,MAAM,CAAC,CAAC;QAC5E,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9B,CAAC;IACL,CAAC;IAED,KAAK,CAAC,uBAAuB;QACzB,IAAI,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAkC,2BAA2B,EAAE,MAAM,CAAC,CAAC;QAEnG,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAgC;QAClD,IAAI,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;QAClC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;YAC/C,CAAC;YAED,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACpC,wBAAwB,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;YACzD,CAAC;YAED,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACpC,yBAAyB,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;YAC1D,CAAC;YAED,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;YACzC,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC/B,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;YACtD,CAAC;YAED,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;YACpD,CAAC;YAED,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;YACpD,CAAC;QACL,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAA0B,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAElF,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,YAA0C;QAC5D,IAAI,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;QAClC,+BAA+B,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QACrD,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAA0B,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAEhF,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9B,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAkB,EAAE,YAA0C;QAChF,IAAI,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;QAClC,+BAA+B,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QACrD,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAA0B,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAEhF,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9B,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAA2B;QACxC,IAAI,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;QAClC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAChD,CAAC;YACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACpC,wBAAwB,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;YACzD,CAAC;YACD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACtB,yBAAyB,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;YAC1D,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,6BAA6B;YACjC,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACvD,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YACrD,CAAC;QACL,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvC,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAqB,aAAa,EAAE,MAAM,CAAC,CAAC;QACtE,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAkC;QACtD,IAAI,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;QAClC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAC3B,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAChE,CAAC;YACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YACpD,CAAC;YACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACpC,wBAAwB,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;YACzD,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACvD,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YACrD,CAAC;QACL,CAAC;QAED,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAA4B,oBAAoB,EAAE,MAAM,CAAC,CAAC;QACpF,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,KAAK,CAAC,qBAAqB;QACvB,IAAI,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAgC,yBAAyB,EAAE,MAAM,CAAC,CAAC;QAE/F,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,CAAC;IACL,CAAC;CACJ"}
|