@mathrunet/masamune 0.1.7 → 0.3.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 (34) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/functions/agora_cloud_recording.d.ts +1 -0
  3. package/dist/functions/agora_cloud_recording.js +104 -0
  4. package/dist/functions/agora_cloud_recording.js.map +1 -0
  5. package/dist/functions/agora_token.d.ts +1 -0
  6. package/dist/functions/agora_token.js +106 -0
  7. package/dist/functions/agora_token.js.map +1 -0
  8. package/dist/functions/openai_chat_gpt.js +7 -0
  9. package/dist/functions/openai_chat_gpt.js.map +1 -1
  10. package/dist/functions/stripe.d.ts +1 -0
  11. package/dist/functions/stripe.js +1172 -0
  12. package/dist/functions/stripe.js.map +1 -0
  13. package/dist/functions/stripe_hook.d.ts +1 -0
  14. package/dist/functions/stripe_hook.js +574 -0
  15. package/dist/functions/stripe_hook.js.map +1 -0
  16. package/dist/functions/stripe_hook_connect.d.ts +1 -0
  17. package/dist/functions/stripe_hook_connect.js +140 -0
  18. package/dist/functions/stripe_hook_connect.js.map +1 -0
  19. package/dist/functions/stripe_hook_secure.d.ts +1 -0
  20. package/dist/functions/stripe_hook_secure.js +148 -0
  21. package/dist/functions/stripe_hook_secure.js.map +1 -0
  22. package/dist/functions.d.ts +72 -0
  23. package/dist/functions.js +72 -0
  24. package/dist/functions.js.map +1 -1
  25. package/dist/lib/send_gmail.d.ts +34 -0
  26. package/dist/lib/send_gmail.js +90 -0
  27. package/dist/lib/send_gmail.js.map +1 -0
  28. package/dist/lib/send_grid.d.ts +28 -0
  29. package/dist/lib/send_grid.js +79 -0
  30. package/dist/lib/send_grid.js.map +1 -0
  31. package/dist/lib/utils.d.ts +56 -0
  32. package/dist/lib/utils.js +124 -0
  33. package/dist/lib/utils.js.map +1 -0
  34. package/package.json +15 -4
