lig-scanner-expo-sdk 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/CLAUDE.md +9 -3
  2. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  3. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  4. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  5. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  6. package/android/.gradle/8.9/gc.properties +0 -0
  7. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  8. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  9. package/android/.gradle/vcs-1/gc.properties +0 -0
  10. package/android/build.gradle +2 -2
  11. package/ios/LigScannerExpoSdkModule.swift +117 -119
  12. package/lig-scanner-test/node_modules/@react-native/gradle-plugin/.project +28 -0
  13. package/lig-scanner-test/node_modules/@react-native/gradle-plugin/react-native-gradle-plugin/.project +34 -0
  14. package/lig-scanner-test/node_modules/@react-native/gradle-plugin/react-native-gradle-plugin/bin/.project +34 -0
  15. package/lig-scanner-test/node_modules/@react-native/gradle-plugin/settings-plugin/.project +34 -0
  16. package/lig-scanner-test/node_modules/@react-native/gradle-plugin/settings-plugin/bin/.project +34 -0
  17. package/lig-scanner-test/node_modules/@react-native/gradle-plugin/shared/.project +34 -0
  18. package/lig-scanner-test/node_modules/@react-native/gradle-plugin/shared/bin/.project +34 -0
  19. package/lig-scanner-test/node_modules/@react-native/gradle-plugin/shared-testutil/.project +34 -0
  20. package/lig-scanner-test/node_modules/@react-native/gradle-plugin/shared-testutil/bin/.project +34 -0
  21. package/lig-scanner-test/node_modules/expo/android/.project +28 -0
  22. package/lig-scanner-test/node_modules/expo-constants/android/.project +28 -0
  23. package/lig-scanner-test/node_modules/expo-modules-autolinking/android/expo-gradle-plugin/.project +34 -0
  24. package/lig-scanner-test/node_modules/expo-modules-autolinking/android/expo-gradle-plugin/bin/.project +34 -0
  25. package/lig-scanner-test/node_modules/expo-modules-autolinking/android/expo-gradle-plugin/bin/expo-autolinking-plugin/bin/.project +34 -0
  26. package/lig-scanner-test/node_modules/expo-modules-autolinking/android/expo-gradle-plugin/bin/expo-autolinking-plugin-shared/.project +28 -0
  27. package/lig-scanner-test/node_modules/expo-modules-autolinking/android/expo-gradle-plugin/bin/expo-autolinking-settings-plugin/bin/.project +34 -0
  28. package/lig-scanner-test/node_modules/expo-modules-autolinking/android/expo-gradle-plugin/expo-autolinking-plugin/.project +34 -0
  29. package/lig-scanner-test/node_modules/expo-modules-autolinking/android/expo-gradle-plugin/expo-autolinking-plugin/bin/.project +34 -0
  30. package/lig-scanner-test/node_modules/expo-modules-autolinking/android/expo-gradle-plugin/expo-autolinking-plugin-shared/.project +28 -0
  31. package/lig-scanner-test/node_modules/expo-modules-autolinking/android/expo-gradle-plugin/expo-autolinking-settings-plugin/.project +34 -0
  32. package/lig-scanner-test/node_modules/expo-modules-autolinking/android/expo-gradle-plugin/expo-autolinking-settings-plugin/bin/.project +34 -0
  33. package/lig-scanner-test/node_modules/expo-modules-core/android/.project +28 -0
  34. package/lig-scanner-test/node_modules/expo-modules-core/expo-module-gradle-plugin/.project +34 -0
  35. package/lig-scanner-test/node_modules/expo-modules-core/expo-module-gradle-plugin/bin/.project +34 -0
  36. package/lig-scanner-test/node_modules/lig-scanner-expo-sdk/android/.project +28 -0
  37. package/lig-scanner-test/node_modules/react-native-edge-to-edge/android/.project +28 -0
  38. package/package.json +1 -1
package/CLAUDE.md CHANGED
@@ -12,7 +12,7 @@ This is `lig-scanner-expo-sdk`, an Expo module SDK wrapper for the LiG Scanner l
12
12
  - **Core TypeScript API**: `src/` contains the main module interface and high-level components
13
13
  - **Native module interface**: `LigScannerExpoSdkModule.ts` declares native methods (initialize, startScanning, stopScanning, showARPlayer)
14
14
  - **Native iOS implementation**: `ios/` (Swift) with LiG Scanner engine integration
