expo-iap 3.1.0 → 3.1.1-rc.2

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 (47) hide show
  1. package/build/ExpoIapModule.d.ts +1 -0
  2. package/build/ExpoIapModule.d.ts.map +1 -1
  3. package/build/ExpoIapModule.js +29 -4
  4. package/build/ExpoIapModule.js.map +1 -1
  5. package/build/utils/constants.d.ts +2 -0
  6. package/build/utils/constants.d.ts.map +1 -1
  7. package/build/utils/constants.js +9 -2
  8. package/build/utils/constants.js.map +1 -1
  9. package/coverage/clover.xml +497 -0
  10. package/coverage/coverage-final.json +6 -0
  11. package/coverage/lcov-report/base.css +224 -0
  12. package/coverage/lcov-report/block-navigation.js +87 -0
  13. package/coverage/lcov-report/favicon.png +0 -0
  14. package/coverage/lcov-report/index.html +161 -0
  15. package/coverage/lcov-report/prettify.css +1 -0
  16. package/coverage/lcov-report/prettify.js +2 -0
  17. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  18. package/coverage/lcov-report/sorter.js +196 -0
  19. package/coverage/lcov-report/src/ExpoIap.types.ts.html +1243 -0
  20. package/coverage/lcov-report/src/PurchaseError.ts.html +787 -0
  21. package/coverage/lcov-report/src/helpers/index.html +116 -0
  22. package/coverage/lcov-report/src/helpers/subscription.ts.html +496 -0
  23. package/coverage/lcov-report/src/index.html +116 -0
  24. package/coverage/lcov-report/src/index.ts.html +1993 -0
  25. package/coverage/lcov-report/src/modules/android.ts.html +550 -0
  26. package/coverage/lcov-report/src/modules/index.html +131 -0
  27. package/coverage/lcov-report/src/modules/ios.ts.html +1222 -0
  28. package/coverage/lcov-report/src/purchase-error.ts.html +880 -0
  29. package/coverage/lcov-report/src/types/ExpoIapAndroid.types.ts.html +493 -0
  30. package/coverage/lcov-report/src/types/index.html +116 -0
  31. package/coverage/lcov-report/src/useIap.ts.html +1483 -0
  32. package/coverage/lcov-report/src/utils/errorMapping.ts.html +1069 -0
  33. package/coverage/lcov-report/src/utils/index.html +116 -0
  34. package/coverage/lcov-report/src/utils/purchase.ts.html +241 -0
  35. package/coverage/lcov.info +929 -0
  36. package/expo-module.config.json +10 -3
  37. package/ios/onside/OnsideIapModule.swift +489 -0
  38. package/package.json +4 -3
  39. package/plugin/build/withIAP.d.ts +22 -9
  40. package/plugin/build/withIAP.js +157 -9
  41. package/plugin/jest.config.js +13 -3
  42. package/plugin/src/expoConfig.augmentation.d.ts +38 -0
  43. package/plugin/src/withIAP.ts +258 -18
  44. package/plugin/tsconfig.json +2 -1
  45. package/plugin/tsconfig.tsbuildinfo +1 -1
  46. package/src/ExpoIapModule.ts +45 -4
  47. package/src/utils/constants.ts +11 -2
@@ -1,4 +1,5 @@
1
1
  declare const ExpoIapModule: any;
2
+ export declare const USING_ONSIDE_SDK: boolean;
2
3
  export declare const NATIVE_ERROR_CODES: any;
3
4
  export default ExpoIapModule;
4
5
  //# sourceMappingURL=ExpoIapModule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoIapModule.d.ts","sourceRoot":"","sources":["../src/ExpoIapModule.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,aAAa,KAAiC,CAAC;AAGrD,eAAO,MAAM,kBAAkB,KAAkC,CAAC;AAElE,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"ExpoIapModule.d.ts","sourceRoot":"","sources":["../src/ExpoIapModule.ts"],"names":[],"mappings":"AAIA,QAAA,MAAe,aAAa,KACL,CAAC;AAExB,eAAO,MAAM,gBAAgB,SAA+C,CAAC;AAG7E,eAAO,MAAM,kBAAkB,KAAkC,CAAC;AAElE,eAAe,aAAa,CAAC"}
@@ -1,8 +1,33 @@
1
- import { requireNativeModule } from 'expo-modules-core';
2
- // It loads the native module object from the JSI or falls back to
3
- // the bridge module (from NativeModulesProxy) if the remote debugger is on.
4
- const ExpoIapModule = requireNativeModule('ExpoIap');
1
+ import { requireNativeModule, UnavailabilityError } from 'expo-modules-core';
2
+ const { module: ExpoIapModule, name: resolvedNativeModuleName } = resolveNativeModule();
3
+ export const USING_ONSIDE_SDK = resolvedNativeModuleName === 'ExpoIapOnside';
5
4
  // Platform-specific error codes from native modules
6
5
  export const NATIVE_ERROR_CODES = ExpoIapModule.ERROR_CODES || {};
7
6
  export default ExpoIapModule;
7
+ function resolveNativeModule() {
8
+ const candidates = ['ExpoIapOnside', 'ExpoIap'];
9
+ for (const name of candidates) {
10
+ try {
11
+ const module = requireNativeModule(name);
12
+ return { module, name };
13
+ }
14
+ catch (error) {
15
+ if (name === 'ExpoIapOnside' && isMissingModuleError(error, name)) {
16
+ // Onside module is optional. If unavailable, fall back to ExpoIap.
17
+ continue;
18
+ }
19
+ throw error;
20
+ }
21
+ }
22
+ throw new UnavailabilityError('expo-iap', 'ExpoIap native module is unavailable');
23
+ }
24
+ function isMissingModuleError(error, moduleName) {
25
+ if (error instanceof UnavailabilityError) {
26
+ return true;
27
+ }
28
+ if (error instanceof Error) {
29
+ return error.message.includes(`Cannot find native module '${moduleName}'`);
30
+ }
31
+ return false;
32
+ }
8
33
  //# sourceMappingURL=ExpoIapModule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoIapModule.js","sourceRoot":"","sources":["../src/ExpoIapModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AAEtD,kEAAkE;AAClE,4EAA4E;AAC5E,MAAM,aAAa,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAErD,oDAAoD;AACpD,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAC,WAAW,IAAI,EAAE,CAAC;AAElE,eAAe,aAAa,CAAC","sourcesContent":["import {requireNativeModule} from 'expo-modules-core';\n\n// It loads the native module object from the JSI or falls back to\n// the bridge module (from NativeModulesProxy) if the remote debugger is on.\nconst ExpoIapModule = requireNativeModule('ExpoIap');\n\n// Platform-specific error codes from native modules\nexport const NATIVE_ERROR_CODES = ExpoIapModule.ERROR_CODES || {};\n\nexport default ExpoIapModule;\n"]}
