mixi2-js 0.0.3 → 0.0.5

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 CHANGED
@@ -6,12 +6,15 @@
6
6
  [![Node.js](https://img.shields.io/node/v/mixi2-js?color=339933&logo=nodedotjs&logoColor=white)](package.json)
7
7
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.9-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
8
8
  [![Build](https://img.shields.io/github/actions/workflow/status/otoneko1102/mixi2-js/publish.yml?label=build&logo=github)](https://github.com/otoneko1102/mixi2-js/actions)
9
+ [![ESLint](https://img.shields.io/badge/ESLint-enabled-4B32C3?logo=eslint&logoColor=white)](eslint.config.js)
10
+ [![Prettier](https://img.shields.io/badge/Prettier-enabled-F7B93E?logo=prettier&logoColor=white)](https://prettier.io/)
9
11
 
10
12
  mixi2 の [Application API](https://developer.mixi.social/docs) を利用するための **非公式** TypeScript/JavaScript SDK です。
11
13
 
12
14
  [公式 Go SDK](https://github.com/mixigroup/mixi2-application-sdk-go) および [公式 API 仕様](https://github.com/mixigroup/mixi2-api) に基づいて作成されています。
13
15
 
14
- > **Note:** これは MIXI 社公式のプロダクトではありません。コミュニティメンバーによるオープンソースプロジェクトです。
16
+ > [!Note]
17
+ > **これは MIXI 社公式のプロダクトではありません。コミュニティメンバーによるオープンソースプロジェクトです。**
15
18
 
16
19
  ---
17
20
 
@@ -75,7 +78,10 @@ ESM・CommonJS の両方に対応しています。TypeScript の型定義 (`.d.
75
78
  ### 認証
76
79
 
77
80
  ```typescript
81
+ // ESM
78
82
  import { OAuth2Authenticator } from 'mixi2-js';
83
+ // CJS
84
+ const { OAuth2Authenticator } = require('mixi2-js');
79
85
 
80
86
  const authenticator = new OAuth2Authenticator({
81
87
  clientId: process.env.CLIENT_ID!,
@@ -90,7 +96,10 @@ const token = await authenticator.getAccessToken();
90
96
  ### API クライアント
91
97
 
92
98
  ```typescript
99
+ // ESM
93
100
  import { OAuth2Authenticator, Client, MediaUploadType, LanguageCode } from 'mixi2-js';
101
+ // CJS
102
+ const { OAuth2Authenticator, Client, MediaUploadType, LanguageCode } = require('mixi2-js');
94
103
 
95
104
  const authenticator = new OAuth2Authenticator({
96
105
  clientId: process.env.CLIENT_ID!,
@@ -142,8 +151,11 @@ client.close();
142
151
  ### Webhook サーバー
143
152
 
144
153
  ```typescript
154
+ // ESM
145
155
  import { WebhookServer, EventType } from 'mixi2-js';
146
156
  import type { EventHandler, Event } from 'mixi2-js';
157
+ // CJS
158
+ const { WebhookServer, EventType } = require('mixi2-js');
147
159
 
148
160
  const handler: EventHandler = {
149
161
  handle: async (event: Event) => {
@@ -193,8 +205,11 @@ export default server.httpServer;
193
205
  ローカル開発やプロトタイピングに推奨される方式です。外部公開 URL が不要です。
194
206
 
195
207
  ```typescript
208
+ // ESM
196
209
  import { OAuth2Authenticator, StreamWatcher, EventType } from 'mixi2-js';
197
210
  import type { EventHandler, Event } from 'mixi2-js';
211
+ // CJS
212
+ const { OAuth2Authenticator, StreamWatcher, EventType } = require('mixi2-js');
198
213
 
199
214
  const authenticator = new OAuth2Authenticator({
200
215
  clientId: process.env.CLIENT_ID!,
package/dist/index.cjs CHANGED
@@ -471,28 +471,23 @@ var Client = class {
471
471
  return metadata;
472
472
  }
473
473
  call(method, request) {
474
- return new Promise(async (resolve, reject) => {
475
- let metadata;
476
- try {
477
- metadata = await this.getMetadata();
478
- } catch (err) {
479
- reject(err);
480
- return;
481
- }
482
- const fn = this.grpcClient[method];
483
- if (!fn) {
484
- reject(new Error(`Method "${method}" not found on gRPC client`));
485
- return;
486
- }
487
- fn.call(
488
- this.grpcClient,
489
- request,
490
- metadata,
491
- (err, response) => {
492
- if (err) reject(err);
493
- else resolve(response);
474
+ return this.getMetadata().then((metadata) => {
475
+ return new Promise((resolve, reject) => {
476
+ const fn = this.grpcClient[method];
477
+ if (!fn) {
478
+ reject(new Error(`Method "${method}" not found on gRPC client`));
479
+ return;
494
480
  }
495
- );
481
+ fn.call(
482
+ this.grpcClient,
483
+ request,
484
+ metadata,
485
+ (err, response) => {
486
+ if (err) reject(err);
487
+ else resolve(response);
488
+ }
489
+ );
490
+ });
496
491
  });
497
492
  }
498
493
  async getUsers(userIdList) {
@@ -648,11 +643,11 @@ var WebhookServer = class {
648
643
  try {
649
644
  await this.handler.handle(event);
650
645
  } catch (err) {
651
- console.error("Failed to handle event:", err);
646
+ console.error(`Failed to handle event ${event.eventId}:`, err);
652
647
  }
653
648
  } else {
654
649
  Promise.resolve(this.handler.handle(event)).catch((err) => {
655
- console.error("Failed to handle event:", err);
650
+ console.error(`Failed to handle event ${event.eventId}:`, err);
656
651
  });
657
652
  }
658
653
  }
@@ -759,7 +754,7 @@ var StreamWatcher = class {
759
754
  this.handleEvent(handler, event);
760
755
  }
761
756
  });
762
- s.on("error", async (err) => {
757
+ s.on("error", async () => {
763
758
  if (this.aborted) {
764
759
  resolve();
765
760
  return;
@@ -780,7 +775,7 @@ var StreamWatcher = class {
780
775
  }
781
776
  handleEvent(handler, event) {
782
777
  Promise.resolve(handler.handle(event)).catch((err) => {
783
- console.error("Failed to handle event:", err);
778
+ console.error(`Failed to handle event ${event.eventId}:`, err);
784
779
  });
785
780
  }
786
781
  stop() {
package/dist/index.js CHANGED
@@ -414,28 +414,23 @@ var Client = class {
414
414
  return metadata;
415
415
  }
416
416
  call(method, request) {
417
- return new Promise(async (resolve, reject) => {
418
- let metadata;
419
- try {
420
- metadata = await this.getMetadata();
421
- } catch (err) {
422
- reject(err);
423
- return;
424
- }
425
- const fn = this.grpcClient[method];
426
- if (!fn) {
427
- reject(new Error(`Method "${method}" not found on gRPC client`));
428
- return;
429
- }
430
- fn.call(
431
- this.grpcClient,
432
- request,
433
- metadata,
434
- (err, response) => {
435
- if (err) reject(err);
436
- else resolve(response);
417
+ return this.getMetadata().then((metadata) => {
418
+ return new Promise((resolve, reject) => {
419
+ const fn = this.grpcClient[method];
420
+ if (!fn) {
421
+ reject(new Error(`Method "${method}" not found on gRPC client`));
422
+ return;
437
423
  }
438
- );
424
+ fn.call(
425
+ this.grpcClient,
426
+ request,
427
+ metadata,
428
+ (err, response) => {
429
+ if (err) reject(err);
430
+ else resolve(response);
431
+ }
432
+ );
433
+ });
439
434
  });
440
435
  }
441
436
  async getUsers(userIdList) {
@@ -591,11 +586,11 @@ var WebhookServer = class {
591
586
  try {
592
587
  await this.handler.handle(event);
593
588
  } catch (err) {
594
- console.error("Failed to handle event:", err);
589
+ console.error(`Failed to handle event ${event.eventId}:`, err);
595
590
  }
596
591
  } else {
597
592
  Promise.resolve(this.handler.handle(event)).catch((err) => {
598
- console.error("Failed to handle event:", err);
593
+ console.error(`Failed to handle event ${event.eventId}:`, err);
599
594
  });
600
595
  }
601
596
  }
@@ -702,7 +697,7 @@ var StreamWatcher = class {
702
697
  this.handleEvent(handler, event);
703
698
  }
704
699
  });
705
- s.on("error", async (err) => {
700
+ s.on("error", async () => {
706
701
  if (this.aborted) {
707
702
  resolve();
708
703
  return;
@@ -723,7 +718,7 @@ var StreamWatcher = class {
723
718
  }
724
719
  handleEvent(handler, event) {
725
720
  Promise.resolve(handler.handle(event)).catch((err) => {
726
- console.error("Failed to handle event:", err);
721
+ console.error(`Failed to handle event ${event.eventId}:`, err);
727
722
  });
728
723
  }
729
724
  stop() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mixi2-js",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "description": "TypeScript/JavaScript SDK for mixi2 Application API",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -26,6 +26,8 @@
26
26
  "setup": "npm install && node scripts/setup.js",
27
27
  "test": "jest",
28
28
  "check": "tsc --noEmit",
29
+ "lint": "eslint ./src/",
30
+ "lint:fix": "eslint ./src/ --fix",
29
31
  "build": "tsup",
30
32
  "format": "prettier --write ./src/",
31
33
  "format:check": "prettier --check ./src/"
@@ -37,6 +39,7 @@
37
39
  "keywords": [
38
40
  "mixi2",
39
41
  "mixi",
42
+ "mixi.social",
40
43
  "sdk",
41
44
  "api",
42
45
  "grpc",
@@ -49,18 +52,22 @@
49
52
  "url": "https://github.com/otoneko1102/mixi2-js/issues"
50
53
  },
51
54
  "homepage": "https://github.com/otoneko1102/mixi2-js#readme",
55
+ "dependencies": {
56
+ "@grpc/grpc-js": "^1.14.3",
57
+ "@grpc/proto-loader": "^0.8.0"
58
+ },
52
59
  "devDependencies": {
60
+ "@eslint/js": "^10.0.1",
53
61
  "@types/jest": "^30.0.0",
54
62
  "@types/node": "^25.3.5",
63
+ "eslint": "^10.0.2",
64
+ "eslint-config-prettier": "^10.1.8",
55
65
  "jest": "^30.2.0",
56
66
  "prettier": "^3.8.1",
57
67
  "ts-jest": "^29.4.6",
58
68
  "tsup": "^8.5.1",
59
- "typescript": "^5.9.3"
60
- },
61
- "dependencies": {
62
- "@grpc/grpc-js": "^1.14.3",
63
- "@grpc/proto-loader": "^0.8.0"
69
+ "typescript": "^5.9.3",
70
+ "typescript-eslint": "^8.56.1"
64
71
  },
65
72
  "engines": {
66
73
  "node": ">=18.0.0"