15
- - **Native Android implementation**: `android/` (Kotlin) with corresponding functionality
15
+ - **Native Android implementation**: `android/` (Kotlin) with corresponding functionality
16
16
  - **Example app**: `example/App.tsx` demonstrates both integrated and manual usage patterns
17
17
 
18
18
  ### Key Components Architecture
@@ -60,6 +60,12 @@ npm run open:ios
60
60
 
61
61
  # Open Android project in Android Studio
62
62
  npm run open:android
63
+
64
+ # Run example app on iOS (requires iOS simulator or device)
65
+ npm run ios
66
+
67
+ # Run example app on Android (requires Android emulator or device)
68
+ npm run android
63
69
  ```
64
70
 
65
71
  ## Development Patterns
@@ -69,7 +75,7 @@ The SDK uses a state machine pattern managed by `LigScannerManager`:
69
75
  - `initializing` → `ready` → `scanning` → `ligtag_ready` (success path)
70
76
  - Error states: `error_device`, `error_auth`, `error_other`
71
77
 
72
- ### Event System Architecture
78
+ ### Event System Architecture
73
79
  - **Native Events**: `onLigtagFound`, `onStatusReported`, `onARReady`, `onARError`, `onARClosed`, `onGameEvent`
74
80
  - **Manager Events**: `stateChange`, `tagUpdate`, `tagReady`, `error`
75
81
  - **Hook Integration**: State changes automatically trigger React re-renders
@@ -93,4 +99,4 @@ The `example/App.tsx` demonstrates two complete integration approaches:
93
99
 
94
100
  - `expo-module.config.json`: Defines Apple/Android platforms, native module class names, and required permissions (camera)
95
101
  - `tsconfig.json`: Extends expo-module-scripts base config, outputs to `build/`
96
- - Platform permissions: Camera access required for both iOS (NSCameraUsageDescription) and Android (android.permission.CAMERA)
102
+ - Platform permissions: Camera access required for both iOS (NSCameraUsageDescription) and Android (android.permission.CAMERA)
File without changes
@@ -0,0 +1,2 @@
1
+ #Sat Dec 13 20:46:53 CST 2025
2
+ gradle.version=8.9
File without changes
@@ -1,7 +1,7 @@
1
1
  apply plugin: 'com.android.library'
2
2
 
3
3
  group = 'tw.com.lig.scanner.rn.expo'
4
- version = '0.1.0'
4
+ version = '0.5.1'
5
5
 
6
6
  def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
7
7
  apply from: expoModulesCorePlugin
@@ -46,7 +46,7 @@ android {
46
46
  namespace "tw.com.lig.scanner.rn.expo"
47
47
  defaultConfig {
48
48
  versionCode 1
49
- versionName "0.1.0"
49
+ versionName "0.5.1"
50
50
  }
51
51
  lintOptions {
52
52
  abortOnError false
@@ -6,8 +6,9 @@ import UIKit
6
6
  public class LigScannerExpoSdkModule: Module {
7
7
  private var isScanning = false
8
8
  private var isInitialized = false
9
+ private var shouldStartWhenReady = false
9
10
  private let scanner = LiGScanner.shared
10
- private var lastDetectedTag: LiGTag?
11
+ private var lastDetectedTag: LigTag?
11
12
  private var hasListeners = false
12
13
 
13
14
  // Each module class must implement the definition function. The definition consists of components
@@ -71,24 +72,35 @@ public class LigScannerExpoSdkModule: Module {
71
72
 
72
73
  AsyncFunction("startScanning") { (promise: Promise) in
73
74
  guard self.isInitialized else {
75
+ self.shouldStartWhenReady = true
74
76
  promise.reject("NOT_INITIALIZED", "Scanner not initialized. Call initialize() first.")
75
77
  return
76
78
  }
77
-
79
+
78
80
  guard !self.isScanning else {
79
81
  promise.resolve("Already scanning")
80
82
  return
81
83
  }
82
-
83
- self.scanner.start()
84
- self.isScanning = true
85
-
86
- self.sendEvent("onStatusReported", [
87
- "status": "SCANNING",
88
- "value": 2
89
- ])
90
-
91
- promise.resolve("Scanning started")
84
+
85
+ Task {
86
+ do {
87
+ try await self.scanner.start()
88
+ await MainActor.run {
89
+ self.isScanning = true
90
+
91
+ self.sendEvent("onStatusReported", [
92
+ "status": "SCANNING",
93
+ "value": 2
94
+ ])
95
+
96
+ promise.resolve("Scanning started")
97
+ }
98
+ } catch {
99
+ await MainActor.run {
100
+ promise.reject("START_FAILED", "Failed to start scanner: \(error)")
101
+ }
102
+ }
103
+ }
92
104
  }
93
105
 
94
106
  AsyncFunction("stopScanning") { (promise: Promise) in
@@ -150,58 +162,82 @@ public class LigScannerExpoSdkModule: Module {
150
162
  }
151
163
 
152
164
  // MARK: - Helper Methods
153
-
165
+
154
166
  private func initializeScanner(_ productKey: String, _ promise: Promise) {
155
- self.isInitialized = true
156
-
157
167
  // Set up delegate
158
168
  self.scanner.delegate = self
159
-
169
+
160
170
  self.sendEvent("onStatusReported", [
161
171
  "status": "INITIALIZING",
162
172
  "value": 0
163
173
  ])
164
-
165
- // Initialize LiGScanner SDK
166
- self.scanner.initialize(productKey)
167
-
168
- self.sendEvent("onStatusReported", [
169
- "status": "INITIALIZED",
170
- "value": 1
171
- ])
172
-
173
- promise.resolve("Scanner initialized")
174
+
175
+ Task {
176
+ do {
177
+ // Initialize LiGScanner SDK (async/await)
178
+ try await self.scanner.initialize(productKey: productKey)
179
+
180
+ await MainActor.run {
181
+ self.isInitialized = true
182
+
183
+ self.sendEvent("onStatusReported", [
184
+ "status": "INITIALIZED",
185
+ "value": 1
186
+ ])
187
+
188
+ // Start scanning if it was requested before initialization completed
189
+ if self.shouldStartWhenReady {
190
+ self.shouldStartWhenReady = false
191
+ Task {
192
+ do {
193
+ try await self.scanner.start()
194
+ await MainActor.run {
195
+ self.isScanning = true
196
+ self.sendEvent("onStatusReported", [
197
+ "status": "SCANNING",
198
+ "value": 2
199
+ ])
200
+ }
201
+ } catch {
202
+ // Handle start error silently
203
+ }
204
+ }
205
+ }
206
+
207
+ promise.resolve("Scanner initialized")
208
+ }
209
+ } catch {
210
+ await MainActor.run {
211
+ self.isInitialized = false
212
+ promise.reject("INIT_FAILED", "Failed to initialize scanner: \(error)")
213
+ }
214
+ }
215
+ }
174
216
  }
175
217
  }
176
218
 
177
219
  // MARK: - LiGScannerDelegate
178
220
 
179
221
  extension LigScannerExpoSdkModule: LiGScannerDelegate {
180
- public func scanner(_ scanner: LiGScanner, didDetect ligtag: LiGTag?) {
181
- guard let tag = ligtag else { return }
182
-
222
+ public func ligScanner(_ scanner: LiGScanner, didFind ligTag: LigTag?) {
223
+ guard let tag = ligTag else { return }
224
+
183
225
  // Store the tag for AR player
184
226
  lastDetectedTag = tag
185
-
186
-
187
- // Map LiGTag to match Android's onLightIDFound format exactly
227
+
228
+
229
+ // Map LigTag to match Android's onLightIDFound format exactly
188
230
  var eventData: [String: Any] = [
189
231
  "x": Double(tag.coordinateX),
190
232
  "y": Double(tag.coordinateY),
191
233
  "isReady": tag.isReady,
192
- "isDetected": tag.isDetected,
234
+ "isDetected": tag.detected,
193
235
  "deviceId": tag.deviceId,
194
- "status": mapStatusToString(tag.status)
236
+ "status": mapStatusFromBooleans(detected: tag.detected, decoded: tag.decoded, validPose: tag.validPose, isReady: tag.isReady)
195
237
  ]
196
-
197
- // Add timing data if detected
198
- if tag.isDetected {
199
- eventData["detectionTime"] = Int(tag.detectionTime)
200
- eventData["decodedTime"] = Int(tag.decodedTime)
201
- }
202
-
238
+
203
239
  // Add position data for all detected tags (needed for AR coordinate system setup)
204
- if tag.isDetected {
240
+ if tag.detected {
205
241
  eventData["rotation"] = [
206
242
  "x": Double(tag.rotation.x),
207
243
  "y": Double(tag.rotation.y),
@@ -212,126 +248,88 @@ extension LigScannerExpoSdkModule: LiGScannerDelegate {
212
248
  "y": Double(tag.translation.y),
213
249
  "z": Double(tag.translation.z)
214
250
  ]
215
- eventData["position"] = [
216
- "x": Double(tag.position.x),
217
- "y": Double(tag.position.y),
218
- "z": Double(tag.position.z)
219
- ]
220
- // Add accessToken for AR cloud authentication
221
- eventData["accessToken"] = tag.accessToken
222
-
251
+ // Add accessToken for AR cloud authentication (now optional)
252
+ if let accessToken = tag.accessToken {
253
+ eventData["accessToken"] = accessToken
254
+ }
255
+
223
256
  // Add transform matrix for direct AR coordinate system setup
224
- let transform = tag.transform
257
+ let transform = tag.transform()
225
258
  let transformArray: [Double] = [
226
- Double(transform.columns.0.x), Double(transform.columns.0.y),
259
+ Double(transform.columns.0.x), Double(transform.columns.0.y),
227
260
  Double(transform.columns.0.z), Double(transform.columns.0.w),
228
- Double(transform.columns.1.x), Double(transform.columns.1.y),
261
+ Double(transform.columns.1.x), Double(transform.columns.1.y),
229
262
  Double(transform.columns.1.z), Double(transform.columns.1.w),
230
- Double(transform.columns.2.x), Double(transform.columns.2.y),
263
+ Double(transform.columns.2.x), Double(transform.columns.2.y),
231
264
  Double(transform.columns.2.z), Double(transform.columns.2.w),
232
- Double(transform.columns.3.x), Double(transform.columns.3.y),
265
+ Double(transform.columns.3.x), Double(transform.columns.3.y),
233
266
  Double(transform.columns.3.z), Double(transform.columns.3.w)
234
267
  ]
235
268
  eventData["transform"] = transformArray
236
269
  }
237
-
270
+
238
271
  sendEvent("onLigtagFound", eventData)
239
272
  }
240
273
 
241
- public func scanner(_ scanner: LiGScannerKit.LiGScanner, didReport status: LiGScannerKit.LiGScannerError) {
242
-
274
+ public func ligScanner(_ scanner: LiGScannerKit.LiGScanner, didReport status: LiGScannerKit.StatusCode) {
275
+
243
276
  // Handle specific status codes
244
277
  switch status {
245
- case .correct, .deviceIsSupported, .authenticationOK, .initializationComplete, .scannerStopped:
278
+ case .deviceIsSupported, .authenticationOK, .scannerStopped:
246
279
  // These are positive status updates, not errors
247
280
  sendEvent("onStatusReported", [
248
- "status": mapErrorToString(status),
281
+ "status": mapStatusCodeToString(status),
249
282
  "value": status.rawValue,
250
283
  "isError": false
251
284
  ])
252
-
253
- case .invalidProductKey:
285
+
286
+ case .authenticationFailed:
254
287
  // Reset initialization state to allow retry
255
288
  self.isInitialized = false
256
289
  sendEvent("onStatusReported", [
257
- "status": "INVALID_PRODUCT_KEY",
290
+ "status": "AUTHENTICATION_FAILED",
258
291
  "value": status.rawValue,
259
292
  "isError": true,
260
- "error": "Invalid product key"
293
+ "error": "Authentication failed"
261
294
  ])
262
-
295
+
263
296
  default:
264
297
  sendEvent("onStatusReported", [
265
- "status": "STATUS: \(status)",
298
+ "status": status.description.uppercased().replacingOccurrences(of: " ", with: "_"),
266
299
  "value": status.rawValue,
267
300
  "isError": true,
268
- "error": "STATUS: \(status)"
301
+ "error": status.description
269
302
  ])
270
303
  // Log error but don't send events to avoid alert dialogs
271
304
  // Handle other scanner errors silently
272
305
  }
273
306
  }
274
307
 
275
- private func mapStatusToString(_ status: LiGTagStatus) -> String {
276
- switch status {
277
- case .ready: return "READY"
278
- case .notDetected: return "NOT_DETECTED"
279
- case .notDecoded: return "NOT_DECODED"
280
- case .invalidPosition: return "INVALID_POSITION"
281
- case .notRegistered: return "NOT_REGISTER"
282
- case .invalidPositionTooClose: return "INVALID_POSITION_TOO_CLOSE"
283
- case .distanceRangeRestrictionNear: return "DISTANCE_RANGE_RESTRICTION_NEAR"
284
- case .distanceRangeRestrictionFar: return "DISTANCE_RANGE_RESTRUCTION_FAR"
285
- case .invalidPositionUnknown: return "INVALID_POSITION_UNKNOWN"
286
- @unknown default: return "UNKNOWN_STATUS"
308
+ private func mapStatusFromBooleans(detected: Bool, decoded: Bool, validPose: Bool, isReady: Bool) -> String {
309
+ if isReady {
310
+ return "READY"
311
+ } else if !detected {
312
+ return "NOT_DETECTED"
313
+ } else if !decoded {
314
+ return "NOT_DECODED"
315
+ } else if !validPose {
316
+ return "INVALID_POSITION"
317
+ } else {
318
+ return "UNKNOWN_STATUS"
287
319
  }
288
320
  }
289
-
290
- private func mapErrorToString(_ error: LiGScannerError) -> String {
291
- switch error {
292
- case .correct: return "TAG_DETECTED"
293
- case .initErrorNotSupport: return "INIT_ERROR_NOT_SUPPORT"
294
- case .permissionLack: return "PERMISSION_LACK"
321
+
322
+ private func mapStatusCodeToString(_ status: StatusCode) -> String {
323
+ switch status {
295
324
  case .notInitialized: return "NOT_INITIALIZED"
296
- case .imageLowQuality: return "IMAGE_LOW_QUALITY"
297
- case .cameraNotAvailable: return "CAMERA_NOT_AVAILABLE"
298
- case .deviceNotSupported: return "DEVICE_NOT_SUPPORTED"
299
- case .cameraAccessException: return "CAMERA_ACCESS_EXCEPTION"
300
- case .internetAnomaly: return "INTERNET_ANOMALY"
301
- case .lackInternetPermission: return "LACK_INTERNET_PERMISSION"
302
- case .lackAccessWifiStatePermission: return "LACK_ACCESS_WIFI_STATE_PERMISSION"
303
- case .lackCameraPermission: return "LACK_CAMERA_PERMISSION"
304
- case .lackExternalStoragePermission: return "LACK_EXTERNAL_STORAGE_PERMISSION"
305
- case .lackReadPhoneStatePermission: return "LACK_READ_PHONE_STATE_PERMISSION"
306
- case .lackAccessNetworkStatePermission: return "LACK_ACCESS_NETWORK_STATE_PERMISSION"
307
- case .serverAnomaly: return "SERVER_ANOMALY"
308
- case .tokenExpired: return "TOKEN_EXPIRED"
309
- case .configurationError: return "CONFIGURATION_ERROR"
325
+ case .noSupportDevice: return "DEVICE_NOT_SUPPORTED"
310
326
  case .deviceIsSupported: return "DEVICE_IS_SUPPORTED"
311
- case .deviceStatusUnknown: return "DEVICE_STATUS_UNKNOWN"
312
327
  case .authenticationOK: return "AUTHENTICATION_OK"
313
328
  case .authenticationFailed: return "AUTHENTICATION_FAILED"
314
329
  case .authenticationTimeout: return "AUTHENTICATION_TIMEOUT"
315
- case .authenticationInterrupted: return "AUTHENTICATION_INTERRUPTED"
316
- case .initializationComplete: return "INITIALIZATION_COMPLETE"
317
- case .alreadyInitialized: return "ALREADY_INITIALIZED"
318
- case .invalidProductKey: return "INVALID_PRODUCT_KEY"
319
- case .cameraPermissionDenied: return "CAMERA_PERMISSION_DENIED"
320
- case .cameraConfigurationFailed: return "CAMERA_CONFIGURATION_FAILED"
321
- case .processingFailed: return "PROCESSING_FAILED"
322
- case .insufficientLighting: return "INSUFFICIENT_LIGHTING"
323
- case .cameraFocusFailed: return "CAMERA_FOCUS_FAILED"
324
- case .networkError: return "NETWORK_ERROR"
325
- case .invalidServerResponse: return "INVALID_SERVER_RESPONSE"
326
- case .invalidConfiguration: return "INVALID_CONFIGURATION"
327
- case .encryptionFailed: return "ENCRYPTION_FAILED"
328
- case .decryptionFailed: return "DECRYPTION_FAILED"
329
330
  case .scannerStopped: return "SCANNER_STOPPED"
330
- case .invalidParameter: return "INVALID_PARAMETER"
331
- case .algorithmError: return "ALGORITHM_ERROR"
332
- case .internalError: return "INTERNAL_ERROR"
333
- case .unknown: return "UNKNOWN"
334
- @unknown default: return "UNKNOWN_STATUS_\(error.rawValue)"
331
+ case .serverAnomaly: return "SERVER_ANOMALY"
332
+ @unknown default: return status.description.uppercased().replacingOccurrences(of: " ", with: "_")
335
333
  }
336
334
  }
337
335
  }
@@ -0,0 +1,28 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <projectDescription>
3
+ <name>gradle-plugin-root-gradle-plugin</name>
4
+ <comment>Project gradle-plugin-root-gradle-plugin created by Buildship.</comment>
5
+ <projects>
6
+ </projects>
7
+ <buildSpec>
8
+ <buildCommand>
9
+ <name>org.eclipse.buildship.core.gradleprojectbuilder</name>
10
+ <arguments>
11
+ </arguments>
12
+ </buildCommand>
13
+ </buildSpec>
14
+ <natures>
15
+ <nature>org.eclipse.buildship.core.gradleprojectnature</nature>
16
+ </natures>
17
+ <filteredResources>
18
+ <filter>
19
+ <id>1757519691947</id>
20
+ <name></name>
21
+ <type>30</type>
22
+ <matcher>
23
+ <id>org.eclipse.core.resources.regexFilterMatcher</id>
24
+ <arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
25
+ </matcher>
26
+ </filter>
27
+ </filteredResources>
28
+ </projectDescription>
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <projectDescription>
3
+ <name>react-native-gradle-plugin</name>
4
+ <comment>Project react-native-gradle-plugin created by Buildship.</comment>
5
+ <projects>
6
+ </projects>
7
+ <buildSpec>
8
+ <buildCommand>
9
+ <name>org.eclipse.jdt.core.javabuilder</name>
10
+ <arguments>
11
+ </arguments>
12
+ </buildCommand>
13
+ <buildCommand>
14
+ <name>org.eclipse.buildship.core.gradleprojectbuilder</name>
15
+ <arguments>
16
+ </arguments>
17
+ </buildCommand>
18
+ </buildSpec>
19
+ <natures>
20
+ <nature>org.eclipse.jdt.core.javanature</nature>
21
+ <nature>org.eclipse.buildship.core.gradleprojectnature</nature>
22
+ </natures>
23
+ <filteredResources>
24
+ <filter>
25
+ <id>1757519691950</id>
26
+ <name></name>
27
+ <type>30</type>
28
+ <matcher>
29
+ <id>org.eclipse.core.resources.regexFilterMatcher</id>
30
+ <arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
31
+ </matcher>
32
+ </filter>
33
+ </filteredResources>
34
+ </projectDescription>
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <projectDescription>
3
+ <name>react-native-gradle-plugin</name>
4
+ <comment>Project react-native-gradle-plugin created by Buildship.</comment>
5
+ <projects>
6
+ </projects>
7
+ <buildSpec>
8
+ <buildCommand>
9
+ <name>org.eclipse.jdt.core.javabuilder</name>
10
+ <arguments>
11
+ </arguments>
12
+ </buildCommand>
13
+ <buildCommand>
14
+ <name>org.eclipse.buildship.core.gradleprojectbuilder</name>
15
+ <arguments>
16
+ </arguments>
17
+ </buildCommand>
18
+ </buildSpec>
19
+ <natures>
20
+ <nature>org.eclipse.jdt.core.javanature</nature>
21
+ <nature>org.eclipse.buildship.core.gradleprojectnature</nature>
22
+ </natures>
23
+ <filteredResources>
24
+ <filter>
25
+ <id>1757519691950</id>
26
+ <name></name>
27
+ <type>30</type>
28
+ <matcher>
29
+ <id>org.eclipse.core.resources.regexFilterMatcher</id>
30
+ <arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
31
+ </matcher>
32
+ </filter>
33
+ </filteredResources>
34
+ </projectDescription>
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <projectDescription>
3
+ <name>settings-plugin</name>
4
+ <comment>Project settings-plugin created by Buildship.</comment>
5
+ <projects>
6
+ </projects>
7
+ <buildSpec>
8
+ <buildCommand>
9
+ <name>org.eclipse.jdt.core.javabuilder</name>
10
+ <arguments>
11
+ </arguments>
12
+ </buildCommand>
13
+ <buildCommand>
14
+ <name>org.eclipse.buildship.core.gradleprojectbuilder</name>
15
+ <arguments>
16
+ </arguments>
17
+ </buildCommand>
18
+ </buildSpec>
19
+ <natures>
20
+ <nature>org.eclipse.jdt.core.javanature</nature>
21
+ <nature>org.eclipse.buildship.core.gradleprojectnature</nature>
22
+ </natures>
23
+ <filteredResources>
24
+ <filter>
25
+ <id>1757519691953</id>
26
+ <name></name>
27
+ <type>30</type>
28
+ <matcher>
29
+ <id>org.eclipse.core.resources.regexFilterMatcher</id>
30
+ <arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
31
+ </matcher>
32
+ </filter>
33
+ </filteredResources>
34
+ </projectDescription>
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <projectDescription>
3
+ <name>settings-plugin</name>
4
+ <comment>Project settings-plugin created by Buildship.</comment>
5
+ <projects>
6
+ </projects>
7
+ <buildSpec>
8
+ <buildCommand>
9
+ <name>org.eclipse.jdt.core.javabuilder</name>
10
+ <arguments>
11
+ </arguments>
12
+ </buildCommand>
13
+ <buildCommand>
14
+ <name>org.eclipse.buildship.core.gradleprojectbuilder</name>
15
+ <arguments>
16
+ </arguments>
17
+ </buildCommand>
18
+ </buildSpec>
19
+ <natures>
20
+ <nature>org.eclipse.jdt.core.javanature</nature>
21
+ <nature>org.eclipse.buildship.core.gradleprojectnature</nature>
22
+ </natures>
23
+ <filteredResources>
24
+ <filter>
25
+ <id>1757519691953</id>
26
+ <name></name>
27
+ <type>30</type>
28
+ <matcher>
29
+ <id>org.eclipse.core.resources.regexFilterMatcher</id>
30
+ <arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
31
+ </matcher>
32
+ </filter>
33
+ </filteredResources>
34
+ </projectDescription>
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <projectDescription>
3
+ <name>shared</name>
4
+ <comment>Project shared created by Buildship.</comment>
5
+ <projects>
6
+ </projects>
7
+ <buildSpec>
8
+ <buildCommand>
9
+ <name>org.eclipse.jdt.core.javabuilder</name>
10
+ <arguments>
11
+ </arguments>
12
+ </buildCommand>
13
+ <buildCommand>
14
+ <name>org.eclipse.buildship.core.gradleprojectbuilder</name>
15
+ <arguments>
16
+ </arguments>
17
+ </buildCommand>
18
+ </buildSpec>
19
+ <natures>
20
+ <nature>org.eclipse.jdt.core.javanature</nature>
21
+ <nature>org.eclipse.buildship.core.gradleprojectnature</nature>
22
+ </natures>
23
+ <filteredResources>
24
+ <filter>
25
+ <id>1757519691954</id>
26
+ <name></name>
27
+ <type>30</type>
28
+ <matcher>
29
+ <id>org.eclipse.core.resources.regexFilterMatcher</id>
30
+ <arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
31
+ </matcher>
32
+ </filter>
33
+ </filteredResources>
34
+ </projectDescription>
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <projectDescription>
3
+ <name>shared</name>
4
+ <comment>Project shared created by Buildship.</comment>
5
+ <projects>
6
+ </projects>
7
+ <buildSpec>
8
+ <buildCommand>
9
+ <name>org.eclipse.jdt.core.javabuilder</name>
10
+ <arguments>
11
+ </arguments>
12
+ </buildCommand>
13
+ <buildCommand>
14
+ <name>org.eclipse.buildship.core.gradleprojectbuilder</name>
15
+ <arguments>
16
+ </arguments>
17
+ </buildCommand>
18
+ </buildSpec>
19
+ <natures>
20
+ <nature>org.eclipse.jdt.core.javanature</nature>
21
+ <nature>org.eclipse.buildship.core.gradleprojectnature</nature>
22
+ </natures>
23
+ <filteredResources>
24
+ <filter>
25
+ <id>1757519691954</id>
26
+ <name></name>
27
+ <type>30</type>
28
+ <matcher>
29
+ <id>org.eclipse.core.resources.regexFilterMatcher</id>
30
+ <arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
31
+ </matcher>
32
+ </filter>
33
+ </filteredResources>
34
+ </projectDescription>