@op-engineering/op-sqlite 1.0.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 (39) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +274 -0
  3. package/android/.project +17 -0
  4. package/android/.settings/org.eclipse.buildship.core.prefs +13 -0
  5. package/android/CMakeLists.txt +57 -0
  6. package/android/build.gradle +127 -0
  7. package/android/cpp-adapter.cpp +42 -0
  8. package/android/gradle.properties +4 -0
  9. package/android/src/main/AndroidManifest.xml +4 -0
  10. package/android/src/main/java/com/op/sqlite/OPSQLiteBridge.java +29 -0
  11. package/android/src/main/java/com/op/sqlite/OPSQLiteModule.java +46 -0
  12. package/android/src/main/java/com/op/sqlite/OPSQLitePackage.java +26 -0
  13. package/cpp/DynamicHostObject.cpp +30 -0
  14. package/cpp/DynamicHostObject.h +30 -0
  15. package/cpp/ThreadPool.cpp +95 -0
  16. package/cpp/ThreadPool.h +46 -0
  17. package/cpp/bindings.cpp +430 -0
  18. package/cpp/bindings.h +13 -0
  19. package/cpp/bridge.cpp +502 -0
  20. package/cpp/bridge.h +34 -0
  21. package/cpp/logs.h +38 -0
  22. package/cpp/macros.h +16 -0
  23. package/cpp/sqlbatchexecutor.cpp +94 -0
  24. package/cpp/sqlbatchexecutor.h +28 -0
  25. package/cpp/sqlite3.c +252611 -0
  26. package/cpp/sqlite3.h +13257 -0
  27. package/cpp/utils.cpp +218 -0
  28. package/cpp/utils.h +55 -0
  29. package/ios/OPSQLite.h +8 -0
  30. package/ios/OPSQLite.mm +63 -0
  31. package/ios/OPSQLite.xcodeproj/project.pbxproj +275 -0
  32. package/lib/commonjs/index.js +190 -0
  33. package/lib/commonjs/index.js.map +1 -0
  34. package/lib/module/index.js +183 -0
  35. package/lib/module/index.js.map +1 -0
  36. package/lib/typescript/index.d.ts +108 -0
  37. package/op-sqlite.podspec +39 -0
  38. package/package.json +79 -0
  39. package/src/index.ts +374 -0
