@granite-js/screen 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 (99) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/GraniteScreen.podspec +25 -0
  3. package/LICENSE +202 -0
  4. package/android/CMakeLists.txt +62 -0
  5. package/android/build.gradle +63 -0
  6. package/android/src/main/AndroidManifest.xml +2 -0
  7. package/android/src/main/cpp/BundleEvaluator.cpp +27 -0
  8. package/android/src/main/cpp/BundleEvaluator.h +17 -0
  9. package/android/src/main/cpp/onLoad.cpp +6 -0
  10. package/android/src/main/kotlin/run/granite/BundleEvaluator.kt +50 -0
  11. package/android/src/main/kotlin/run/granite/BundleLoader.kt +40 -0
  12. package/android/src/main/kotlin/run/granite/DefaultBundleLoader.kt +20 -0
  13. package/android/src/main/kotlin/run/granite/DefaultErrorView.kt +58 -0
  14. package/android/src/main/kotlin/run/granite/DefaultLoadingView.kt +51 -0
  15. package/android/src/main/kotlin/run/granite/GraniteReactDelegate.kt +76 -0
  16. package/android/src/main/kotlin/run/granite/GraniteReactDelegateImpl.kt +448 -0
  17. package/android/src/main/kotlin/run/granite/GraniteReactHost.kt +113 -0
  18. package/android/src/main/kotlin/run/granite/ReactHostFactory.kt +106 -0
  19. package/gradle-plugin/LICENSE +201 -0
  20. package/gradle-plugin/README.md +578 -0
  21. package/gradle-plugin/build.gradle.kts +97 -0
  22. package/gradle-plugin/gradle/libs.versions.toml +17 -0
  23. package/gradle-plugin/gradle/wrapper/gradle-wrapper.jar +0 -0
  24. package/gradle-plugin/gradle/wrapper/gradle-wrapper.properties +7 -0
  25. package/gradle-plugin/gradle.properties +12 -0
  26. package/gradle-plugin/gradlew +248 -0
  27. package/gradle-plugin/gradlew.bat +93 -0
  28. package/gradle-plugin/settings.gradle.kts +1 -0
  29. package/gradle-plugin/src/main/kotlin/run/granite/gradle/GraniteExtension.kt +225 -0
  30. package/gradle-plugin/src/main/kotlin/run/granite/gradle/GranitePlugin.kt +784 -0
  31. package/gradle-plugin/src/main/kotlin/run/granite/gradle/GraniteRootExtension.kt +107 -0
  32. package/gradle-plugin/src/main/kotlin/run/granite/gradle/GraniteRootProjectPlugin.kt +290 -0
  33. package/gradle-plugin/src/main/kotlin/run/granite/gradle/config/BuildConfigConfigurator.kt +69 -0
  34. package/gradle-plugin/src/main/kotlin/run/granite/gradle/config/DependencyConfigurator.kt +232 -0
  35. package/gradle-plugin/src/main/kotlin/run/granite/gradle/config/DependencyCoordinates.kt +29 -0
  36. package/gradle-plugin/src/main/kotlin/run/granite/gradle/config/DevServerResourceConfigurator.kt +101 -0
  37. package/gradle-plugin/src/main/kotlin/run/granite/gradle/config/JniPackagingConfigurator.kt +160 -0
  38. package/gradle-plugin/src/main/kotlin/run/granite/gradle/config/NdkConfigurator.kt +135 -0
  39. package/gradle-plugin/src/main/kotlin/run/granite/gradle/config/RepositoryConfigurator.kt +148 -0
  40. package/gradle-plugin/src/main/kotlin/run/granite/gradle/config/ResourceConfigurator.kt +56 -0
  41. package/gradle-plugin/src/main/kotlin/run/granite/gradle/generators/CMakeGenerator.kt +105 -0
  42. package/gradle-plugin/src/main/kotlin/run/granite/gradle/generators/CppAutolinkingGenerator.kt +152 -0
  43. package/gradle-plugin/src/main/kotlin/run/granite/gradle/generators/EntryPointGenerator.kt +100 -0
  44. package/gradle-plugin/src/main/kotlin/run/granite/gradle/models/AndroidDependencyConfig.kt +23 -0
  45. package/gradle-plugin/src/main/kotlin/run/granite/gradle/models/AutolinkingConfig.kt +89 -0
  46. package/gradle-plugin/src/main/kotlin/run/granite/gradle/models/CMakeEntry.kt +47 -0
  47. package/gradle-plugin/src/main/kotlin/run/granite/gradle/models/NativeModule.kt +177 -0
  48. package/gradle-plugin/src/main/kotlin/run/granite/gradle/tasks/AssetPackagingTask.kt +194 -0
  49. package/gradle-plugin/src/main/kotlin/run/granite/gradle/tasks/AutolinkingTask.kt +431 -0
  50. package/gradle-plugin/src/main/kotlin/run/granite/gradle/tasks/BundleTask.kt +275 -0
  51. package/gradle-plugin/src/main/kotlin/run/granite/gradle/tasks/CodegenArtifactsTask.kt +218 -0
  52. package/gradle-plugin/src/main/kotlin/run/granite/gradle/tasks/CodegenSchemaTask.kt +186 -0
  53. package/gradle-plugin/src/main/kotlin/run/granite/gradle/utils/AutolinkingParser.kt +128 -0
  54. package/gradle-plugin/src/main/kotlin/run/granite/gradle/utils/ConflictDetector.kt +121 -0
  55. package/gradle-plugin/src/main/kotlin/run/granite/gradle/utils/JdkValidator.kt +73 -0
  56. package/gradle-plugin/src/main/kotlin/run/granite/gradle/utils/NodeExecutableFinder.kt +43 -0
  57. package/gradle-plugin/src/main/kotlin/run/granite/gradle/utils/ReactNativeVersionReader.kt +329 -0
  58. package/gradle-plugin/src/main/kotlin/run/granite/gradle/utils/TaskDependencyValidator.kt +198 -0
  59. package/gradle-plugin/src/test/kotlin/run/granite/gradle/GraniteExtensionTest.kt +191 -0
  60. package/gradle-plugin/src/test/kotlin/run/granite/gradle/GranitePluginTest.kt +156 -0
  61. package/gradle-plugin/src/test/kotlin/run/granite/gradle/GraniteRootProjectPluginTest.kt +87 -0
  62. package/gradle-plugin/src/test/kotlin/run/granite/gradle/config/BuildConfigConfiguratorTest.kt +115 -0
  63. package/gradle-plugin/src/test/kotlin/run/granite/gradle/config/DependencyConfiguratorTest.kt +338 -0
  64. package/gradle-plugin/src/test/kotlin/run/granite/gradle/config/DevServerResourceConfiguratorTest.kt +205 -0
  65. package/gradle-plugin/src/test/kotlin/run/granite/gradle/config/ResourceConfiguratorTest.kt +131 -0
  66. package/gradle-plugin/src/test/kotlin/run/granite/gradle/fixtures/NativeModuleFixtures.kt +67 -0
  67. package/gradle-plugin/src/test/kotlin/run/granite/gradle/generators/CMakeGeneratorTest.kt +71 -0
  68. package/gradle-plugin/src/test/kotlin/run/granite/gradle/generators/CppAutolinkingGeneratorTest.kt +344 -0
  69. package/gradle-plugin/src/test/kotlin/run/granite/gradle/generators/EntryPointGeneratorTest.kt +40 -0
  70. package/gradle-plugin/src/test/kotlin/run/granite/gradle/models/AutolinkingConfigTest.kt +350 -0
  71. package/gradle-plugin/src/test/kotlin/run/granite/gradle/models/CMakeEntryTest.kt +200 -0
  72. package/gradle-plugin/src/test/kotlin/run/granite/gradle/models/NativeModuleTest.kt +562 -0
  73. package/gradle-plugin/src/test/kotlin/run/granite/gradle/tasks/AssetPackagingTaskTest.kt +318 -0
  74. package/gradle-plugin/src/test/kotlin/run/granite/gradle/tasks/AutolinkingTaskTest.kt +89 -0
  75. package/gradle-plugin/src/test/kotlin/run/granite/gradle/tasks/BundleTaskTest.kt +68 -0
  76. package/gradle-plugin/src/test/kotlin/run/granite/gradle/tasks/CodegenTasksTest.kt +410 -0
  77. package/gradle-plugin/src/test/kotlin/run/granite/gradle/utils/AutolinkingParserTest.kt +335 -0
  78. package/gradle-plugin/src/test/kotlin/run/granite/gradle/utils/ConflictDetectorTest.kt +75 -0
  79. package/gradle-plugin/src/test/kotlin/run/granite/gradle/utils/JdkValidatorTest.kt +88 -0
  80. package/gradle-plugin/src/test/kotlin/run/granite/gradle/utils/ReactNativeVersionReaderTest.kt +585 -0
  81. package/gradle-plugin/src/test/kotlin/run/granite/gradle/utils/TaskDependencyValidatorTest.kt +123 -0
  82. package/gradle-plugin/src/test/kotlin/run/granite/gradle/utils/TaskTestUtils.kt +88 -0
  83. package/gradle-plugin/src/test/resources/fixtures/sample-rn-config.json +45 -0
  84. package/ios/BundleLoader/BundleEvaluator.h +16 -0
  85. package/ios/BundleLoader/BundleEvaluator.mm +76 -0
  86. package/ios/BundleLoader/BundleLoadable.swift +91 -0
  87. package/ios/GraniteBundleLoaderTypes.swift +7 -0
  88. package/ios/GraniteScreen.h +12 -0
  89. package/ios/ReactNativeHosting/DefaultViews.swift +138 -0
  90. package/ios/ReactNativeHosting/GraniteDefaultModuleProvider.h +24 -0
  91. package/ios/ReactNativeHosting/GraniteDefaultModuleProvider.mm +22 -0
  92. package/ios/ReactNativeHosting/GraniteHostingHelper.swift +103 -0
  93. package/ios/ReactNativeHosting/GraniteNativeFactory.swift +35 -0
  94. package/ios/ReactNativeHosting/GraniteNativeFactoryDelegateImpl.swift +30 -0
  95. package/ios/ReactNativeHosting/GraniteNativeFactoryImpl.swift +24 -0
  96. package/ios/ReactNativeHosting/GraniteReactHost.swift +39 -0
  97. package/ios/ReactNativeHosting/GraniteScreen-Bridging-Header.h +12 -0
  98. package/package.json +59 -0
  99. package/react-native.config.js +8 -0
