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 +16 -1
- package/dist/index.cjs +20 -25
- package/dist/index.js +20 -25
- package/package.json +13 -6
package/README.md
CHANGED
|
@@ -6,12 +6,15 @@
|
|
|
6
6
|
[](package.json)
|
|
7
7
|
[](https://www.typescriptlang.org/)
|
|
8
8
|
[](https://github.com/otoneko1102/mixi2-js/actions)
|
|
9
|
+
[](eslint.config.js)
|
|
10
|
+
[](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
|
-
>
|
|
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
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
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(
|
|
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(
|
|
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 (
|
|
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(
|
|
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
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
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(
|
|
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(
|
|
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 (
|
|
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(
|
|
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
|
+
"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"
|