package/cpp/utils.cpp ADDED
@@ -0,0 +1,218 @@
1
+ #include "utils.h"
2
+ #include "DynamicHostObject.h"
3
+ #include <iostream>
4
+ #include <fstream>
5
+ #include "bridge.h"
6
+
7
+ namespace osp {
8
+
9
+ namespace jsi = facebook::jsi;
10
+
11
+ std::any toAny(jsi::Runtime &rt, jsi::Value &value) {
12
+ if (value.isNull() || value.isUndefined())
13
+ {
14
+ return std::any(nullptr);
15
+ }
16
+ else if (value.isBool())
17
+ {
18
+ return std::any(value.getBool());
19
+ }
20
+ else if (value.isNumber())
21
+ {
22
+ double doubleVal = value.asNumber();
23
+ int intVal = (int)doubleVal;
24
+ long long longVal = (long)doubleVal;
25
+ if (intVal == doubleVal)
26
+ {
27
+ return std::any(intVal);
28
+ }
29
+ else if (longVal == doubleVal)
30
+ {
31
+ return std::any(longVal);
32
+ }
33
+ else
34
+ {
35
+ return std::any(doubleVal);
36
+ }
37
+ }
38
+ else if (value.isString())
39
+ {
40
+ std::string strVal = value.asString(rt).utf8(rt);
41
+ return std::any(strVal);
42
+ }
43
+ // else if (value.isObject())
44
+ // {
45
+ // auto obj = value.asObject(rt);
46
+ // if (obj.isArrayBuffer(rt))
47
+ // {
48
+ // auto buf = obj.getArrayBuffer(rt);
49
+ // target->push_back(createArrayBufferQuickValue(buf.data(rt), buf.size(rt)));
50
+ // }
51
+ // }
52
+ // else
53
+ // {
54
+ // target->push_back(createNullQuickValue());
55
+ // }
56
+
57
+ throw new std::invalid_argument("Unknown JSI to any value conversion");
58
+ }
59
+
60
+ jsi::Value toJSI(jsi::Runtime &rt, std::any value) {
61
+ const std::type_info &type(value.type());
62
+
63
+ if (type == typeid(NULL) || type == typeid(nullptr))
64
+ {
65
+ return jsi::Value::null();
66
+ }
67
+ else if (type == typeid(bool))
68
+ {
69
+ return std::any_cast<bool>(value);
70
+ }
71
+ else if (type == typeid(int))
72
+ {
73
+ return jsi::Value(std::any_cast<int>(value));
74
+ }
75
+ else if (type == typeid(long long))
76
+ {
77
+ return jsi::Value(static_cast<double>(std::any_cast<long long>(value)));
78
+ }
79
+ else if (type == typeid(double))
80
+ {
81
+ return jsi::Value(std::any_cast<double>(value));
82
+ }
83
+ else if (type == typeid(std::string))
84
+ {
85
+ return jsi::String::createFromUtf8(rt, std::any_cast<std::string>(value));
86
+ }
87
+ else if (type == typeid(const char*))
88
+ {
89
+ return jsi::String::createFromAscii(rt, std::any_cast<const char*>(value));
90
+ }
91
+ // TODO Add support for array buffers
92
+ // else if (value.isObject())
93
+ // {
94
+ // auto obj = value.asObject(rt);
95
+ // if(obj.isArrayBuffer(rt)) {
96
+ // auto buf = obj.getArrayBuffer(rt);
97
+ // sqlite3_bind_blob(statement, sqIndex, buf.data(rt), buf.size(rt), SQLITE_STATIC);
98
+ // }
99
+ //
100
+ // }
101
+
102
+ throw std::invalid_argument("Unsupported scalar type, cannot convert to JSI Value");
103
+ }
104
+
105
+ std::vector<std::any> toAnyVec(jsi::Runtime &rt, jsi::Value const &params)
106
+ {
107
+ std::vector<std::any> res;
108
+
109
+ if (params.isNull() || params.isUndefined())
110
+ {
111
+ return res;
112
+ }
113
+
114
+ jsi::Array values = params.asObject(rt).asArray(rt);
115
+
116
+ for (int ii = 0; ii < values.length(rt); ii++)
117
+ {
118
+ jsi::Value value = values.getValueAtIndex(rt, ii);
119
+ res.push_back(toAny(rt, value));
120
+ }
121
+
122
+ return res;
123
+ }
124
+
125
+ jsi::Value createResult(jsi::Runtime &rt,
126
+ BridgeResult status,
127
+ std::vector<std::shared_ptr<DynamicHostObject>> *results,
128
+ std::vector<std::shared_ptr<DynamicHostObject>> *metadata)
129
+ {
130
+ if(status.type == SQLiteError) {
131
+ throw std::invalid_argument(status.message);
132
+ }
133
+
134
+ jsi::Object res = jsi::Object(rt);
135
+
136
+ res.setProperty(rt, "rowsAffected", status.affectedRows);
137
+ if (status.affectedRows > 0 && status.insertId != 0)
138
+ {
139
+ res.setProperty(rt, "insertId", jsi::Value(status.insertId));
140
+ }
141
+
142
+ size_t rowCount = results->size();
143
+ jsi::Object rows = jsi::Object(rt);
144
+ rows.setProperty(rt, "length", jsi::Value((int)rowCount));
145
+
146
+ if (rowCount > 0)
147
+ {
148
+ auto array = jsi::Array(rt, rowCount);
149
+ for (int i = 0; i < rowCount; i++)
150
+ {
151
+ array.setValueAtIndex(rt, i, jsi::Object::createFromHostObject(rt, results->at(i)));
152
+ }
153
+ rows.setProperty(rt, "_array", std::move(array));
154
+ res.setProperty(rt, "rows", std::move(rows));
155
+ }
156
+
157
+ if(metadata != nullptr)
158
+ {
159
+ size_t column_count = metadata->size();
160
+ auto column_array = jsi::Array(rt, column_count);
161
+ for (int i = 0; i < column_count; i++) {
162
+ auto column = metadata->at(i);
163
+ column_array.setValueAtIndex(rt, i, jsi::Object::createFromHostObject(rt, column));
164
+ }
165
+ res.setProperty(rt, "metadata", std::move(column_array));
166
+ }
167
+
168
+ return std::move(res);
169
+ }
170
+
171
+ BatchResult importSQLFile(std::string dbName, std::string fileLocation)
172
+ {
173
+ std::string line;
174
+ std::ifstream sqFile(fileLocation);
175
+ if (sqFile.is_open())
176
+ {
177
+ try
178
+ {
179
+ int affectedRows = 0;
180
+ int commands = 0;
181
+ sqliteExecuteLiteral(dbName, "BEGIN EXCLUSIVE TRANSACTION");
182
+ while (std::getline(sqFile, line, '\n'))
183
+ {
184
+ if (!line.empty())
185
+ {
186
+ BridgeResult result = sqliteExecuteLiteral(dbName, line);
187
+ if (result.type == SQLiteError)
188
+ {
189
+ sqliteExecuteLiteral(dbName, "ROLLBACK");
190
+ sqFile.close();
191
+ return {SQLiteError, result.message, 0, commands};
192
+ }
193
+ else
194
+ {
195
+ affectedRows += result.affectedRows;
196
+ commands++;
197
+ }
198
+ }
199
+ }
200
+ sqFile.close();
201
+ sqliteExecuteLiteral(dbName, "COMMIT");
202
+ return {SQLiteOk, "", affectedRows, commands};
203
+ }
204
+ catch (...)
205
+ {
206
+ sqFile.close();
207
+ sqliteExecuteLiteral(dbName, "ROLLBACK");
208
+ return {SQLiteError, "[op-sqlite][loadSQLFile] Unexpected error, transaction was rolledback", 0, 0};
209
+ }
210
+ }
211
+ else
212
+ {
213
+ return {SQLiteError, "[op-sqlite][loadSQLFile] Could not open file", 0, 0};
214
+ }
215
+ }
216
+
217
+
218
+ }
package/cpp/utils.h ADDED
@@ -0,0 +1,55 @@
1
+ #ifndef utils_h
2
+ #define utils_h
3
+
4
+ #include <stdio.h>
5
+ #include <jsi/jsilib.h>
6
+ #include <jsi/jsi.h>
7
+ #include <vector>
8
+ #include <map>
9
+ #include <any>
10
+ #include "DynamicHostObject.h"
11
+
12
+ namespace osp {
13
+
14
+ namespace jsi = facebook::jsi;
15
+
16
+ enum ResultType
17
+ {
18
+ SQLiteOk,
19
+ SQLiteError
20
+ };
21
+
22
+ struct BridgeResult
23
+ {
24
+ ResultType type;
25
+ std::string message;
26
+ int affectedRows;
27
+ double insertId;
28
+ };
29
+
30
+ struct BatchResult
31
+ {
32
+ ResultType type;
33
+ std::string message;
34
+ int affectedRows;
35
+ int commands;
36
+ };
37
+
38
+ std::any toAny(jsi::Runtime &rt, jsi::Value &value);
39
+
40
+ // TODO I tried to inline this function but it is not working
41
+ // throws an undefined Symbol
42
+ jsi::Value toJSI(jsi::Runtime &rt, std::any value);
43
+
44
+ std::vector<std::any> toAnyVec(jsi::Runtime &rt, jsi::Value const &args);
45
+
46
+ jsi::Value createResult(jsi::Runtime &rt,
47
+ BridgeResult status,
48
+ std::vector<std::shared_ptr<DynamicHostObject>> *results,
49
+ std::vector<std::shared_ptr<DynamicHostObject>> *metadata);
50
+
51
+ BatchResult importSQLFile(std::string dbName, std::string fileLocation);
52
+
53
+ }
54
+
55
+ #endif /* utils_h */
package/ios/OPSQLite.h ADDED
@@ -0,0 +1,8 @@
1
+ #import <React/RCTBridgeModule.h>
2
+ #import <React/RCTInvalidating.h>
3
+
4
+ @interface OPSQLite : NSObject <RCTBridgeModule, RCTInvalidating>
5
+
6
+ @property(nonatomic, assign) BOOL setBridgeOnMainQueue;
7
+
8
+ @end
@@ -0,0 +1,63 @@
1
+ #import "OPSQLite.h"
2
+
3
+ #import <React/RCTBridge+Private.h>
4
+
5
+ #import <React/RCTUtils.h>
6
+ #import <ReactCommon/RCTTurboModule.h>
7
+ #import <jsi/jsi.h>
8
+
9
+ #import "../cpp/bindings.h"
10
+
11
+ @implementation OPSQLite
12
+
13
+ RCT_EXPORT_MODULE(OPSQLite)
14
+
15
+
16
+ RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(install) {
17
+ NSLog(@"Installing OPSQLite module...");
18
+
19
+ RCTBridge *bridge = [RCTBridge currentBridge];
20
+ RCTCxxBridge *cxxBridge = (RCTCxxBridge *)bridge;
21
+ if (cxxBridge == nil) {
22
+ return @false;
23
+ }
24
+
25
+ using namespace facebook;
26
+
27
+ auto jsiRuntime = (jsi::Runtime *)cxxBridge.runtime;
28
+ if (jsiRuntime == nil) {
29
+ return @false;
30
+ }
31
+ auto &runtime = *jsiRuntime;
32
+ auto callInvoker = bridge.jsCallInvoker;
33
+
34
+ // Get appGroupID value from Info.plist using key "AppGroup"
35
+ NSString *appGroupID = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"OPSQLite_AppGroup"];
36
+ NSString *documentPath;
37
+
38
+ if (appGroupID != nil) {
39
+ // Get the app groups container storage url
40
+ NSFileManager *fileManager = [NSFileManager defaultManager];
41
+ NSURL *storeUrl = [fileManager containerURLForSecurityApplicationGroupIdentifier:appGroupID];
42
+
43
+ if (storeUrl == nil) {
44
+ NSLog(@"Invalid AppGroup ID provided (%@). Check the value of \"AppGroup\" in your Info.plist file", appGroupID);
45
+ return @false;
46
+ }
47
+ NSLog(@"Configured with AppGroup ID: %@", appGroupID);
48
+
49
+ documentPath = [storeUrl path];
50
+ } else {
51
+ NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, true);
52
+ documentPath = [paths objectAtIndex:0];
53
+ }
54
+
55
+ osp::install(runtime, callInvoker, [documentPath UTF8String]);
56
+ return @true;
57
+ }
58
+
59
+ - (void)invalidate {
60
+ osp::clearState();
61
+ }
62
+
63
+ @end
@@ -0,0 +1,275 @@
1
+ // !$*UTF8*$!
2
+ {
3
+ archiveVersion = 1;
4
+ classes = {
5
+ };
6
+ objectVersion = 46;
7
+ objects = {
8
+
9
+ /* Begin PBXBuildFile section */
10
+ 5E555C0D2413F4C50049A1A2 /* OPSQLite.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3E7B5891CC2AC0600A0062D /* OPSQLite.mm */; };
11
+ /* End PBXBuildFile section */
12
+
13
+ /* Begin PBXCopyFilesBuildPhase section */
14
+ 58B511D91A9E6C8500147676 /* CopyFiles */ = {
15
+ isa = PBXCopyFilesBuildPhase;
16
+ buildActionMask = 2147483647;
17
+ dstPath = "include/$(PRODUCT_NAME)";
18
+ dstSubfolderSpec = 16;
19
+ files = (
20
+ );
21
+ runOnlyForDeploymentPostprocessing = 0;
22
+ };
23
+ /* End PBXCopyFilesBuildPhase section */
24
+
25
+ /* Begin PBXFileReference section */
26
+ 134814201AA4EA6300B7C361 /* libOPSQLite.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libOPSQLite.a; sourceTree = BUILT_PRODUCTS_DIR; };
27
+ B3E7B5891CC2AC0600A0062D /* OPSQLite.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OPSQLite.mm; sourceTree = "<group>"; };
28
+ /* End PBXFileReference section */
29
+
30
+ /* Begin PBXFrameworksBuildPhase section */
31
+ 58B511D81A9E6C8500147676 /* Frameworks */ = {
32
+ isa = PBXFrameworksBuildPhase;
33
+ buildActionMask = 2147483647;
34
+ files = (
35
+ );
36
+ runOnlyForDeploymentPostprocessing = 0;
37
+ };
38
+ /* End PBXFrameworksBuildPhase section */
39
+
40
+ /* Begin PBXGroup section */
41
+ 134814211AA4EA7D00B7C361 /* Products */ = {
42
+ isa = PBXGroup;
43
+ children = (
44
+ 134814201AA4EA6300B7C361 /* libOPSQLite.a */,
45
+ );
46
+ name = Products;
47
+ sourceTree = "<group>";
48
+ };
49
+ 58B511D21A9E6C8500147676 = {
50
+ isa = PBXGroup;
51
+ children = (
52
+ B3E7B5891CC2AC0600A0062D /* OPSQLite.mm */,
53
+ 134814211AA4EA7D00B7C361 /* Products */,
54
+ );
55
+ sourceTree = "<group>";
56
+ };
57
+ /* End PBXGroup section */
58
+
59
+ /* Begin PBXNativeTarget section */
60
+ 58B511DA1A9E6C8500147676 /* OPSQLite */ = {
61
+ isa = PBXNativeTarget;
62
+ buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "OPSQLite" */;
63
+ buildPhases = (
64
+ 58B511D71A9E6C8500147676 /* Sources */,
65
+ 58B511D81A9E6C8500147676 /* Frameworks */,
66
+ 58B511D91A9E6C8500147676 /* CopyFiles */,
67
+ );
68
+ buildRules = (
69
+ );
70
+ dependencies = (
71
+ );
72
+ name = OPSQLite;
73
+ productName = RCTDataManager;
74
+ productReference = 134814201AA4EA6300B7C361 /* libOPSQLite.a */;
75
+ productType = "com.apple.product-type.library.static";
76
+ };
77
+ /* End PBXNativeTarget section */
78
+
79
+ /* Begin PBXProject section */
80
+ 58B511D31A9E6C8500147676 /* Project object */ = {
81
+ isa = PBXProject;
82
+ attributes = {
83
+ LastUpgradeCheck = 0920;
84
+ ORGANIZATIONNAME = Facebook;
85
+ TargetAttributes = {
86
+ 58B511DA1A9E6C8500147676 = {
87
+ CreatedOnToolsVersion = 6.1.1;
88
+ };
89
+ };
90
+ };
91
+ buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "OPSQLite" */;
92
+ compatibilityVersion = "Xcode 3.2";
93
+ developmentRegion = English;
94
+ hasScannedForEncodings = 0;
95
+ knownRegions = (
96
+ English,
97
+ en,
98
+ );
99
+ mainGroup = 58B511D21A9E6C8500147676;
100
+ productRefGroup = 58B511D21A9E6C8500147676;
101
+ projectDirPath = "";
102
+ projectRoot = "";
103
+ targets = (
104
+ 58B511DA1A9E6C8500147676 /* OPSQLite */,
105
+ );
106
+ };
107
+ /* End PBXProject section */
108
+
109
+ /* Begin PBXSourcesBuildPhase section */
110
+ 58B511D71A9E6C8500147676 /* Sources */ = {
111
+ isa = PBXSourcesBuildPhase;
112
+ buildActionMask = 2147483647;
113
+ files = (
114
+ 5E555C0D2413F4C50049A1A2 /* OPSQLite.mm in Sources */,
115
+ );
116
+ runOnlyForDeploymentPostprocessing = 0;
117
+ };
118
+ /* End PBXSourcesBuildPhase section */
119
+
120
+ /* Begin XCBuildConfiguration section */
121
+ 58B511ED1A9E6C8500147676 /* Debug */ = {
122
+ isa = XCBuildConfiguration;
123
+ buildSettings = {
124
+ ALWAYS_SEARCH_USER_PATHS = NO;
125
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
126
+ CLANG_CXX_LIBRARY = "libc++";
127
+ CLANG_ENABLE_MODULES = YES;
128
+ CLANG_ENABLE_OBJC_ARC = YES;
129
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
130
+ CLANG_WARN_BOOL_CONVERSION = YES;
131
+ CLANG_WARN_COMMA = YES;
132
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
133
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
134
+ CLANG_WARN_EMPTY_BODY = YES;
135
+ CLANG_WARN_ENUM_CONVERSION = YES;
136
+ CLANG_WARN_INFINITE_RECURSION = YES;
137
+ CLANG_WARN_INT_CONVERSION = YES;
138
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
139
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
140
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
141
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
142
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
143
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
144
+ CLANG_WARN_UNREACHABLE_CODE = YES;
145
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
146
+ COPY_PHASE_STRIP = NO;
147
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
148
+ ENABLE_TESTABILITY = YES;
149
+ GCC_C_LANGUAGE_STANDARD = gnu99;
150
+ GCC_DYNAMIC_NO_PIC = NO;
151
+ GCC_NO_COMMON_BLOCKS = YES;
152
+ GCC_OPTIMIZATION_LEVEL = 0;
153
+ GCC_PREPROCESSOR_DEFINITIONS = (
154
+ "DEBUG=1",
155
+ "$(inherited)",
156
+ );
157
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
158
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
159
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
160
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
161
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
162
+ GCC_WARN_UNUSED_FUNCTION = YES;
163
+ GCC_WARN_UNUSED_VARIABLE = YES;
164
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
165
+ MTL_ENABLE_DEBUG_INFO = YES;
166
+ ONLY_ACTIVE_ARCH = YES;
167
+ SDKROOT = iphoneos;
168
+ };
169
+ name = Debug;
170
+ };
171
+ 58B511EE1A9E6C8500147676 /* Release */ = {
172
+ isa = XCBuildConfiguration;
173
+ buildSettings = {
174
+ ALWAYS_SEARCH_USER_PATHS = NO;
175
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
176
+ CLANG_CXX_LIBRARY = "libc++";
177
+ CLANG_ENABLE_MODULES = YES;
178
+ CLANG_ENABLE_OBJC_ARC = YES;
179
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
180
+ CLANG_WARN_BOOL_CONVERSION = YES;
181
+ CLANG_WARN_COMMA = YES;
182
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
183
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
184
+ CLANG_WARN_EMPTY_BODY = YES;
185
+ CLANG_WARN_ENUM_CONVERSION = YES;
186
+ CLANG_WARN_INFINITE_RECURSION = YES;
187
+ CLANG_WARN_INT_CONVERSION = YES;
188
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
189
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
190
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
191
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
192
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
193
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
194
+ CLANG_WARN_UNREACHABLE_CODE = YES;
195
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
196
+ COPY_PHASE_STRIP = YES;
197
+ ENABLE_NS_ASSERTIONS = NO;
198
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
199
+ GCC_C_LANGUAGE_STANDARD = gnu99;
200
+ GCC_NO_COMMON_BLOCKS = YES;
201
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
202
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
203
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
204
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
205
+ GCC_WARN_UNUSED_FUNCTION = YES;
206
+ GCC_WARN_UNUSED_VARIABLE = YES;
207
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
208
+ MTL_ENABLE_DEBUG_INFO = NO;
209
+ SDKROOT = iphoneos;
210
+ VALIDATE_PRODUCT = YES;
211
+ };
212
+ name = Release;
213
+ };
214
+ 58B511F01A9E6C8500147676 /* Debug */ = {
215
+ isa = XCBuildConfiguration;
216
+ buildSettings = {
217
+ HEADER_SEARCH_PATHS = (
218
+ "$(inherited)",
219
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
220
+ "$(SRCROOT)/../../../React/**",
221
+ "$(SRCROOT)/../../react-native/React/**",
222
+ );
223
+ LIBRARY_SEARCH_PATHS = "$(inherited)";
224
+ OTHER_LDFLAGS = "-ObjC";
225
+ PRODUCT_NAME = OPSQLite;
226
+ SKIP_INSTALL = YES;
227
+ SWIFT_OBJC_BRIDGING_HEADER = "OPSQLite-Bridging-Header.h";
228
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
229
+ SWIFT_VERSION = 5.0;
230
+ };
231
+ name = Debug;
232
+ };
233
+ 58B511F11A9E6C8500147676 /* Release */ = {
234
+ isa = XCBuildConfiguration;
235
+ buildSettings = {
236
+ HEADER_SEARCH_PATHS = (
237
+ "$(inherited)",
238
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
239
+ "$(SRCROOT)/../../../React/**",
240
+ "$(SRCROOT)/../../react-native/React/**",
241
+ );
242
+ LIBRARY_SEARCH_PATHS = "$(inherited)";
243
+ OTHER_LDFLAGS = "-ObjC";
244
+ PRODUCT_NAME = OPSQLite;
245
+ SKIP_INSTALL = YES;
246
+ SWIFT_OBJC_BRIDGING_HEADER = "OPSQLite-Bridging-Header.h";
247
+ SWIFT_VERSION = 5.0;
248
+ };
249
+ name = Release;
250
+ };
251
+ /* End XCBuildConfiguration section */
252
+
253
+ /* Begin XCConfigurationList section */
254
+ 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "OPSQLite" */ = {
255
+ isa = XCConfigurationList;
256
+ buildConfigurations = (
257
+ 58B511ED1A9E6C8500147676 /* Debug */,
258
+ 58B511EE1A9E6C8500147676 /* Release */,
259
+ );
260
+ defaultConfigurationIsVisible = 0;
261
+ defaultConfigurationName = Release;
262
+ };
263
+ 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "OPSQLite" */ = {
264
+ isa = XCConfigurationList;
265
+ buildConfigurations = (
266
+ 58B511F01A9E6C8500147676 /* Debug */,
267
+ 58B511F11A9E6C8500147676 /* Release */,
268
+ );
269
+ defaultConfigurationIsVisible = 0;
270
+ defaultConfigurationName = Release;
271
+ };
272
+ /* End XCConfigurationList section */
273
+ };
274
+ rootObject = 58B511D31A9E6C8500147676 /* Project object */;
275
+ }