@mathrunet/masamune 2.1.0 → 2.2.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 (57) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/functions/agora_cloud_recording.js +47 -44
  3. package/dist/functions/agora_cloud_recording.js.map +1 -1
  4. package/dist/functions/agora_token.js +37 -34
  5. package/dist/functions/agora_token.js.map +1 -1
  6. package/dist/functions/algolia.js +16 -16
  7. package/dist/functions/algolia.js.map +1 -1
  8. package/dist/functions/android_auth_code.js +22 -19
  9. package/dist/functions/android_auth_code.js.map +1 -1
  10. package/dist/functions/android_token.js +42 -39
  11. package/dist/functions/android_token.js.map +1 -1
  12. package/dist/functions/consumable_verify_android.js +41 -38
  13. package/dist/functions/consumable_verify_android.js.map +1 -1
  14. package/dist/functions/consumable_verify_ios.js +36 -33
  15. package/dist/functions/consumable_verify_ios.js.map +1 -1
  16. package/dist/functions/geocoding.js +26 -23
  17. package/dist/functions/geocoding.js.map +1 -1
  18. package/dist/functions/gmail.js +33 -30
  19. package/dist/functions/gmail.js.map +1 -1
  20. package/dist/functions/nonconsumable_verify_android.js +40 -37
  21. package/dist/functions/nonconsumable_verify_android.js.map +1 -1
  22. package/dist/functions/nonconsumable_verify_ios.js +35 -32
  23. package/dist/functions/nonconsumable_verify_ios.js.map +1 -1
  24. package/dist/functions/openai_chat_gpt.js +37 -34
  25. package/dist/functions/openai_chat_gpt.js.map +1 -1
  26. package/dist/functions/purchase_webhook_android.js +2 -2
  27. package/dist/functions/purchase_webhook_android.js.map +1 -1
  28. package/dist/functions/purchase_webhook_ios.js +85 -82
  29. package/dist/functions/purchase_webhook_ios.js.map +1 -1
  30. package/dist/functions/scheduler.js +4 -4
  31. package/dist/functions/scheduler.js.map +1 -1
  32. package/dist/functions/send_grid.js +33 -30
  33. package/dist/functions/send_grid.js.map +1 -1
  34. package/dist/functions/send_notification.js +35 -32
  35. package/dist/functions/send_notification.js.map +1 -1
  36. package/dist/functions/stripe.js +856 -853
  37. package/dist/functions/stripe.js.map +1 -1
  38. package/dist/functions/stripe_webhook.js +358 -355
  39. package/dist/functions/stripe_webhook.js.map +1 -1
  40. package/dist/functions/stripe_webhook_connect.js +68 -65
  41. package/dist/functions/stripe_webhook_connect.js.map +1 -1
  42. package/dist/functions/stripe_webhook_secure.js +66 -63
  43. package/dist/functions/stripe_webhook_secure.js.map +1 -1
  44. package/dist/functions/subscription_verify_android.js +57 -54
  45. package/dist/functions/subscription_verify_android.js.map +1 -1
  46. package/dist/functions/subscription_verify_ios.js +57 -54
  47. package/dist/functions/subscription_verify_ios.js.map +1 -1
  48. package/dist/lib/call_process_function_base.d.ts +16 -1
  49. package/dist/lib/call_process_function_base.js +15 -8
  50. package/dist/lib/call_process_function_base.js.map +1 -1
  51. package/dist/lib/functions_base.d.ts +44 -0
  52. package/dist/lib/request_process_function_base.d.ts +16 -1
  53. package/dist/lib/request_process_function_base.js +15 -8
  54. package/dist/lib/request_process_function_base.js.map +1 -1
  55. package/dist/lib/schedule_process_function_base.js +8 -7
  56. package/dist/lib/schedule_process_function_base.js.map +1 -1
  57. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ # [2.2.0](https://github.com/mathrunet/node_masamune/compare/v2.1.1...v2.2.0) (2024-01-18)