1
+ {"version":3,"file":"ExpoIapModule.js","sourceRoot":"","sources":["../src/ExpoIapModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAE,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AAI3E,MAAM,EAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,wBAAwB,EAAC,GAC3D,mBAAmB,EAAE,CAAC;AAExB,MAAM,CAAC,MAAM,gBAAgB,GAAG,wBAAwB,KAAK,eAAe,CAAC;AAE7E,oDAAoD;AACpD,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAC,WAAW,IAAI,EAAE,CAAC;AAElE,eAAe,aAAa,CAAC;AAE7B,SAAS,mBAAmB;IAI1B,MAAM,UAAU,GAA0B,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IAEvE,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACzC,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,IAAI,KAAK,eAAe,IAAI,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;gBAClE,mEAAmE;gBACnE,SAAS;YACX,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,IAAI,mBAAmB,CAC3B,UAAU,EACV,sCAAsC,CACvC,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc,EAAE,UAAkB;IAC9D,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,8BAA8B,UAAU,GAAG,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import {requireNativeModule, UnavailabilityError} from 'expo-modules-core';\n\ntype NativeIapModuleName = 'ExpoIapOnside' | 'ExpoIap';\n\nconst {module: ExpoIapModule, name: resolvedNativeModuleName} =\n resolveNativeModule();\n\nexport const USING_ONSIDE_SDK = resolvedNativeModuleName === 'ExpoIapOnside';\n\n// Platform-specific error codes from native modules\nexport const NATIVE_ERROR_CODES = ExpoIapModule.ERROR_CODES || {};\n\nexport default ExpoIapModule;\n\nfunction resolveNativeModule(): {\n module: any;\n name: NativeIapModuleName;\n} {\n const candidates: NativeIapModuleName[] = ['ExpoIapOnside', 'ExpoIap'];\n\n for (const name of candidates) {\n try {\n const module = requireNativeModule(name);\n return {module, name};\n } catch (error) {\n if (name === 'ExpoIapOnside' && isMissingModuleError(error, name)) {\n // Onside module is optional. If unavailable, fall back to ExpoIap.\n continue;\n }\n\n throw error;\n }\n }\n\n throw new UnavailabilityError(\n 'expo-iap',\n 'ExpoIap native module is unavailable',\n );\n}\n\nfunction isMissingModuleError(error: unknown, moduleName: string): boolean {\n if (error instanceof UnavailabilityError) {\n return true;\n }\n\n if (error instanceof Error) {\n return error.message.includes(`Cannot find native module '${moduleName}'`);\n }\n\n return false;\n}\n"]}
@@ -1,3 +1,5 @@
1
+ export declare const CONSUMABLE_PRODUCT_IDS: string[];
2
+ export declare const NON_CONSUMABLE_PRODUCT_IDS: string[];
1
3
  export declare const PRODUCT_IDS: string[];
2
4
  export declare const SUBSCRIPTION_PRODUCT_IDS: string[];
3
5
  export declare const DEFAULT_SUBSCRIPTION_PRODUCT_ID: string;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,EAAE,MAAM,EAG/B,CAAC;AAGF,eAAO,MAAM,wBAAwB,EAAE,MAAM,EAA+B,CAAC;AAG7E,eAAO,MAAM,+BAA+B,QAA8B,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,sBAAsB,EAAE,MAAM,EAG1C,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,MAAM,EAE9C,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,EAG/B,CAAC;AAGF,eAAO,MAAM,wBAAwB,EAAE,MAAM,EAA+B,CAAC;AAG7E,eAAO,MAAM,+BAA+B,QAA8B,CAAC"}
@@ -1,10 +1,17 @@
1
1
  // Centralized product ID constants for examples and internal usage
2
2
  // Rename guide: subscriptionIds -> SUBSCRIPTION_PRODUCT_IDS, PRODUCT_IDS remains the same name