package/CHANGELOG.md CHANGED
@@ -1,3 +1,25 @@
1
+ # [0.3.0](https://github.com/mathrunet/node_masamune/compare/v0.2.0...v0.3.0) (2023-05-26)
2
+
3
+
4
+ ### feat
5
+
6
+ * Added a series of Stripe features. ([4d430b7](https://github.com/mathrunet/node_masamune/commit/4d430b7df07e363c452877fcd21cc043d309ff6c))
7
+
8
+ ### fix
9
+
10
+ * Package modifications. ([94807d9](https://github.com/mathrunet/node_masamune/commit/94807d976e18ea7a4e7c42453b9dd6147c21d289))
11
+
12
+
13
+
14
+ # [0.2.0](https://github.com/mathrunet/node_masamune/compare/v0.1.7...v0.2.0) (2023-04-18)
15
+
16
+
17
+ ### feat
18
+
19
+ * Added functionality for Agora.io. ([29630f4](https://github.com/mathrunet/node_masamune/commit/29630f4c35a8aa266d5275b86b40e4759d50fca6))
20
+
21
+
22
+
1
23
  ## [0.1.7](https://github.com/mathrunet/node_masamune/compare/v0.1.6...v0.1.7) (2023-04-07)
2
24
 
3
25
 
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ const functions = __importStar(require("firebase-functions"));
36
+ const admin = __importStar(require("firebase-admin"));
37
+ /**
38
+ * Convert files generated by Agora.io's cloud recording into an easy-to-handle format from within the app.
39
+ *
40
+ * It is executed when the file is saved to FirebaseStorage.
41
+ *
42
+ * Agora.ioのクラウドレコーディングで生成されたファイルをアプリ上から扱いやすい形式に変換します。
43
+ *
44
+ * FirebaseStorageにファイルが保存されたタイミングで実行されます。
45
+ */
46
+ module.exports = () => functions.storage.object().onFinalize((object) => __awaiter(void 0, void 0, void 0, function* () {
47
+ try {
48
+ const source = object.name;
49
+ if (!source) {
50
+ return;
51
+ }
52
+ const bucket = admin.storage().bucket(object.bucket);
53
+ const targetScreenShot = source.toString().match(/([a-z0-9A-Z]+)_([a-z0-9A-Z]+)__uid_s_([0-9]+)__uid_e_video_([0-9]+).jp(e)?g/);
54
+ if (targetScreenShot) {
55
+ const target = targetScreenShot[2] + ".jpg";
56
+ if (target == source.toString()) {
57
+ console.log("Jpeg file is not replaced.");
58
+ return;
59
+ }
60
+ yield bucket.file(source).copy(target, {
61
+ contentType: "image/jpeg",
62
+ });
63
+ yield bucket.file(source).delete();
64
+ yield bucket.file(target).makePublic();
65
+ }
66
+ else {
67
+ const targetM3U8 = source.toString().match(/([a-z0-9A-Z]+)_([a-z0-9A-Z]+).m3u8/);
68
+ if (targetM3U8) {
69
+ const target = targetM3U8[2] + ".m3u8";
70
+ if (target == source.toString()) {
71
+ console.log("M3U8 file is not replaced.");
72
+ return;
73
+ }
74
+ yield bucket.file(source).copy(target, {
75
+ cacheControl: "no-cache",
76
+ contentType: "application/x-mpegURL",
77
+ });
78
+ yield bucket.file(source).delete();
79
+ yield bucket.file(target).makePublic();
80
+ }
81
+ else {
82
+ const targetTS = source.toString().match(/([a-z0-9A-Z]+)_([a-z0-9A-Z]+)_([a-z0-9A-Z]+).ts/);
83
+ if (targetTS) {
84
+ const target = targetTS[0];
85
+ if (target == source.toString()) {
86
+ console.log("Ts file is not replaced.");
87
+ return;
88
+ }
89
+ console.log("Ts file is replaced.");
90
+ yield bucket.file(source).copy(target, {
91
+ contentType: "video/MP2T",
92
+ });
93
+ yield bucket.file(source).delete();
94
+ yield bucket.file(target).makePublic();
95
+ }
96
+ }
97
+ }
98
+ }
99
+ catch (err) {
100
+ console.error(err);
101
+ throw err;
102
+ }
103
+ }));
104
+ //# sourceMappingURL=agora_cloud_recording.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agora_cloud_recording.js","sourceRoot":"","sources":["../../src/functions/agora_cloud_recording.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ const functions = __importStar(require("firebase-functions"));
36
+ const agora_token_1 = require("agora-token");
37
+ /**
38
+ * Obtain an Agora.io security token.
39
+ *
40
+ * Agora.ioのセキュリティトークンを取得します。
41
+ *
42
+ * @param agora.app_id
43
+ * AppID for Agora.
44
+ * Log in to the following URL and create a project.
45
+ * After the project is created, the AppID can be copied.
46
+ *
47
+ * Agora用のAppID。
48
+ * 下記URLにログインし、プロジェクトを作成します。
49
+ * プロジェクト作成後、AppIDをコピーすることができます。
50
+ *
51
+ * https://console.agora.io/projects
52
+ *
53
+ * @param agora.app_certificate
54
+ * AppCertificate for Agora.
55
+ * You can obtain the certificate after entering the project you created and activating it in Security -> App certificate.
56
+ *
57
+ * Agora用のAppCertificate。
58
+ * 作成したプロジェクトに入り、Security -> App certificateにて有効化した後取得できます。
59
+ *
60
+ * https://console.agora.io/projects
61
+ *
62
+ * @param name
63
+ * Channel name.
64
+ *
65
+ * チャンネル名。
66
+ *
67
+ * @param uid
68
+ * User ID. Default is 0.
69
+ *
70
+ * ユーザーID。デフォルトは0です。
71
+ *
72
+ * @param role
73
+ * Role. You can specify either "audience" or "broadcaster".
74
+ *
75
+ * 役割。"audience"か"broadcaster"が指定できます。
76
+ */
77
+ module.exports = (regions) => functions.region(...regions).https.onCall((query) => __awaiter(void 0, void 0, void 0, function* () {
78
+ try {
79
+ const config = functions.config().agora;
80
+ const appId = config.app_id;
81
+ const appCertificate = config.app_certificate;
82
+ const expirationTimeInSeconds = 3600;
83
+ let role = agora_token_1.RtcRole.PUBLISHER;
84
+ if (query.role === "audience") {
85
+ role = agora_token_1.RtcRole.SUBSCRIBER;
86
+ }
87
+ const channelName = query.name;
88
+ let uid = 0;
89
+ if (query.uid) {
90
+ uid = query.uid;
91
+ }
92
+ if (!channelName) {
93
+ throw new functions.https.HttpsError("invalid-argument", "Channel is invalid.");
94
+ }
95
+ const token = agora_token_1.RtcTokenBuilder.buildTokenWithUid(appId, appCertificate, channelName, uid, role, expirationTimeInSeconds, expirationTimeInSeconds);
96
+ return {
97
+ channel: channelName,
98
+ token: token,
99
+ };
100
+ }
101
+ catch (err) {
102
+ console.error(err);
103
+ throw err;
104
+ }
105
+ }));
106
+ //# sourceMappingURL=agora_token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agora_token.js","sourceRoot":"","sources":["../../src/functions/agora_token.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8DAAgD;AAChD,6CAAuD;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,CAAC,OAAO,GAAG,CAAC,OAAiB,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAC7E,CAAO,KAAK,EAAE,EAAE;IACZ,IAAI;QACA,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,MAAM,cAAc,GAAG,MAAM,CAAC,eAAe,CAAC;QAC9C,MAAM,uBAAuB,GAAG,IAAI,CAAC;QACrC,IAAI,IAAI,GAAG,qBAAO,CAAC,SAAS,CAAC;QAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;YAC3B,IAAI,GAAG,qBAAO,CAAC,UAAU,CAAC;SAC7B;QACD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC;QAC/B,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,KAAK,CAAC,GAAG,EAAE;YACX,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;SACnB;QACD,IAAI,CAAC,WAAW,EAAE;YACd,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;SACnF;QACD,MAAM,KAAK,GAAG,6BAAe,CAAC,iBAAiB,CAC3C,KAAK,EACL,cAAc,EACd,WAAW,EACX,GAAG,EACH,IAAI,EACJ,uBAAuB,EACvB,uBAAuB,CAC1B,CAAC;QACF,OAAO;YACH,OAAO,EAAE,WAAW;YACpB,KAAK,EAAE,KAAK;SACf,CAAC;KACL;IAAC,OAAO,GAAG,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,MAAM,GAAG,CAAC;KACb;AACL,CAAC,CAAA,CACJ,CAAC"}
@@ -42,6 +42,13 @@ const node_fetch_1 = __importDefault(require("node-fetch"));
42
42
  *
43
43
  * Open AIのChat GPTを利用して文章を生成します。
44
44
  *
45
+ * @param openai.api_key
46
+ * Set the API key, which can be obtained from the following URL.
47
+ *
48
+ * 下記URLから取得できるAPIキーを設定します。
49
+ *
50
+ * https://platform.openai.com/account/api-keys
51
+ *
45
52
  * @param message
46
53
  * Specify the actual message to be passed.
47
54
  *
@@ -1 +1 @@
1
- {"version":3,"file":"openai_chat_gpt.js","sourceRoot":"","sources":["../../src/functions/openai_chat_gpt.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8DAAgD;AAChD,4DAA+B;AAE/B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,OAAO,GAAG,CAAC,OAAiB,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAC7E,CAAO,KAAK,EAAE,EAAE;;IACZ,IAAI;QACA,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;QACjD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAmC,CAAC;QAC1D,MAAM,KAAK,GAAG,MAAA,KAAK,CAAC,KAA2B,mCAAI,eAAe,CAAC;QACnE,MAAM,WAAW,GAAG,MAAA,KAAK,CAAC,WAAiC,mCAAI,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;YACrB,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE,oCAAoC,CAAC,CAAC;SAClG;QAED,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,4CAA4C,EAAE;YAClE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,MAAM,EAAE;aACtC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACjB,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,OAAO;gBACnB,aAAa,EAAE,WAAW;aAC7B,CAAC;SACL,CAAC,CAAC;QAEH,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA2B,CAAC;KAEvD;IAAC,OAAO,GAAG,EAAE;QACV,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,GAAG,CAAC;KACb;AACL,CAAC,CAAA,CACJ,CAAC"}
1
+ {"version":3,"file":"openai_chat_gpt.js","sourceRoot":"","sources":["../../src/functions/openai_chat_gpt.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8DAAgD;AAChD,4DAA+B;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,OAAO,GAAG,CAAC,OAAiB,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAC7E,CAAO,KAAK,EAAE,EAAE;;IACZ,IAAI;QACA,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;QACjD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAmC,CAAC;QAC1D,MAAM,KAAK,GAAG,MAAA,KAAK,CAAC,KAA2B,mCAAI,eAAe,CAAC;QACnE,MAAM,WAAW,GAAG,MAAA,KAAK,CAAC,WAAiC,mCAAI,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;YACrB,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE,oCAAoC,CAAC,CAAC;SAClG;QAED,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,4CAA4C,EAAE;YAClE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,MAAM,EAAE;aACtC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACjB,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,OAAO;gBACnB,aAAa,EAAE,WAAW;aAC7B,CAAC;SACL,CAAC,CAAC;QAEH,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA2B,CAAC;KACvD;IAAC,OAAO,GAAG,EAAE;QACV,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,GAAG,CAAC;KACb;AACL,CAAC,CAAA,CACJ,CAAC"}
@@ -0,0 +1 @@
1
+ export {};