2
+
3
+
4
+ ### feat
5
+
6
+ * The region can be specified by option. ([df36f5f](https://github.com/mathrunet/node_masamune/commit/df36f5fc62c494bb94a9e44b91c13d764c48c93f))
7
+
8
+
9
+
10
+ ## [2.1.1](https://github.com/mathrunet/node_masamune/compare/v2.1.0...v2.1.1) (2024-01-18)
11
+
12
+
13
+ ### fix
14
+
15
+ * Apply Algolia to firestore. ([77157c4](https://github.com/mathrunet/node_masamune/commit/77157c41fa320bb624779e9d18ef5a0cab3ecf04))
16
+
17
+
18
+
1
19
  # [2.1.0](https://github.com/mathrunet/node_masamune/compare/v2.0.1...v2.1.0) (2024-01-18)
2
20
 
3
21
 
@@ -43,69 +43,72 @@ const admin = __importStar(require("firebase-admin"));
43
43
  *
44
44
  * FirebaseStorageにファイルが保存されたタイミングで実行されます。
45
45
  */
46
- module.exports = (regions, options, data) => functions.storage.onObjectFinalized({
47
- region: regions[0],
48
- timeoutSeconds: options.timeoutSeconds,
49
- memory: options.memory,
50
- minInstances: options.minInstances,
51
- concurrency: options.concurrency,
52
- maxInstances: options.maxInstances,
53
- }, (object) => __awaiter(void 0, void 0, void 0, function* () {
54
- try {
55
- const source = object.data.name;
56
- if (!source) {
57
- return;
58
- }
59
- const bucket = admin.storage().bucket(object.bucket);
60
- 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/);
61
- if (targetScreenShot) {
62
- const target = targetScreenShot[2] + ".jpg";
63
- if (target == source.toString()) {
64
- console.log("Jpeg file is not replaced.");
46
+ module.exports = (regions, options, data) => {
47
+ var _a;
48
+ return functions.storage.onObjectFinalized({
49
+ region: (_a = options.region) !== null && _a !== void 0 ? _a : regions[0],
50
+ timeoutSeconds: options.timeoutSeconds,
51
+ memory: options.memory,
52
+ minInstances: options.minInstances,
53
+ concurrency: options.concurrency,
54
+ maxInstances: options.maxInstances,
55
+ }, (object) => __awaiter(void 0, void 0, void 0, function* () {
56
+ try {
57
+ const source = object.data.name;
58
+ if (!source) {
65
59
  return;
66
60
  }
67
- yield bucket.file(source).copy(target, {
68
- contentType: "image/jpeg",
69
- });
70
- yield bucket.file(source).delete();
71
- yield bucket.file(target).makePublic();
72
- }
73
- else {
74
- const targetM3U8 = source.toString().match(/([a-z0-9A-Z]+)_([a-z0-9A-Z]+).m3u8/);
75
- if (targetM3U8) {
76
- const target = targetM3U8[2] + ".m3u8";
61
+ const bucket = admin.storage().bucket(object.bucket);
62
+ 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/);
63
+ if (targetScreenShot) {
64
+ const target = targetScreenShot[2] + ".jpg";
77
65
  if (target == source.toString()) {
78
- console.log("M3U8 file is not replaced.");
66
+ console.log("Jpeg file is not replaced.");
79
67
  return;
80
68
  }
81
69
  yield bucket.file(source).copy(target, {
82
- cacheControl: "no-cache",
83
- contentType: "application/x-mpegURL",
70
+ contentType: "image/jpeg",
84
71
  });
85
72
  yield bucket.file(source).delete();
86
73
  yield bucket.file(target).makePublic();
87
74
  }
88
75
  else {
89
- const targetTS = source.toString().match(/([a-z0-9A-Z]+)_([a-z0-9A-Z]+)_([a-z0-9A-Z]+).ts/);
90
- if (targetTS) {
91
- const target = targetTS[0];
76
+ const targetM3U8 = source.toString().match(/([a-z0-9A-Z]+)_([a-z0-9A-Z]+).m3u8/);
77
+ if (targetM3U8) {
78
+ const target = targetM3U8[2] + ".m3u8";
92
79
  if (target == source.toString()) {
93
- console.log("Ts file is not replaced.");
80
+ console.log("M3U8 file is not replaced.");
94
81
  return;
95
82
  }
96
- console.log("Ts file is replaced.");
97
83
  yield bucket.file(source).copy(target, {
98
- contentType: "video/MP2T",
84
+ cacheControl: "no-cache",
85
+ contentType: "application/x-mpegURL",
99
86
  });
100
87
  yield bucket.file(source).delete();
101
88
  yield bucket.file(target).makePublic();
102
89
  }
90
+ else {
91
+ const targetTS = source.toString().match(/([a-z0-9A-Z]+)_([a-z0-9A-Z]+)_([a-z0-9A-Z]+).ts/);
92
+ if (targetTS) {
93
+ const target = targetTS[0];
94
+ if (target == source.toString()) {
95
+ console.log("Ts file is not replaced.");
96
+ return;
97
+ }
98
+ console.log("Ts file is replaced.");
99
+ yield bucket.file(source).copy(target, {
100
+ contentType: "video/MP2T",
101
+ });
102
+ yield bucket.file(source).delete();
103
+ yield bucket.file(target).makePublic();
104
+ }
105
+ }
103
106
  }
104
107
  }
105
- }
106
- catch (err) {
107
- console.error(err);
108
- throw err;
109
- }
110
- }));
108
+ catch (err) {
109
+ console.error(err);
110
+ throw err;
111
+ }
112
+ }));
113
+ };
111
114
  //# sourceMappingURL=agora_cloud_recording.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agora_cloud_recording.js","sourceRoot":"","sources":["../../src/functions/agora_cloud_recording.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agora_cloud_recording.js","sourceRoot":"","sources":["../../src/functions/agora_cloud_recording.ts"],"names":[],"mappings":"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"}
@@ -74,40 +74,43 @@ const agora_token_1 = require("agora-token");
74
74
  *
75
75
  * 役割。"audience"か"broadcaster"が指定できます。
76
76
  */
77
- module.exports = (regions, options, data) => functions.https.onCall({
78
- region: regions,
79
- timeoutSeconds: options.timeoutSeconds,
80
- memory: options.memory,
81
- minInstances: options.minInstances,
82
- concurrency: options.concurrency,
83
- maxInstances: options.maxInstances,
84
- }, (query) => __awaiter(void 0, void 0, void 0, function* () {
85
- var _a, _b;
86
- try {
87
- const appId = (_a = process.env.AGORA_APPID) !== null && _a !== void 0 ? _a : "";
88
- const appCertificate = (_b = process.env.AGORA_APPCERTIFICATE) !== null && _b !== void 0 ? _b : "";
89
- const expirationTimeInSeconds = 3600;
90
- let role = agora_token_1.RtcRole.PUBLISHER;
91
- if (query.data.role === "audience") {
92
- role = agora_token_1.RtcRole.SUBSCRIBER;
77
+ module.exports = (regions, options, data) => {
78
+ var _a;
79
+ return functions.https.onCall({
80
+ region: (_a = options.region) !== null && _a !== void 0 ? _a : regions,
81
+ timeoutSeconds: options.timeoutSeconds,
82
+ memory: options.memory,
83
+ minInstances: options.minInstances,
84
+ concurrency: options.concurrency,
85
+ maxInstances: options.maxInstances,
86
+ }, (query) => __awaiter(void 0, void 0, void 0, function* () {
87
+ var _b, _c;
88
+ try {
89
+ const appId = (_b = process.env.AGORA_APPID) !== null && _b !== void 0 ? _b : "";
90
+ const appCertificate = (_c = process.env.AGORA_APPCERTIFICATE) !== null && _c !== void 0 ? _c : "";
91
+ const expirationTimeInSeconds = 3600;
92
+ let role = agora_token_1.RtcRole.PUBLISHER;
93
+ if (query.data.role === "audience") {
94
+ role = agora_token_1.RtcRole.SUBSCRIBER;
95
+ }
96
+ const channelName = query.data.name;
97
+ let uid = 0;
98
+ if (query.data.uid) {
99
+ uid = query.data.uid;
100
+ }
101
+ if (!channelName) {
102
+ throw new functions.https.HttpsError("invalid-argument", "Channel is invalid.");
103
+ }
104
+ const token = agora_token_1.RtcTokenBuilder.buildTokenWithUid(appId, appCertificate, channelName, uid, role, expirationTimeInSeconds, expirationTimeInSeconds);
105
+ return {
106
+ channel: channelName,
107
+ token: token,
108
+ };
93
109
  }
94
- const channelName = query.data.name;
95
- let uid = 0;
96
- if (query.data.uid) {
97
- uid = query.data.uid;
110
+ catch (err) {
111
+ console.error(err);
112
+ throw err;
98
113
  }
99
- if (!channelName) {
100
- throw new functions.https.HttpsError("invalid-argument", "Channel is invalid.");
101
- }
102
- const token = agora_token_1.RtcTokenBuilder.buildTokenWithUid(appId, appCertificate, channelName, uid, role, expirationTimeInSeconds, expirationTimeInSeconds);
103
- return {
104
- channel: channelName,
105
- token: token,
106
- };
107
- }
108
- catch (err) {
109
- console.error(err);
110
- throw err;
111
- }
112
- }));
114
+ }));
115
+ };
113
116
  //# sourceMappingURL=agora_token.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agora_token.js","sourceRoot":"","sources":["../../src/functions/agora_token.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AACnD,6CAAuD;AAGvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,CAAC,OAAO,GAAG,CACb,OAAiB,EACjB,OAAyB,EACzB,IAA+B,EACjC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CACvB;IACI,MAAM,EAAE,OAAO;IACf,cAAc,EAAE,OAAO,CAAC,cAAc;IACtC,MAAM,EAAE,OAAO,CAAC,MAAM;IACtB,YAAY,EAAE,OAAO,CAAC,YAAY;IAClC,WAAW,EAAE,OAAO,CAAC,WAAW;IAChC,YAAY,EAAE,OAAO,CAAC,YAAY;CACrC,EACD,CAAO,KAAK,EAAE,EAAE;;IACZ,IAAI;QACA,MAAM,KAAK,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,WAAW,mCAAI,EAAE,CAAC;QAC5C,MAAM,cAAc,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,oBAAoB,mCAAI,EAAE,CAAC;QAC9D,MAAM,uBAAuB,GAAG,IAAI,CAAC;QACrC,IAAI,IAAI,GAAG,qBAAO,CAAC,SAAS,CAAC;QAC7B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;YAChC,IAAI,GAAG,qBAAO,CAAC,UAAU,CAAC;SAC7B;QACD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACpC,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YAChB,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;SACxB;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"}
1
+ {"version":3,"file":"agora_token.js","sourceRoot":"","sources":["../../src/functions/agora_token.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AACnD,6CAAuD;AAGvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;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,MAAM,KAAK,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,WAAW,mCAAI,EAAE,CAAC;YAC5C,MAAM,cAAc,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,oBAAoB,mCAAI,EAAE,CAAC;YAC9D,MAAM,uBAAuB,GAAG,IAAI,CAAC;YACrC,IAAI,IAAI,GAAG,qBAAO,CAAC,SAAS,CAAC;YAC7B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;gBAChC,IAAI,GAAG,qBAAO,CAAC,UAAU,CAAC;aAC7B;YACD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;gBAChB,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;aACxB;YACD,IAAI,CAAC,WAAW,EAAE;gBACd,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;aACnF;YACD,MAAM,KAAK,GAAG,6BAAe,CAAC,iBAAiB,CAC3C,KAAK,EACL,cAAc,EACd,WAAW,EACX,GAAG,EACH,IAAI,EACJ,uBAAuB,EACvB,uBAAuB,CAC1B,CAAC;YACF,OAAO;gBACH,OAAO,EAAE,WAAW;gBACpB,KAAK,EAAE,KAAK;aACf,CAAC;SACL;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,MAAM,GAAG,CAAC;SACb;IACL,CAAC,CAAA,CACJ,CAAA;CAAA,CAAC"}
@@ -59,25 +59,25 @@ const algolia = __importStar(require("algoliasearch"));
59
59
  */
60
60
  module.exports = (regions, options, data) => {
61
61
  var _a;
62
- return functions.database.onValueWritten({
63
- ref: (_a = options.path) !== null && _a !== void 0 ? _a : "",
64
- region: regions[0],
62
+ return functions.firestore.onDocumentWritten({
63
+ document: `${options.path}/{docId}`,
64
+ region: (_a = options.region) !== null && _a !== void 0 ? _a : regions[0],
65
65
  timeoutSeconds: options.timeoutSeconds,
66
66
  memory: options.memory,
67
67
  minInstances: options.minInstances,
68
68
  concurrency: options.concurrency,
69
69
  maxInstances: options.maxInstances,
70
70
  }, (event) => __awaiter(void 0, void 0, void 0, function* () {
71
- var _b, _c, _d, _e;
71
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
72
72
  try {
73
- const after = event.data.after;
74
- const before = event.data.before;
75
- const indexName = (_c = (_b = options.path) === null || _b === void 0 ? void 0 : _b.split("/").pop()) !== null && _c !== void 0 ? _c : "";
76
- const client = algolia.default((_d = process.env.ALGOLIA_APPID) !== null && _d !== void 0 ? _d : "", (_e = process.env.ALGOLIA_APIKEY) !== null && _e !== void 0 ? _e : "");
73
+ const afterExists = (_c = (_b = event.data) === null || _b === void 0 ? void 0 : _b.after.exists) !== null && _c !== void 0 ? _c : false;
74
+ const beforeExists = (_e = (_d = event.data) === null || _d === void 0 ? void 0 : _d.before.exists) !== null && _e !== void 0 ? _e : false;
75
+ const indexName = (_g = (_f = options.path) === null || _f === void 0 ? void 0 : _f.split("/").pop()) !== null && _g !== void 0 ? _g : "";
76
+ const client = algolia.default((_h = process.env.ALGOLIA_APPID) !== null && _h !== void 0 ? _h : "", (_j = process.env.ALGOLIA_APIKEY) !== null && _j !== void 0 ? _j : "");
77
77
  // create
78
- if (!before.exists() && after.exists()) {
79
- const data = after.val();
80
- const key = after.key;
78
+ if (!beforeExists && afterExists) {
79
+ const data = (_k = event.data) === null || _k === void 0 ? void 0 : _k.after.data();
80
+ const key = (_l = event.data) === null || _l === void 0 ? void 0 : _l.after.id;
81
81
  if (!key || !data) {
82
82
  return;
83
83
  }
@@ -86,9 +86,9 @@ module.exports = (regions, options, data) => {
86
86
  yield index.saveObject(algoliaObject);
87
87
  // update
88
88
  }
89
- else if (before.exists() && after.exists()) {
90
- const data = after.val();
91
- const key = after.key;
89
+ else if (beforeExists && afterExists) {
90
+ const data = (_m = event.data) === null || _m === void 0 ? void 0 : _m.after.data();
91
+ const key = (_o = event.data) === null || _o === void 0 ? void 0 : _o.after.id;
92
92
  if (!key || !data) {
93
93
  return;
94
94
  }
@@ -97,8 +97,8 @@ module.exports = (regions, options, data) => {
97
97
  yield index.saveObject(algoliaObject);
98
98
  // delete
99
99
  }
100
- else if (before.exists() && !after.exists()) {
101
- const key = before.key;
100
+ else if (beforeExists && !afterExists) {
101
+ const key = (_p = event.data) === null || _p === void 0 ? void 0 : _p.after.id;
102
102
  if (!key) {
103
103
  return;
104
104
  }
@@ -1 +1 @@
1
- {"version":3,"file":"algolia.js","sourceRoot":"","sources":["../../src/functions/algolia.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"algolia.js","sourceRoot":"","sources":["../../src/functions/algolia.ts"],"names":[],"mappings":"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"}
@@ -60,24 +60,27 @@ const functions = __importStar(require("firebase-functions/v2"));
60
60
  * その後、認証情報からOAuth 2.0 クライアントIDを作成します。
61
61
  * https://console.cloud.google.com/apis/credentials
62
62
  */
63
- module.exports = (regions, options, data) => functions.https.onRequest({
64
- region: regions,
65
- timeoutSeconds: options.timeoutSeconds,
66
- memory: options.memory,
67
- minInstances: options.minInstances,
68
- concurrency: options.concurrency,
69
- maxInstances: options.maxInstances,
70
- }, (req, res) => __awaiter(void 0, void 0, void 0, function* () {
71
- try {
72
- const redirectUri = process.env.PURCHASE_ANDROID_REDIRECTURI;
73
- if (!req.query.id || !redirectUri) {
74
- throw new functions.https.HttpsError("invalid-argument", "Query parameter is invalid.");
63
+ module.exports = (regions, options, data) => {
64
+ var _a;
65
+ return functions.https.onRequest({
66
+ region: (_a = options.region) !== null && _a !== void 0 ? _a : regions,
67
+ timeoutSeconds: options.timeoutSeconds,
68
+ memory: options.memory,
69
+ minInstances: options.minInstances,
70
+ concurrency: options.concurrency,
71
+ maxInstances: options.maxInstances,
72
+ }, (req, res) => __awaiter(void 0, void 0, void 0, function* () {
73
+ try {
74
+ const redirectUri = process.env.PURCHASE_ANDROID_REDIRECTURI;
75
+ if (!req.query.id || !redirectUri) {
76
+ throw new functions.https.HttpsError("invalid-argument", "Query parameter is invalid.");
77
+ }
78
+ res.redirect(`https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=${req.query.id}&redirect_uri=${redirectUri}&scope=https://www.googleapis.com/auth/androidpublisher&access_type=offline&approval_prompt=force`);
75
79
  }
76
- res.redirect(`https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=${req.query.id}&redirect_uri=${redirectUri}&scope=https://www.googleapis.com/auth/androidpublisher&access_type=offline&approval_prompt=force`);
77
- }
78
- catch (err) {
79
- console.error(err);
80
- res.end();
81
- }
82
- }));
80
+ catch (err) {
81
+ console.error(err);
82
+ res.end();
83
+ }
84
+ }));
85
+ };
83
86
  //# sourceMappingURL=android_auth_code.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"android_auth_code.js","sourceRoot":"","sources":["../../src/functions/android_auth_code.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AAGnD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,OAAO,GAAG,CACb,OAAiB,EACjB,OAAyB,EACzB,IAA+B,EACjC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAC1B;IACI,MAAM,EAAE,OAAO;IACf,cAAc,EAAE,OAAO,CAAC,cAAc;IACtC,MAAM,EAAE,OAAO,CAAC,MAAM;IACtB,YAAY,EAAE,OAAO,CAAC,YAAY;IAClC,WAAW,EAAE,OAAO,CAAC,WAAW;IAChC,YAAY,EAAE,OAAO,CAAC,YAAY;CACrC,EACD,CAAO,GAAG,EAAE,GAAG,EAAE,EAAE;IACf,IAAI;QACA,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;QAC7D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE;YAC/B,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE,6BAA6B,CAAC,CAAC;SAC3F;QACD,GAAG,CAAC,QAAQ,CACR,0EAA0E,GAAG,CAAC,KAAK,CAAC,EAAE,iBAAiB,WAAW,mGAAmG,CACxN,CAAC;KACL;IAAC,OAAO,GAAG,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,GAAG,CAAC,GAAG,EAAE,CAAC;KACb;AACL,CAAC,CAAA,CACJ,CAAC"}
1
+ {"version":3,"file":"android_auth_code.js","sourceRoot":"","sources":["../../src/functions/android_auth_code.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AAGnD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,OAAO,GAAG,CACb,OAAiB,EACjB,OAA6B,EAC7B,IAA+B,EACjC,EAAE;;IAAC,OAAA,SAAS,CAAC,KAAK,CAAC,SAAS,CAC1B;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,GAAG,EAAE,GAAG,EAAE,EAAE;QACf,IAAI;YACA,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;YAC7D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE;gBAC/B,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE,6BAA6B,CAAC,CAAC;aAC3F;YACD,GAAG,CAAC,QAAQ,CACR,0EAA0E,GAAG,CAAC,KAAK,CAAC,EAAE,iBAAiB,WAAW,mGAAmG,CACxN,CAAC;SACL;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,EAAE,CAAC;SACb;IACL,CAAC,CAAA,CACJ,CAAA;CAAA,CAAC"}
@@ -74,45 +74,48 @@ const api_1 = require("../lib/api");
74
74
  * その後、認証情報からOAuth 2.0 クライアントIDを作成します。
75
75
  * https://console.cloud.google.com/apis/credentials
76
76
  */
77
- module.exports = (regions, options, data) => functions.https.onRequest({
78
- region: regions,
79
- timeoutSeconds: options.timeoutSeconds,
80
- memory: options.memory,
81
- minInstances: options.minInstances,
82
- concurrency: options.concurrency,
83
- maxInstances: options.maxInstances,
84
- }, (req, res) => __awaiter(void 0, void 0, void 0, function* () {
85
- try {
86
- const redirectUri = process.env.PURCHASE_ANDROID_REDIRECTURI;
87
- const clientId = process.env.PURCHASE_ANDROID_CLIENTID;
88
- const clientSecret = process.env.PURCHASE_ANDROID_CLIENTSECRET;
89
- if (!req.query.code || !clientId || !clientSecret || !redirectUri) {
90
- throw new functions.https.HttpsError("invalid-argument", "Query parameter is invalid.");
77
+ module.exports = (regions, options, data) => {
78
+ var _a;
79
+ return functions.https.onRequest({
80
+ region: (_a = options.region) !== null && _a !== void 0 ? _a : regions,
81
+ timeoutSeconds: options.timeoutSeconds,
82
+ memory: options.memory,
83
+ minInstances: options.minInstances,
84
+ concurrency: options.concurrency,
85
+ maxInstances: options.maxInstances,
86
+ }, (req, res) => __awaiter(void 0, void 0, void 0, function* () {
87
+ try {
88
+ const redirectUri = process.env.PURCHASE_ANDROID_REDIRECTURI;
89
+ const clientId = process.env.PURCHASE_ANDROID_CLIENTID;
90
+ const clientSecret = process.env.PURCHASE_ANDROID_CLIENTSECRET;
91
+ if (!req.query.code || !clientId || !clientSecret || !redirectUri) {
92
+ throw new functions.https.HttpsError("invalid-argument", "Query parameter is invalid.");
93
+ }
94
+ const resp = yield api_1.Api.post("https://accounts.google.com/o/oauth2/token", {
95
+ timeout: 30 * 1000,
96
+ data: {
97
+ "grant_type": "authorization_code",
98
+ "client_id": clientId,
99
+ "client_secret": clientSecret,
100
+ "redirect_uri": redirectUri,
101
+ "access_type": "offline",
102
+ "code": req.query.code,
103
+ },
104
+ });
105
+ if (!resp) {
106
+ throw new functions.https.HttpsError("data-loss", "Cannot get access token.");
107
+ }
108
+ const json = (yield resp.json());
109
+ if (json === null) {
110
+ throw new functions.https.HttpsError("data-loss", "Cannot get access token.");
111
+ }
112
+ console.log(json);
113
+ res.send(`RefreshToken:${json["refresh_token"]}`);
91
114
  }
92
- const resp = yield api_1.Api.post("https://accounts.google.com/o/oauth2/token", {
93
- timeout: 30 * 1000,
94
- data: {
95
- "grant_type": "authorization_code",
96
- "client_id": clientId,
97
- "client_secret": clientSecret,
98
- "redirect_uri": redirectUri,
99
- "access_type": "offline",
100
- "code": req.query.code,
101
- },
102
- });
103
- if (!resp) {
104
- throw new functions.https.HttpsError("data-loss", "Cannot get access token.");
115
+ catch (err) {
116
+ console.error(err);
117
+ res.end();
105
118
  }
106
- const json = (yield resp.json());
107
- if (json === null) {
108
- throw new functions.https.HttpsError("data-loss", "Cannot get access token.");
109
- }
110
- console.log(json);
111
- res.send(`RefreshToken:${json["refresh_token"]}`);
112
- }
113
- catch (err) {
114
- console.error(err);
115
- res.end();
116
- }
117
- }));
119
+ }));
120
+ };
118
121
  //# sourceMappingURL=android_token.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"android_token.js","sourceRoot":"","sources":["../../src/functions/android_token.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AACnD,oCAAiC;AAIjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,CAAC,OAAO,GAAG,CACb,OAAiB,EACjB,OAAyB,EACzB,IAA+B,EACjC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAC1B;IACI,MAAM,EAAE,OAAO;IACf,cAAc,EAAE,OAAO,CAAC,cAAc;IACtC,MAAM,EAAE,OAAO,CAAC,MAAM;IACtB,YAAY,EAAE,OAAO,CAAC,YAAY;IAClC,WAAW,EAAE,OAAO,CAAC,WAAW;IAChC,YAAY,EAAE,OAAO,CAAC,YAAY;CACrC,EACD,CAAO,GAAG,EAAE,GAAG,EAAE,EAAE;IACf,IAAI;QACA,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;QAC7D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;QACvD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;QAC/D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,EAAE;YAC/D,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE,6BAA6B,CAAC,CAAC;SAC3F;QACD,MAAM,IAAI,GAAG,MAAM,SAAG,CAAC,IAAI,CAAC,4CAA4C,EAAE;YACtE,OAAO,EAAE,EAAE,GAAG,IAAI;YAClB,IAAI,EAAE;gBACF,YAAY,EAAE,oBAAoB;gBAClC,WAAW,EAAE,QAAQ;gBACrB,eAAe,EAAE,YAAY;gBAC7B,cAAc,EAAE,WAAW;gBAC3B,aAAa,EAAE,SAAS;gBACxB,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI;aACzB;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,EAAE;YACP,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC;SACjF;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAA2B,CAAC;QAC3D,IAAI,IAAI,KAAK,IAAI,EAAE;YACf,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC;SACjF;QACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;KACrD;IAAC,OAAO,GAAG,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,GAAG,CAAC,GAAG,EAAE,CAAC;KACb;AACL,CAAC,CAAA,CACJ,CAAC"}
1
+ {"version":3,"file":"android_token.js","sourceRoot":"","sources":["../../src/functions/android_token.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AACnD,oCAAiC;AAIjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,CAAC,OAAO,GAAG,CACb,OAAiB,EACjB,OAA6B,EAC7B,IAA+B,EACjC,EAAE;;IAAC,OAAA,SAAS,CAAC,KAAK,CAAC,SAAS,CAC1B;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,GAAG,EAAE,GAAG,EAAE,EAAE;QACf,IAAI;YACA,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;YAC7D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;YACvD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;YAC/D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,EAAE;gBAC/D,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE,6BAA6B,CAAC,CAAC;aAC3F;YACD,MAAM,IAAI,GAAG,MAAM,SAAG,CAAC,IAAI,CAAC,4CAA4C,EAAE;gBACtE,OAAO,EAAE,EAAE,GAAG,IAAI;gBAClB,IAAI,EAAE;oBACF,YAAY,EAAE,oBAAoB;oBAClC,WAAW,EAAE,QAAQ;oBACrB,eAAe,EAAE,YAAY;oBAC7B,cAAc,EAAE,WAAW;oBAC3B,aAAa,EAAE,SAAS;oBACxB,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI;iBACzB;aACJ,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,EAAE;gBACP,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC;aACjF;YACD,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAA2B,CAAC;YAC3D,IAAI,IAAI,KAAK,IAAI,EAAE;gBACf,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC;aACjF;YACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;SACrD;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,EAAE,CAAC;SACb;IACL,CAAC,CAAA,CACJ,CAAA;CAAA,CAAC"}
@@ -96,44 +96,47 @@ const updater = __importStar(require("../lib/update_wallet"));
96
96
  *
97
97
  * 購入したときに発行された購入トークン。
98
98
  */
99
- module.exports = (regions, options, data) => functions.https.onCall({
100
- region: regions,
101
- timeoutSeconds: options.timeoutSeconds,
102
- memory: options.memory,
103
- minInstances: options.minInstances,
104
- concurrency: options.concurrency,
105
- maxInstances: options.maxInstances,
106
- }, (query) => __awaiter(void 0, void 0, void 0, function* () {
107
- var _a, _b, _c;
108
- try {
109
- /* ==== Android検証ここから ==== */
110
- const res = yield verifier.verifyAndroid({
111
- type: "products",
112
- clientId: (_a = process.env.PURCHASE_ANDROID_CLIENTID) !== null && _a !== void 0 ? _a : "",
113
- clientSecret: (_b = process.env.PURCHASE_ANDROID_CLIENTSECRET) !== null && _b !== void 0 ? _b : "",
114
- refreshToken: (_c = process.env.PURCHASE_ANDROID_REFRESHTOKEN) !== null && _c !== void 0 ? _c : "",
115
- packageName: query.data.packageName,
116
- productId: query.data.productId,
117
- purchaseToken: query.data.purchaseToken,
118
- });
119
- if (res["purchaseState"] !== 0) {
120
- throw new functions.https.HttpsError("unauthenticated", "Illegal receipt.");
121
- }
122
- /* ==== ここまでAndroid検証 ==== */
123
- if (!query.data.path || !query.data.value) {
99
+ module.exports = (regions, options, data) => {
100
+ var _a;
101
+ return functions.https.onCall({
102
+ region: (_a = options.region) !== null && _a !== void 0 ? _a : regions,
103
+ timeoutSeconds: options.timeoutSeconds,
104
+ memory: options.memory,
105
+ minInstances: options.minInstances,
106
+ concurrency: options.concurrency,
107
+ maxInstances: options.maxInstances,
108
+ }, (query) => __awaiter(void 0, void 0, void 0, function* () {
109
+ var _b, _c, _d;
110
+ try {
111
+ /* ==== Android検証ここから ==== */
112
+ const res = yield verifier.verifyAndroid({
113
+ 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 : "",
117
+ packageName: query.data.packageName,
118
+ productId: query.data.productId,
119
+ purchaseToken: query.data.purchaseToken,
120
+ });
121
+ if (res["purchaseState"] !== 0) {
122
+ throw new functions.https.HttpsError("unauthenticated", "Illegal receipt.");
123
+ }
124
+ /* ==== ここまでAndroid検証 ==== */
125
+ if (!query.data.path || !query.data.value) {
126
+ return res;
127
+ }
128
+ /* ==== Firestoreの更新ここから ==== */
129
+ yield updater.updateWallet({
130
+ targetDocumentFieldPath: query.data.path,
131
+ value: query.data.value,
132
+ });
133
+ /* ==== ここまでFirestoreの更新 ==== */
124
134
  return res;
125
135
  }
126
- /* ==== Firestoreの更新ここから ==== */
127
- yield updater.updateWallet({
128
- targetDocumentFieldPath: query.data.path,
129
- value: query.data.value,
130
- });
131
- /* ==== ここまでFirestoreの更新 ==== */
132
- return res;
133
- }
134
- catch (err) {
135
- console.error(err);
136
- throw err;
137
- }
138
- }));
136
+ catch (err) {
137
+ console.error(err);
138
+ throw err;
139
+ }
140
+ }));
141
+ };
139
142
  //# sourceMappingURL=consumable_verify_android.js.map
@@ -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,OAAyB,EACzB,IAA+B,EACjC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CACvB;IACI,MAAM,EAAE,OAAO;IACf,cAAc,EAAE,OAAO,CAAC,cAAc;IACtC,MAAM,EAAE,OAAO,CAAC,MAAM;IACtB,YAAY,EAAE,OAAO,CAAC,YAAY;IAClC,WAAW,EAAE,OAAO,CAAC,WAAW;IAChC,YAAY,EAAE,OAAO,CAAC,YAAY;CACrC,EACD,CAAO,KAAK,EAAE,EAAE;;IACZ,IAAI;QACA,6BAA6B;QAC7B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC;YACrC,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,yBAAyB,mCAAI,EAAE;YACrD,YAAY,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,mCAAI,EAAE;YAC7D,YAAY,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,mCAAI,EAAE;YAC7D,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW;YACnC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS;YAC/B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa;SAC1C,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;YAC5B,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;SAC/E;QACD,6BAA6B;QAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;YACvC,OAAO,GAAG,CAAC;SACd;QACD,gCAAgC;QAChC,MAAM,OAAO,CAAC,YAAY,CAAC;YACvB,uBAAuB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;YACxC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;SAC1B,CAAC,CAAC;QACH,gCAAgC;QAChC,OAAO,GAAG,CAAC;KACd;IAAC,OAAO,GAAG,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,MAAM,GAAG,CAAC;KACb;AACL,CAAC,CAAA,CACJ,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,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"}