3
- // One-time purchase product IDs (consumables/non-consumables)
4
- export const PRODUCT_IDS = [
3
+ // One-time purchase product IDs split by consumption behavior
4
+ export const CONSUMABLE_PRODUCT_IDS = [
5
5
  'dev.hyo.martie.10bulbs',
6
6
  'dev.hyo.martie.30bulbs',
7
7
  ];
8
+ export const NON_CONSUMABLE_PRODUCT_IDS = [
9
+ 'dev.hyo.martie.certified',
10
+ ];
11
+ export const PRODUCT_IDS = [
12
+ ...CONSUMABLE_PRODUCT_IDS,
13
+ ...NON_CONSUMABLE_PRODUCT_IDS,
14
+ ];
8
15
  // Subscription product IDs
9
16
  export const SUBSCRIPTION_PRODUCT_IDS = ['dev.hyo.martie.premium'];
10
17
  // Optionally export a single default subscription for convenience
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,+FAA+F;AAE/F,8DAA8D;AAC9D,MAAM,CAAC,MAAM,WAAW,GAAa;IACnC,wBAAwB;IACxB,wBAAwB;CACzB,CAAC;AAEF,2BAA2B;AAC3B,MAAM,CAAC,MAAM,wBAAwB,GAAa,CAAC,wBAAwB,CAAC,CAAC;AAE7E,kEAAkE;AAClE,MAAM,CAAC,MAAM,+BAA+B,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC","sourcesContent":["// Centralized product ID constants for examples and internal usage\n// Rename guide: subscriptionIds -> SUBSCRIPTION_PRODUCT_IDS, PRODUCT_IDS remains the same name\n\n// One-time purchase product IDs (consumables/non-consumables)\nexport const PRODUCT_IDS: string[] = [\n 'dev.hyo.martie.10bulbs',\n 'dev.hyo.martie.30bulbs',\n];\n\n// Subscription product IDs\nexport const SUBSCRIPTION_PRODUCT_IDS: string[] = ['dev.hyo.martie.premium'];\n\n// Optionally export a single default subscription for convenience\nexport const DEFAULT_SUBSCRIPTION_PRODUCT_ID = SUBSCRIPTION_PRODUCT_IDS[0];\n"]}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,+FAA+F;AAE/F,8DAA8D;AAC9D,MAAM,CAAC,MAAM,sBAAsB,GAAa;IAC9C,wBAAwB;IACxB,wBAAwB;CACzB,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAa;IAClD,0BAA0B;CAC3B,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAa;IACnC,GAAG,sBAAsB;IACzB,GAAG,0BAA0B;CAC9B,CAAC;AAEF,2BAA2B;AAC3B,MAAM,CAAC,MAAM,wBAAwB,GAAa,CAAC,wBAAwB,CAAC,CAAC;AAE7E,kEAAkE;AAClE,MAAM,CAAC,MAAM,+BAA+B,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC","sourcesContent":["// Centralized product ID constants for examples and internal usage\n// Rename guide: subscriptionIds -> SUBSCRIPTION_PRODUCT_IDS, PRODUCT_IDS remains the same name\n\n// One-time purchase product IDs split by consumption behavior\nexport const CONSUMABLE_PRODUCT_IDS: string[] = [\n 'dev.hyo.martie.10bulbs',\n 'dev.hyo.martie.30bulbs',\n];\n\nexport const NON_CONSUMABLE_PRODUCT_IDS: string[] = [\n 'dev.hyo.martie.certified',\n];\n\nexport const PRODUCT_IDS: string[] = [\n ...CONSUMABLE_PRODUCT_IDS,\n ...NON_CONSUMABLE_PRODUCT_IDS,\n];\n\n// Subscription product IDs\nexport const SUBSCRIPTION_PRODUCT_IDS: string[] = ['dev.hyo.martie.premium'];\n\n// Optionally export a single default subscription for convenience\nexport const DEFAULT_SUBSCRIPTION_PRODUCT_ID = SUBSCRIPTION_PRODUCT_IDS[0];\n"]}
@@ -0,0 +1,497 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <coverage generated="1758476468561" clover="3.2.0">
3
+ <project timestamp="1758476468561" name="All files">
4
+ <metrics statements="464" coveredstatements="459" conditionals="252" coveredconditionals="230" methods="84" coveredmethods="75" elements="800" coveredelements="764" complexity="0" loc="464" ncloc="464" packages="4" files="5" classes="5"/>
5
+ <package name="src">
6
+ <metrics statements="188" coveredstatements="187" conditionals="88" coveredconditionals="80" methods="38" coveredmethods="30"/>
7
+ <file name="index.ts" path="/Users/hyo/Github/hyochan/expo-iap/src/index.ts">
8
+ <metrics statements="188" coveredstatements="187" conditionals="88" coveredconditionals="80" methods="38" coveredmethods="30"/>
9
+ <line num="2" count="1" type="stmt"/>
10
+ <line num="3" count="1" type="stmt"/>
11
+ <line num="6" count="1" type="stmt"/>
12
+ <line num="7" count="1" type="stmt"/>
13
+ <line num="14" count="1" type="stmt"/>
14
+ <line num="41" count="1" type="stmt"/>
15
+ <line num="42" count="1" type="stmt"/>
16
+ <line num="45" count="1" type="stmt"/>
17
+ <line num="46" count="1" type="stmt"/>
18
+ <line num="47" count="1" type="stmt"/>
19
+ <line num="50" count="1" type="stmt"/>
20
+ <line num="51" count="1" type="stmt"/>
21
+ <line num="52" count="1" type="stmt"/>
22
+ <line num="56" count="1" type="cond" truecount="2" falsecount="0"/>
23
+ <line num="57" count="1" type="stmt"/>
24
+ <line num="58" count="1" type="stmt"/>
25
+ <line num="59" count="1" type="stmt"/>
26
+ <line num="84" count="1" type="cond" truecount="1" falsecount="1"/>
27
+ <line num="92" count="1" type="stmt"/>
28
+ <line num="93" count="18" type="cond" truecount="1" falsecount="0"/>
29
+ <line num="94" count="1" type="stmt"/>
30
+ <line num="99" count="18" type="cond" truecount="4" falsecount="0"/>
31
+ <line num="100" count="9" type="stmt"/>
32
+ <line num="105" count="9" type="cond" truecount="1" falsecount="0"/>
33
+ <line num="106" count="5" type="stmt"/>
34
+ <line num="111" count="4" type="cond" truecount="1" falsecount="0"/>
35
+ <line num="112" count="3" type="stmt"/>
36
+ <line num="117" count="1" type="stmt"/>
37
+ <line num="120" count="1" type="stmt"/>
38
+ <line num="121" count="7" type="stmt"/>
39
+ <line num="122" count="7" type="cond" truecount="1" falsecount="0"/>
40
+ <line num="123" count="5" type="stmt"/>
41
+ <line num="126" count="2" type="stmt"/>
42
+ <line num="127" count="2" type="cond" truecount="2" falsecount="2"/>
43
+ <line num="128" count="0" type="stmt"/>
44
+ <line num="131" count="2" type="stmt"/>
45
+ <line num="134" count="1" type="stmt"/>
46
+ <line num="135" count="7" type="stmt"/>
47
+ <line num="137" count="1" type="stmt"/>
48
+ <line num="140" count="1" type="stmt"/>
49
+ <line num="141" count="1" type="stmt"/>
50
+ <line num="142" count="1" type="stmt"/>
51
+ <line num="144" count="1" type="stmt"/>
52
+ <line num="148" count="1" type="stmt"/>
53
+ <line num="151" count="1" type="stmt"/>
54
+ <line num="154" count="1" type="stmt"/>
55
+ <line num="155" count="1" type="stmt"/>
56
+ <line num="157" count="1" type="stmt"/>
57
+ <line num="161" count="1" type="stmt"/>
58
+ <line num="184" count="1" type="stmt"/>
59
+ <line num="187" count="2" type="cond" truecount="1" falsecount="0"/>
60
+ <line num="188" count="1" type="stmt"/>
61
+ <line num="191" count="1" type="stmt"/>
62
+ <line num="193" count="1" type="stmt"/>
63
+ <line num="196" count="1" type="stmt"/>
64
+ <line num="197" count="1" type="stmt"/>
65
+ <line num="199" count="1" type="stmt"/>
66
+ <line num="200" count="1" type="stmt"/>
67
+ <line num="209" count="1" type="stmt"/>
68
+ <line num="210" count="6" type="stmt"/>
69
+ <line num="211" count="6" type="cond" truecount="1" falsecount="1"/>
70
+ <line num="213" count="6" type="cond" truecount="3" falsecount="0"/>
71
+ <line num="214" count="1" type="stmt"/>
72
+ <line num="220" count="5" type="stmt"/>
73
+ <line num="223" count="5" type="stmt"/>
74
+ <line num="225" count="5" type="stmt"/>
75
+ <line num="228" count="3" type="stmt"/>
76
+ <line num="229" count="6" type="cond" truecount="1" falsecount="0"/>
77
+ <line num="230" count="1" type="stmt"/>
78
+ <line num="232" count="5" type="stmt"/>
79
+ <line num="233" count="5" type="cond" truecount="2" falsecount="0"/>
80
+ <line num="236" count="5" type="stmt"/>
81
+ <line num="239" count="1" type="stmt"/>
82
+ <line num="240" count="3" type="cond" truecount="1" falsecount="0"/>
83
+ <line num="241" count="1" type="stmt"/>
84
+ <line num="243" count="2" type="stmt"/>
85
+ <line num="244" count="2" type="cond" truecount="2" falsecount="0"/>
86
+ <line num="247" count="5" type="stmt"/>
87
+ <line num="250" count="4" type="cond" truecount="1" falsecount="0"/>
88
+ <line num="251" count="2" type="stmt"/>
89
+ <line num="253" count="2" type="cond" truecount="1" falsecount="0"/>
90
+ <line num="254" count="1" type="stmt"/>
91
+ <line num="256" count="1" type="stmt"/>
92
+ <line num="259" count="5" type="cond" truecount="1" falsecount="0"/>
93
+ <line num="260" count="3" type="stmt"/>
94
+ <line num="261" count="3" type="stmt"/>
95
+ <line num="264" count="2" type="cond" truecount="1" falsecount="0"/>
96
+ <line num="265" count="1" type="stmt"/>
97
+ <line num="266" count="1" type="stmt"/>
98
+ <line num="269" count="1" type="stmt"/>
99
+ <line num="272" count="1" type="stmt"/>
100
+ <line num="274" count="1" type="stmt"/>
101
+ <line num="275" count="4" type="stmt"/>
102
+ <line num="282" count="4" type="cond" truecount="2" falsecount="0"/>
103
+ <line num="284" count="2" type="stmt"/>
104
+ <line num="288" count="1" type="stmt"/>
105
+ <line num="289" count="1" type="stmt"/>
106
+ <line num="291" count="4" type="stmt"/>
107
+ <line num="292" count="4" type="stmt"/>
108
+ <line num="295" count="1" type="stmt"/>
109
+ <line num="297" count="4" type="cond" truecount="1" falsecount="0"/>
110
+ <line num="298" count="2" type="cond" truecount="1" falsecount="0"/>
111
+ <line num="299" count="1" type="stmt"/>
112
+ <line num="301" count="1" type="stmt"/>
113
+ <line num="303" count="2" type="stmt"/>
114
+ <line num="332" count="10" type="cond" truecount="2" falsecount="0"/>
115
+ <line num="366" count="1" type="stmt"/>
116
+ <line num="369" count="13" type="stmt"/>
117
+ <line num="370" count="13" type="stmt"/>
118
+ <line num="371" count="12" type="stmt"/>
119
+ <line num="373" count="12" type="cond" truecount="1" falsecount="0"/>
120
+ <line num="374" count="6" type="stmt"/>
121
+ <line num="376" count="6" type="cond" truecount="1" falsecount="0"/>
122
+ <line num="377" count="1" type="stmt"/>
123
+ <line num="383" count="5" type="cond" truecount="2" falsecount="0"/>
124
+ <line num="384" count="2" type="stmt"/>
125
+ <line num="388" count="3" type="cond" truecount="2" falsecount="0"/>
126
+ <line num="389" count="2" type="stmt"/>
127
+ <line num="394" count="1" type="stmt"/>
128
+ <line num="397" count="4" type="stmt"/>
129
+ <line num="402" count="4" type="cond" truecount="1" falsecount="0"/>
130
+ <line num="403" count="1" type="stmt"/>
131
+ <line num="406" count="3" type="cond" truecount="1" falsecount="0"/>
132
+ <line num="407" count="2" type="stmt"/>
133
+ <line num="410" count="1" type="cond" truecount="1" falsecount="1"/>
134
+ <line num="413" count="6" type="cond" truecount="1" falsecount="0"/>
135
+ <line num="414" count="5" type="cond" truecount="1" falsecount="0"/>
136
+ <line num="415" count="2" type="stmt"/>
137
+ <line num="420" count="2" type="cond" truecount="1" falsecount="0"/>
138
+ <line num="421" count="1" type="stmt"/>
139
+ <line num="431" count="1" type="stmt"/>
140
+ <line num="433" count="1" type="stmt"/>
141
+ <line num="444" count="1" type="stmt"/>
142
+ <line num="447" count="3" type="cond" truecount="1" falsecount="0"/>
143
+ <line num="448" count="2" type="stmt"/>
144
+ <line num="453" count="2" type="cond" truecount="1" falsecount="0"/>
145
+ <line num="454" count="1" type="stmt"/>
146
+ <line num="467" count="1" type="stmt"/>
147
+ <line num="469" count="1" type="cond" truecount="1" falsecount="1"/>
148
+ <line num="470" count="1" type="cond" truecount="2" falsecount="0"/>
149
+ <line num="471" count="1" type="cond" truecount="2" falsecount="0"/>
150
+ <line num="473" count="1" type="stmt"/>
151
+ <line num="481" count="1" type="stmt"/>
152
+ <line num="487" count="1" type="stmt"/>
153
+ <line num="490" count="1" type="stmt"/>
154
+ <line num="495" count="1" type="stmt"/>
155
+ <line num="498" count="1" type="stmt"/>
156
+ <line num="502" count="6" type="cond" truecount="1" falsecount="0"/>
157
+ <line num="503" count="2" type="stmt"/>
158
+ <line num="504" count="2" type="stmt"/>
159
+ <line num="507" count="4" type="cond" truecount="1" falsecount="0"/>
160
+ <line num="508" count="3" type="cond" truecount="2" falsecount="0"/>
161
+ <line num="510" count="3" type="cond" truecount="1" falsecount="0"/>
162
+ <line num="511" count="1" type="stmt"/>
163
+ <line num="519" count="2" type="cond" truecount="1" falsecount="0"/>
164
+ <line num="520" count="1" type="stmt"/>
165
+ <line num="521" count="1" type="stmt"/>
166
+ <line num="524" count="1" type="stmt"/>
167
+ <line num="525" count="1" type="stmt"/>
168
+ <line num="528" count="1" type="stmt"/>
169
+ <line num="541" count="1" type="stmt"/>
170
+ <line num="542" count="1" type="cond" truecount="1" falsecount="0"/>
171
+ <line num="543" count="1" type="stmt"/>
172
+ <line num="546" count="1" type="stmt"/>
173
+ <line num="570" count="1" type="stmt"/>
174
+ <line num="572" count="1" type="stmt"/>
175
+ <line num="573" count="5" type="cond" truecount="1" falsecount="0"/>
176
+ <line num="574" count="1" type="stmt"/>
177
+ <line num="575" count="1" type="stmt"/>
178
+ <line num="578" count="4" type="cond" truecount="1" falsecount="0"/>
179
+ <line num="579" count="3" type="cond" truecount="1" falsecount="1"/>
180
+ <line num="580" count="1" type="stmt"/>
181
+ <line num="583" count="1" type="stmt"/>
182
+ <line num="594" count="1" type="stmt"/>
183
+ <line num="597" count="4" type="stmt"/>
184
+ <line num="599" count="4" type="cond" truecount="1" falsecount="0"/>
185
+ <line num="600" count="1" type="stmt"/>
186
+ <line num="603" count="3" type="cond" truecount="1" falsecount="0"/>
187
+ <line num="604" count="2" type="cond" truecount="1" falsecount="0"/>
188
+ <line num="610" count="1" type="stmt"/>
189
+ <line num="614" count="1" type="stmt"/>
190
+ <line num="623" count="1" type="stmt"/>
191
+ <line num="626" count="1" type="stmt"/>
192
+ <line num="627" count="1" type="stmt"/>
193
+ <line num="628" count="1" type="stmt"/>
194
+ <line num="629" count="1" type="stmt"/>
195
+ <line num="630" count="1" type="stmt"/>
196
+ <line num="631" count="1" type="stmt"/>
197
+ </file>
198
+ </package>
199
+ <package name="src.helpers">
200
+ <metrics statements="56" coveredstatements="55" conditionals="41" coveredconditionals="38" methods="4" coveredmethods="4"/>
201
+ <file name="subscription.ts" path="/Users/hyo/Github/hyochan/expo-iap/src/helpers/subscription.ts">
202
+ <metrics statements="56" coveredstatements="55" conditionals="41" coveredconditionals="38" methods="4" coveredmethods="4"/>
203
+ <line num="1" count="2" type="stmt"/>
204
+ <line num="2" count="2" type="stmt"/>
205
+ <line num="10" count="2" type="stmt"/>
206
+ <line num="13" count="18" type="stmt"/>
207
+ <line num="14" count="18" type="stmt"/>
208
+ <line num="15" count="17" type="stmt"/>
209
+ <line num="16" count="17" type="stmt"/>
210
+ <line num="19" count="17" type="stmt"/>
211
+ <line num="21" count="18" type="cond" truecount="3" falsecount="0"/>
212
+ <line num="22" count="6" type="cond" truecount="1" falsecount="0"/>
213
+ <line num="23" count="3" type="stmt"/>
214
+ <line num="29" count="15" type="cond" truecount="5" falsecount="0"/>
215
+ <line num="33" count="15" type="cond" truecount="1" falsecount="0"/>
216
+ <line num="34" count="1" type="stmt"/>
217
+ <line num="38" count="14" type="cond" truecount="2" falsecount="0"/>
218
+ <line num="39" count="11" type="cond" truecount="3" falsecount="0"/>
219
+ <line num="40" count="10" type="stmt"/>
220
+ <line num="44" count="1" type="cond" truecount="3" falsecount="0"/>
221
+ <line num="45" count="1" type="stmt"/>
222
+ <line num="47" count="1" type="cond" truecount="1" falsecount="0"/>
223
+ <line num="51" count="1" type="cond" truecount="1" falsecount="0"/>
224
+ <line num="56" count="1" type="stmt"/>
225
+ <line num="60" count="3" type="cond" truecount="1" falsecount="0"/>
226
+ <line num="62" count="3" type="stmt"/>
227
+ <line num="65" count="0" type="stmt"/>
228
+ <line num="69" count="17" type="stmt"/>
229
+ <line num="70" count="17" type="stmt"/>
230
+ <line num="71" count="13" type="stmt"/>
231
+ <line num="72" count="13" type="cond" truecount="0" falsecount="1"/>
232
+ <line num="73" count="13" type="stmt"/>
233
+ <line num="74" count="13" type="stmt"/>
234
+ <line num="78" count="17" type="stmt"/>
235
+ <line num="79" count="13" type="stmt"/>
236
+ <line num="88" count="13" type="cond" truecount="2" falsecount="0"/>
237
+ <line num="89" count="10" type="cond" truecount="3" falsecount="0"/>
238
+ <line num="90" count="9" type="stmt"/>
239
+ <line num="93" count="9" type="stmt"/>
240
+ <line num="96" count="9" type="stmt"/>
241
+ <line num="97" count="9" type="stmt"/>
242
+ <line num="100" count="10" type="cond" truecount="1" falsecount="0"/>
243
+ <line num="101" count="2" type="cond" truecount="1" falsecount="1"/>
244
+ <line num="103" count="3" type="cond" truecount="1" falsecount="0"/>
245
+ <line num="104" count="3" type="cond" truecount="1" falsecount="0"/>
246
+ <line num="105" count="3" type="cond" truecount="1" falsecount="0"/>
247
+ <line num="106" count="3" type="stmt"/>
248
+ <line num="109" count="3" type="cond" truecount="2" falsecount="0"/>
249
+ <line num="110" count="1" type="stmt"/>
250
+ <line num="111" count="2" type="cond" truecount="1" falsecount="0"/>
251
+ <line num="112" count="2" type="stmt"/>
252
+ <line num="117" count="13" type="stmt"/>
253
+ <line num="120" count="17" type="stmt"/>
254
+ <line num="122" count="1" type="stmt"/>
255
+ <line num="123" count="1" type="stmt"/>
256
+ <line num="132" count="2" type="stmt"/>
257
+ <line num="135" count="4" type="stmt"/>
258
+ <line num="136" count="4" type="stmt"/>
259
+ </file>
260
+ </package>
261
+ <package name="src.modules">
262
+ <metrics statements="120" coveredstatements="120" conditionals="56" coveredconditionals="55" methods="25" coveredmethods="25"/>
263
+ <file name="android.ts" path="/Users/hyo/Github/hyochan/expo-iap/src/modules/android.ts">
264
+ <metrics statements="35" coveredstatements="35" conditionals="22" coveredconditionals="21" methods="5" coveredmethods="5"/>
265
+ <line num="2" count="2" type="stmt"/>
266
+ <line num="5" count="2" type="stmt"/>
267
+ <line num="15" count="2" type="stmt"/>
268
+ <line num="18" count="8" type="stmt"/>
269
+ <line num="42" count="2" type="stmt"/>
270
+ <line num="45" count="5" type="cond" truecount="2" falsecount="0"/>
271
+ <line num="46" count="5" type="cond" truecount="2" falsecount="0"/>
272
+ <line num="49" count="5" type="cond" truecount="1" falsecount="0"/>
273
+ <line num="50" count="1" type="stmt"/>
274
+ <line num="57" count="4" type="cond" truecount="1" falsecount="0"/>
275
+ <line num="58" count="3" type="stmt"/>
276
+ <line num="62" count="1" type="stmt"/>
277
+ <line num="65" count="1" type="cond" truecount="1" falsecount="1"/>
278
+ <line num="66" count="1" type="stmt"/>
279
+ <line num="81" count="2" type="stmt"/>
280
+ <line num="94" count="2" type="cond" truecount="2" falsecount="0"/>
281
+ <line num="97" count="2" type="stmt"/>
282
+ <line num="101" count="2" type="stmt"/>
283
+ <line num="109" count="2" type="cond" truecount="1" falsecount="0"/>
284
+ <line num="110" count="1" type="stmt"/>
285
+ <line num="115" count="1" type="stmt"/>
286
+ <line num="124" count="2" type="stmt"/>
287
+ <line num="126" count="2" type="stmt"/>
288
+ <line num="127" count="5" type="stmt"/>
289
+ <line num="129" count="5" type="cond" truecount="1" falsecount="0"/>
290
+ <line num="130" count="1" type="stmt"/>
291
+ <line num="133" count="4" type="cond" truecount="3" falsecount="0"/>
292
+ <line num="134" count="3" type="stmt"/>
293
+ <line num="135" count="3" type="cond" truecount="1" falsecount="0"/>
294
+ <line num="136" count="1" type="stmt"/>
295
+ <line num="138" count="2" type="cond" truecount="1" falsecount="0"/>
296
+ <line num="139" count="2" type="stmt"/>
297
+ <line num="143" count="1" type="stmt"/>
298
+ <line num="153" count="2" type="stmt"/>
299
+ <line num="154" count="1" type="stmt"/>
300
+ </file>
301
+ <file name="ios.ts" path="/Users/hyo/Github/hyochan/expo-iap/src/modules/ios.ts">
302
+ <metrics statements="85" coveredstatements="85" conditionals="34" coveredconditionals="34" methods="20" coveredmethods="20"/>
303
+ <line num="5" count="2" type="stmt"/>
304
+ <line num="19" count="2" type="stmt"/>
305
+ <line num="29" count="2" type="stmt"/>
306
+ <line num="32" count="11" type="stmt"/>
307
+ <line num="51" count="2" type="stmt"/>
308
+ <line num="52" count="1" type="stmt"/>
309
+ <line num="64" count="2" type="stmt"/>
310
+ <line num="66" count="2" type="stmt"/>
311
+ <line num="67" count="7" type="cond" truecount="1" falsecount="0"/>
312
+ <line num="68" count="1" type="stmt"/>
313
+ <line num="70" count="6" type="stmt"/>
314
+ <line num="82" count="2" type="stmt"/>
315
+ <line num="84" count="2" type="stmt"/>
316
+ <line num="85" count="3" type="cond" truecount="1" falsecount="0"/>
317
+ <line num="86" count="1" type="stmt"/>
318
+ <line num="88" count="2" type="stmt"/>
319
+ <line num="89" count="2" type="cond" truecount="2" falsecount="0"/>
320
+ <line num="101" count="2" type="stmt"/>
321
+ <line num="103" count="2" type="stmt"/>
322
+ <line num="104" count="3" type="cond" truecount="1" falsecount="0"/>
323
+ <line num="105" count="1" type="stmt"/>
324
+ <line num="107" count="2" type="stmt"/>
325
+ <line num="108" count="2" type="cond" truecount="2" falsecount="0"/>
326
+ <line num="120" count="2" type="stmt"/>
327
+ <line num="123" count="3" type="cond" truecount="1" falsecount="0"/>
328
+ <line num="124" count="1" type="stmt"/>
329
+ <line num="126" count="2" type="stmt"/>
330
+ <line num="127" count="2" type="cond" truecount="2" falsecount="0"/>
331
+ <line num="139" count="2" type="stmt"/>
332
+ <line num="141" count="2" type="stmt"/>
333
+ <line num="142" count="3" type="cond" truecount="1" falsecount="0"/>
334
+ <line num="143" count="1" type="stmt"/>
335
+ <line num="145" count="2" type="stmt"/>
336
+ <line num="146" count="2" type="cond" truecount="2" falsecount="0"/>
337
+ <line num="158" count="2" type="stmt"/>
338
+ <line num="160" count="2" type="stmt"/>
339
+ <line num="161" count="2" type="stmt"/>
340
+ <line num="162" count="2" type="cond" truecount="2" falsecount="0"/>
341
+ <line num="175" count="2" type="stmt"/>
342
+ <line num="176" count="1" type="stmt"/>
343
+ <line num="179" count="2" type="stmt"/>
344
+ <line num="195" count="2" type="stmt"/>
345
+ <line num="196" count="3" type="cond" truecount="1" falsecount="0"/>
346
+ <line num="197" count="1" type="stmt"/>
347
+ <line num="198" count="1" type="stmt"/>
348
+ <line num="200" count="2" type="stmt"/>
349
+ <line num="213" count="2" type="stmt"/>
350
+ <line num="215" count="2" type="stmt"/>
351
+ <line num="216" count="2" type="cond" truecount="1" falsecount="0"/>
352
+ <line num="217" count="1" type="stmt"/>
353
+ <line num="219" count="1" type="stmt"/>
354
+ <line num="232" count="2" type="stmt"/>
355
+ <line num="235" count="3" type="cond" truecount="1" falsecount="0"/>
356
+ <line num="236" count="1" type="stmt"/>
357
+ <line num="238" count="2" type="stmt"/>
358
+ <line num="239" count="2" type="cond" truecount="2" falsecount="0"/>
359
+ <line num="257" count="2" type="stmt"/>
360
+ <line num="261" count="4" type="cond" truecount="2" falsecount="0"/>
361
+ <line num="263" count="4" type="cond" truecount="1" falsecount="0"/>
362
+ <line num="264" count="1" type="stmt"/>
363
+ <line num="267" count="3" type="stmt"/>
364
+ <line num="272" count="2" type="stmt"/>
365
+ <line num="286" count="2" type="stmt"/>
366
+ <line num="288" count="2" type="stmt"/>
367
+ <line num="289" count="1" type="stmt"/>
368
+ <line num="306" count="2" type="stmt"/>
369
+ <line num="308" count="2" type="stmt"/>
370
+ <line num="309" count="2" type="cond" truecount="2" falsecount="0"/>
371
+ <line num="322" count="2" type="stmt"/>
372
+ <line num="324" count="2" type="stmt"/>
373
+ <line num="325" count="2" type="stmt"/>
374
+ <line num="326" count="2" type="cond" truecount="2" falsecount="0"/>
375
+ <line num="338" count="2" type="stmt"/>
376
+ <line num="340" count="2" type="stmt"/>
377
+ <line num="341" count="1" type="stmt"/>
378
+ <line num="342" count="1" type="stmt"/>
379
+ <line num="351" count="2" type="stmt"/>
380
+ <line num="353" count="2" type="stmt"/>
381
+ <line num="354" count="2" type="stmt"/>
382
+ <line num="355" count="2" type="cond" truecount="2" falsecount="0"/>
383
+ <line num="364" count="2" type="stmt"/>
384
+ <line num="366" count="2" type="stmt"/>
385
+ <line num="367" count="2" type="stmt"/>
386
+ <line num="376" count="2" type="stmt"/>
387
+ <line num="377" count="1" type="stmt"/>
388
+ </file>
389
+ </package>
390
+ <package name="src.utils">
391
+ <metrics statements="100" coveredstatements="97" conditionals="67" coveredconditionals="57" methods="17" coveredmethods="16"/>
392
+ <file name="errorMapping.ts" path="/Users/hyo/Github/hyochan/expo-iap/src/utils/errorMapping.ts">
393
+ <metrics statements="100" coveredstatements="97" conditionals="67" coveredconditionals="57" methods="17" coveredmethods="16"/>
394
+ <line num="7" count="3" type="stmt"/>
395
+ <line num="8" count="3" type="stmt"/>
396
+ <line num="29" count="3" type="stmt"/>
397
+ <line num="30" count="207" type="cond" truecount="1" falsecount="1"/>
398
+ <line num="32" count="3" type="stmt"/>
399
+ <line num="33" count="2" type="cond" truecount="4" falsecount="0"/>
400
+ <line num="37" count="3" type="stmt"/>
401
+ <line num="88" count="3" type="stmt"/>
402
+ <line num="93" count="3" type="stmt"/>
403
+ <line num="94" count="102" type="stmt"/>
404
+ <line num="97" count="3" type="stmt"/>
405
+ <line num="100" count="4" type="stmt"/>
406
+ <line num="101" count="4" type="stmt"/>
407
+ <line num="102" count="4" type="stmt"/>
408
+ <line num="103" count="4" type="stmt"/>
409
+ <line num="104" count="4" type="stmt"/>
410
+ <line num="105" count="4" type="stmt"/>
411
+ <line num="106" count="4" type="stmt"/>
412
+ <line num="107" count="4" type="stmt"/>
413
+ <line num="110" count="3" type="stmt"/>
414
+ <line num="114" count="1" type="stmt"/>
415
+ <line num="115" count="1" type="cond" truecount="1" falsecount="1"/>
416
+ <line num="119" count="1" type="stmt"/>
417
+ <line num="129" count="3" type="stmt"/>
418
+ <line num="131" count="0" type="stmt"/>
419
+ <line num="132" count="0" type="stmt"/>
420
+ <line num="142" count="3" type="cond" truecount="3" falsecount="0"/>
421
+ <line num="143" count="2" type="cond" truecount="1" falsecount="0"/>
422
+ <line num="144" count="1" type="stmt"/>
423
+ <line num="145" count="13" type="stmt"/>
424
+ <line num="147" count="1" type="cond" truecount="1" falsecount="0"/>
425
+ <line num="148" count="1" type="stmt"/>
426
+ <line num="153" count="2" type="stmt"/>
427
+ <line num="156" count="5" type="cond" truecount="1" falsecount="0"/>
428
+ <line num="160" count="1" type="stmt"/>
429
+ <line num="161" count="32" type="stmt"/>
430
+ <line num="163" count="1" type="cond" truecount="1" falsecount="0"/>
431
+ <line num="164" count="1" type="stmt"/>
432
+ <line num="169" count="1" type="stmt"/>
433
+ <line num="172" count="34" type="cond" truecount="0" falsecount="1"/>
434
+ <line num="173" count="0" type="stmt"/>
435
+ <line num="177" count="1" type="stmt"/>
436
+ <line num="183" count="1" type="stmt"/>
437
+ <line num="184" count="1" type="stmt"/>
438
+ <line num="187" count="1" type="cond" truecount="1" falsecount="2"/>
439
+ <line num="193" count="2" type="stmt"/>
440
+ <line num="194" count="2" type="cond" truecount="1" falsecount="0"/>
441
+ <line num="198" count="1" type="stmt"/>
442
+ <line num="200" count="1" type="stmt"/>
443
+ <line num="210" count="3" type="stmt"/>
444
+ <line num="212" count="3" type="stmt"/>
445
+ <line num="213" count="37" type="cond" truecount="1" falsecount="0"/>
446
+ <line num="214" count="1" type="stmt"/>
447
+ <line num="217" count="36" type="cond" truecount="1" falsecount="0"/>
448
+ <line num="218" count="29" type="stmt"/>
449
+ <line num="221" count="7" type="cond" truecount="1" falsecount="0"/>
450
+ <line num="222" count="4" type="stmt"/>
451
+ <line num="223" count="4" type="cond" truecount="1" falsecount="0"/>
452
+ <line num="224" count="3" type="stmt"/>
453
+ <line num="228" count="4" type="stmt"/>
454
+ <line num="232" count="38" type="cond" truecount="1" falsecount="0"/>
455
+ <line num="233" count="28" type="stmt"/>
456
+ <line num="236" count="10" type="cond" truecount="4" falsecount="0"/>
457
+ <line num="237" count="9" type="stmt"/>
458
+ <line num="240" count="1" type="stmt"/>
459
+ <line num="243" count="3" type="stmt"/>
460
+ <line num="244" count="5" type="stmt"/>
461
+ <line num="247" count="3" type="stmt"/>
462
+ <line num="248" count="5" type="stmt"/>
463
+ <line num="256" count="5" type="stmt"/>
464
+ <line num="257" count="5" type="cond" truecount="2" falsecount="0"/>
465
+ <line num="260" count="3" type="stmt"/>
466
+ <line num="261" count="4" type="stmt"/>
467
+ <line num="272" count="4" type="stmt"/>
468
+ <line num="273" count="4" type="cond" truecount="2" falsecount="0"/>
469
+ <line num="276" count="3" type="stmt"/>
470
+ <line num="277" count="24" type="stmt"/>
471
+ <line num="279" count="24" type="cond" truecount="20" falsecount="0"/>
472
+ <line num="281" count="2" type="stmt"/>
473
+ <line num="283" count="1" type="stmt"/>
474
+ <line num="285" count="1" type="stmt"/>
475
+ <line num="287" count="1" type="stmt"/>
476
+ <line num="289" count="1" type="stmt"/>
477
+ <line num="291" count="1" type="stmt"/>
478
+ <line num="293" count="1" type="stmt"/>
479
+ <line num="295" count="1" type="stmt"/>
480
+ <line num="297" count="1" type="stmt"/>
481
+ <line num="299" count="1" type="stmt"/>
482
+ <line num="301" count="1" type="stmt"/>
483
+ <line num="303" count="1" type="stmt"/>
484
+ <line num="305" count="1" type="stmt"/>
485
+ <line num="307" count="1" type="stmt"/>
486
+ <line num="309" count="1" type="stmt"/>
487
+ <line num="311" count="1" type="stmt"/>
488
+ <line num="313" count="2" type="stmt"/>
489
+ <line num="315" count="1" type="stmt"/>
490
+ <line num="317" count="1" type="stmt"/>
491
+ <line num="319" count="3" type="cond" truecount="4" falsecount="0"/>
492
+ <line num="320" count="1" type="stmt"/>
493
+ <line num="325" count="2" type="stmt"/>
494
+ </file>
495
+ </package>
496
+ </project>
497
+ </coverage>