kibela-api-client 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/LICENSE +19 -0
  2. package/README.md +274 -0
  3. package/bin/kibela.js +2 -0
  4. package/dist/cli/_error-handler.d.ts +9 -0
  5. package/dist/cli/_error-handler.d.ts.map +1 -0
  6. package/dist/cli/_error-handler.js +77 -0
  7. package/dist/cli/_error-handler.js.map +1 -0
  8. package/dist/cli/_validators.d.ts +44 -0
  9. package/dist/cli/_validators.d.ts.map +1 -0
  10. package/dist/cli/_validators.js +70 -0
  11. package/dist/cli/_validators.js.map +1 -0
  12. package/dist/cli/commands/config.d.ts +3 -0
  13. package/dist/cli/commands/config.d.ts.map +1 -0
  14. package/dist/cli/commands/config.js +81 -0
  15. package/dist/cli/commands/config.js.map +1 -0
  16. package/dist/cli/commands/groups.d.ts +3 -0
  17. package/dist/cli/commands/groups.d.ts.map +1 -0
  18. package/dist/cli/commands/groups.js +57 -0
  19. package/dist/cli/commands/groups.js.map +1 -0
  20. package/dist/cli/commands/notes.d.ts +3 -0
  21. package/dist/cli/commands/notes.d.ts.map +1 -0
  22. package/dist/cli/commands/notes.js +223 -0
  23. package/dist/cli/commands/notes.js.map +1 -0
  24. package/dist/cli/commands/stats.d.ts +3 -0
  25. package/dist/cli/commands/stats.d.ts.map +1 -0
  26. package/dist/cli/commands/stats.js +71 -0
  27. package/dist/cli/commands/stats.js.map +1 -0
  28. package/dist/cli/commands/test.d.ts +3 -0
  29. package/dist/cli/commands/test.d.ts.map +1 -0
  30. package/dist/cli/commands/test.js +19 -0
  31. package/dist/cli/commands/test.js.map +1 -0
  32. package/dist/cli/commands/users.d.ts +3 -0
  33. package/dist/cli/commands/users.d.ts.map +1 -0
  34. package/dist/cli/commands/users.js +77 -0
  35. package/dist/cli/commands/users.js.map +1 -0
  36. package/dist/cli/config.d.ts +19 -0
  37. package/dist/cli/config.d.ts.map +1 -0
  38. package/dist/cli/config.js +93 -0
  39. package/dist/cli/config.js.map +1 -0
  40. package/dist/cli/index.d.ts +3 -0
  41. package/dist/cli/index.d.ts.map +1 -0
  42. package/dist/cli/index.js +19 -0
  43. package/dist/cli/index.js.map +1 -0
  44. package/dist/cli/utils.d.ts +11 -0
  45. package/dist/cli/utils.d.ts.map +1 -0
  46. package/dist/cli/utils.js +62 -0
  47. package/dist/cli/utils.js.map +1 -0
  48. package/dist/client/index.d.ts +9 -0
  49. package/dist/client/index.d.ts.map +1 -0
  50. package/dist/client/index.js +33 -0
  51. package/dist/client/index.js.map +1 -0
  52. package/dist/index.d.ts +15 -0
  53. package/dist/index.d.ts.map +1 -0
  54. package/dist/index.js +39 -0
  55. package/dist/index.js.map +1 -0
  56. package/dist/queries/groups.d.ts +3 -0
  57. package/dist/queries/groups.d.ts.map +1 -0
  58. package/dist/queries/groups.js +36 -0
  59. package/dist/queries/groups.js.map +1 -0
  60. package/dist/queries/notes.d.ts +7 -0
  61. package/dist/queries/notes.d.ts.map +1 -0
  62. package/dist/queries/notes.js +188 -0
  63. package/dist/queries/notes.js.map +1 -0
  64. package/dist/queries/users.d.ts +3 -0
  65. package/dist/queries/users.d.ts.map +1 -0
  66. package/dist/queries/users.js +42 -0
  67. package/dist/queries/users.js.map +1 -0
  68. package/dist/resources/groups.d.ts +13 -0
  69. package/dist/resources/groups.d.ts.map +1 -0
  70. package/dist/resources/groups.js +38 -0
  71. package/dist/resources/groups.js.map +1 -0
  72. package/dist/resources/notes.d.ts +23 -0
  73. package/dist/resources/notes.d.ts.map +1 -0
  74. package/dist/resources/notes.js +55 -0
  75. package/dist/resources/notes.js.map +1 -0
  76. package/dist/resources/users.d.ts +13 -0
  77. package/dist/resources/users.d.ts.map +1 -0
  78. package/dist/resources/users.js +38 -0
  79. package/dist/resources/users.js.map +1 -0
  80. package/dist/types/index.d.ts +70 -0
  81. package/dist/types/index.d.ts.map +1 -0
  82. package/dist/types/index.js +3 -0
  83. package/dist/types/index.js.map +1 -0
  84. package/package.json +61 -0
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Notes = void 0;
4
+ const notes_1 = require("../queries/notes");
5
+ class Notes {
6
+ constructor(client) {
7
+ this.client = client;
8
+ }
9
+ async create(input) {
10
+ const { createNote } = await this.client.request(notes_1.CREATE_NOTE, { input });
11
+ return createNote.note;
12
+ }
13
+ async update(id, input) {
14
+ const { updateNote } = await this.client.request(notes_1.UPDATE_NOTE, {
15
+ input: { ...input, id }
16
+ });
17
+ return updateNote.note;
18
+ }
19
+ async delete(id) {
20
+ const { deleteNote } = await this.client.request(notes_1.DELETE_NOTE, {
21
+ input: { id }
22
+ });
23
+ return deleteNote.note.id;
24
+ }
25
+ async get(id) {
26
+ const { note } = await this.client.request(notes_1.GET_NOTE, { id });
27
+ return note;
28
+ }
29
+ async list(options) {
30
+ const { notes } = await this.client.request(notes_1.LIST_NOTES, {
31
+ first: options?.first ?? 20,
32
+ after: options?.after,
33
+ orderBy: options?.orderBy
34
+ });
35
+ // Ensure nodes array exists
36
+ if (!notes.nodes && notes.edges) {
37
+ notes.nodes = notes.edges.map(edge => edge.node);
38
+ }
39
+ return notes;
40
+ }
41
+ async search(query, options) {
42
+ const { search } = await this.client.request(notes_1.SEARCH_NOTES, {
43
+ query,
44
+ first: options?.first ?? 20,
45
+ after: options?.after
46
+ });
47
+ // Ensure nodes array exists
48
+ if (!search.nodes && search.edges) {
49
+ search.nodes = search.edges.map(edge => edge.node);
50
+ }
51
+ return search;
52
+ }
53
+ }
54
+ exports.Notes = Notes;
55
+ //# sourceMappingURL=notes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notes.js","sourceRoot":"","sources":["../../src/resources/notes.ts"],"names":[],"mappings":";;;AACA,4CAO0B;AAQ1B,MAAa,KAAK;IAChB,YAAoB,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;IAAG,CAAC;IAE5C,KAAK,CAAC,MAAM,CAAC,KAAsB;QACjC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAE7C,mBAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3B,OAAO,UAAU,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,KAAsB;QAC7C,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAE7C,mBAAW,EAAE;YACd,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;SACxB,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAE7C,mBAAW,EAAE;YACd,KAAK,EAAE,EAAE,EAAE,EAAE;SACd,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACxC,gBAAQ,EACR,EAAE,EAAE,EAAE,CACP,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAOV;QACC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACzC,kBAAU,EACV;YACE,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YAC3B,KAAK,EAAE,OAAO,EAAE,KAAK;YACrB,OAAO,EAAE,OAAO,EAAE,OAAO;SAC1B,CACF,CAAC;QAEF,4BAA4B;QAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,OAG3B;QACC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAC1C,oBAAY,EACZ;YACE,KAAK;YACL,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YAC3B,KAAK,EAAE,OAAO,EAAE,KAAK;SACtB,CACF,CAAC;QAEF,4BAA4B;QAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAjFD,sBAiFC"}
@@ -0,0 +1,13 @@
1
+ import { KibelaClient } from '../client';
2
+ import { User, Connection } from '../types';
3
+ export declare class Users {
4
+ private client;
5
+ constructor(client: KibelaClient);
6
+ list(options?: {
7
+ first?: number;
8
+ after?: string;
9
+ }): Promise<Connection<User>>;
10
+ getCurrentUser(): Promise<User>;
11
+ getAll(): Promise<User[]>;
12
+ }
13
+ //# sourceMappingURL=users.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/resources/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE5C,qBAAa,KAAK;IACJ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAElC,IAAI,CAAC,OAAO,CAAC,EAAE;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAiBvB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/B,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;CAchC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Users = void 0;
4
+ const users_1 = require("../queries/users");
5
+ class Users {
6
+ constructor(client) {
7
+ this.client = client;
8
+ }
9
+ async list(options) {
10
+ const { users } = await this.client.request(users_1.LIST_USERS, {
11
+ first: options?.first ?? 50,
12
+ after: options?.after
13
+ });
14
+ // Ensure nodes array exists
15
+ if (!users.nodes && users.edges) {
16
+ users.nodes = users.edges.map(edge => edge.node);
17
+ }
18
+ return users;
19
+ }
20
+ async getCurrentUser() {
21
+ const { currentUser } = await this.client.request(users_1.GET_CURRENT_USER);
22
+ return currentUser;
23
+ }
24
+ async getAll() {
25
+ const allUsers = [];
26
+ let hasNextPage = true;
27
+ let after;
28
+ while (hasNextPage) {
29
+ const result = await this.list({ first: 100, after });
30
+ allUsers.push(...result.nodes);
31
+ hasNextPage = result.pageInfo.hasNextPage;
32
+ after = result.pageInfo.endCursor;
33
+ }
34
+ return allUsers;
35
+ }
36
+ }
37
+ exports.Users = Users;
38
+ //# sourceMappingURL=users.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/resources/users.ts"],"names":[],"mappings":";;;AACA,4CAAgE;AAGhE,MAAa,KAAK;IAChB,YAAoB,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;IAAG,CAAC;IAE5C,KAAK,CAAC,IAAI,CAAC,OAGV;QACC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACzC,kBAAU,EACV;YACE,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YAC3B,KAAK,EAAE,OAAO,EAAE,KAAK;SACtB,CACF,CAAC;QAEF,4BAA4B;QAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAC/C,wBAAgB,CACjB,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,QAAQ,GAAW,EAAE,CAAC;QAC5B,IAAI,WAAW,GAAG,IAAI,CAAC;QACvB,IAAI,KAAyB,CAAC;QAE9B,OAAO,WAAW,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YACtD,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC1C,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;QACpC,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AA5CD,sBA4CC"}
@@ -0,0 +1,70 @@
1
+ export interface Note {
2
+ id: string;
3
+ title: string;
4
+ content: string;
5
+ contentHtml: string;
6
+ contentUpdatedAt: string;
7
+ publishedAt?: string;
8
+ url: string;
9
+ author: User;
10
+ groups: Group[];
11
+ comments?: Comment[];
12
+ coediting: boolean;
13
+ }
14
+ export interface User {
15
+ id: string;
16
+ account: string;
17
+ realName: string;
18
+ avatarImage?: {
19
+ url: string;
20
+ };
21
+ }
22
+ export interface Group {
23
+ id: string;
24
+ name: string;
25
+ description?: string;
26
+ isPrivate: boolean;
27
+ }
28
+ export interface Comment {
29
+ id: string;
30
+ content: string;
31
+ contentHtml: string;
32
+ publishedAt: string;
33
+ author: User;
34
+ canEdit: boolean;
35
+ canDestroy: boolean;
36
+ }
37
+ export interface CreateNoteInput {
38
+ title: string;
39
+ content: string;
40
+ coediting?: boolean;
41
+ groupIds?: string[];
42
+ draft?: boolean;
43
+ }
44
+ export interface UpdateNoteInput {
45
+ title?: string;
46
+ content?: string;
47
+ coediting?: boolean;
48
+ groupIds?: string[];
49
+ draft?: boolean;
50
+ }
51
+ export interface PageInfo {
52
+ endCursor?: string;
53
+ hasNextPage: boolean;
54
+ hasPreviousPage: boolean;
55
+ startCursor?: string;
56
+ }
57
+ export interface Connection<T> {
58
+ edges: Array<{
59
+ cursor: string;
60
+ node: T;
61
+ }>;
62
+ nodes: T[];
63
+ pageInfo: PageInfo;
64
+ totalCount: number;
65
+ }
66
+ export interface KibelaConfig {
67
+ team: string;
68
+ token: string;
69
+ }
70
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,IAAI,CAAC;IACb,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,KAAK,EAAE,KAAK,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,CAAC,CAAC;KACT,CAAC,CAAC;IACH,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "kibela-api-client",
3
+ "version": "0.1.0",
4
+ "description": "Kibela API client for Node.js with CLI",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "bin": {
8
+ "kibela": "./bin/kibela.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "dev": "tsx src/cli/index.ts",
13
+ "test": "jest",
14
+ "test:watch": "jest --watch",
15
+ "test:coverage": "jest --coverage",
16
+ "lint": "tsc --noEmit",
17
+ "prepublishOnly": "npm run lint && npm run test && npm run build"
18
+ },
19
+ "keywords": [
20
+ "kibela",
21
+ "api",
22
+ "client",
23
+ "graphql"
24
+ ],
25
+ "author": "Se1ya0hara",
26
+ "license": "MIT",
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "https://github.com/yourusername/kibela-api-client.git"
30
+ },
31
+ "homepage": "https://github.com/yourusername/kibela-api-client#readme",
32
+ "bugs": {
33
+ "url": "https://github.com/yourusername/kibela-api-client/issues"
34
+ },
35
+ "dependencies": {
36
+ "chalk": "^4.1.2",
37
+ "commander": "^11.1.0",
38
+ "dotenv": "^16.3.1",
39
+ "graphql": "^16.8.1",
40
+ "graphql-request": "^6.1.0",
41
+ "ora": "^5.4.1",
42
+ "prompts": "^2.4.2",
43
+ "zod": "^4.0.5"
44
+ },
45
+ "devDependencies": {
46
+ "@types/jest": "^29.5.14",
47
+ "@types/node": "^20.10.5",
48
+ "@types/prompts": "^2.4.9",
49
+ "jest": "^29.7.0",
50
+ "ts-jest": "^29.4.0",
51
+ "tsx": "^4.6.2",
52
+ "typescript": "^5.3.3"
53
+ },
54
+ "files": [
55
+ "dist",
56
+ "bin"
57
+ ],
58
+ "engines": {
59
+ "node": ">=16.0.0"
60
+ }
61
+ }