diff --git a/NuGet.config b/NuGet.config
new file mode 100644
index 0000000..fe459fe
--- /dev/null
+++ b/NuGet.config
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/package.json b/package.json
index 6967df0..2a16df6 100644
--- a/package.json
+++ b/package.json
@@ -7,7 +7,13 @@
"fast-base64-decode": "^1.0.0"
},
"peerDependencies": {
- "react-native": ">=0.81"
+ "react-native": ">=0.81",
+ "react-native-windows": "*"
+ },
+ "peerDependenciesMeta": {
+ "react-native-windows": {
+ "optional": true
+ }
},
"keywords": [
"Crypto.getRandomValues",
@@ -23,6 +29,25 @@
"jsSrcsDir": "spec",
"android": {
"javaPackageName": "org.linusu"
+ },
+ "windows": {
+ "namespace": "ReactNativeGetRandomValuesCodegen",
+ "outputDirectory": "windows/ReactNativeGetRandomValues/codegen",
+ "separateDataTypes": true
+ }
+ },
+ "devDependencies": {
+ "@react-native-community/cli": "^20.2.0",
+ "@types/react": "^19.2.17",
+ "react": "^19.2.7",
+ "react-native": "^0.84.1",
+ "react-native-windows": "^0.84.0"
+ },
+ "react-native-windows": {
+ "init-windows": {
+ "name": "ReactNativeGetRandomValues",
+ "namespace": "ReactNativeGetRandomValues",
+ "template": "cpp-lib"
}
}
}
diff --git a/windows/.gitignore b/windows/.gitignore
new file mode 100644
index 0000000..0fd0acf
--- /dev/null
+++ b/windows/.gitignore
@@ -0,0 +1,46 @@
+*AppPackages*
+*BundleArtifacts*
+
+#OS junk files
+[Tt]humbs.db
+*.DS_Store
+
+#Visual Studio files
+*.[Oo]bj
+*.user
+*.aps
+*.pch
+*.vspscc
+*.vssscc
+*_i.c
+*_p.c
+*.ncb
+*.suo
+*.tlb
+*.tlh
+*.bak
+*.[Cc]ache
+*.ilk
+*.log
+*.lib
+*.sbr
+*.sdf
+*.opensdf
+*.opendb
+*.unsuccessfulbuild
+ipch/
+[Oo]bj/
+[Bb]in
+[Dd]ebug*/
+[Rr]elease*/
+Ankh.NoLoad
+.vs/
+# Visual C++ cache files
+
+#Files generated by the VS build
+**/Generated Files/**
+
+#Files generated by MS build
+*.binlog
+*.err
+*.wrn
diff --git a/windows/ExperimentalFeatures.props b/windows/ExperimentalFeatures.props
new file mode 100644
index 0000000..db10c59
--- /dev/null
+++ b/windows/ExperimentalFeatures.props
@@ -0,0 +1,33 @@
+
+
+
+
+
+ true
+
+
+ true
+
+ true
+
+
+
diff --git a/windows/ReactNativeGetRandomValues.sln b/windows/ReactNativeGetRandomValues.sln
new file mode 100644
index 0000000..4bd0479
--- /dev/null
+++ b/windows/ReactNativeGetRandomValues.sln
@@ -0,0 +1,43 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.3.32929.385
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReactNativeGetRandomValues", "ReactNativeGetRandomValues\ReactNativeGetRandomValues.vcxproj", "{F29EA512-C048-4465-8218-4E1283341B65}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Debug|ARM64 = Debug|ARM64
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ Release|ARM64 = Release|ARM64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {F29EA512-C048-4465-8218-4E1283341B65}.Debug|x64.ActiveCfg = Debug|x64
+ {F29EA512-C048-4465-8218-4E1283341B65}.Debug|x64.Build.0 = Debug|x64
+ {F29EA512-C048-4465-8218-4E1283341B65}.Debug|x64.Deploy.0 = Debug|x64
+ {F29EA512-C048-4465-8218-4E1283341B65}.Debug|x86.ActiveCfg = Debug|Win32
+ {F29EA512-C048-4465-8218-4E1283341B65}.Debug|x86.Build.0 = Debug|Win32
+ {F29EA512-C048-4465-8218-4E1283341B65}.Debug|x86.Deploy.0 = Debug|Win32
+ {F29EA512-C048-4465-8218-4E1283341B65}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {F29EA512-C048-4465-8218-4E1283341B65}.Debug|ARM64.Build.0 = Debug|ARM64
+ {F29EA512-C048-4465-8218-4E1283341B65}.Debug|ARM64.Deploy.0 = Debug|ARM64
+ {F29EA512-C048-4465-8218-4E1283341B65}.Release|x64.ActiveCfg = Release|x64
+ {F29EA512-C048-4465-8218-4E1283341B65}.Release|x64.Build.0 = Release|x64
+ {F29EA512-C048-4465-8218-4E1283341B65}.Release|x64.Deploy.0 = Release|x64
+ {F29EA512-C048-4465-8218-4E1283341B65}.Release|x86.ActiveCfg = Release|Win32
+ {F29EA512-C048-4465-8218-4E1283341B65}.Release|x86.Build.0 = Release|Win32
+ {F29EA512-C048-4465-8218-4E1283341B65}.Release|x86.Deploy.0 = Release|Win32
+ {F29EA512-C048-4465-8218-4E1283341B65}.Release|ARM64.ActiveCfg = Release|ARM64
+ {F29EA512-C048-4465-8218-4E1283341B65}.Release|ARM64.Build.0 = Release|ARM64
+ {F29EA512-C048-4465-8218-4E1283341B65}.Release|ARM64.Deploy.0 = Release|ARM64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {D43FAD39-F619-437D-BB40-04A3982ACB6A}
+ EndGlobalSection
+EndGlobal
diff --git a/windows/ReactNativeGetRandomValues/ReactNativeGetRandomValues.cpp b/windows/ReactNativeGetRandomValues/ReactNativeGetRandomValues.cpp
new file mode 100644
index 0000000..8a0e846
--- /dev/null
+++ b/windows/ReactNativeGetRandomValues/ReactNativeGetRandomValues.cpp
@@ -0,0 +1,18 @@
+#include "pch.h"
+
+#include "ReactNativeGetRandomValues.h"
+
+#include
+
+namespace winrt::ReactNativeGetRandomValues
+{
+
+std::string RNGetRandomValues::getRandomBase64(double byteLength) noexcept {
+ auto buffer = Windows::Security::Cryptography::CryptographicBuffer::GenerateRandom(
+ static_cast(byteLength));
+
+ return winrt::to_string(
+ Windows::Security::Cryptography::CryptographicBuffer::EncodeToBase64String(buffer));
+}
+
+} // namespace winrt::ReactNativeGetRandomValues
\ No newline at end of file
diff --git a/windows/ReactNativeGetRandomValues/ReactNativeGetRandomValues.def b/windows/ReactNativeGetRandomValues/ReactNativeGetRandomValues.def
new file mode 100644
index 0000000..24e7c12
--- /dev/null
+++ b/windows/ReactNativeGetRandomValues/ReactNativeGetRandomValues.def
@@ -0,0 +1,3 @@
+EXPORTS
+DllCanUnloadNow = WINRT_CanUnloadNow PRIVATE
+DllGetActivationFactory = WINRT_GetActivationFactory PRIVATE
diff --git a/windows/ReactNativeGetRandomValues/ReactNativeGetRandomValues.h b/windows/ReactNativeGetRandomValues/ReactNativeGetRandomValues.h
new file mode 100644
index 0000000..56c33a9
--- /dev/null
+++ b/windows/ReactNativeGetRandomValues/ReactNativeGetRandomValues.h
@@ -0,0 +1,22 @@
+#pragma once
+
+#include "pch.h"
+#include "resource.h"
+
+#include "codegen/NativeRNGetRandomValuesSpec.g.h"
+
+#include "NativeModules.h"
+
+namespace winrt::ReactNativeGetRandomValues
+{
+
+REACT_MODULE(RNGetRandomValues)
+struct RNGetRandomValues
+{
+ using ModuleSpec = ReactNativeGetRandomValuesCodegen::RNGetRandomValuesSpec;
+
+ REACT_SYNC_METHOD(getRandomBase64)
+ std::string getRandomBase64(double byteLength) noexcept;
+};
+
+} // namespace winrt::ReactNativeGetRandomValues
\ No newline at end of file
diff --git a/windows/ReactNativeGetRandomValues/ReactNativeGetRandomValues.rc b/windows/ReactNativeGetRandomValues/ReactNativeGetRandomValues.rc
new file mode 100644
index 0000000..3212c10
Binary files /dev/null and b/windows/ReactNativeGetRandomValues/ReactNativeGetRandomValues.rc differ
diff --git a/windows/ReactNativeGetRandomValues/ReactNativeGetRandomValues.vcxproj b/windows/ReactNativeGetRandomValues/ReactNativeGetRandomValues.vcxproj
new file mode 100644
index 0000000..00710cf
--- /dev/null
+++ b/windows/ReactNativeGetRandomValues/ReactNativeGetRandomValues.vcxproj
@@ -0,0 +1,143 @@
+
+
+
+
+
+ true
+ true
+ {F29EA512-C048-4465-8218-4E1283341B65}
+ ReactNativeGetRandomValues
+ Win32Proj
+ ReactNativeGetRandomValues
+ 10.0
+ en-US
+ 17.0
+ false
+
+
+ $([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), 'node_modules\react-native-windows\package.json'))\node_modules\react-native-windows\
+ false
+
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+ Debug
+ ARM64
+
+
+ Release
+ ARM64
+
+
+
+ DynamicLibrary
+ Unicode
+ v145
+ false
+
+
+ true
+
+
+ false
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+ Use
+ pch.h
+ $(IntDir)pch.pch
+ Level4
+ true
+ %(AdditionalOptions) /bigobj
+ 4453;28204
+ _WINRT_DLL;%(PreprocessorDefinitions)
+ $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories)
+
+ $(MSBuildThisFileDirectory);
+ %(AdditionalIncludeDirectories)
+
+
+
+ shell32.lib;user32.lib;windowsapp.lib;%(AdditionalDependencies)
+ Console
+ true
+ ReactNativeGetRandomValues.def
+
+
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+
+
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+
+
+
+
+
+
+ ReactPackageProvider.idl
+
+
+
+
+
+
+
+
+ Create
+
+
+ ReactPackageProvider.idl
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This project references targets in your node_modules\react-native-windows folder. The missing file is {0}.
+
+
+
+
+
\ No newline at end of file
diff --git a/windows/ReactNativeGetRandomValues/ReactNativeGetRandomValues.vcxproj.filters b/windows/ReactNativeGetRandomValues/ReactNativeGetRandomValues.vcxproj.filters
new file mode 100644
index 0000000..9702b60
--- /dev/null
+++ b/windows/ReactNativeGetRandomValues/ReactNativeGetRandomValues.vcxproj.filters
@@ -0,0 +1,44 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;hm;inl;inc;ipp;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Resource Files
+
+
+
\ No newline at end of file
diff --git a/windows/ReactNativeGetRandomValues/ReactPackageProvider.cpp b/windows/ReactNativeGetRandomValues/ReactPackageProvider.cpp
new file mode 100644
index 0000000..845c59f
--- /dev/null
+++ b/windows/ReactNativeGetRandomValues/ReactPackageProvider.cpp
@@ -0,0 +1,20 @@
+#include "pch.h"
+
+#include "ReactPackageProvider.h"
+#if __has_include("ReactPackageProvider.g.cpp")
+#include "ReactPackageProvider.g.cpp"
+#endif
+
+#include "ReactNativeGetRandomValues.h"
+
+using namespace winrt::Microsoft::ReactNative;
+
+namespace winrt::ReactNativeGetRandomValues::implementation
+{
+
+void ReactPackageProvider::CreatePackage(IReactPackageBuilder const &packageBuilder) noexcept
+{
+ AddAttributedModules(packageBuilder, true);
+}
+
+} // namespace winrt::ReactNativeGetRandomValues::implementation
diff --git a/windows/ReactNativeGetRandomValues/ReactPackageProvider.h b/windows/ReactNativeGetRandomValues/ReactPackageProvider.h
new file mode 100644
index 0000000..46d8218
--- /dev/null
+++ b/windows/ReactNativeGetRandomValues/ReactPackageProvider.h
@@ -0,0 +1,24 @@
+#pragma once
+
+#include "ReactPackageProvider.g.h"
+
+using namespace winrt::Microsoft::ReactNative;
+
+namespace winrt::ReactNativeGetRandomValues::implementation
+{
+
+struct ReactPackageProvider : ReactPackageProviderT
+{
+ ReactPackageProvider() = default;
+
+ void CreatePackage(IReactPackageBuilder const &packageBuilder) noexcept;
+};
+
+} // namespace winrt::ReactNativeGetRandomValues::implementation
+
+namespace winrt::ReactNativeGetRandomValues::factory_implementation
+{
+
+struct ReactPackageProvider : ReactPackageProviderT {};
+
+} // namespace winrt::ReactNativeGetRandomValues::factory_implementation
diff --git a/windows/ReactNativeGetRandomValues/ReactPackageProvider.idl b/windows/ReactNativeGetRandomValues/ReactPackageProvider.idl
new file mode 100644
index 0000000..93e1391
--- /dev/null
+++ b/windows/ReactNativeGetRandomValues/ReactPackageProvider.idl
@@ -0,0 +1,9 @@
+namespace ReactNativeGetRandomValues
+{
+ [webhosthidden]
+ [default_interface]
+ runtimeclass ReactPackageProvider : Microsoft.ReactNative.IReactPackageProvider
+ {
+ ReactPackageProvider();
+ };
+}
diff --git a/windows/ReactNativeGetRandomValues/codegen/.clang-format b/windows/ReactNativeGetRandomValues/codegen/.clang-format
new file mode 100644
index 0000000..a43d914
--- /dev/null
+++ b/windows/ReactNativeGetRandomValues/codegen/.clang-format
@@ -0,0 +1,2 @@
+DisableFormat: true
+SortIncludes: false
\ No newline at end of file
diff --git a/windows/ReactNativeGetRandomValues/codegen/NativeRNGetRandomValuesSpec.g.h b/windows/ReactNativeGetRandomValues/codegen/NativeRNGetRandomValuesSpec.g.h
new file mode 100644
index 0000000..98e39b1
--- /dev/null
+++ b/windows/ReactNativeGetRandomValues/codegen/NativeRNGetRandomValuesSpec.g.h
@@ -0,0 +1,35 @@
+
+/*
+ * This file is auto-generated from a NativeModule spec file in js.
+ *
+ * This is a C++ Spec class that should be used with MakeTurboModuleProvider to register native modules
+ * in a way that also verifies at compile time that the native module matches the interface required
+ * by the TurboModule JS spec.
+ */
+#pragma once
+// clang-format off
+
+
+#include
+#include
+
+namespace ReactNativeGetRandomValuesCodegen {
+
+struct RNGetRandomValuesSpec : winrt::Microsoft::ReactNative::TurboModuleSpec {
+ static constexpr auto methods = std::tuple{
+ SyncMethod{0, L"getRandomBase64"},
+ };
+
+ template
+ static constexpr void ValidateModule() noexcept {
+ constexpr auto methodCheckResults = CheckMethods();
+
+ REACT_SHOW_METHOD_SPEC_ERRORS(
+ 0,
+ "getRandomBase64",
+ " REACT_SYNC_METHOD(getRandomBase64) std::string getRandomBase64(double byteLength) noexcept { /* implementation */ }\n"
+ " REACT_SYNC_METHOD(getRandomBase64) static std::string getRandomBase64(double byteLength) noexcept { /* implementation */ }\n");
+ }
+};
+
+} // namespace ReactNativeGetRandomValuesCodegen
diff --git a/windows/ReactNativeGetRandomValues/packages.lock.json b/windows/ReactNativeGetRandomValues/packages.lock.json
new file mode 100644
index 0000000..95481a7
--- /dev/null
+++ b/windows/ReactNativeGetRandomValues/packages.lock.json
@@ -0,0 +1,151 @@
+{
+ "version": 1,
+ "dependencies": {
+ "native,Version=v0.0": {
+ "boost": {
+ "type": "Direct",
+ "requested": "[1.84.0, )",
+ "resolved": "1.84.0",
+ "contentHash": "4el2YP3cNJDVFPdzOso+LxGvdWP2rHxML4siq8VdonNypW2m4q503tHfCj6vK0L1UfxioE2hpFGb4ITEua73tg=="
+ },
+ "Microsoft.ReactNative": {
+ "type": "Direct",
+ "requested": "[0.84.0, )",
+ "resolved": "0.84.0",
+ "contentHash": "eZq5oUB0ht6Pmf9gIUfJOOfkVPQICLogAa4GB5GeNh4Qrf6cPVbmm0hffuWWcafHLGYmQDN9agBvES+qdpCTxg=="
+ },
+ "Microsoft.ReactNative.Cxx": {
+ "type": "Direct",
+ "requested": "[0.84.0, )",
+ "resolved": "0.84.0",
+ "contentHash": "EleqtgIyUhaZB+29xpbufPVjR5ns12uuC6R6Nbuie5WZWJAgKbNZSH+c97NR+yWPlEKpAlTR5ZOlIcLRnn4rGQ==",
+ "dependencies": {
+ "Microsoft.ReactNative": "0.84.0"
+ }
+ },
+ "Microsoft.VCRTForwarders.140": {
+ "type": "Direct",
+ "requested": "[1.0.2-rc, )",
+ "resolved": "1.0.2-rc",
+ "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ=="
+ },
+ "Microsoft.Windows.CppWinRT": {
+ "type": "Direct",
+ "requested": "[2.0.230706.1, )",
+ "resolved": "2.0.230706.1",
+ "contentHash": "l0D7oCw/5X+xIKHqZTi62TtV+1qeSz7KVluNFdrJ9hXsst4ghvqQ/Yhura7JqRdZWBXAuDS0G0KwALptdoxweQ=="
+ },
+ "Microsoft.WindowsAppSDK": {
+ "type": "Direct",
+ "requested": "[1.8.260508005, )",
+ "resolved": "1.8.260508005",
+ "contentHash": "+aA+zrvqJKgsn/1TPOSR0Uy7dkMO5jI/+cDWPu2pWmXe4KQxYkR8gQFY9IrfbgCxxSd/yl1zMcAKD/4HBbNqaw==",
+ "dependencies": {
+ "Microsoft.WindowsAppSDK.AI": "[1.8.76]",
+ "Microsoft.WindowsAppSDK.Base": "[1.8.251216001]",
+ "Microsoft.WindowsAppSDK.DWrite": "[1.8.25122902]",
+ "Microsoft.WindowsAppSDK.Foundation": "[1.8.260505001]",
+ "Microsoft.WindowsAppSDK.InteractiveExperiences": "[1.8.260430001]",
+ "Microsoft.WindowsAppSDK.ML": "[1.8.2197]",
+ "Microsoft.WindowsAppSDK.Runtime": "[1.8.260508005]",
+ "Microsoft.WindowsAppSDK.Widgets": "[1.8.251231004]",
+ "Microsoft.WindowsAppSDK.WinUI": "[1.8.260505002]"
+ }
+ },
+ "Microsoft.Web.WebView2": {
+ "type": "Transitive",
+ "resolved": "1.0.3179.45",
+ "contentHash": "3pokSH5CnN0G6rGhGFo1y87inxYhNxBQ2Vdf0wlvBj99KHxQJormjDACmqRnFeUsmuNFIhWwfAL1ztq7wD5qRA=="
+ },
+ "Microsoft.Windows.SDK.BuildTools": {
+ "type": "Transitive",
+ "resolved": "10.0.26100.4654",
+ "contentHash": "2mgcOlj/t2RfSyyw+pVESfO+Tk1RkfQzto9Vrq42M1lUQIfQEwbi8QLha9GXWIOj+TFzeHIEJckIoF25mgiM8A=="
+ },
+ "Microsoft.Windows.SDK.BuildTools.MSIX": {
+ "type": "Transitive",
+ "resolved": "1.7.20250829.1",
+ "contentHash": "IMdvRmCIZnBS5GkYnv0po1bcx6U1OF39pqA4TphQ9evDzpCRoSE19/PkDvlUNNrBavTsLIEJgd/TAIFner75ow=="
+ },
+ "Microsoft.WindowsAppSDK.AI": {
+ "type": "Transitive",
+ "resolved": "1.8.76",
+ "contentHash": "Ayn9QybcwzH+c8eQlE7dm2oO3Jrcn2uohLcsHJpCbLOAfcisjzwtSBe0oyulbaJ86R4eDSX3RDS25tsjGpIqyQ==",
+ "dependencies": {
+ "Microsoft.WindowsAppSDK.Base": "1.8.251216001",
+ "Microsoft.WindowsAppSDK.Foundation": "1.8.260501000"
+ }
+ },
+ "Microsoft.WindowsAppSDK.Base": {
+ "type": "Transitive",
+ "resolved": "1.8.251216001",
+ "contentHash": "PS1wriuFknz3W2F2P/e6RvOTM35w89Lsj/f0QmUEPrJjKnc+jM0JLX1vfdytI14y1gNRUTm9uclwP0aH/SVU5w==",
+ "dependencies": {
+ "Microsoft.Windows.SDK.BuildTools": "10.0.26100.4654",
+ "Microsoft.Windows.SDK.BuildTools.MSIX": "1.7.20250829.1"
+ }
+ },
+ "Microsoft.WindowsAppSDK.DWrite": {
+ "type": "Transitive",
+ "resolved": "1.8.25122902",
+ "contentHash": "zFNn07i7Cyz62Y8FnPQAyzeZK7ww3m9t42i9pzy4C04pNbyUDQ4fG7pB6VSh6n4EyFuYtuFQuDzt4mKmXFrkrg==",
+ "dependencies": {
+ "Microsoft.WindowsAppSDK.Base": "1.8.251216001"
+ }
+ },
+ "Microsoft.WindowsAppSDK.Foundation": {
+ "type": "Transitive",
+ "resolved": "1.8.260505001",
+ "contentHash": "41SSoEn3sKKCAVPA/w18zVJwV1C7aDEkPS2f6Zyp19m27tDEmteEp0XS3Ln3b0ElYR4FfPEPvIDbJPSA9vePGw==",
+ "dependencies": {
+ "Microsoft.WindowsAppSDK.Base": "1.8.251216001",
+ "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260430001"
+ }
+ },
+ "Microsoft.WindowsAppSDK.InteractiveExperiences": {
+ "type": "Transitive",
+ "resolved": "1.8.260430001",
+ "contentHash": "fTPCnQb3ZarMh9khlEfbLDllcZzK0tSP+2S6W/T4cPyLLSAmARm8Gd3AC5kqubnDjzTvG+1lNZ1bZGFsIHplJQ==",
+ "dependencies": {
+ "Microsoft.WindowsAppSDK.Base": "1.8.251216001"
+ }
+ },
+ "Microsoft.WindowsAppSDK.ML": {
+ "type": "Transitive",
+ "resolved": "1.8.2197",
+ "contentHash": "6Bc1SOLd5HicY3GbF+zr76YBfH4iZOKeEGxTK/lHKAK2ExZTWavOADxB2CKSi/irF4dWSngUdRFopWPmckJ6fA==",
+ "dependencies": {
+ "Microsoft.WindowsAppSDK.Base": "1.8.251216001",
+ "Microsoft.WindowsAppSDK.Foundation": "1.8.260505001"
+ }
+ },
+ "Microsoft.WindowsAppSDK.Runtime": {
+ "type": "Transitive",
+ "resolved": "1.8.260508005",
+ "contentHash": "2JqXzA4heHSkkaXJNyEvYtpv2wsEUMhwQzgXmZsFmYSkUXSdeVc6hdHcWoBK1SY9l1Sjd1brLt7h16kIpgh2kA==",
+ "dependencies": {
+ "Microsoft.WindowsAppSDK.Base": "1.8.251216001"
+ }
+ },
+ "Microsoft.WindowsAppSDK.Widgets": {
+ "type": "Transitive",
+ "resolved": "1.8.251231004",
+ "contentHash": "bIWqQYR8DCoB1SoPOMil5AtgtkTn438wJTdpsHgyO/6o7Eh7PMP5BzrR0KbDsFqy+4LhPWQ4vtwko5k93fECcA==",
+ "dependencies": {
+ "Microsoft.WindowsAppSDK.Base": "1.8.251216001"
+ }
+ },
+ "Microsoft.WindowsAppSDK.WinUI": {
+ "type": "Transitive",
+ "resolved": "1.8.260505002",
+ "contentHash": "/hGl6EOmo8aeJR2bYbOmGhOicnJK4EY+u+cQI+jm8H1uXThfMX32DsfKOt9LkOcu8AKX3j5FpiBay8ObUSytIw==",
+ "dependencies": {
+ "Microsoft.Web.WebView2": "1.0.3179.45",
+ "Microsoft.WindowsAppSDK.Base": "1.8.251216001",
+ "Microsoft.WindowsAppSDK.Foundation": "1.8.260505001",
+ "Microsoft.WindowsAppSDK.InteractiveExperiences": "1.8.260430001"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/windows/ReactNativeGetRandomValues/pch.cpp b/windows/ReactNativeGetRandomValues/pch.cpp
new file mode 100644
index 0000000..1d9f38c
--- /dev/null
+++ b/windows/ReactNativeGetRandomValues/pch.cpp
@@ -0,0 +1 @@
+#include "pch.h"
diff --git a/windows/ReactNativeGetRandomValues/pch.h b/windows/ReactNativeGetRandomValues/pch.h
new file mode 100644
index 0000000..61d356d
--- /dev/null
+++ b/windows/ReactNativeGetRandomValues/pch.h
@@ -0,0 +1,30 @@
+// pch.h : include file for standard system include files,
+// or project specific include files that are used frequently, but
+// are changed infrequently
+//
+
+#pragma once
+
+#include "targetver.h"
+
+#define NOMINMAX 1
+#define WIN32_LEAN_AND_MEAN 1
+#define WINRT_LEAN_AND_MEAN 1
+
+// Windows Header Files
+#include
+#undef GetCurrentTime
+#include
+
+// WinRT Header Files
+#include
+#include
+#include
+
+// C RunTime Header Files
+#include
+#include
+#include
+#include
+
+// Reference additional headers your project requires here
diff --git a/windows/ReactNativeGetRandomValues/resource.h b/windows/ReactNativeGetRandomValues/resource.h
new file mode 100644
index 0000000..82baf85
--- /dev/null
+++ b/windows/ReactNativeGetRandomValues/resource.h
@@ -0,0 +1,5 @@
+//
+// Microsoft Visual C++ generated include file.
+// Used by ReactNativeGetRandomValues.rc
+
+#pragma once
diff --git a/windows/ReactNativeGetRandomValues/targetver.h b/windows/ReactNativeGetRandomValues/targetver.h
new file mode 100644
index 0000000..87c0086
--- /dev/null
+++ b/windows/ReactNativeGetRandomValues/targetver.h
@@ -0,0 +1,8 @@
+#pragma once
+
+// Including SDKDDKVer.h defines the highest available Windows platform.
+
+// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
+// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
+
+#include