@mathrunet/masamune 2.2.13 → 2.3.1

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/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ ## [2.3.1](https://github.com/mathrunet/node_masamune/compare/v2.3.0...v2.3.1) (2024-02-14)
2
+
3
+
4
+ ### chore
5
+
6
+ * Add log. ([189fd83](https://github.com/mathrunet/node_masamune/commit/189fd832d8660cac5d83ef24fcc0d341c640af45))
7
+
8
+
9
+
10
+ # [2.3.0](https://github.com/mathrunet/node_masamune/compare/v2.2.13...v2.3.0) (2024-02-14)
11
+
12
+
13
+ ### feat
14
+
15
+ * Changed Android receipt verification to authentication by service account. ([c7b92f3](https://github.com/mathrunet/node_masamune/commit/c7b92f371b2d9e938ea25b4e0f3e268a894e169e))
16
+
17
+
18
+
1
19
  ## [2.2.13](https://github.com/mathrunet/node_masamune/compare/v2.2.12...v2.2.13) (2024-02-14)
2
20
 
3
21
 
@@ -40,36 +40,35 @@ const updater = __importStar(require("../lib/update_wallet"));
40
40
  *
41
41
  * 消費型のアプリ内課金を行います。[path]に指定したドキュメント内のフィールドの値を[value]に加算します。
42
42
  *
43
- * @param process.env.PURCHASE_ANDROID_REFRESHTOKEN
44
- * Describe the refresh token that can be obtained by accessing [android_auth_code].
45
- *
46
- * [android_auth_code]にアクセスすることで取得できるリフレッシュトークンを記述します。
47
- *
48
- * @param process.env.PURCHASE_ANDROID_CLIENTID
49
- * Google's OAuth 2.0 client ID.
43
+ * @param process.env.PURCHASE_ANDROID_SERVICEACCOUNT_EMAIL
44
+ * The email address of your Google service account.
50
45
  * Create an OAuth consent screen from the URL below.
51
46
  * https://console.cloud.google.com/apis/credentials/consent
52
- * Then create an OAuth 2.0 client ID from the credentials.
53
- * https://console.cloud.google.com/apis/credentials
47
+ * It is then created from the service account.
48
+ * https://console.cloud.google.com/iam-admin/serviceaccounts
54
49
  *
55
- * GoogleのOAuth2.0のクライアントID。
50
+ * Googleのサービスアカウントのメールアドレス。
56
51
  * 下記のURLからOAuthの同意画面を作成します。
57
52
  * https://console.cloud.google.com/apis/credentials/consent
58
- * その後、認証情報からOAuth 2.0 クライアントIDを作成します。
59
- * https://console.cloud.google.com/apis/credentials
53
+ * その後、サービスアカウントから作成します。
54
+ * https://console.cloud.google.com/iam-admin/serviceaccounts
60
55
  *
61
- * @param process.env.PURCHASE_ANDROID_CLIENTSECRET
62
- * Google's OAuth 2.0 client secret.
56
+ * @param process.env.PURCHASE_ANDROID_SERVICEACCOUNT_PRIVATE_KEY
57
+ * A private key for your Google service account.
63
58
  * Create an OAuth consent screen from the URL below.
64
59
  * https://console.cloud.google.com/apis/credentials/consent
65
- * Then create an OAuth 2.0 client ID from the credentials.
66
- * https://console.cloud.google.com/apis/credentials
60
+ * It is then created from the service account.
61
+ * https://console.cloud.google.com/iam-admin/serviceaccounts
62
+ * After creating a service account, create a key in Json format from the Key tab.
63
+ * The private key is described there.
67
64
  *
68
- * GoogleのOAuth2.0のクライアントシークレット。
65
+ * Googleのサービスアカウントのプライベートキー。
69
66
  * 下記のURLからOAuthの同意画面を作成します。
70
67
  * https://console.cloud.google.com/apis/credentials/consent
71
- * その後、認証情報からOAuth 2.0 クライアントIDを作成します。
72
- * https://console.cloud.google.com/apis/credentials
68
+ * その後、サービスアカウントから作成します。
69
+ * https://console.cloud.google.com/iam-admin/serviceaccounts
70
+ * サービスアカウント作成後、キーのタブからJson形式でキーを作成します。
71
+ * プライベートキーはそこに記述されています。
73
72
  *
74
73
  * @param path
75
74
  * The path, including the key, of the field in the document that stores the in-app wallet information.
@@ -106,14 +105,13 @@ module.exports = (regions, options, data) => {
106
105
  concurrency: options.concurrency,
107
106
  maxInstances: options.maxInstances,
108
107
  }, (query) => __awaiter(void 0, void 0, void 0, function* () {
109
- var _b, _c, _d;
108
+ var _b, _c;
110
109
  try {
111
110
  /* ==== Android検証ここから ==== */
112
111
  const res = yield verifier.verifyAndroid({
113
112
  type: "products",
114
- clientId: (_b = process.env.PURCHASE_ANDROID_CLIENTID) !== null && _b !== void 0 ? _b : "",
115
- clientSecret: (_c = process.env.PURCHASE_ANDROID_CLIENTSECRET) !== null && _c !== void 0 ? _c : "",
116
- refreshToken: (_d = process.env.PURCHASE_ANDROID_REFRESHTOKEN) !== null && _d !== void 0 ? _d : "",
113
+ serviceAccountEmail: (_b = process.env.PURCHASE_ANDROID_SERVICEACCOUNT_EMAIL) !== null && _b !== void 0 ? _b : "",
114
+ serviceAccountPrivateKey: (_c = process.env.PURCHASE_ANDROID_SERVICEACCOUNT_PRIVATE_KEY) !== null && _c !== void 0 ? _c : "",
117
115
  packageName: query.data.packageName,
118
116
  productId: query.data.productId,
119
117
  purchaseToken: query.data.purchaseToken,
@@ -1 +1 @@
1
- {"version":3,"file":"consumable_verify_android.js","sourceRoot":"","sources":["../../src/functions/consumable_verify_android.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AACnD,gEAAkD;AAClD,8DAAgD;AAGhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,MAAM,CAAC,OAAO,GAAG,CACb,OAAiB,EACjB,OAA6B,EAC7B,IAA+B,EACjC,EAAE;;IAAC,OAAA,SAAS,CAAC,KAAK,CAAC,MAAM,CACvB;QACI,MAAM,EAAE,MAAA,OAAO,CAAC,MAAM,mCAAI,OAAO;QACjC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;KACrC,EACD,CAAO,KAAK,EAAE,EAAE;;QACZ,IAAI;YACA,6BAA6B;YAC7B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC;gBACrC,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,yBAAyB,mCAAI,EAAE;gBACrD,YAAY,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,mCAAI,EAAE;gBAC7D,YAAY,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,mCAAI,EAAE;gBAC7D,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW;gBACnC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS;gBAC/B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa;aAC1C,CAAC,CAAC;YACH,IAAI,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;gBAC5B,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;aAC/E;YACD,6BAA6B;YAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;gBACvC,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAChC,kBAAkB,EAAE,8CAA8C,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CACjH,CAAC;gBACF,OAAO,GAAG,CAAC;aACd;YACD,gCAAgC;YAChC,MAAM,OAAO,CAAC,YAAY,CAAC;gBACvB,uBAAuB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;gBACxC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;aAC1B,CAAC,CAAC;YACH,gCAAgC;YAChC,OAAO,GAAG,CAAC;SACd;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,MAAM,GAAG,CAAC;SACb;IACL,CAAC,CAAA,CACJ,CAAA;CAAA,CAAC"}
1
+ {"version":3,"file":"consumable_verify_android.js","sourceRoot":"","sources":["../../src/functions/consumable_verify_android.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AACnD,gEAAkD;AAClD,8DAAgD;AAGhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,MAAM,CAAC,OAAO,GAAG,CACb,OAAiB,EACjB,OAA6B,EAC7B,IAA+B,EACjC,EAAE;;IAAC,OAAA,SAAS,CAAC,KAAK,CAAC,MAAM,CACvB;QACI,MAAM,EAAE,MAAA,OAAO,CAAC,MAAM,mCAAI,OAAO;QACjC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;KACrC,EACD,CAAO,KAAK,EAAE,EAAE;;QACZ,IAAI;YACA,6BAA6B;YAC7B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC;gBACrC,IAAI,EAAE,UAAU;gBAChB,mBAAmB,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,qCAAqC,mCAAI,EAAE;gBAC5E,wBAAwB,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,2CAA2C,mCAAI,EAAE;gBACvF,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW;gBACnC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS;gBAC/B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa;aAC1C,CAAC,CAAC;YACH,IAAI,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;gBAC5B,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;aAC/E;YACD,6BAA6B;YAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;gBACvC,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAChC,kBAAkB,EAAE,8CAA8C,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CACjH,CAAC;gBACF,OAAO,GAAG,CAAC;aACd;YACD,gCAAgC;YAChC,MAAM,OAAO,CAAC,YAAY,CAAC;gBACvB,uBAAuB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;gBACxC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;aAC1B,CAAC,CAAC;YACH,gCAAgC;YAChC,OAAO,GAAG,CAAC;SACd;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,MAAM,GAAG,CAAC;SACb;IACL,CAAC,CAAA,CACJ,CAAA;CAAA,CAAC"}
@@ -40,36 +40,35 @@ const updater = __importStar(require("../lib/update_unlock"));
40
40
  *
41
41
  * 非消費型のアプリ内課金を行います。[path]に指定したドキュメント内のフィールドの値を`true`にすることでアンロックを行います。
42
42
  *
43
- * @param process.env.PURCHASE_ANDROID_REFRESHTOKEN
44
- * Describe the refresh token that can be obtained by accessing [android_auth_code].
45
- *
46
- * [android_auth_code]にアクセスすることで取得できるリフレッシュトークンを記述します。
47
- *
48
- * @param process.env.PURCHASE_ANDROID_CLIENTID
49
- * Google's OAuth 2.0 client ID.
43
+ * @param process.env.PURCHASE_ANDROID_SERVICEACCOUNT_EMAIL
44
+ * The email address of your Google service account.
50
45
  * Create an OAuth consent screen from the URL below.
51
46
  * https://console.cloud.google.com/apis/credentials/consent
52
- * Then create an OAuth 2.0 client ID from the credentials.
53
- * https://console.cloud.google.com/apis/credentials
47
+ * It is then created from the service account.
48
+ * https://console.cloud.google.com/iam-admin/serviceaccounts
54
49
  *
55
- * GoogleのOAuth2.0のクライアントID。
50
+ * Googleのサービスアカウントのメールアドレス。
56
51
  * 下記のURLからOAuthの同意画面を作成します。
57
52
  * https://console.cloud.google.com/apis/credentials/consent
58
- * その後、認証情報からOAuth 2.0 クライアントIDを作成します。
59
- * https://console.cloud.google.com/apis/credentials
53
+ * その後、サービスアカウントから作成します。
54
+ * https://console.cloud.google.com/iam-admin/serviceaccounts
60
55
  *
61
- * @param process.env.PURCHASE_ANDROID_CLIENTSECRET
62
- * Google's OAuth 2.0 client secret.
56
+ * @param process.env.PURCHASE_ANDROID_SERVICEACCOUNT_PRIVATE_KEY
57
+ * A private key for your Google service account.
63
58
  * Create an OAuth consent screen from the URL below.
64
59
  * https://console.cloud.google.com/apis/credentials/consent
65
- * Then create an OAuth 2.0 client ID from the credentials.
66
- * https://console.cloud.google.com/apis/credentials
60
+ * It is then created from the service account.
61
+ * https://console.cloud.google.com/iam-admin/serviceaccounts
62
+ * After creating a service account, create a key in Json format from the Key tab.
63
+ * The private key is described there.
67
64
  *
68
- * GoogleのOAuth2.0のクライアントシークレット。
65
+ * Googleのサービスアカウントのプライベートキー。
69
66
  * 下記のURLからOAuthの同意画面を作成します。
70
67
  * https://console.cloud.google.com/apis/credentials/consent
71
- * その後、認証情報からOAuth 2.0 クライアントIDを作成します。
72
- * https://console.cloud.google.com/apis/credentials
68
+ * その後、サービスアカウントから作成します。
69
+ * https://console.cloud.google.com/iam-admin/serviceaccounts
70
+ * サービスアカウント作成後、キーのタブからJson形式でキーを作成します。
71
+ * プライベートキーはそこに記述されています。
73
72
  *
74
73
  * @param path
75
74
  * The path, including the key, of the field in the document where the unlock information is to be stored.
@@ -101,14 +100,13 @@ module.exports = (regions, options, data) => {
101
100
  concurrency: options.concurrency,
102
101
  maxInstances: options.maxInstances,
103
102
  }, (query) => __awaiter(void 0, void 0, void 0, function* () {
104
- var _b, _c, _d;
103
+ var _b, _c;
105
104
  try {
106
105
  /* ==== Android検証ここから ==== */
107
106
  const res = yield verifier.verifyAndroid({
108
107
  type: "products",
109
- clientId: (_b = process.env.PURCHASE_ANDROID_CLIENTID) !== null && _b !== void 0 ? _b : "",
110
- clientSecret: (_c = process.env.PURCHASE_ANDROID_CLIENTSECRET) !== null && _c !== void 0 ? _c : "",
111
- refreshToken: (_d = process.env.PURCHASE_ANDROID_REFRESHTOKEN) !== null && _d !== void 0 ? _d : "",
108
+ serviceAccountEmail: (_b = process.env.PURCHASE_ANDROID_SERVICEACCOUNT_EMAIL) !== null && _b !== void 0 ? _b : "",
109
+ serviceAccountPrivateKey: (_c = process.env.PURCHASE_ANDROID_SERVICEACCOUNT_PRIVATE_KEY) !== null && _c !== void 0 ? _c : "",
112
110
  packageName: query.data.packageName,
113
111
  productId: query.data.productId,
114
112
  purchaseToken: query.data.purchaseToken
@@ -1 +1 @@
1
- {"version":3,"file":"nonconsumable_verify_android.js","sourceRoot":"","sources":["../../src/functions/nonconsumable_verify_android.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AACnD,gEAAkD;AAClD,8DAAgD;AAGhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,MAAM,CAAC,OAAO,GAAG,CACb,OAAiB,EACjB,OAA6B,EAC7B,IAA+B,EACjC,EAAE;;IAAC,OAAA,SAAS,CAAC,KAAK,CAAC,MAAM,CACvB;QACI,MAAM,EAAE,MAAA,OAAO,CAAC,MAAM,mCAAI,OAAO;QACjC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;KACrC,EACD,CAAO,KAAK,EAAE,EAAE;;QACZ,IAAI;YACA,6BAA6B;YAC7B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC;gBACrC,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,yBAAyB,mCAAI,EAAE;gBACrD,YAAY,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,mCAAI,EAAE;gBAC7D,YAAY,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,mCAAI,EAAE;gBAC7D,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW;gBACnC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS;gBAC/B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa;aAC1C,CAAC,CAAC;YACH,IAAI,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;gBAC5B,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;aAC/E;YACD,6BAA6B;YAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;gBAClB,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAChC,kBAAkB,EAAE,8CAA8C,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CACtF,CAAC;gBACF,OAAO,GAAG,CAAC;aACd;YACD,gCAAgC;YAChC,MAAM,OAAO,CAAC,YAAY,CAAC;gBACvB,uBAAuB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;aAC3C,CAAC,CAAC;YACH,gCAAgC;YAChC,OAAO,GAAG,CAAC;SACd;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,MAAM,GAAG,CAAC;SACb;IACL,CAAC,CAAA,CACJ,CAAA;CAAA,CAAC"}
1
+ {"version":3,"file":"nonconsumable_verify_android.js","sourceRoot":"","sources":["../../src/functions/nonconsumable_verify_android.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AACnD,gEAAkD;AAClD,8DAAgD;AAGhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,MAAM,CAAC,OAAO,GAAG,CACb,OAAiB,EACjB,OAA6B,EAC7B,IAA+B,EACjC,EAAE;;IAAC,OAAA,SAAS,CAAC,KAAK,CAAC,MAAM,CACvB;QACI,MAAM,EAAE,MAAA,OAAO,CAAC,MAAM,mCAAI,OAAO;QACjC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;KACrC,EACD,CAAO,KAAK,EAAE,EAAE;;QACZ,IAAI;YACA,6BAA6B;YAC7B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC;gBACrC,IAAI,EAAE,UAAU;gBAChB,mBAAmB,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,qCAAqC,mCAAI,EAAE;gBAC5E,wBAAwB,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,2CAA2C,mCAAI,EAAE;gBACvF,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW;gBACnC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS;gBAC/B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa;aAC1C,CAAC,CAAC;YACH,IAAI,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;gBAC5B,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;aAC/E;YACD,6BAA6B;YAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;gBAClB,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAChC,kBAAkB,EAAE,8CAA8C,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CACtF,CAAC;gBACF,OAAO,GAAG,CAAC;aACd;YACD,gCAAgC;YAChC,MAAM,OAAO,CAAC,YAAY,CAAC;gBACvB,uBAAuB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;aAC3C,CAAC,CAAC;YACH,gCAAgC;YAChC,OAAO,GAAG,CAAC;SACd;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,MAAM,GAAG,CAAC;SACb;IACL,CAAC,CAAA,CACJ,CAAA;CAAA,CAAC"}
@@ -41,36 +41,35 @@ const utils = __importStar(require("../lib/utils"));
41
41
  *
42
42
  * Android用のWebhookのエンドポイントです。GCPのpub/subに`purchasing`のトピックを作成しプリンシパルに「google-play-developer-notifications@system.gserviceaccount.com」を設定することで通知を受け取ることができるようになります。
43
43
  *
44
- * @param process.env.PURCHASE_ANDROID_REFRESHTOKEN
45
- * Describe the refresh token that can be obtained by accessing [android_auth_code].
46
- *
47
- * [android_auth_code]にアクセスすることで取得できるリフレッシュトークンを記述します。
48
- *
49
- * @param process.env.PURCHASE_ANDROID_CLIENTID
50
- * Google's OAuth 2.0 client ID.
44
+ * @param process.env.PURCHASE_ANDROID_SERVICEACCOUNT_EMAIL
45
+ * The email address of your Google service account.
51
46
  * Create an OAuth consent screen from the URL below.
52
47
  * https://console.cloud.google.com/apis/credentials/consent
53
- * Then create an OAuth 2.0 client ID from the credentials.
54
- * https://console.cloud.google.com/apis/credentials
48
+ * It is then created from the service account.
49
+ * https://console.cloud.google.com/iam-admin/serviceaccounts
55
50
  *
56
- * GoogleのOAuth2.0のクライアントID。
51
+ * Googleのサービスアカウントのメールアドレス。
57
52
  * 下記のURLからOAuthの同意画面を作成します。
58
53
  * https://console.cloud.google.com/apis/credentials/consent
59
- * その後、認証情報からOAuth 2.0 クライアントIDを作成します。
60
- * https://console.cloud.google.com/apis/credentials
54
+ * その後、サービスアカウントから作成します。
55
+ * https://console.cloud.google.com/iam-admin/serviceaccounts
61
56
  *
62
- * @param process.env.PURCHASE_ANDROID_CLIENTSECRET
63
- * Google's OAuth 2.0 client secret.
57
+ * @param process.env.PURCHASE_ANDROID_SERVICEACCOUNT_PRIVATE_KEY
58
+ * A private key for your Google service account.
64
59
  * Create an OAuth consent screen from the URL below.
65
60
  * https://console.cloud.google.com/apis/credentials/consent
66
- * Then create an OAuth 2.0 client ID from the credentials.
67
- * https://console.cloud.google.com/apis/credentials
61
+ * It is then created from the service account.
62
+ * https://console.cloud.google.com/iam-admin/serviceaccounts
63
+ * After creating a service account, create a key in Json format from the Key tab.
64
+ * The private key is described there.
68
65
  *
69
- * GoogleのOAuth2.0のクライアントシークレット。
66
+ * Googleのサービスアカウントのプライベートキー。
70
67
  * 下記のURLからOAuthの同意画面を作成します。
71
68
  * https://console.cloud.google.com/apis/credentials/consent
72
- * その後、認証情報からOAuth 2.0 クライアントIDを作成します。
73
- * https://console.cloud.google.com/apis/credentials
69
+ * その後、サービスアカウントから作成します。
70
+ * https://console.cloud.google.com/iam-admin/serviceaccounts
71
+ * サービスアカウント作成後、キーのタブからJson形式でキーを作成します。
72
+ * プライベートキーはそこに記述されています。
74
73
  *
75
74
  * @param process.env.PURCHASE_SUBSCRIPTIONPATH
76
75
  * Describes the path to the collection of subscriptions.
@@ -95,10 +94,9 @@ module.exports = (regions, options, data) => {
95
94
  if (messageBody) {
96
95
  const firestoreInstance = admin.firestore();
97
96
  const targetPath = process.env.PURCHASE_SUBSCRIPTIONPATH;
98
- const androidClientId = process.env.PURCHASE_ANDROID_CLIENTID;
99
- const androidClientSecret = process.env.PURCHASE_ANDROID_CLIENTSECRET;
100
- const androidRefreshToken = process.env.PURCHASE_ANDROID_REFRESHTOKEN;
101
- if (!androidClientId || !androidClientSecret || !androidRefreshToken || !targetPath) {
97
+ const androidServiceAccountEmail = process.env.PURCHASE_ANDROID_SERVICEACCOUNT_EMAIL;
98
+ const androidServiceAccountPrivateKey = process.env.PURCHASE_ANDROID_SERVICEACCOUNT_PRIVATE_KEY;
99
+ if (!androidServiceAccountEmail || !androidServiceAccountPrivateKey || !targetPath) {
102
100
  throw new Error("The data is invalid.");
103
101
  }
104
102
  const { subscriptionNotification, packageName, } = messageBody;
@@ -109,9 +107,8 @@ module.exports = (regions, options, data) => {
109
107
  }
110
108
  const res = yield verifier.verifyAndroid({
111
109
  type: "subscriptions",
112
- clientId: androidClientId,
113
- clientSecret: androidClientSecret,
114
- refreshToken: androidRefreshToken,
110
+ serviceAccountEmail: androidServiceAccountEmail,
111
+ serviceAccountPrivateKey: androidServiceAccountPrivateKey,
115
112
  packageName: packageName,
116
113
  productId: subscriptionId,
117
114
  purchaseToken: purchaseToken,
@@ -1 +1 @@
1
- {"version":3,"file":"purchase_webhook_android.js","sourceRoot":"","sources":["../../src/functions/purchase_webhook_android.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"purchase_webhook_android.js","sourceRoot":"","sources":["../../src/functions/purchase_webhook_android.ts"],"names":[],"mappings":"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"}
@@ -40,36 +40,35 @@ const subscriber = __importStar(require("../lib/update_subscription"));
40
40
  *
41
41
  * サブスクリプションの検証とデータの追加を行います。
42
42
  *
43
- * @param process.env.PURCHASE_ANDROID_REFRESHTOKEN
44
- * Describe the refresh token that can be obtained by accessing [android_auth_code].
45
- *
46
- * [android_auth_code]にアクセスすることで取得できるリフレッシュトークンを記述します。
47
- *
48
- * @param process.env.PURCHASE_ANDROID_CLIENTID
49
- * Google's OAuth 2.0 client ID.
43
+ * @param process.env.PURCHASE_ANDROID_SERVICEACCOUNT_EMAIL
44
+ * The email address of your Google service account.
50
45
  * Create an OAuth consent screen from the URL below.
51
46
  * https://console.cloud.google.com/apis/credentials/consent
52
- * Then create an OAuth 2.0 client ID from the credentials.
53
- * https://console.cloud.google.com/apis/credentials
47
+ * It is then created from the service account.
48
+ * https://console.cloud.google.com/iam-admin/serviceaccounts
54
49
  *
55
- * GoogleのOAuth2.0のクライアントID。
50
+ * Googleのサービスアカウントのメールアドレス。
56
51
  * 下記のURLからOAuthの同意画面を作成します。
57
52
  * https://console.cloud.google.com/apis/credentials/consent
58
- * その後、認証情報からOAuth 2.0 クライアントIDを作成します。
59
- * https://console.cloud.google.com/apis/credentials
53
+ * その後、サービスアカウントから作成します。
54
+ * https://console.cloud.google.com/iam-admin/serviceaccounts
60
55
  *
61
- * @param process.env.PURCHASE_ANDROID_CLIENTSECRET
62
- * Google's OAuth 2.0 client secret.
56
+ * @param process.env.PURCHASE_ANDROID_SERVICEACCOUNT_PRIVATE_KEY
57
+ * A private key for your Google service account.
63
58
  * Create an OAuth consent screen from the URL below.
64
59
  * https://console.cloud.google.com/apis/credentials/consent
65
- * Then create an OAuth 2.0 client ID from the credentials.
66
- * https://console.cloud.google.com/apis/credentials
60
+ * It is then created from the service account.
61
+ * https://console.cloud.google.com/iam-admin/serviceaccounts
62
+ * After creating a service account, create a key in Json format from the Key tab.
63
+ * The private key is described there.
67
64
  *
68
- * GoogleのOAuth2.0のクライアントシークレット。
65
+ * Googleのサービスアカウントのプライベートキー。
69
66
  * 下記のURLからOAuthの同意画面を作成します。
70
67
  * https://console.cloud.google.com/apis/credentials/consent
71
- * その後、認証情報からOAuth 2.0 クライアントIDを作成します。
72
- * https://console.cloud.google.com/apis/credentials
68
+ * その後、サービスアカウントから作成します。
69
+ * https://console.cloud.google.com/iam-admin/serviceaccounts
70
+ * サービスアカウント作成後、キーのタブからJson形式でキーを作成します。
71
+ * プライベートキーはそこに記述されています。
73
72
  *
74
73
  * @param process.env.PURCHASE_SUBSCRIPTIONPATH
75
74
  * Describes the path to the collection of subscriptions.
@@ -116,7 +115,7 @@ module.exports = (regions, options, data) => {
116
115
  concurrency: options.concurrency,
117
116
  maxInstances: options.maxInstances,
118
117
  }, (query) => __awaiter(void 0, void 0, void 0, function* () {
119
- var _b, _c, _d, _e;
118
+ var _b, _c, _d;
120
119
  try {
121
120
  /* ==== Android検証ここから ==== */
122
121
  if (!query.data.userId) {
@@ -124,9 +123,8 @@ module.exports = (regions, options, data) => {
124
123
  }
125
124
  const res = yield verifier.verifyAndroid({
126
125
  type: "subscriptions",
127
- clientId: (_b = process.env.PURCHASE_ANDROID_CLIENTID) !== null && _b !== void 0 ? _b : "",
128
- clientSecret: (_c = process.env.PURCHASE_ANDROID_CLIENTSECRET) !== null && _c !== void 0 ? _c : "",
129
- refreshToken: (_d = process.env.PURCHASE_ANDROID_REFRESHTOKEN) !== null && _d !== void 0 ? _d : "",
126
+ serviceAccountEmail: (_b = process.env.PURCHASE_ANDROID_SERVICEACCOUNT_EMAIL) !== null && _b !== void 0 ? _b : "",
127
+ serviceAccountPrivateKey: (_c = process.env.PURCHASE_ANDROID_SERVICEACCOUNT_PRIVATE_KEY) !== null && _c !== void 0 ? _c : "",
130
128
  packageName: query.data.packageName,
131
129
  productId: query.data.productId,
132
130
  purchaseToken: query.data.purchaseToken,
@@ -143,7 +141,7 @@ module.exports = (regions, options, data) => {
143
141
  /* ==== ここまでAndroid検証 ==== */
144
142
  /* ==== Firestoreの更新ここから ==== */
145
143
  yield subscriber.updateSubscription({
146
- targetCollectionPath: (_e = query.data.path) !== null && _e !== void 0 ? _e : process.env.PURCHASE_SUBSCRIPTIONPATH,
144
+ targetCollectionPath: (_d = query.data.path) !== null && _d !== void 0 ? _d : process.env.PURCHASE_SUBSCRIPTIONPATH,
147
145
  targetDocumentId: query.data.purchaseToken,
148
146
  data: res,
149
147
  additionalData: query.data,
@@ -1 +1 @@
1
- {"version":3,"file":"subscription_verify_android.js","sourceRoot":"","sources":["../../src/functions/subscription_verify_android.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subscription_verify_android.js","sourceRoot":"","sources":["../../src/functions/subscription_verify_android.ts"],"names":[],"mappings":"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"}
@@ -3,25 +3,20 @@
3
3
  *
4
4
  * Android の受信確認を実行します。
5
5
  *
6
- * @param {String} type
6
+ * @param {"products" | "subscriptions"} type
7
7
  * Item type(products or subscriptions)
8
8
  *
9
9
  * アイテムの種類(製品またはサブスクリプション)
10
10
  *
11
- * @param {String} clientId
12
- * Google OAuth client ID.
11
+ * @param {String} serviceAccountEmail
12
+ * The email address of your Google Services account.
13
13
  *
14
- * Google OAuth クライアントID。
14
+ * Googleサービスアカウントのメールアドレス。
15
15
  *
16
- * @param {String} clientSecret
17
- * Google OAuth client secret.
16
+ * @param {String} serviceAccountPrivateKey
17
+ * A private key for your Google Services account.
18
18
  *
19
- * Google OAuth クライアントシークレット。
20
- *
21
- * @param {String} refreshToken
22
- * Refresh token obtained by accessing [android_auth_code].
23
- *
24
- * [android_auth_code]にアクセスして取得したリフレッシュトークン。
19
+ * Googleサービスアカウントのプライベートキー。
25
20
  *
26
21
  * @param {String} packageName
27
22
  * Application package name.
@@ -43,11 +38,10 @@
43
38
  *
44
39
  * アイテムの受領情報。
45
40
  */
46
- export declare function verifyAndroid({ type, clientId, clientSecret, refreshToken, packageName, productId, purchaseToken, }: {
47
- type: string;
48
- clientId: string;
49
- clientSecret: string;
50
- refreshToken: string;
41
+ export declare function verifyAndroid({ type, serviceAccountEmail, serviceAccountPrivateKey, packageName, productId, purchaseToken, }: {
42
+ type: "products" | "subscriptions";
43
+ serviceAccountEmail: string;
44
+ serviceAccountPrivateKey: string;
51
45
  packageName: string;
52
46
  productId: string;
53
47
  purchaseToken: string;
@@ -34,31 +34,26 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
34
34
  Object.defineProperty(exports, "__esModule", { value: true });
35
35
  exports.verifyAndroid = void 0;
36
36
  const functions = __importStar(require("firebase-functions/v2"));
37
- const api_1 = require("./api");
37
+ const googleapis_1 = require("googleapis");
38
38
  /**
39
39
  * Perform Android receipt verification.
40
40
  *
41
41
  * Android の受信確認を実行します。
42
42
  *
43
- * @param {String} type
43
+ * @param {"products" | "subscriptions"} type
44
44
  * Item type(products or subscriptions)
45
45
  *
46
46
  * アイテムの種類(製品またはサブスクリプション)
47
47
  *
48
- * @param {String} clientId
49
- * Google OAuth client ID.
48
+ * @param {String} serviceAccountEmail
49
+ * The email address of your Google Services account.
50
50
  *
51
- * Google OAuth クライアントID。
51
+ * Googleサービスアカウントのメールアドレス。
52
52
  *
53
- * @param {String} clientSecret
54
- * Google OAuth client secret.
53
+ * @param {String} serviceAccountPrivateKey
54
+ * A private key for your Google Services account.
55
55
  *
56
- * Google OAuth クライアントシークレット。
57
- *
58
- * @param {String} refreshToken
59
- * Refresh token obtained by accessing [android_auth_code].
60
- *
61
- * [android_auth_code]にアクセスして取得したリフレッシュトークン。
56
+ * Googleサービスアカウントのプライベートキー。
62
57
  *
63
58
  * @param {String} packageName
64
59
  * Application package name.
@@ -80,39 +75,48 @@ const api_1 = require("./api");
80
75
  *
81
76
  * アイテムの受領情報。
82
77
  */
83
- function verifyAndroid({ type, clientId, clientSecret, refreshToken, packageName, productId, purchaseToken, }) {
78
+ function verifyAndroid({ type, serviceAccountEmail, serviceAccountPrivateKey, packageName, productId, purchaseToken, }) {
84
79
  return __awaiter(this, void 0, void 0, function* () {
85
- let res = yield api_1.Api.post("https://accounts.google.com/o/oauth2/token", {
86
- timeout: 30 * 1000,
87
- data: {
88
- "grant_type": "refresh_token",
89
- "client_id": clientId,
90
- "client_secret": clientSecret,
91
- "refresh_token": refreshToken,
80
+ try {
81
+ console.log(serviceAccountEmail);
82
+ console.log(serviceAccountPrivateKey);
83
+ const authClient = new googleapis_1.google.auth.JWT({
84
+ email: serviceAccountEmail,
85
+ key: serviceAccountPrivateKey,
86
+ scopes: ["https://www.googleapis.com/auth/androidpublisher"]
87
+ });
88
+ const playDeveloperApiClient = googleapis_1.google.androidpublisher({
89
+ version: "v3",
90
+ auth: authClient,
91
+ });
92
+ yield authClient.authorize();
93
+ if (type === "products") {
94
+ const res = yield playDeveloperApiClient.purchases.products.get({
95
+ packageName: packageName,
96
+ productId: productId,
97
+ token: purchaseToken,
98
+ });
99
+ if (res.status !== 200) {
100
+ throw new functions.https.HttpsError("not-found", "The validation data is empty.");
101
+ }
102
+ return res.data;
103
+ }
104
+ else if (type === "subscriptions") {
105
+ const res = yield playDeveloperApiClient.purchases.subscriptions.get({
106
+ packageName: packageName,
107
+ subscriptionId: productId,
108
+ token: purchaseToken,
109
+ });
110
+ if (res.status !== 200) {
111
+ throw new functions.https.HttpsError("not-found", "The validation data is empty.");
112
+ }
113
+ return res.data;
92
114
  }
93
- });
94
- if (!res) {
95
- throw new functions.https.HttpsError("not-found", "Cannot get access token.");
96
- }
97
- let json = (yield res.json());
98
- console.log(json);
99
- const accessToken = json["access_token"];
100
- if (!accessToken) {
101
- throw new functions.https.HttpsError("not-found", "Cannot get access token.");
102
115
  }
103
- console.log(`https://www.googleapis.com/androidpublisher/v3/applications/${packageName}/purchases/${type}/${productId}/tokens/${purchaseToken}?access_token=${accessToken}`);
104
- res = yield api_1.Api.get(`https://www.googleapis.com/androidpublisher/v3/applications/${packageName}/purchases/${type}/${productId}/tokens/${purchaseToken}?access_token=${accessToken}`, {
105
- timeout: 30 * 1000,
106
- headers: {
107
- "Content-Type": "application/json",
108
- },
109
- });
110
- if (!res) {
111
- throw new functions.https.HttpsError("not-found", "The validation data is empty.");
116
+ catch (error) {
117
+ console.log(error);
112
118
  }
113
- json = (yield res.json());
114
- console.log(json);
115
- return json;
119
+ throw new functions.https.HttpsError("not-found", "The validation data is empty.");
116
120
  });
117
121
  }
118
122
  exports.verifyAndroid = verifyAndroid;
@@ -1 +1 @@
1
- {"version":3,"file":"verify_android.js","sourceRoot":"","sources":["../../src/lib/verify_android.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AACnD,+BAA4B;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,SAAsB,aAAa,CAAC,EAChC,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,SAAS,EACT,aAAa,GAShB;;QACG,IAAI,GAAG,GAAG,MAAM,SAAG,CAAC,IAAI,CAAC,4CAA4C,EAAE;YACnE,OAAO,EAAE,EAAE,GAAG,IAAI;YAClB,IAAI,EAAE;gBACF,YAAY,EAAE,eAAe;gBAC7B,WAAW,EAAE,QAAQ;gBACrB,eAAe,EAAE,YAAY;gBAC7B,eAAe,EAAE,YAAY;aAChC;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,EAAE;YACN,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC;SACjF;QACD,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA2B,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;QACzC,IAAI,CAAC,WAAW,EAAE;YACd,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC;SACjF;QACD,OAAO,CAAC,GAAG,CAAC,+DAA+D,WAAW,cAAc,IAAI,IAAI,SAAS,WAAW,aAAa,iBAAiB,WAAW,EAAE,CAAC,CAAC;QAC7K,GAAG,GAAG,MAAM,SAAG,CAAC,GAAG,CACf,+DAA+D,WAAW,cAAc,IAAI,IAAI,SAAS,WAAW,aAAa,iBAAiB,WAAW,EAAE,EAAE;YACjK,OAAO,EAAE,EAAE,GAAG,IAAI;YAClB,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;aACrC;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,EAAE;YACN,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,+BAA+B,CAAC,CAAC;SACtF;QACD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA2B,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IAChB,CAAC;CAAA;AAjDD,sCAiDC"}
1
+ {"version":3,"file":"verify_android.js","sourceRoot":"","sources":["../../src/lib/verify_android.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AAEnD,2CAAoC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,SAAsB,aAAa,CAAC,EAChC,IAAI,EACJ,mBAAmB,EACnB,wBAAwB,EACxB,WAAW,EACX,SAAS,EACT,aAAa,GAQhB;;QACG,IAAI;YACA,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YACtC,MAAM,UAAU,GAAG,IAAI,mBAAM,CAAC,IAAI,CAAC,GAAG,CAAC;gBACnC,KAAK,EAAE,mBAAmB;gBAC1B,GAAG,EAAE,wBAAwB;gBAC7B,MAAM,EAAE,CAAC,kDAAkD,CAAC;aAC/D,CAAC,CAAC;YACH,MAAM,sBAAsB,GAAG,mBAAM,CAAC,gBAAgB,CAAC;gBACnD,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,UAAU;aACnB,CAAC,CAAC;YACH,MAAM,UAAU,CAAC,SAAS,EAAE,CAAC;YAC7B,IAAI,IAAI,KAAK,UAAU,EAAE;gBACrB,MAAM,GAAG,GAAG,MAAM,sBAAsB,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAC5D,WAAW,EAAE,WAAW;oBACxB,SAAS,EAAE,SAAS;oBACpB,KAAK,EAAE,aAAa;iBACvB,CAAC,CAAC;gBACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;oBACpB,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,+BAA+B,CAAC,CAAC;iBACtF;gBACD,OAAO,GAAG,CAAC,IAAI,CAAC;aACnB;iBAAM,IAAI,IAAI,KAAK,eAAe,EAAE;gBACjC,MAAM,GAAG,GAAG,MAAM,sBAAsB,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC;oBACjE,WAAW,EAAE,WAAW;oBACxB,cAAc,EAAE,SAAS;oBACzB,KAAK,EAAE,aAAa;iBACvB,CAAC,CAAC;gBACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;oBACpB,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,+BAA+B,CAAC,CAAC;iBACtF;gBACD,OAAO,GAAG,CAAC,IAAI,CAAC;aACnB;SACJ;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SACtB;QACD,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,+BAA+B,CAAC,CAAC;IACvF,CAAC;CAAA;AArDD,sCAqDC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mathrunet/masamune",
3
- "version": "2.2.13",
3
+ "version": "2.3.1",
4
4
  "description": "Manages packages for the server portion (NodeJS) of the Masamune framework.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -41,6 +41,7 @@
41
41
  "firebase-admin": "^11.11.1",
42
42
  "firebase-functions": "^4.6.0",
43
43
  "form-data": "^4.0.0",
44
+ "googleapis": "^133.0.0",
44
45
  "node-fetch": "^2.6.9",
45
46
  "nodemailer": "^6.9.2",
46
47
  "stripe": "^12.7.0",