@lokalise/chatter-api-contracts 0.0.0-stage → 0.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/README.md +18 -2
- package/dist/api/contracts/comments/delete-comment-reply.d.ts +63 -0
- package/dist/api/contracts/comments/delete-comment-reply.js +31 -0
- package/dist/api/contracts/comments/delete-comment-reply.js.map +1 -0
- package/dist/api/contracts/comments/delete-comment.d.ts +60 -0
- package/dist/api/contracts/comments/delete-comment.js +30 -0
- package/dist/api/contracts/comments/delete-comment.js.map +1 -0
- package/dist/api/contracts/comments/get-comment-replies.d.ts +138 -0
- package/dist/api/contracts/comments/get-comment-replies.js +60 -0
- package/dist/api/contracts/comments/get-comment-replies.js.map +1 -0
- package/dist/api/contracts/comments/get-comments.d.ts +71 -0
- package/dist/api/contracts/comments/get-comments.js +39 -0
- package/dist/api/contracts/comments/get-comments.js.map +1 -0
- package/dist/api/contracts/comments/patch-comment-reply.d.ts +154 -0
- package/dist/api/contracts/comments/patch-comment-reply.js +40 -0
- package/dist/api/contracts/comments/patch-comment-reply.js.map +1 -0
- package/dist/api/contracts/comments/patch-comment.d.ts +189 -0
- package/dist/api/contracts/comments/patch-comment.js +48 -0
- package/dist/api/contracts/comments/patch-comment.js.map +1 -0
- package/dist/api/contracts/comments/post-comment-reply.d.ts +151 -0
- package/dist/api/contracts/comments/post-comment-reply.js +39 -0
- package/dist/api/contracts/comments/post-comment-reply.js.map +1 -0
- package/dist/api/contracts/comments/post-comment.d.ts +178 -0
- package/dist/api/contracts/comments/post-comment.js +47 -0
- package/dist/api/contracts/comments/post-comment.js.map +1 -0
- package/dist/api/contracts/comments/post-comments-actions-search.d.ts +167 -0
- package/dist/api/contracts/comments/post-comments-actions-search.js +69 -0
- package/dist/api/contracts/comments/post-comments-actions-search.js.map +1 -0
- package/dist/api/contracts/common.d.ts +10 -0
- package/dist/api/contracts/common.js +11 -0
- package/dist/api/contracts/common.js.map +1 -0
- package/dist/api/contracts/hello/get-hello.d.ts +30 -0
- package/dist/api/contracts/hello/get-hello.js +22 -0
- package/dist/api/contracts/hello/get-hello.js.map +1 -0
- package/dist/api/contracts/index.d.ts +10 -0
- package/dist/api/contracts/index.js +11 -0
- package/dist/api/contracts/index.js.map +1 -0
- package/dist/api/errors/index.d.ts +1 -0
- package/dist/api/errors/index.js +2 -0
- package/dist/api/errors/index.js.map +1 -0
- package/dist/api/objects/comment-reply.d.ts +26 -0
- package/dist/api/objects/comment-reply.js +16 -0
- package/dist/api/objects/comment-reply.js.map +1 -0
- package/dist/api/objects/comment.d.ts +50 -0
- package/dist/api/objects/comment.js +47 -0
- package/dist/api/objects/comment.js.map +1 -0
- package/dist/api/objects/index.d.ts +3 -0
- package/dist/api/objects/index.js +4 -0
- package/dist/api/objects/index.js.map +1 -0
- package/dist/api/objects/message.d.ts +47 -0
- package/dist/api/objects/message.js +57 -0
- package/dist/api/objects/message.js.map +1 -0
- package/dist/api/open-api-tags.d.ts +21 -0
- package/dist/api/open-api-tags.js +22 -0
- package/dist/api/open-api-tags.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/package.json +47 -4
package/README.md
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @lokalise/chatter-api-contracts
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
API contracts for `chatter`. Contains the Zod schemas and
|
|
4
|
+
[`@lokalise/api-contracts`](https://www.npmjs.com/package/@lokalise/api-contracts)
|
|
5
|
+
REST contracts that describe the service's public HTTP API.
|
|
6
|
+
|
|
7
|
+
Publish this package independently so that client applications can consume the
|
|
8
|
+
contracts without pulling in the service itself.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
import { getHelloContract, type GetHelloResponseBody } from '@lokalise/chatter-api-contracts'
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Scripts
|
|
17
|
+
|
|
18
|
+
- `pnpm run build` — type-check and emit `dist/` (used when publishing)
|
|
19
|
+
- `pnpm run clean` — remove the `dist/` directory
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import z from 'zod/v4';
|
|
2
|
+
declare const DELETE_COMMENT_REPLY_PATH_PARAMS_SCHEMA: z.ZodObject<{
|
|
3
|
+
teamId: z.ZodUUID;
|
|
4
|
+
commentId: z.ZodUUID;
|
|
5
|
+
replyId: z.ZodUUID;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
export type DeleteCommentReplyPathParams = z.infer<typeof DELETE_COMMENT_REPLY_PATH_PARAMS_SCHEMA>;
|
|
8
|
+
export declare const deleteCommentReplyContract: Omit<{
|
|
9
|
+
readonly method: "delete";
|
|
10
|
+
readonly visibility: "internal";
|
|
11
|
+
readonly summary: "Delete a reply";
|
|
12
|
+
readonly description: "Deletes a reply from the thread of a comment. The rest of the thread is kept.";
|
|
13
|
+
readonly tags: readonly ["Comments"];
|
|
14
|
+
readonly requestHeaderSchema: z.ZodObject<{
|
|
15
|
+
authorization: z.ZodString;
|
|
16
|
+
}, z.core.$strip>;
|
|
17
|
+
readonly requestPathParamsSchema: z.ZodObject<{
|
|
18
|
+
teamId: z.ZodUUID;
|
|
19
|
+
commentId: z.ZodUUID;
|
|
20
|
+
replyId: z.ZodUUID;
|
|
21
|
+
}, z.core.$strip>;
|
|
22
|
+
readonly pathResolver: ({ teamId, commentId, replyId }: {
|
|
23
|
+
teamId: string;
|
|
24
|
+
commentId: string;
|
|
25
|
+
replyId: string;
|
|
26
|
+
}) => `/v1/teams/${string}/comments/${string}/replies/${string}`;
|
|
27
|
+
readonly responsesByStatusCode: {
|
|
28
|
+
204: import("@lokalise/api-contracts").NoBodyContentResponseEntry;
|
|
29
|
+
400: z.ZodObject<{
|
|
30
|
+
message: z.ZodString;
|
|
31
|
+
code: z.ZodString;
|
|
32
|
+
errorCode: z.ZodString;
|
|
33
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
34
|
+
}, z.core.$strip>;
|
|
35
|
+
401: z.ZodObject<{
|
|
36
|
+
message: z.ZodString;
|
|
37
|
+
code: z.ZodString;
|
|
38
|
+
errorCode: z.ZodString;
|
|
39
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
40
|
+
}, z.core.$strip>;
|
|
41
|
+
403: z.ZodObject<{
|
|
42
|
+
message: z.ZodString;
|
|
43
|
+
code: z.ZodString;
|
|
44
|
+
errorCode: z.ZodString;
|
|
45
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
46
|
+
}, z.core.$strip>;
|
|
47
|
+
404: z.ZodObject<{
|
|
48
|
+
message: z.ZodString;
|
|
49
|
+
code: z.ZodString;
|
|
50
|
+
errorCode: z.ZodString;
|
|
51
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
52
|
+
}, z.core.$strip>;
|
|
53
|
+
500: z.ZodObject<{
|
|
54
|
+
message: z.ZodString;
|
|
55
|
+
code: z.ZodString;
|
|
56
|
+
errorCode: z.ZodString;
|
|
57
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
58
|
+
}, z.core.$strip>;
|
|
59
|
+
};
|
|
60
|
+
}, "visibility"> & {
|
|
61
|
+
visibility: import("@lokalise/api-contracts").RouteVisibility;
|
|
62
|
+
};
|
|
63
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { defineApiContract, noBodyResponse } from '@lokalise/api-contracts';
|
|
2
|
+
import z from 'zod/v4';
|
|
3
|
+
import { OpenApiTags } from '../../open-api-tags.js';
|
|
4
|
+
import { AUTH_HEADERS, ERROR_RESPONSE_SCHEMA } from '../common.js';
|
|
5
|
+
// ------------------------------------------------------------
|
|
6
|
+
// DELETE /v1/teams/:teamId/comments/:commentId/replies/:replyId
|
|
7
|
+
// ------------------------------------------------------------
|
|
8
|
+
const DELETE_COMMENT_REPLY_PATH_PARAMS_SCHEMA = z.compile(z.object({
|
|
9
|
+
teamId: z.uuid().describe('Id of the team'),
|
|
10
|
+
commentId: z.uuid().describe('Id of the comment'),
|
|
11
|
+
replyId: z.uuid().describe('Id of the reply'),
|
|
12
|
+
}));
|
|
13
|
+
export const deleteCommentReplyContract = defineApiContract({
|
|
14
|
+
method: 'delete',
|
|
15
|
+
visibility: 'internal',
|
|
16
|
+
summary: 'Delete a reply',
|
|
17
|
+
description: 'Deletes a reply from the thread of a comment. The rest of the thread is kept.',
|
|
18
|
+
tags: [OpenApiTags.Comments.name],
|
|
19
|
+
requestHeaderSchema: AUTH_HEADERS,
|
|
20
|
+
requestPathParamsSchema: DELETE_COMMENT_REPLY_PATH_PARAMS_SCHEMA,
|
|
21
|
+
pathResolver: ({ teamId, commentId, replyId }) => `/v1/teams/${teamId}/comments/${commentId}/replies/${replyId}`,
|
|
22
|
+
responsesByStatusCode: {
|
|
23
|
+
204: noBodyResponse({ description: 'Reply deleted' }),
|
|
24
|
+
400: ERROR_RESPONSE_SCHEMA,
|
|
25
|
+
401: ERROR_RESPONSE_SCHEMA,
|
|
26
|
+
403: ERROR_RESPONSE_SCHEMA,
|
|
27
|
+
404: ERROR_RESPONSE_SCHEMA,
|
|
28
|
+
500: ERROR_RESPONSE_SCHEMA,
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=delete-comment-reply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-comment-reply.js","sourceRoot":"","sources":["../../../../src/api/contracts/comments/delete-comment-reply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC3E,OAAO,CAAC,MAAM,QAAQ,CAAA;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAElE,+DAA+D;AAC/D,gEAAgE;AAChE,+DAA+D;AAC/D,MAAM,uCAAuC,GAAG,CAAC,CAAC,OAAO,CACvD,CAAC,CAAC,MAAM,CAAC;IACP,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAC3C,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;CAC9C,CAAC,CACH,CAAA;AAGD,MAAM,CAAC,MAAM,0BAA0B,GAAG,iBAAiB,CAAC;IAC1D,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,UAAU;IACtB,OAAO,EAAE,gBAAgB;IACzB,WAAW,EAAE,+EAA+E;IAC5F,IAAI,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;IACjC,mBAAmB,EAAE,YAAY;IACjC,uBAAuB,EAAE,uCAAuC;IAChE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,CAC/C,aAAa,MAAM,aAAa,SAAS,YAAY,OAAO,EAAE;IAChE,qBAAqB,EAAE;QACrB,GAAG,EAAE,cAAc,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;QACrD,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,qBAAqB;KAC3B;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import z from 'zod/v4';
|
|
2
|
+
declare const DELETE_COMMENT_PATH_PARAMS_SCHEMA: z.ZodObject<{
|
|
3
|
+
teamId: z.ZodUUID;
|
|
4
|
+
commentId: z.ZodUUID;
|
|
5
|
+
}, z.core.$strip>;
|
|
6
|
+
export type DeleteCommentPathParams = z.infer<typeof DELETE_COMMENT_PATH_PARAMS_SCHEMA>;
|
|
7
|
+
export declare const deleteCommentContract: Omit<{
|
|
8
|
+
readonly method: "delete";
|
|
9
|
+
readonly visibility: "internal";
|
|
10
|
+
readonly summary: "Delete a comment";
|
|
11
|
+
readonly description: "Deletes a comment and its whole thread, replies included.";
|
|
12
|
+
readonly tags: readonly ["Comments"];
|
|
13
|
+
readonly requestHeaderSchema: z.ZodObject<{
|
|
14
|
+
authorization: z.ZodString;
|
|
15
|
+
}, z.core.$strip>;
|
|
16
|
+
readonly requestPathParamsSchema: z.ZodObject<{
|
|
17
|
+
teamId: z.ZodUUID;
|
|
18
|
+
commentId: z.ZodUUID;
|
|
19
|
+
}, z.core.$strip>;
|
|
20
|
+
readonly pathResolver: ({ teamId, commentId }: {
|
|
21
|
+
teamId: string;
|
|
22
|
+
commentId: string;
|
|
23
|
+
}) => `/v1/teams/${string}/comments/${string}`;
|
|
24
|
+
readonly responsesByStatusCode: {
|
|
25
|
+
204: import("@lokalise/api-contracts").NoBodyContentResponseEntry;
|
|
26
|
+
400: z.ZodObject<{
|
|
27
|
+
message: z.ZodString;
|
|
28
|
+
code: z.ZodString;
|
|
29
|
+
errorCode: z.ZodString;
|
|
30
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
401: z.ZodObject<{
|
|
33
|
+
message: z.ZodString;
|
|
34
|
+
code: z.ZodString;
|
|
35
|
+
errorCode: z.ZodString;
|
|
36
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
37
|
+
}, z.core.$strip>;
|
|
38
|
+
403: z.ZodObject<{
|
|
39
|
+
message: z.ZodString;
|
|
40
|
+
code: z.ZodString;
|
|
41
|
+
errorCode: z.ZodString;
|
|
42
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
43
|
+
}, z.core.$strip>;
|
|
44
|
+
404: z.ZodObject<{
|
|
45
|
+
message: z.ZodString;
|
|
46
|
+
code: z.ZodString;
|
|
47
|
+
errorCode: z.ZodString;
|
|
48
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
49
|
+
}, z.core.$strip>;
|
|
50
|
+
500: z.ZodObject<{
|
|
51
|
+
message: z.ZodString;
|
|
52
|
+
code: z.ZodString;
|
|
53
|
+
errorCode: z.ZodString;
|
|
54
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
55
|
+
}, z.core.$strip>;
|
|
56
|
+
};
|
|
57
|
+
}, "visibility"> & {
|
|
58
|
+
visibility: import("@lokalise/api-contracts").RouteVisibility;
|
|
59
|
+
};
|
|
60
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { defineApiContract, noBodyResponse } from '@lokalise/api-contracts';
|
|
2
|
+
import z from 'zod/v4';
|
|
3
|
+
import { OpenApiTags } from '../../open-api-tags.js';
|
|
4
|
+
import { AUTH_HEADERS, ERROR_RESPONSE_SCHEMA } from '../common.js';
|
|
5
|
+
// ------------------------------------------------------------
|
|
6
|
+
// DELETE /v1/teams/:teamId/comments/:commentId
|
|
7
|
+
// ------------------------------------------------------------
|
|
8
|
+
const DELETE_COMMENT_PATH_PARAMS_SCHEMA = z.compile(z.object({
|
|
9
|
+
teamId: z.uuid().describe('Id of the team'),
|
|
10
|
+
commentId: z.uuid().describe('Id of the comment'),
|
|
11
|
+
}));
|
|
12
|
+
export const deleteCommentContract = defineApiContract({
|
|
13
|
+
method: 'delete',
|
|
14
|
+
visibility: 'internal',
|
|
15
|
+
summary: 'Delete a comment',
|
|
16
|
+
description: 'Deletes a comment and its whole thread, replies included.',
|
|
17
|
+
tags: [OpenApiTags.Comments.name],
|
|
18
|
+
requestHeaderSchema: AUTH_HEADERS,
|
|
19
|
+
requestPathParamsSchema: DELETE_COMMENT_PATH_PARAMS_SCHEMA,
|
|
20
|
+
pathResolver: ({ teamId, commentId }) => `/v1/teams/${teamId}/comments/${commentId}`,
|
|
21
|
+
responsesByStatusCode: {
|
|
22
|
+
204: noBodyResponse({ description: 'Comment deleted' }),
|
|
23
|
+
400: ERROR_RESPONSE_SCHEMA,
|
|
24
|
+
401: ERROR_RESPONSE_SCHEMA,
|
|
25
|
+
403: ERROR_RESPONSE_SCHEMA,
|
|
26
|
+
404: ERROR_RESPONSE_SCHEMA,
|
|
27
|
+
500: ERROR_RESPONSE_SCHEMA,
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=delete-comment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-comment.js","sourceRoot":"","sources":["../../../../src/api/contracts/comments/delete-comment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC3E,OAAO,CAAC,MAAM,QAAQ,CAAA;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAElE,+DAA+D;AAC/D,+CAA+C;AAC/C,+DAA+D;AAC/D,MAAM,iCAAiC,GAAG,CAAC,CAAC,OAAO,CACjD,CAAC,CAAC,MAAM,CAAC;IACP,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAC3C,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;CAClD,CAAC,CACH,CAAA;AAGD,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;IACrD,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,UAAU;IACtB,OAAO,EAAE,kBAAkB;IAC3B,WAAW,EAAE,2DAA2D;IACxE,IAAI,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;IACjC,mBAAmB,EAAE,YAAY;IACjC,uBAAuB,EAAE,iCAAiC;IAC1D,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,MAAM,aAAa,SAAS,EAAE;IACpF,qBAAqB,EAAE;QACrB,GAAG,EAAE,cAAc,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;QACvD,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,qBAAqB;KAC3B;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import z from 'zod/v4';
|
|
2
|
+
declare const GET_COMMENT_REPLIES_PATH_PARAMS_SCHEMA: z.ZodObject<{
|
|
3
|
+
teamId: z.ZodUUID;
|
|
4
|
+
commentId: z.ZodUUID;
|
|
5
|
+
}, z.core.$strip>;
|
|
6
|
+
export type GetCommentRepliesPathParams = z.infer<typeof GET_COMMENT_REPLIES_PATH_PARAMS_SCHEMA>;
|
|
7
|
+
declare const GET_COMMENT_REPLIES_QUERY_SCHEMA: z.ZodObject<{
|
|
8
|
+
limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
9
|
+
after: z.ZodOptional<z.ZodString>;
|
|
10
|
+
}, z.core.$strip>;
|
|
11
|
+
export type GetCommentRepliesQuery = z.infer<typeof GET_COMMENT_REPLIES_QUERY_SCHEMA>;
|
|
12
|
+
declare const GET_COMMENT_REPLIES_RESPONSE_BODY_SCHEMA: z.ZodObject<{
|
|
13
|
+
data: z.ZodArray<z.ZodObject<{
|
|
14
|
+
id: z.ZodUUID;
|
|
15
|
+
commentId: z.ZodUUID;
|
|
16
|
+
message: z.ZodObject<{
|
|
17
|
+
version: z.ZodLiteral<1>;
|
|
18
|
+
blocks: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
19
|
+
type: z.ZodLiteral<"paragraph">;
|
|
20
|
+
content: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
21
|
+
type: z.ZodLiteral<"text">;
|
|
22
|
+
text: z.ZodString;
|
|
23
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
24
|
+
type: z.ZodLiteral<"userMention">;
|
|
25
|
+
userId: z.ZodUUID;
|
|
26
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
27
|
+
type: z.ZodLiteral<"link">;
|
|
28
|
+
href: z.ZodURL;
|
|
29
|
+
text: z.ZodString;
|
|
30
|
+
}, z.core.$strip>], "type">>;
|
|
31
|
+
}, z.core.$strip>], "type">>;
|
|
32
|
+
}, z.core.$strip>;
|
|
33
|
+
messageUpdatedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
|
|
34
|
+
createdBy: z.ZodUUID;
|
|
35
|
+
createdAt: z.ZodISODateTime;
|
|
36
|
+
}, z.core.$strip>>;
|
|
37
|
+
meta: z.ZodObject<{
|
|
38
|
+
count: z.ZodNumber;
|
|
39
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
40
|
+
hasMore: z.ZodBoolean;
|
|
41
|
+
}, z.core.$strip>;
|
|
42
|
+
}, z.core.$strip>;
|
|
43
|
+
export type GetCommentRepliesResponseBody = z.infer<typeof GET_COMMENT_REPLIES_RESPONSE_BODY_SCHEMA>;
|
|
44
|
+
export declare const getCommentRepliesContract: Omit<{
|
|
45
|
+
readonly method: "get";
|
|
46
|
+
readonly visibility: "internal";
|
|
47
|
+
readonly summary: "List the replies of a comment";
|
|
48
|
+
readonly description: string;
|
|
49
|
+
readonly tags: readonly ["Comments"];
|
|
50
|
+
readonly requestHeaderSchema: z.ZodObject<{
|
|
51
|
+
authorization: z.ZodString;
|
|
52
|
+
}, z.core.$strip>;
|
|
53
|
+
readonly requestPathParamsSchema: z.ZodObject<{
|
|
54
|
+
teamId: z.ZodUUID;
|
|
55
|
+
commentId: z.ZodUUID;
|
|
56
|
+
}, z.core.$strip>;
|
|
57
|
+
readonly requestQuerySchema: z.ZodObject<{
|
|
58
|
+
limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
59
|
+
after: z.ZodOptional<z.ZodString>;
|
|
60
|
+
}, z.core.$strip>;
|
|
61
|
+
readonly pathResolver: ({ teamId, commentId }: {
|
|
62
|
+
teamId: string;
|
|
63
|
+
commentId: string;
|
|
64
|
+
}) => `/v1/teams/${string}/comments/${string}/replies`;
|
|
65
|
+
readonly responsesByStatusCode: {
|
|
66
|
+
200: {
|
|
67
|
+
content: {
|
|
68
|
+
'application/json': z.ZodObject<{
|
|
69
|
+
data: z.ZodArray<z.ZodObject<{
|
|
70
|
+
id: z.ZodUUID;
|
|
71
|
+
commentId: z.ZodUUID;
|
|
72
|
+
message: z.ZodObject<{
|
|
73
|
+
version: z.ZodLiteral<1>;
|
|
74
|
+
blocks: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
75
|
+
type: z.ZodLiteral<"paragraph">;
|
|
76
|
+
content: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
77
|
+
type: z.ZodLiteral<"text">;
|
|
78
|
+
text: z.ZodString;
|
|
79
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
80
|
+
type: z.ZodLiteral<"userMention">;
|
|
81
|
+
userId: z.ZodUUID;
|
|
82
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
83
|
+
type: z.ZodLiteral<"link">;
|
|
84
|
+
href: z.ZodURL;
|
|
85
|
+
text: z.ZodString;
|
|
86
|
+
}, z.core.$strip>], "type">>;
|
|
87
|
+
}, z.core.$strip>], "type">>;
|
|
88
|
+
}, z.core.$strip>;
|
|
89
|
+
messageUpdatedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
|
|
90
|
+
createdBy: z.ZodUUID;
|
|
91
|
+
createdAt: z.ZodISODateTime;
|
|
92
|
+
}, z.core.$strip>>;
|
|
93
|
+
meta: z.ZodObject<{
|
|
94
|
+
count: z.ZodNumber;
|
|
95
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
96
|
+
hasMore: z.ZodBoolean;
|
|
97
|
+
}, z.core.$strip>;
|
|
98
|
+
}, z.core.$strip>;
|
|
99
|
+
'text/event-stream': import("@lokalise/api-contracts").SseBody<{
|
|
100
|
+
'comment_reply.created': z.ZodObject<{}, z.core.$strip>;
|
|
101
|
+
}>;
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
400: z.ZodObject<{
|
|
105
|
+
message: z.ZodString;
|
|
106
|
+
code: z.ZodString;
|
|
107
|
+
errorCode: z.ZodString;
|
|
108
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
109
|
+
}, z.core.$strip>;
|
|
110
|
+
401: z.ZodObject<{
|
|
111
|
+
message: z.ZodString;
|
|
112
|
+
code: z.ZodString;
|
|
113
|
+
errorCode: z.ZodString;
|
|
114
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
115
|
+
}, z.core.$strip>;
|
|
116
|
+
403: z.ZodObject<{
|
|
117
|
+
message: z.ZodString;
|
|
118
|
+
code: z.ZodString;
|
|
119
|
+
errorCode: z.ZodString;
|
|
120
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
121
|
+
}, z.core.$strip>;
|
|
122
|
+
404: z.ZodObject<{
|
|
123
|
+
message: z.ZodString;
|
|
124
|
+
code: z.ZodString;
|
|
125
|
+
errorCode: z.ZodString;
|
|
126
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
127
|
+
}, z.core.$strip>;
|
|
128
|
+
500: z.ZodObject<{
|
|
129
|
+
message: z.ZodString;
|
|
130
|
+
code: z.ZodString;
|
|
131
|
+
errorCode: z.ZodString;
|
|
132
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
133
|
+
}, z.core.$strip>;
|
|
134
|
+
};
|
|
135
|
+
}, "visibility"> & {
|
|
136
|
+
visibility: import("@lokalise/api-contracts").RouteVisibility;
|
|
137
|
+
};
|
|
138
|
+
export {};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { paginatedResponseSchema } from '@lokalise/api-common';
|
|
2
|
+
import { defineApiContract, sseBody } from '@lokalise/api-contracts';
|
|
3
|
+
import z from 'zod/v4';
|
|
4
|
+
import { COMMENT_REPLY_SCHEMA } from '../../objects/index.js';
|
|
5
|
+
import { OpenApiTags } from '../../open-api-tags.js';
|
|
6
|
+
import { AUTH_HEADERS, ERROR_RESPONSE_SCHEMA } from '../common.js';
|
|
7
|
+
// ------------------------------------------------------------
|
|
8
|
+
// GET /v1/teams/:teamId/comments/:commentId/replies
|
|
9
|
+
// ------------------------------------------------------------
|
|
10
|
+
const GET_COMMENT_REPLIES_PATH_PARAMS_SCHEMA = z.compile(z.object({
|
|
11
|
+
teamId: z.uuid().describe('Id of the team'),
|
|
12
|
+
commentId: z.uuid().describe('Id of the comment'),
|
|
13
|
+
}));
|
|
14
|
+
const COMMENT_REPLIES_DEFAULT_LIMIT = 100;
|
|
15
|
+
const COMMENT_REPLIES_MAX_LIMIT = 100;
|
|
16
|
+
const GET_COMMENT_REPLIES_QUERY_SCHEMA = z.compile(z.object({
|
|
17
|
+
limit: z.coerce
|
|
18
|
+
.number()
|
|
19
|
+
.int()
|
|
20
|
+
.min(1)
|
|
21
|
+
.max(COMMENT_REPLIES_MAX_LIMIT)
|
|
22
|
+
.default(COMMENT_REPLIES_DEFAULT_LIMIT)
|
|
23
|
+
.describe('Number of replies to return per page'),
|
|
24
|
+
after: z
|
|
25
|
+
.string()
|
|
26
|
+
.min(1)
|
|
27
|
+
.optional()
|
|
28
|
+
.describe('Opaque cursor from the previous response `meta.cursor`. Omit to read the first page'),
|
|
29
|
+
}));
|
|
30
|
+
const GET_COMMENT_REPLIES_RESPONSE_BODY_SCHEMA = paginatedResponseSchema(COMMENT_REPLY_SCHEMA);
|
|
31
|
+
export const getCommentRepliesContract = defineApiContract({
|
|
32
|
+
method: 'get',
|
|
33
|
+
visibility: 'internal',
|
|
34
|
+
summary: 'List the replies of a comment',
|
|
35
|
+
description: 'Lists the replies of a comment, oldest first, one page at a time, or streams their changes as ' +
|
|
36
|
+
'Server-Sent Events when the request accepts `text/event-stream`. ' +
|
|
37
|
+
'Pass `meta.cursor` from a response as `after` to read the next page.',
|
|
38
|
+
tags: [OpenApiTags.Comments.name],
|
|
39
|
+
requestHeaderSchema: AUTH_HEADERS,
|
|
40
|
+
requestPathParamsSchema: GET_COMMENT_REPLIES_PATH_PARAMS_SCHEMA,
|
|
41
|
+
requestQuerySchema: GET_COMMENT_REPLIES_QUERY_SCHEMA,
|
|
42
|
+
pathResolver: ({ teamId, commentId }) => `/v1/teams/${teamId}/comments/${commentId}/replies`,
|
|
43
|
+
responsesByStatusCode: {
|
|
44
|
+
200: {
|
|
45
|
+
content: {
|
|
46
|
+
'application/json': GET_COMMENT_REPLIES_RESPONSE_BODY_SCHEMA,
|
|
47
|
+
'text/event-stream': sseBody({
|
|
48
|
+
// TODO: define the events. A route needs at least one
|
|
49
|
+
'comment_reply.created': z.object({}),
|
|
50
|
+
}),
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
400: ERROR_RESPONSE_SCHEMA,
|
|
54
|
+
401: ERROR_RESPONSE_SCHEMA,
|
|
55
|
+
403: ERROR_RESPONSE_SCHEMA,
|
|
56
|
+
404: ERROR_RESPONSE_SCHEMA,
|
|
57
|
+
500: ERROR_RESPONSE_SCHEMA,
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
//# sourceMappingURL=get-comment-replies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-comment-replies.js","sourceRoot":"","sources":["../../../../src/api/contracts/comments/get-comment-replies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,CAAC,MAAM,QAAQ,CAAA;AACtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAElE,+DAA+D;AAC/D,oDAAoD;AACpD,+DAA+D;AAC/D,MAAM,sCAAsC,GAAG,CAAC,CAAC,OAAO,CACtD,CAAC,CAAC,MAAM,CAAC;IACP,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAC3C,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;CAClD,CAAC,CACH,CAAA;AAGD,MAAM,6BAA6B,GAAG,GAAG,CAAA;AACzC,MAAM,yBAAyB,GAAG,GAAG,CAAA;AACrC,MAAM,gCAAgC,GAAG,CAAC,CAAC,OAAO,CAChD,CAAC,CAAC,MAAM,CAAC;IACP,KAAK,EAAE,CAAC,CAAC,MAAM;SACZ,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,yBAAyB,CAAC;SAC9B,OAAO,CAAC,6BAA6B,CAAC;SACtC,QAAQ,CAAC,sCAAsC,CAAC;IACnD,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CACP,qFAAqF,CACtF;CACJ,CAAC,CACH,CAAA;AAGD,MAAM,wCAAwC,GAAG,uBAAuB,CAAC,oBAAoB,CAAC,CAAA;AAG9F,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;IACzD,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,UAAU;IACtB,OAAO,EAAE,+BAA+B;IACxC,WAAW,EACT,gGAAgG;QAChG,mEAAmE;QACnE,sEAAsE;IACxE,IAAI,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;IACjC,mBAAmB,EAAE,YAAY;IACjC,uBAAuB,EAAE,sCAAsC;IAC/D,kBAAkB,EAAE,gCAAgC;IACpD,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,MAAM,aAAa,SAAS,UAAU;IAC5F,qBAAqB,EAAE;QACrB,GAAG,EAAE;YACH,OAAO,EAAE;gBACP,kBAAkB,EAAE,wCAAwC;gBAC5D,mBAAmB,EAAE,OAAO,CAAC;oBAC3B,sDAAsD;oBACtD,uBAAuB,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;iBACtC,CAAC;aACH;SACF;QACD,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,qBAAqB;KAC3B;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import z from 'zod/v4';
|
|
2
|
+
declare const GET_COMMENTS_PATH_PARAMS_SCHEMA: z.ZodObject<{
|
|
3
|
+
teamId: z.ZodUUID;
|
|
4
|
+
}, z.core.$strip>;
|
|
5
|
+
export type GetCommentsPathParams = z.infer<typeof GET_COMMENTS_PATH_PARAMS_SCHEMA>;
|
|
6
|
+
declare const GET_COMMENTS_QUERY_SCHEMA: z.ZodObject<{
|
|
7
|
+
'filter-projectId': z.ZodUUID;
|
|
8
|
+
'filter-entityType': z.ZodEnum<{
|
|
9
|
+
readonly SEGMENT: 'SEGMENT';
|
|
10
|
+
}>;
|
|
11
|
+
}, z.core.$strip>;
|
|
12
|
+
export type GetCommentsQuery = z.infer<typeof GET_COMMENTS_QUERY_SCHEMA>;
|
|
13
|
+
export declare const getCommentsContract: Omit<{
|
|
14
|
+
readonly method: "get";
|
|
15
|
+
readonly visibility: "internal";
|
|
16
|
+
readonly summary: "Subscribe to comments";
|
|
17
|
+
readonly description: "Streams live comment changes of a project as Server-Sent Events.";
|
|
18
|
+
readonly tags: readonly ["Comments"];
|
|
19
|
+
readonly requestHeaderSchema: z.ZodObject<{
|
|
20
|
+
authorization: z.ZodString;
|
|
21
|
+
}, z.core.$strip>;
|
|
22
|
+
readonly requestPathParamsSchema: z.ZodObject<{
|
|
23
|
+
teamId: z.ZodUUID;
|
|
24
|
+
}, z.core.$strip>;
|
|
25
|
+
readonly requestQuerySchema: z.ZodObject<{
|
|
26
|
+
'filter-projectId': z.ZodUUID;
|
|
27
|
+
'filter-entityType': z.ZodEnum<{
|
|
28
|
+
readonly SEGMENT: 'SEGMENT';
|
|
29
|
+
}>;
|
|
30
|
+
}, z.core.$strip>;
|
|
31
|
+
readonly pathResolver: ({ teamId }: {
|
|
32
|
+
teamId: string;
|
|
33
|
+
}) => `/v1/teams/${string}/comments`;
|
|
34
|
+
readonly responsesByStatusCode: {
|
|
35
|
+
200: {
|
|
36
|
+
readonly content: {
|
|
37
|
+
readonly 'text/event-stream': import("@lokalise/api-contracts").SseBody<{
|
|
38
|
+
'comment.created': z.ZodObject<{}, z.core.$strip>;
|
|
39
|
+
}>;
|
|
40
|
+
};
|
|
41
|
+
readonly description?: string | undefined;
|
|
42
|
+
};
|
|
43
|
+
400: z.ZodObject<{
|
|
44
|
+
message: z.ZodString;
|
|
45
|
+
code: z.ZodString;
|
|
46
|
+
errorCode: z.ZodString;
|
|
47
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
48
|
+
}, z.core.$strip>;
|
|
49
|
+
401: z.ZodObject<{
|
|
50
|
+
message: z.ZodString;
|
|
51
|
+
code: z.ZodString;
|
|
52
|
+
errorCode: z.ZodString;
|
|
53
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
54
|
+
}, z.core.$strip>;
|
|
55
|
+
403: z.ZodObject<{
|
|
56
|
+
message: z.ZodString;
|
|
57
|
+
code: z.ZodString;
|
|
58
|
+
errorCode: z.ZodString;
|
|
59
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
60
|
+
}, z.core.$strip>;
|
|
61
|
+
500: z.ZodObject<{
|
|
62
|
+
message: z.ZodString;
|
|
63
|
+
code: z.ZodString;
|
|
64
|
+
errorCode: z.ZodString;
|
|
65
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
66
|
+
}, z.core.$strip>;
|
|
67
|
+
};
|
|
68
|
+
}, "visibility"> & {
|
|
69
|
+
visibility: import("@lokalise/api-contracts").RouteVisibility;
|
|
70
|
+
};
|
|
71
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { defineApiContract, sseResponse } from '@lokalise/api-contracts';
|
|
2
|
+
import z from 'zod/v4';
|
|
3
|
+
import { CommentEntityTypeEnum } from '../../objects/comment.js';
|
|
4
|
+
import { OpenApiTags } from '../../open-api-tags.js';
|
|
5
|
+
import { AUTH_HEADERS, ERROR_RESPONSE_SCHEMA } from '../common.js';
|
|
6
|
+
// ------------------------------------------------------------
|
|
7
|
+
// GET /v1/teams/:teamId/comments
|
|
8
|
+
// ------------------------------------------------------------
|
|
9
|
+
const GET_COMMENTS_PATH_PARAMS_SCHEMA = z.compile(z.object({
|
|
10
|
+
teamId: z.uuid().describe('Id of the team'),
|
|
11
|
+
}));
|
|
12
|
+
const GET_COMMENTS_QUERY_SCHEMA = z.compile(z.object({
|
|
13
|
+
'filter-projectId': z.uuid().describe('Only comments of this project'),
|
|
14
|
+
'filter-entityType': z
|
|
15
|
+
.enum(CommentEntityTypeEnum)
|
|
16
|
+
.describe('Only comments on this type of entity'),
|
|
17
|
+
}));
|
|
18
|
+
export const getCommentsContract = defineApiContract({
|
|
19
|
+
method: 'get',
|
|
20
|
+
visibility: 'internal',
|
|
21
|
+
summary: 'Subscribe to comments',
|
|
22
|
+
description: 'Streams live comment changes of a project as Server-Sent Events.',
|
|
23
|
+
tags: [OpenApiTags.Comments.name],
|
|
24
|
+
requestHeaderSchema: AUTH_HEADERS,
|
|
25
|
+
requestPathParamsSchema: GET_COMMENTS_PATH_PARAMS_SCHEMA,
|
|
26
|
+
requestQuerySchema: GET_COMMENTS_QUERY_SCHEMA,
|
|
27
|
+
pathResolver: ({ teamId }) => `/v1/teams/${teamId}/comments`,
|
|
28
|
+
responsesByStatusCode: {
|
|
29
|
+
200: sseResponse({
|
|
30
|
+
// TODO: define the events. A route needs at least one
|
|
31
|
+
'comment.created': z.object({}),
|
|
32
|
+
}),
|
|
33
|
+
400: ERROR_RESPONSE_SCHEMA,
|
|
34
|
+
401: ERROR_RESPONSE_SCHEMA,
|
|
35
|
+
403: ERROR_RESPONSE_SCHEMA,
|
|
36
|
+
500: ERROR_RESPONSE_SCHEMA,
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=get-comments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-comments.js","sourceRoot":"","sources":["../../../../src/api/contracts/comments/get-comments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,CAAC,MAAM,QAAQ,CAAA;AACtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAElE,+DAA+D;AAC/D,iCAAiC;AACjC,+DAA+D;AAC/D,MAAM,+BAA+B,GAAG,CAAC,CAAC,OAAO,CAC/C,CAAC,CAAC,MAAM,CAAC;IACP,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;CAC5C,CAAC,CACH,CAAA;AAGD,MAAM,yBAAyB,GAAG,CAAC,CAAC,OAAO,CACzC,CAAC,CAAC,MAAM,CAAC;IACP,kBAAkB,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACtE,mBAAmB,EAAE,CAAC;SACnB,IAAI,CAAC,qBAAqB,CAAC;SAC3B,QAAQ,CAAC,sCAAsC,CAAC;CACpD,CAAC,CACH,CAAA;AAGD,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;IACnD,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,UAAU;IACtB,OAAO,EAAE,uBAAuB;IAChC,WAAW,EAAE,kEAAkE;IAC/E,IAAI,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;IACjC,mBAAmB,EAAE,YAAY;IACjC,uBAAuB,EAAE,+BAA+B;IACxD,kBAAkB,EAAE,yBAAyB;IAC7C,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,aAAa,MAAM,WAAW;IAC5D,qBAAqB,EAAE;QACrB,GAAG,EAAE,WAAW,CAAC;YACf,sDAAsD;YACtD,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;SAChC,CAAC;QACF,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,qBAAqB;QAC1B,GAAG,EAAE,qBAAqB;KAC3B;CACF,CAAC,CAAA"}
|