@@ -0,0 +1,30 @@
1
+ //
2
+ // GraniteNativeFactoryDelegateImpl.swift
3
+ // GraniteScreen
4
+ //
5
+ // Swift implementation of GraniteNativeFactoryDelegate for custom bundle loading
6
+ //
7
+ import Foundation
8
+ import React
9
+ import React_RCTAppDelegate
10
+
11
+ public class ReactNativeFactoryDelegate: RCTDefaultReactNativeFactoryDelegate {
12
+ private let url: URL
13
+
14
+ public init(url: URL) {
15
+ self.url = url
16
+ super.init()
17
+ }
18
+
19
+ @objc public override func bundleURL() -> URL? {
20
+ return url
21
+ }
22
+
23
+ public override func sourceURL(for bridge: RCTBridge) -> URL? {
24
+ return bundleURL()
25
+ }
26
+
27
+ public override func bridgelessEnabled() -> Bool {
28
+ return true
29
+ }
30
+ }
@@ -0,0 +1,24 @@
1
+ //
2
+ // GraniteNativeFactoryImpl.swift
3
+ // GraniteScreen
4
+ //
5
+ // Wrapper for GraniteNativeFactory to enable module customization
6
+ //
7
+
8
+ import Foundation
9
+ import React_RCTAppDelegate
10
+
11
+ /// Internal wrapper class that bridges GraniteReactHost with GraniteNativeFactory
12
+ @objcMembers
13
+ public class GraniteNativeFactoryImpl: GraniteNativeFactory {
14
+ weak var reactHost: GraniteReactHost?
15
+
16
+ @objc(getModuleInstanceFromClass:)
17
+ public override func getModuleInstance(from moduleClass: AnyClass) -> Any? {
18
+ if let customInstance = reactHost?.getModuleInstance(from: moduleClass) {
19
+ return customInstance
20
+ }
21
+
22
+ return super.getModuleInstance(from: moduleClass)
23
+ }
24
+ }
@@ -0,0 +1,39 @@
1
+ //
2
+ // GraniteReactHost.swift
3
+ // GraniteScreen
4
+ //
5
+ // Protocol for hosting React Native views - matches Android's GraniteReactHost
6
+ //
7
+
8
+ import React
9
+ import ReactAppDependencyProvider
10
+ import UIKit
11
+
12
+ /// Protocol for hosting React Native components in iOS ViewControllers
13
+ /// This matches Android's GraniteReactHost interface with Swift-style naming conventions
14
+ public protocol GraniteReactHost: AnyObject {
15
+ var graniteBaseView: UIView? { get set }
16
+ /// Bundle loader - property as it represents a configuration value
17
+ /// Return nil to use the default bundle from app
18
+ var bundleLoader: BundleLoadable { get }
19
+ func graniteSetupDidStart()
20
+ func graniteSetupDidFinish()
21
+ func graniteSetupDidError(didFailWith error: Error)
22
+ /// Module instance creation (same as Objective-C)
23
+ /// Returns nil by default, override to customize module creation
24
+ func getModuleInstance(from moduleClass: AnyClass) -> Any?
25
+ /// Module instance creation with a default instance from React Native
26
+ /// Return a custom instance or nil to use the default
27
+ func getModuleInstance(from moduleClass: AnyClass, defaultInstance: Any?) -> Any?
28
+ }
29
+
30
+ // Default implementation - returns nil
31
+ extension GraniteReactHost {
32
+ public func getModuleInstance(from moduleClass: AnyClass) -> Any? {
33
+ return nil // Default returns nil
34
+ }
35
+
36
+ public func getModuleInstance(from moduleClass: AnyClass, defaultInstance: Any?) -> Any? {
37
+ return getModuleInstance(from: moduleClass) ?? defaultInstance
38
+ }
39
+ }
@@ -0,0 +1,12 @@
1
+ //
2
+ // GraniteScreen-Bridging-Header.h
3
+ // GraniteScreen
4
+ //
5
+ // Bridging header to expose Objective-C classes to Swift
6
+ //
7
+
8
+ #import <React/RCTBridgeModule.h>
9
+ #import <React/RCTBridge.h>
10
+ #import <React/RCTRootView.h>
11
+ #import <React/RCTBridgeDelegate.h>
12
+ #import "GraniteDefaultModuleProvider.h"
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@granite-js/screen",
3
+ "type": "module",
4
+ "version": "1.0.0",
5
+ "description": "Brownfield Screen for React Native",
6
+ "main": "dist/index.js",
7
+ "module": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "require": "./dist/index.js"
14
+ },
15
+ "./package.json": "./package.json"
16
+ },
17
+ "files": [
18
+ "dist",
19
+ "src",
20
+ "ios",
21
+ "android",
22
+ "gradle-plugin",
23
+ "react-native.config.js",
24
+ "!ios/build",
25
+ "!android/build",
26
+ "!android/gradle",
27
+ "!android/gradlew",
28
+ "!android/gradlew.bat",
29
+ "!android/local.properties",
30
+ "!**/__tests__",
31
+ "!**/__fixtures__",
32
+ "!**/__mocks__",
33
+ "!**/.*",
34
+ "GraniteScreen.podspec",
35
+ "package.json"
36
+ ],
37
+ "scripts": {
38
+ "build": "cd gradle-plugin && ./gradlew jar",
39
+ "test:gradle-plugin": "cd gradle-plugin && ./gradlew test",
40
+ "prepack": "cd gradle-plugin && ./gradlew jar"
41
+ },
42
+ "nx": {
43
+ "targets": {
44
+ "build": {
45
+ "inputs": [
46
+ "{projectRoot}/gradle-plugin/src/**",
47
+ "{projectRoot}/gradle-plugin/build.gradle.kts",
48
+ "{projectRoot}/gradle-plugin/settings.gradle.kts",
49
+ "{projectRoot}/gradle-plugin/gradle.properties",
50
+ "{projectRoot}/gradle-plugin/gradle/libs.versions.toml"
51
+ ],
52
+ "outputs": [
53
+ "{projectRoot}/gradle-plugin/build/libs"
54
+ ]
55
+ }
56
+ }
57
+ },
58
+ "license": "Apache-2.0"
59
+ }
@@ -0,0 +1,8 @@
1
+ module.exports = {
2
+ dependency: {
3
+ platforms: {
4
+ android: null, // Android autolinking 비활성화
5
+ ios: null, // iOS autolinking 비활성화
6
+ },
7
+ },
8
+ };