react-native-windows 0.85.0-preview.1 → 0.85.0-preview.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.
- package/Directory.Build.props +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +28 -46
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +0 -3
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +19 -13
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +107 -0
- package/Microsoft.ReactNative/Fabric/Composition/SelectionItemAutomationEvent.h +73 -0
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +105 -32
- package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +7 -2
- package/PropertySheets/CIBuildOptimizations.props +2 -2
- package/PropertySheets/Generated/PackageVersion.g.props +2 -2
- package/PropertySheets/JSEngine.props +1 -1
- package/PropertySheets/NuGet.LockFile.props +2 -9
- package/Scripts/NuGetRestoreForceEvaluateAllSolutions.ps1 +54 -5
- package/Scripts/UpdateNightlyDependencies.ps1 +47 -0
- package/Scripts/creaternwapp.cmd +29 -9
- package/Scripts/creaternwlib.cmd +31 -15
- package/external/.clang-format +1 -0
- package/external/External.vcxitems +10 -0
- package/external/fast-float/.syncignore +10 -0
- package/external/fast-float/LICENSE-APACHE +190 -0
- package/external/fast-float/LICENSE-BOOST +23 -0
- package/external/fast-float/LICENSE-MIT +27 -0
- package/external/fast-float/README.md +545 -0
- package/external/fast-float/cgmanifest.json +15 -0
- package/external/fast-float/fast-float.vcxitems +14 -0
- package/external/fast-float/include/fast_float/ascii_number.h +588 -0
- package/external/fast-float/include/fast_float/bigint.h +638 -0
- package/external/fast-float/include/fast_float/constexpr_feature_detect.h +46 -0
- package/external/fast-float/include/fast_float/decimal_to_binary.h +212 -0
- package/external/fast-float/include/fast_float/digit_comparison.h +457 -0
- package/external/fast-float/include/fast_float/fast_float.h +59 -0
- package/external/fast-float/include/fast_float/fast_table.h +708 -0
- package/external/fast-float/include/fast_float/float_common.h +1240 -0
- package/external/fast-float/include/fast_float/parse_number.h +399 -0
- package/external/fast-float/sync-config.json +8 -0
- package/external/fmt/.syncignore +10 -0
- package/external/fmt/CONTRIBUTING.md +20 -0
- package/external/fmt/LICENSE +27 -0
- package/external/fmt/README.md +484 -0
- package/external/fmt/cgmanifest.json +15 -0
- package/external/fmt/doc/ChangeLog-old.md +3290 -0
- package/external/fmt/doc/api.md +650 -0
- package/external/fmt/doc/fmt.css +61 -0
- package/external/fmt/doc/fmt.js +4 -0
- package/external/fmt/doc/get-started.md +222 -0
- package/external/fmt/doc/index.md +151 -0
- package/external/fmt/doc/perf.svg +1 -0
- package/external/fmt/doc/python-license.txt +290 -0
- package/external/fmt/doc/syntax.md +887 -0
- package/external/fmt/fmt.vcxitems +28 -0
- package/external/fmt/include/fmt/args.h +228 -0
- package/external/fmt/include/fmt/base.h +3077 -0
- package/external/fmt/include/fmt/chrono.h +2432 -0
- package/external/fmt/include/fmt/color.h +612 -0
- package/external/fmt/include/fmt/compile.h +529 -0
- package/external/fmt/include/fmt/core.h +5 -0
- package/external/fmt/include/fmt/format-inl.h +1928 -0
- package/external/fmt/include/fmt/format.h +4427 -0
- package/external/fmt/include/fmt/os.h +439 -0
- package/external/fmt/include/fmt/ostream.h +211 -0
- package/external/fmt/include/fmt/printf.h +656 -0
- package/external/fmt/include/fmt/ranges.h +882 -0
- package/external/fmt/include/fmt/std.h +699 -0
- package/external/fmt/include/fmt/xchar.h +322 -0
- package/external/fmt/src/fmt.cc +135 -0
- package/external/fmt/src/format.cc +43 -0
- package/external/fmt/src/os.cc +403 -0
- package/external/fmt/sync-config.json +8 -0
- package/external/folly/.syncignore +60 -0
- package/external/folly/Folly.natvis +25 -0
- package/external/folly/LICENSE +200 -0
- package/external/folly/README.md +263 -0
- package/external/folly/cgmanifest.json +25 -0
- package/external/folly/folly/.clang-format +1 -0
- package/external/folly/folly/AtomicHashArray-inl.h +546 -0
- package/external/folly/folly/AtomicHashArray.h +431 -0
- package/external/folly/folly/AtomicHashMap-inl.h +653 -0
- package/external/folly/folly/AtomicHashMap.h +484 -0
- package/external/folly/folly/AtomicIntrusiveLinkedList.h +206 -0
- package/external/folly/folly/AtomicLinkedList.h +110 -0
- package/external/folly/folly/AtomicUnorderedMap.h +522 -0
- package/external/folly/folly/BUCK +1631 -0
- package/external/folly/folly/BUILD_MODE.bzl +72 -0
- package/external/folly/folly/Benchmark.cpp +986 -0
- package/external/folly/folly/Benchmark.h +680 -0
- package/external/folly/folly/BenchmarkUtil.h +47 -0
- package/external/folly/folly/Bits.h +17 -0
- package/external/folly/folly/CMakeLists.txt +110 -0
- package/external/folly/folly/CPortability.h +338 -0
- package/external/folly/folly/CancellationToken-inl.h +449 -0
- package/external/folly/folly/CancellationToken.cpp +250 -0
- package/external/folly/folly/CancellationToken.h +365 -0
- package/external/folly/folly/Chrono.h +132 -0
- package/external/folly/folly/ClockGettimeWrappers.cpp +93 -0
- package/external/folly/folly/ClockGettimeWrappers.h +29 -0
- package/external/folly/folly/ConcurrentBitSet.h +157 -0
- package/external/folly/folly/ConcurrentLazy.h +74 -0
- package/external/folly/folly/ConcurrentSkipList-inl.h +341 -0
- package/external/folly/folly/ConcurrentSkipList.h +824 -0
- package/external/folly/folly/ConstexprMath.h +978 -0
- package/external/folly/folly/ConstructorCallbackList.h +158 -0
- package/external/folly/folly/Conv.cpp +1205 -0
- package/external/folly/folly/Conv.h +2026 -0
- package/external/folly/folly/CppAttributes.h +170 -0
- package/external/folly/folly/CpuId.h +297 -0
- package/external/folly/folly/DefaultKeepAliveExecutor.h +172 -0
- package/external/folly/folly/Demangle.cpp +255 -0
- package/external/folly/folly/Demangle.h +73 -0
- package/external/folly/folly/DiscriminatedPtr.h +236 -0
- package/external/folly/folly/DynamicConverter.h +17 -0
- package/external/folly/folly/Exception.h +150 -0
- package/external/folly/folly/ExceptionString.cpp +51 -0
- package/external/folly/folly/ExceptionString.h +33 -0
- package/external/folly/folly/ExceptionWrapper-inl.h +264 -0
- package/external/folly/folly/ExceptionWrapper.cpp +37 -0
- package/external/folly/folly/ExceptionWrapper.h +377 -0
- package/external/folly/folly/Executor.cpp +111 -0
- package/external/folly/folly/Executor.h +351 -0
- package/external/folly/folly/Expected.h +1725 -0
- package/external/folly/folly/FBString.h +2888 -0
- package/external/folly/folly/FBVector.h +17 -0
- package/external/folly/folly/File.cpp +180 -0
- package/external/folly/folly/File.h +177 -0
- package/external/folly/folly/FileUtil.cpp +378 -0
- package/external/folly/folly/FileUtil.h +332 -0
- package/external/folly/folly/Fingerprint.cpp +135 -0
- package/external/folly/folly/Fingerprint.h +289 -0
- package/external/folly/folly/FixedString.h +2965 -0
- package/external/folly/folly/FollyMemcpy.cpp +30 -0
- package/external/folly/folly/FollyMemcpy.h +23 -0
- package/external/folly/folly/FollyMemset.cpp +29 -0
- package/external/folly/folly/FollyMemset.h +25 -0
- package/external/folly/folly/Format-inl.h +1152 -0
- package/external/folly/folly/Format.cpp +429 -0
- package/external/folly/folly/Format.h +463 -0
- package/external/folly/folly/FormatArg.h +285 -0
- package/external/folly/folly/FormatTraits.h +65 -0
- package/external/folly/folly/Function.h +1159 -0
- package/external/folly/folly/GLog.h +85 -0
- package/external/folly/folly/GroupVarint.cpp +153 -0
- package/external/folly/folly/GroupVarint.h +630 -0
- package/external/folly/folly/Hash.h +20 -0
- package/external/folly/folly/IPAddress.cpp +490 -0
- package/external/folly/folly/IPAddress.h +667 -0
- package/external/folly/folly/IPAddressException.h +82 -0
- package/external/folly/folly/IPAddressV4.cpp +305 -0
- package/external/folly/folly/IPAddressV4.h +495 -0
- package/external/folly/folly/IPAddressV6.cpp +541 -0
- package/external/folly/folly/IPAddressV6.h +627 -0
- package/external/folly/folly/Indestructible.h +164 -0
- package/external/folly/folly/IndexedMemPool.h +550 -0
- package/external/folly/folly/IntrusiveList.h +17 -0
- package/external/folly/folly/Lazy.h +142 -0
- package/external/folly/folly/Likely.h +76 -0
- package/external/folly/folly/MPMCPipeline.h +280 -0
- package/external/folly/folly/MPMCQueue.h +1556 -0
- package/external/folly/folly/MacAddress.cpp +188 -0
- package/external/folly/folly/MacAddress.h +260 -0
- package/external/folly/folly/MapUtil.h +17 -0
- package/external/folly/folly/Math.h +258 -0
- package/external/folly/folly/MaybeManagedPtr.h +120 -0
- package/external/folly/folly/Memory.h +900 -0
- package/external/folly/folly/MicroLock.cpp +76 -0
- package/external/folly/folly/MicroLock.h +354 -0
- package/external/folly/folly/MicroSpinLock.h +17 -0
- package/external/folly/folly/MoveWrapper.h +76 -0
- package/external/folly/folly/ObserverContainer.h +1026 -0
- package/external/folly/folly/Optional.h +743 -0
- package/external/folly/folly/Overload.h +325 -0
- package/external/folly/folly/PackedSyncPtr.h +147 -0
- package/external/folly/folly/Padded.h +464 -0
- package/external/folly/folly/Poly-inl.h +230 -0
- package/external/folly/folly/Poly.h +1095 -0
- package/external/folly/folly/PolyException.h +43 -0
- package/external/folly/folly/Portability.h +644 -0
- package/external/folly/folly/Preprocessor.h +236 -0
- package/external/folly/folly/ProducerConsumerQueue.h +182 -0
- package/external/folly/folly/RWSpinLock.h +17 -0
- package/external/folly/folly/Random-inl.h +86 -0
- package/external/folly/folly/Random.cpp +184 -0
- package/external/folly/folly/Random.h +434 -0
- package/external/folly/folly/Range.h +1772 -0
- package/external/folly/folly/Replaceable.h +636 -0
- package/external/folly/folly/ScopeGuard.cpp +29 -0
- package/external/folly/folly/ScopeGuard.h +420 -0
- package/external/folly/folly/SharedMutex.cpp +81 -0
- package/external/folly/folly/SharedMutex.h +1751 -0
- package/external/folly/folly/Singleton-inl.h +332 -0
- package/external/folly/folly/Singleton.cpp +512 -0
- package/external/folly/folly/Singleton.h +891 -0
- package/external/folly/folly/SingletonThreadLocal.cpp +53 -0
- package/external/folly/folly/SingletonThreadLocal.h +263 -0
- package/external/folly/folly/SocketAddress.cpp +786 -0
- package/external/folly/folly/SocketAddress.h +768 -0
- package/external/folly/folly/SpinLock.h +55 -0
- package/external/folly/folly/String-inl.h +668 -0
- package/external/folly/folly/String.cpp +777 -0
- package/external/folly/folly/String.h +767 -0
- package/external/folly/folly/Subprocess.cpp +1142 -0
- package/external/folly/folly/Subprocess.h +1055 -0
- package/external/folly/folly/Synchronized.h +1833 -0
- package/external/folly/folly/SynchronizedPtr.h +106 -0
- package/external/folly/folly/ThreadCachedInt.h +175 -0
- package/external/folly/folly/ThreadLocal.h +478 -0
- package/external/folly/folly/TimeoutQueue.cpp +78 -0
- package/external/folly/folly/TimeoutQueue.h +123 -0
- package/external/folly/folly/TokenBucket.h +673 -0
- package/external/folly/folly/Traits.h +1442 -0
- package/external/folly/folly/Try-inl.h +372 -0
- package/external/folly/folly/Try.cpp +23 -0
- package/external/folly/folly/Try.h +728 -0
- package/external/folly/folly/UTF8String.h +56 -0
- package/external/folly/folly/Unicode.cpp +201 -0
- package/external/folly/folly/Unicode.h +94 -0
- package/external/folly/folly/Unit.h +65 -0
- package/external/folly/folly/Uri-inl.h +101 -0
- package/external/folly/folly/Uri.cpp +190 -0
- package/external/folly/folly/Uri.h +142 -0
- package/external/folly/folly/Utility.h +932 -0
- package/external/folly/folly/VERSION +1 -0
- package/external/folly/folly/Varint.h +230 -0
- package/external/folly/folly/VirtualExecutor.h +17 -0
- package/external/folly/folly/algorithm/simd/BUCK +47 -0
- package/external/folly/folly/algorithm/simd/Contains.cpp +42 -0
- package/external/folly/folly/algorithm/simd/Contains.h +116 -0
- package/external/folly/folly/algorithm/simd/FindFixed.h +301 -0
- package/external/folly/folly/algorithm/simd/Ignore.h +52 -0
- package/external/folly/folly/algorithm/simd/Movemask.h +207 -0
- package/external/folly/folly/algorithm/simd/detail/BUCK +70 -0
- package/external/folly/folly/algorithm/simd/detail/ContainsImpl.h +91 -0
- package/external/folly/folly/algorithm/simd/detail/SimdAnyOf.h +83 -0
- package/external/folly/folly/algorithm/simd/detail/SimdForEach.h +209 -0
- package/external/folly/folly/algorithm/simd/detail/SimdPlatform.h +445 -0
- package/external/folly/folly/algorithm/simd/detail/Traits.h +125 -0
- package/external/folly/folly/algorithm/simd/detail/UnrollUtils.h +126 -0
- package/external/folly/folly/base64.h +264 -0
- package/external/folly/folly/chrono/BUCK +29 -0
- package/external/folly/folly/chrono/Clock.h +65 -0
- package/external/folly/folly/chrono/Conv.h +712 -0
- package/external/folly/folly/chrono/Hardware.h +155 -0
- package/external/folly/folly/chrono/test/BUCK +26 -0
- package/external/folly/folly/chrono/test/ClockTest.cpp +68 -0
- package/external/folly/folly/chrono/test/ConvTest.cpp +652 -0
- package/external/folly/folly/concurrency/AtomicSharedPtr.h +387 -0
- package/external/folly/folly/concurrency/BUCK +170 -0
- package/external/folly/folly/concurrency/CacheLocality.cpp +633 -0
- package/external/folly/folly/concurrency/CacheLocality.h +460 -0
- package/external/folly/folly/concurrency/ConcurrentHashMap.h +822 -0
- package/external/folly/folly/concurrency/CoreCachedSharedPtr.h +232 -0
- package/external/folly/folly/concurrency/DeadlockDetector.cpp +27 -0
- package/external/folly/folly/concurrency/DeadlockDetector.h +44 -0
- package/external/folly/folly/concurrency/DynamicBoundedQueue.h +751 -0
- package/external/folly/folly/concurrency/PriorityUnboundedQueueSet.h +207 -0
- package/external/folly/folly/concurrency/ProcessLocalUniqueId.cpp +46 -0
- package/external/folly/folly/concurrency/ProcessLocalUniqueId.h +38 -0
- package/external/folly/folly/concurrency/SingletonRelaxedCounter.h +325 -0
- package/external/folly/folly/concurrency/ThreadCachedSynchronized.h +227 -0
- package/external/folly/folly/concurrency/UnboundedQueue.h +891 -0
- package/external/folly/folly/concurrency/container/BUCK +77 -0
- package/external/folly/folly/concurrency/container/FlatCombiningPriorityQueue.h +426 -0
- package/external/folly/folly/concurrency/container/LockFreeRingBuffer.h +306 -0
- package/external/folly/folly/concurrency/container/RelaxedConcurrentPriorityQueue.h +1212 -0
- package/external/folly/folly/concurrency/container/SingleWriterFixedHashMap.h +322 -0
- package/external/folly/folly/concurrency/container/atomic_grow_array.h +564 -0
- package/external/folly/folly/concurrency/container/test/BUCK +75 -0
- package/external/folly/folly/concurrency/container/test/FlatCombiningPriorityQueueTest.cpp +570 -0
- package/external/folly/folly/concurrency/container/test/LockFreeRingBufferTest.cpp +276 -0
- package/external/folly/folly/concurrency/container/test/RelaxedConcurrentPriorityQueueTest.cpp +1570 -0
- package/external/folly/folly/concurrency/container/test/SingleWriterFixedHashMapTest.cpp +401 -0
- package/external/folly/folly/concurrency/container/test/atomic_grow_array_test.cpp +187 -0
- package/external/folly/folly/concurrency/detail/AtomicSharedPtr-detail.h +212 -0
- package/external/folly/folly/concurrency/detail/ConcurrentHashMap-detail.h +1911 -0
- package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.cpp +43 -0
- package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.h +190 -0
- package/external/folly/folly/concurrency/memory/BUCK +53 -0
- package/external/folly/folly/concurrency/memory/PrimaryPtr.h +338 -0
- package/external/folly/folly/concurrency/memory/ReadMostlySharedPtr.h +511 -0
- package/external/folly/folly/concurrency/memory/TLRefCount.h +228 -0
- package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrBenchmark.cpp +56 -0
- package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrTest.cpp +454 -0
- package/external/folly/folly/concurrency/memory/test/BUCK +95 -0
- package/external/folly/folly/concurrency/memory/test/PrimaryPtrTest.cpp +303 -0
- package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrBenchmark.cpp +138 -0
- package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrStressTest.cpp +75 -0
- package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrTest.cpp +378 -0
- package/external/folly/folly/concurrency/memory/test/RefCountBenchmark.cpp +90 -0
- package/external/folly/folly/concurrency/memory/test/RefCountTest.cpp +168 -0
- package/external/folly/folly/concurrency/test/AtomicSharedPtrCounted.h +156 -0
- package/external/folly/folly/concurrency/test/AtomicSharedPtrPerformance.cpp +255 -0
- package/external/folly/folly/concurrency/test/AtomicSharedPtrTest.cpp +257 -0
- package/external/folly/folly/concurrency/test/BUCK +229 -0
- package/external/folly/folly/concurrency/test/CacheLocalityBenchmark.cpp +392 -0
- package/external/folly/folly/concurrency/test/CacheLocalityTest.cpp +1229 -0
- package/external/folly/folly/concurrency/test/ConcurrentHashMapBench.cpp +260 -0
- package/external/folly/folly/concurrency/test/ConcurrentHashMapTest.cpp +1242 -0
- package/external/folly/folly/concurrency/test/CoreCachedSharedPtrTest.cpp +408 -0
- package/external/folly/folly/concurrency/test/DynamicBoundedQueueTest.cpp +984 -0
- package/external/folly/folly/concurrency/test/PriorityUnboundedQueueSetTest.cpp +73 -0
- package/external/folly/folly/concurrency/test/ProcessLocalUniqueIdTest.cpp +66 -0
- package/external/folly/folly/concurrency/test/SingletonRelaxedCounterBench.cpp +101 -0
- package/external/folly/folly/concurrency/test/SingletonRelaxedCounterTest.cpp +185 -0
- package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedBench.cpp +76 -0
- package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedTest.cpp +93 -0
- package/external/folly/folly/concurrency/test/UnboundedQueueTest.cpp +1302 -0
- package/external/folly/folly/container/Access.h +57 -0
- package/external/folly/folly/container/Array.h +87 -0
- package/external/folly/folly/container/BUCK +353 -0
- package/external/folly/folly/container/BitIterator.h +203 -0
- package/external/folly/folly/container/Enumerate.h +162 -0
- package/external/folly/folly/container/EvictingCacheMap.h +730 -0
- package/external/folly/folly/container/F14.md +300 -0
- package/external/folly/folly/container/F14Map-fwd.h +113 -0
- package/external/folly/folly/container/F14Map.h +2108 -0
- package/external/folly/folly/container/F14Set-fwd.h +95 -0
- package/external/folly/folly/container/F14Set.h +1603 -0
- package/external/folly/folly/container/FBVector.h +1711 -0
- package/external/folly/folly/container/Foreach-inl.h +316 -0
- package/external/folly/folly/container/Foreach.h +209 -0
- package/external/folly/folly/container/HeterogeneousAccess-fwd.h +33 -0
- package/external/folly/folly/container/HeterogeneousAccess.h +171 -0
- package/external/folly/folly/container/IntrusiveHeap.h +268 -0
- package/external/folly/folly/container/IntrusiveList.h +131 -0
- package/external/folly/folly/container/Iterator.h +843 -0
- package/external/folly/folly/container/MapUtil.h +376 -0
- package/external/folly/folly/container/Merge.h +90 -0
- package/external/folly/folly/container/RegexMatchCache.cpp +521 -0
- package/external/folly/folly/container/RegexMatchCache.h +699 -0
- package/external/folly/folly/container/Reserve.h +109 -0
- package/external/folly/folly/container/SparseByteSet.h +123 -0
- package/external/folly/folly/container/View.h +81 -0
- package/external/folly/folly/container/WeightedEvictingCacheMap.h +651 -0
- package/external/folly/folly/container/detail/BUCK +115 -0
- package/external/folly/folly/container/detail/BitIteratorDetail.h +87 -0
- package/external/folly/folly/container/detail/F14Defaults.h +34 -0
- package/external/folly/folly/container/detail/F14IntrinsicsAvailability.h +67 -0
- package/external/folly/folly/container/detail/F14MapFallback.h +717 -0
- package/external/folly/folly/container/detail/F14Mask.h +235 -0
- package/external/folly/folly/container/detail/F14Policy.h +1523 -0
- package/external/folly/folly/container/detail/F14SetFallback.h +528 -0
- package/external/folly/folly/container/detail/F14Table.cpp +71 -0
- package/external/folly/folly/container/detail/F14Table.h +2680 -0
- package/external/folly/folly/container/detail/Util.h +303 -0
- package/external/folly/folly/container/detail/tape_detail.h +135 -0
- package/external/folly/folly/container/detail/test/BUCK +14 -0
- package/external/folly/folly/container/detail/test/F14DetailTest.cpp +47 -0
- package/external/folly/folly/container/heap_vector_types.h +1683 -0
- package/external/folly/folly/container/range_traits.h +81 -0
- package/external/folly/folly/container/small_vector.h +1476 -0
- package/external/folly/folly/container/sorted_vector_types.h +1652 -0
- package/external/folly/folly/container/span.h +408 -0
- package/external/folly/folly/container/tape.h +608 -0
- package/external/folly/folly/container/test/.clang-tidy +12 -0
- package/external/folly/folly/container/test/AccessTest.cpp +138 -0
- package/external/folly/folly/container/test/ArrayTest.cpp +84 -0
- package/external/folly/folly/container/test/BUCK +568 -0
- package/external/folly/folly/container/test/BitIteratorBench.cpp +112 -0
- package/external/folly/folly/container/test/BitIteratorTest.cpp +109 -0
- package/external/folly/folly/container/test/EnumerateTest.cpp +294 -0
- package/external/folly/folly/container/test/EvictingCacheMapBench.cpp +80 -0
- package/external/folly/folly/container/test/EvictingCacheMapTest.cpp +842 -0
- package/external/folly/folly/container/test/F14AsanSupportTest.cpp +143 -0
- package/external/folly/folly/container/test/F14FwdTest.cpp +37 -0
- package/external/folly/folly/container/test/F14InterprocessTest.cpp +404 -0
- package/external/folly/folly/container/test/F14MapTest.cpp +2543 -0
- package/external/folly/folly/container/test/F14PolicyTest.cpp +49 -0
- package/external/folly/folly/container/test/F14SetTest.cpp +1738 -0
- package/external/folly/folly/container/test/F14SmallOverheads.cpp +215 -0
- package/external/folly/folly/container/test/F14TestUtil.h +117 -0
- package/external/folly/folly/container/test/FBVectorBenchmark.cpp +380 -0
- package/external/folly/folly/container/test/FBVectorBenchmarks.cpp.h +100 -0
- package/external/folly/folly/container/test/FBVectorTest.cpp +326 -0
- package/external/folly/folly/container/test/FBVectorTests.cpp.h +304 -0
- package/external/folly/folly/container/test/ForeachBenchmark.cpp +388 -0
- package/external/folly/folly/container/test/ForeachTest.cpp +338 -0
- package/external/folly/folly/container/test/HashMapsBench.cpp +458 -0
- package/external/folly/folly/container/test/HeterogeneousAccessTest.cpp +242 -0
- package/external/folly/folly/container/test/IntrusiveHeapTest.cpp +262 -0
- package/external/folly/folly/container/test/IteratorTest.cpp +989 -0
- package/external/folly/folly/container/test/MapUtilTest.cpp +365 -0
- package/external/folly/folly/container/test/MergeTest.cpp +66 -0
- package/external/folly/folly/container/test/RegexMatchCacheTest.cpp +634 -0
- package/external/folly/folly/container/test/ReserveTest.cpp +173 -0
- package/external/folly/folly/container/test/SparseByteSetBenchmark.cpp +153 -0
- package/external/folly/folly/container/test/SparseByteSetTest.cpp +117 -0
- package/external/folly/folly/container/test/TrackingTypes.h +584 -0
- package/external/folly/folly/container/test/UtilTest.cpp +609 -0
- package/external/folly/folly/container/test/WeightedEvictingCacheMapTest.cpp +800 -0
- package/external/folly/folly/container/test/heap_vector_types_test.cpp +1774 -0
- package/external/folly/folly/container/test/range_traits_test.cpp +59 -0
- package/external/folly/folly/container/test/small_vector_test.cpp +1571 -0
- package/external/folly/folly/container/test/sorted_vector_test.cpp +1589 -0
- package/external/folly/folly/container/test/span_test.cpp +520 -0
- package/external/folly/folly/container/test/tape_bench.cpp +200 -0
- package/external/folly/folly/container/test/tape_test.cpp +590 -0
- package/external/folly/folly/defs.bzl +238 -0
- package/external/folly/folly/detail/AsyncTrace.cpp +36 -0
- package/external/folly/folly/detail/AsyncTrace.h +44 -0
- package/external/folly/folly/detail/AtomicHashUtils.h +42 -0
- package/external/folly/folly/detail/AtomicUnorderedMapUtils.h +80 -0
- package/external/folly/folly/detail/BUCK +406 -0
- package/external/folly/folly/detail/DiscriminatedPtrDetail.h +172 -0
- package/external/folly/folly/detail/FileUtilDetail.cpp +63 -0
- package/external/folly/folly/detail/FileUtilDetail.h +85 -0
- package/external/folly/folly/detail/FileUtilVectorDetail.h +81 -0
- package/external/folly/folly/detail/FingerprintPolynomial.h +132 -0
- package/external/folly/folly/detail/Futex-inl.h +123 -0
- package/external/folly/folly/detail/Futex.cpp +273 -0
- package/external/folly/folly/detail/Futex.h +109 -0
- package/external/folly/folly/detail/GroupVarintDetail.h +101 -0
- package/external/folly/folly/detail/IPAddress.cpp +37 -0
- package/external/folly/folly/detail/IPAddress.h +57 -0
- package/external/folly/folly/detail/IPAddressSource.h +278 -0
- package/external/folly/folly/detail/Iterators.h +156 -0
- package/external/folly/folly/detail/MPMCPipelineDetail.h +122 -0
- package/external/folly/folly/detail/MemoryIdler.cpp +233 -0
- package/external/folly/folly/detail/MemoryIdler.h +216 -0
- package/external/folly/folly/detail/PerfScoped.cpp +112 -0
- package/external/folly/folly/detail/PerfScoped.h +70 -0
- package/external/folly/folly/detail/PolyDetail.h +921 -0
- package/external/folly/folly/detail/RangeCommon.cpp +55 -0
- package/external/folly/folly/detail/RangeCommon.h +93 -0
- package/external/folly/folly/detail/RangeSse42.cpp +198 -0
- package/external/folly/folly/detail/RangeSse42.h +30 -0
- package/external/folly/folly/detail/SimpleSimdStringUtils.cpp +31 -0
- package/external/folly/folly/detail/SimpleSimdStringUtils.h +27 -0
- package/external/folly/folly/detail/SimpleSimdStringUtilsImpl.h +63 -0
- package/external/folly/folly/detail/Singleton.h +34 -0
- package/external/folly/folly/detail/SlowFingerprint.h +90 -0
- package/external/folly/folly/detail/SocketFastOpen.cpp +175 -0
- package/external/folly/folly/detail/SocketFastOpen.h +89 -0
- package/external/folly/folly/detail/SplitStringSimd.cpp +84 -0
- package/external/folly/folly/detail/SplitStringSimd.h +151 -0
- package/external/folly/folly/detail/SplitStringSimdImpl.h +149 -0
- package/external/folly/folly/detail/Sse.cpp +35 -0
- package/external/folly/folly/detail/Sse.h +45 -0
- package/external/folly/folly/detail/StaticSingletonManager.cpp +119 -0
- package/external/folly/folly/detail/StaticSingletonManager.h +298 -0
- package/external/folly/folly/detail/ThreadLocalDetail.cpp +492 -0
- package/external/folly/folly/detail/ThreadLocalDetail.h +800 -0
- package/external/folly/folly/detail/TrapOnAvx512.cpp +41 -0
- package/external/folly/folly/detail/TrapOnAvx512.h +21 -0
- package/external/folly/folly/detail/TurnSequencer.h +295 -0
- package/external/folly/folly/detail/TypeList.h +551 -0
- package/external/folly/folly/detail/UniqueInstance.cpp +136 -0
- package/external/folly/folly/detail/UniqueInstance.h +68 -0
- package/external/folly/folly/detail/base64_detail/BUCK +102 -0
- package/external/folly/folly/detail/base64_detail/Base64Api.cpp +40 -0
- package/external/folly/folly/detail/base64_detail/Base64Api.h +101 -0
- package/external/folly/folly/detail/base64_detail/Base64Common.h +80 -0
- package/external/folly/folly/detail/base64_detail/Base64Constants.h +79 -0
- package/external/folly/folly/detail/base64_detail/Base64HiddenConstants.h +129 -0
- package/external/folly/folly/detail/base64_detail/Base64SWAR.cpp +161 -0
- package/external/folly/folly/detail/base64_detail/Base64SWAR.h +32 -0
- package/external/folly/folly/detail/base64_detail/Base64Scalar.h +262 -0
- package/external/folly/folly/detail/base64_detail/Base64Simd.h +102 -0
- package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.cpp +42 -0
- package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.h +33 -0
- package/external/folly/folly/detail/base64_detail/Base64_SSE4_2_Platform.h +167 -0
- package/external/folly/folly/detail/base64_detail/README.md +392 -0
- package/external/folly/folly/detail/base64_detail/tests/BUCK +36 -0
- package/external/folly/folly/detail/base64_detail/tests/Base64AgainstScalarTest.cpp +141 -0
- package/external/folly/folly/detail/base64_detail/tests/Base64PlatformTest.cpp +273 -0
- package/external/folly/folly/detail/base64_detail/tests/Base64SpecialCasesTest.cpp +555 -0
- package/external/folly/folly/detail/test/AsyncTraceTest.cpp +43 -0
- package/external/folly/folly/detail/test/BUCK +118 -0
- package/external/folly/folly/detail/test/FileUtilDetailTest.cpp +56 -0
- package/external/folly/folly/detail/test/PerfScopedTest.cpp +107 -0
- package/external/folly/folly/detail/test/SimpleSimdStringUtilsTest.cpp +92 -0
- package/external/folly/folly/detail/test/SplitStringSimdTest.cpp +242 -0
- package/external/folly/folly/detail/test/StaticSingletonManagerTest.cpp +121 -0
- package/external/folly/folly/detail/test/ThreadLocalBenchmark.cpp +116 -0
- package/external/folly/folly/detail/test/ThreadLocalDetailTest.cpp +194 -0
- package/external/folly/folly/detail/test/TrapOnAvx512TestNegative.cpp +29 -0
- package/external/folly/folly/detail/test/UniqueInstanceTest.cpp +60 -0
- package/external/folly/folly/detail/thread_local_globals.cpp +69 -0
- package/external/folly/folly/detail/thread_local_globals.h +36 -0
- package/external/folly/folly/docs/AtomicHashMap.md +134 -0
- package/external/folly/folly/docs/Benchmark.md +310 -0
- package/external/folly/folly/docs/Conv.md +291 -0
- package/external/folly/folly/docs/Dynamic.md +220 -0
- package/external/folly/folly/docs/DynamicConverter.md +71 -0
- package/external/folly/folly/docs/Executors.md +63 -0
- package/external/folly/folly/docs/FBString.md +46 -0
- package/external/folly/folly/docs/FBVector.md +200 -0
- package/external/folly/folly/docs/Fbvector--graphical_solutions.png +0 -0
- package/external/folly/folly/docs/Format.md +177 -0
- package/external/folly/folly/docs/Function.md +92 -0
- package/external/folly/folly/docs/Futures.md +263 -0
- package/external/folly/folly/docs/GroupVarint.md +46 -0
- package/external/folly/folly/docs/Histogram.md +104 -0
- package/external/folly/folly/docs/MapUtils.md +80 -0
- package/external/folly/folly/docs/Overview.md +263 -0
- package/external/folly/folly/docs/PackedSyncPtr.md +77 -0
- package/external/folly/folly/docs/Poly.md +500 -0
- package/external/folly/folly/docs/ProducerConsumerQueue.md +82 -0
- package/external/folly/folly/docs/Rcu.md +218 -0
- package/external/folly/folly/docs/SmallLocks.md +24 -0
- package/external/folly/folly/docs/Synchronized.md +793 -0
- package/external/folly/folly/docs/ThreadCachedInt.md +98 -0
- package/external/folly/folly/docs/ThreadLocal.md +105 -0
- package/external/folly/folly/docs/Traits.md +161 -0
- package/external/folly/folly/docs/small_vector.md +64 -0
- package/external/folly/folly/docs/style.css +23 -0
- package/external/folly/folly/dynamic-inl.h +17 -0
- package/external/folly/folly/dynamic.h +17 -0
- package/external/folly/folly/folly_extended_library.bzl +28 -0
- package/external/folly/folly/functional/ApplyTuple.h +204 -0
- package/external/folly/folly/functional/BUCK +57 -0
- package/external/folly/folly/functional/Invoke.h +880 -0
- package/external/folly/folly/functional/Partial.h +130 -0
- package/external/folly/folly/functional/protocol.h +203 -0
- package/external/folly/folly/functional/test/ApplyTupleTest.cpp +549 -0
- package/external/folly/folly/functional/test/BUCK +57 -0
- package/external/folly/folly/functional/test/InvokeTest.cpp +483 -0
- package/external/folly/folly/functional/test/PartialTest.cpp +141 -0
- package/external/folly/folly/functional/test/protocol_test.cpp +177 -0
- package/external/folly/folly/functional/test/traits_test.cpp +551 -0
- package/external/folly/folly/functional/traits.h +675 -0
- package/external/folly/folly/hash/BUCK +86 -0
- package/external/folly/folly/hash/Checksum.cpp +275 -0
- package/external/folly/folly/hash/Checksum.h +94 -0
- package/external/folly/folly/hash/FarmHash.h +46 -0
- package/external/folly/folly/hash/Hash.h +1045 -0
- package/external/folly/folly/hash/MurmurHash.h +86 -0
- package/external/folly/folly/hash/SpookyHashV1.cpp +391 -0
- package/external/folly/folly/hash/SpookyHashV1.h +307 -0
- package/external/folly/folly/hash/SpookyHashV2.cpp +392 -0
- package/external/folly/folly/hash/SpookyHashV2.h +339 -0
- package/external/folly/folly/hash/detail/BUCK +26 -0
- package/external/folly/folly/hash/detail/ChecksumDetail.cpp +296 -0
- package/external/folly/folly/hash/detail/ChecksumDetail.h +137 -0
- package/external/folly/folly/hash/detail/Crc32CombineDetail.cpp +191 -0
- package/external/folly/folly/hash/detail/Crc32cDetail.cpp +303 -0
- package/external/folly/folly/hash/test/BUCK +132 -0
- package/external/folly/folly/hash/test/ChecksumBenchmark.cpp +91 -0
- package/external/folly/folly/hash/test/ChecksumTest.cpp +587 -0
- package/external/folly/folly/hash/test/FarmHashTest.cpp +41 -0
- package/external/folly/folly/hash/test/HashBenchmark.cpp +238 -0
- package/external/folly/folly/hash/test/HashTest.cpp +997 -0
- package/external/folly/folly/hash/test/MurmurHashTest.cpp +76 -0
- package/external/folly/folly/hash/test/SpookyHashV1Test.cpp +559 -0
- package/external/folly/folly/hash/test/SpookyHashV2Test.cpp +549 -0
- package/external/folly/folly/hash/test/traits_test.cpp +69 -0
- package/external/folly/folly/hash/traits.h +115 -0
- package/external/folly/folly/json/BUCK +155 -0
- package/external/folly/folly/json/DynamicConverter.h +464 -0
- package/external/folly/folly/json/DynamicParser-inl.h +316 -0
- package/external/folly/folly/json/DynamicParser.cpp +198 -0
- package/external/folly/folly/json/DynamicParser.h +394 -0
- package/external/folly/folly/json/JSONSchema.cpp +1030 -0
- package/external/folly/folly/json/JSONSchema.h +73 -0
- package/external/folly/folly/json/JsonMockUtil.h +73 -0
- package/external/folly/folly/json/JsonTestUtil.cpp +167 -0
- package/external/folly/folly/json/JsonTestUtil.h +88 -0
- package/external/folly/folly/json/bser/BUCK +24 -0
- package/external/folly/folly/json/bser/Bser.h +107 -0
- package/external/folly/folly/json/bser/Dump.cpp +253 -0
- package/external/folly/folly/json/bser/Load.cpp +246 -0
- package/external/folly/folly/json/bser/test/BUCK +14 -0
- package/external/folly/folly/json/bser/test/BserTest.cpp +149 -0
- package/external/folly/folly/json/dynamic-inl.h +1438 -0
- package/external/folly/folly/json/dynamic.cpp +552 -0
- package/external/folly/folly/json/dynamic.h +1346 -0
- package/external/folly/folly/json/json.cpp +1118 -0
- package/external/folly/folly/json/json.h +238 -0
- package/external/folly/folly/json/json_patch.cpp +325 -0
- package/external/folly/folly/json/json_patch.h +126 -0
- package/external/folly/folly/json/json_pointer.cpp +114 -0
- package/external/folly/folly/json/json_pointer.h +87 -0
- package/external/folly/folly/json/test/BUCK +147 -0
- package/external/folly/folly/json/test/DynamicBenchmark.cpp +146 -0
- package/external/folly/folly/json/test/DynamicConverterTest.cpp +518 -0
- package/external/folly/folly/json/test/DynamicOtherTest.cpp +344 -0
- package/external/folly/folly/json/test/DynamicParserTest.cpp +443 -0
- package/external/folly/folly/json/test/DynamicTest.cpp +1647 -0
- package/external/folly/folly/json/test/JSONSchemaTest.cpp +450 -0
- package/external/folly/folly/json/test/JsonBenchmark.cpp +264 -0
- package/external/folly/folly/json/test/JsonOtherTest.cpp +51 -0
- package/external/folly/folly/json/test/JsonTest.cpp +1153 -0
- package/external/folly/folly/json/test/JsonTestUtilTest.cpp +97 -0
- package/external/folly/folly/json/test/json_patch_test.cpp +361 -0
- package/external/folly/folly/json/test/json_pointer_test.cpp +58 -0
- package/external/folly/folly/json/tool/BUCK +13 -0
- package/external/folly/folly/json/tool/JSONSchemaTester.cpp +58 -0
- package/external/folly/folly/json.h +17 -0
- package/external/folly/folly/json_patch.h +17 -0
- package/external/folly/folly/json_pointer.h +17 -0
- package/external/folly/folly/lang/Access.h +29 -0
- package/external/folly/folly/lang/Align.h +240 -0
- package/external/folly/folly/lang/Aligned.h +92 -0
- package/external/folly/folly/lang/Assume.h +82 -0
- package/external/folly/folly/lang/BUCK +287 -0
- package/external/folly/folly/lang/Badge.h +108 -0
- package/external/folly/folly/lang/Bits.h +570 -0
- package/external/folly/folly/lang/BitsClass.h +312 -0
- package/external/folly/folly/lang/Builtin.h +74 -0
- package/external/folly/folly/lang/CArray.h +34 -0
- package/external/folly/folly/lang/CString.cpp +86 -0
- package/external/folly/folly/lang/CString.h +55 -0
- package/external/folly/folly/lang/Cast.h +51 -0
- package/external/folly/folly/lang/CheckedMath.h +253 -0
- package/external/folly/folly/lang/CustomizationPoint.h +58 -0
- package/external/folly/folly/lang/Exception.cpp +822 -0
- package/external/folly/folly/lang/Exception.h +716 -0
- package/external/folly/folly/lang/Extern.h +55 -0
- package/external/folly/folly/lang/Hint-inl.h +144 -0
- package/external/folly/folly/lang/Hint.h +238 -0
- package/external/folly/folly/lang/Keep.h +98 -0
- package/external/folly/folly/lang/New.h +124 -0
- package/external/folly/folly/lang/Ordering.h +140 -0
- package/external/folly/folly/lang/Pretty.h +159 -0
- package/external/folly/folly/lang/PropagateConst.h +413 -0
- package/external/folly/folly/lang/RValueReferenceWrapper.h +152 -0
- package/external/folly/folly/lang/SafeAssert.cpp +589 -0
- package/external/folly/folly/lang/SafeAssert.h +188 -0
- package/external/folly/folly/lang/StaticConst.h +33 -0
- package/external/folly/folly/lang/Thunk.h +100 -0
- package/external/folly/folly/lang/ToAscii.cpp +348 -0
- package/external/folly/folly/lang/ToAscii.h +182 -0
- package/external/folly/folly/lang/TypeInfo.h +58 -0
- package/external/folly/folly/lang/UncaughtExceptions.cpp +17 -0
- package/external/folly/folly/lang/UncaughtExceptions.h +19 -0
- package/external/folly/folly/lang/test/AlignTest.cpp +87 -0
- package/external/folly/folly/lang/test/AlignedTest.cpp +130 -0
- package/external/folly/folly/lang/test/BUCK +258 -0
- package/external/folly/folly/lang/test/BadgeTest.cpp +89 -0
- package/external/folly/folly/lang/test/BitsBenchmark.cpp +164 -0
- package/external/folly/folly/lang/test/BitsClassBenchmark.cpp +122 -0
- package/external/folly/folly/lang/test/BitsClassTest.cpp +379 -0
- package/external/folly/folly/lang/test/BitsTest.cpp +577 -0
- package/external/folly/folly/lang/test/CStringTest.cpp +60 -0
- package/external/folly/folly/lang/test/CastTest.cpp +47 -0
- package/external/folly/folly/lang/test/CheckedMathTest.cpp +394 -0
- package/external/folly/folly/lang/test/ExceptionBench.cpp +427 -0
- package/external/folly/folly/lang/test/ExceptionTest.cpp +413 -0
- package/external/folly/folly/lang/test/ExternTest.cpp +39 -0
- package/external/folly/folly/lang/test/HintTest.cpp +100 -0
- package/external/folly/folly/lang/test/NewTest.cpp +38 -0
- package/external/folly/folly/lang/test/OrderingTest.cpp +105 -0
- package/external/folly/folly/lang/test/PrettyTest.cpp +44 -0
- package/external/folly/folly/lang/test/PropagateConstTest.cpp +356 -0
- package/external/folly/folly/lang/test/RValueReferenceWrapperTest.cpp +85 -0
- package/external/folly/folly/lang/test/SafeAssertTest.cpp +75 -0
- package/external/folly/folly/lang/test/ThunkTest.cpp +105 -0
- package/external/folly/folly/lang/test/ToAsciiBench.cpp +466 -0
- package/external/folly/folly/lang/test/ToAsciiTest.cpp +266 -0
- package/external/folly/folly/lang/test/TypeInfoTest.cpp +56 -0
- package/external/folly/folly/memcpy.S +292 -0
- package/external/folly/folly/memcpy_select_aarch64.cpp +145 -0
- package/external/folly/folly/memory/Arena-inl.h +83 -0
- package/external/folly/folly/memory/Arena.h +325 -0
- package/external/folly/folly/memory/BUCK +191 -0
- package/external/folly/folly/memory/JemallocHugePageAllocator.cpp +449 -0
- package/external/folly/folly/memory/JemallocHugePageAllocator.h +105 -0
- package/external/folly/folly/memory/JemallocHugePageAllocatorTest.cpp +341 -0
- package/external/folly/folly/memory/JemallocNodumpAllocator.cpp +176 -0
- package/external/folly/folly/memory/JemallocNodumpAllocator.h +119 -0
- package/external/folly/folly/memory/JemallocNodumpAllocatorTest.cpp +61 -0
- package/external/folly/folly/memory/MallctlHelper.cpp +37 -0
- package/external/folly/folly/memory/MallctlHelper.h +167 -0
- package/external/folly/folly/memory/Malloc.h +551 -0
- package/external/folly/folly/memory/MemoryResource.h +57 -0
- package/external/folly/folly/memory/ReentrantAllocator.cpp +162 -0
- package/external/folly/folly/memory/ReentrantAllocator.h +261 -0
- package/external/folly/folly/memory/SanitizeAddress.cpp +75 -0
- package/external/folly/folly/memory/SanitizeAddress.h +117 -0
- package/external/folly/folly/memory/SanitizeLeak.cpp +119 -0
- package/external/folly/folly/memory/SanitizeLeak.h +108 -0
- package/external/folly/folly/memory/ThreadCachedArena.cpp +53 -0
- package/external/folly/folly/memory/ThreadCachedArena.h +90 -0
- package/external/folly/folly/memory/UninitializedMemoryHacks.h +426 -0
- package/external/folly/folly/memory/detail/BUCK +10 -0
- package/external/folly/folly/memory/detail/MallocImpl.cpp +52 -0
- package/external/folly/folly/memory/detail/MallocImpl.h +97 -0
- package/external/folly/folly/memory/not_null-inl.h +522 -0
- package/external/folly/folly/memory/not_null.h +449 -0
- package/external/folly/folly/memory/test/ArenaTest.cpp +354 -0
- package/external/folly/folly/memory/test/BUCK +146 -0
- package/external/folly/folly/memory/test/MallctlHelperTest.cpp +169 -0
- package/external/folly/folly/memory/test/MallocBenchmark.cpp +91 -0
- package/external/folly/folly/memory/test/MallocTest.cpp +78 -0
- package/external/folly/folly/memory/test/MemoryResourceTest.cpp +31 -0
- package/external/folly/folly/memory/test/ReentrantAllocatorTest.cpp +144 -0
- package/external/folly/folly/memory/test/SanitizeAddressTest.cpp +67 -0
- package/external/folly/folly/memory/test/SanitizeLeakTest.cpp +139 -0
- package/external/folly/folly/memory/test/ThreadCachedArenaTest.cpp +276 -0
- package/external/folly/folly/memory/test/UninitializedMemoryHacksODR.cpp +21 -0
- package/external/folly/folly/memory/test/UninitializedMemoryHacksTest.cpp +327 -0
- package/external/folly/folly/memory/test/not_null_test.cpp +608 -0
- package/external/folly/folly/memset.S +245 -0
- package/external/folly/folly/memset_select_aarch64.cpp +72 -0
- package/external/folly/folly/portability/Asm.h +50 -0
- package/external/folly/folly/portability/Atomic.h +31 -0
- package/external/folly/folly/portability/BUCK +456 -0
- package/external/folly/folly/portability/Builtins.cpp +31 -0
- package/external/folly/folly/portability/Builtins.h +161 -0
- package/external/folly/folly/portability/Config.h +43 -0
- package/external/folly/folly/portability/Constexpr.h +145 -0
- package/external/folly/folly/portability/Dirent.cpp +140 -0
- package/external/folly/folly/portability/Dirent.h +41 -0
- package/external/folly/folly/portability/Event.h +44 -0
- package/external/folly/folly/portability/Fcntl.cpp +120 -0
- package/external/folly/folly/portability/Fcntl.h +67 -0
- package/external/folly/folly/portability/Filesystem.cpp +67 -0
- package/external/folly/folly/portability/Filesystem.h +114 -0
- package/external/folly/folly/portability/FmtCompile.h +40 -0
- package/external/folly/folly/portability/GFlags.h +139 -0
- package/external/folly/folly/portability/GMock.h +35 -0
- package/external/folly/folly/portability/GTest.h +35 -0
- package/external/folly/folly/portability/IOVec.h +34 -0
- package/external/folly/folly/portability/Libgen.cpp +59 -0
- package/external/folly/folly/portability/Libgen.h +29 -0
- package/external/folly/folly/portability/Libunwind.h +21 -0
- package/external/folly/folly/portability/Malloc.cpp +31 -0
- package/external/folly/folly/portability/Malloc.h +53 -0
- package/external/folly/folly/portability/Math.h +90 -0
- package/external/folly/folly/portability/Memory.h +26 -0
- package/external/folly/folly/portability/OpenSSL.cpp +17 -0
- package/external/folly/folly/portability/OpenSSL.h +102 -0
- package/external/folly/folly/portability/PThread.cpp +697 -0
- package/external/folly/folly/portability/PThread.h +148 -0
- package/external/folly/folly/portability/README.md +21 -0
- package/external/folly/folly/portability/Sched.cpp +41 -0
- package/external/folly/folly/portability/Sched.h +45 -0
- package/external/folly/folly/portability/Sockets.cpp +245 -0
- package/external/folly/folly/portability/Sockets.h +155 -0
- package/external/folly/folly/portability/SourceLocation.h +49 -0
- package/external/folly/folly/portability/Stdio.cpp +77 -0
- package/external/folly/folly/portability/Stdio.h +32 -0
- package/external/folly/folly/portability/Stdlib.cpp +172 -0
- package/external/folly/folly/portability/Stdlib.h +64 -0
- package/external/folly/folly/portability/String.cpp +53 -0
- package/external/folly/folly/portability/String.h +39 -0
- package/external/folly/folly/portability/SysFile.cpp +46 -0
- package/external/folly/folly/portability/SysFile.h +27 -0
- package/external/folly/folly/portability/SysMembarrier.cpp +104 -0
- package/external/folly/folly/portability/SysMembarrier.h +26 -0
- package/external/folly/folly/portability/SysMman.cpp +242 -0
- package/external/folly/folly/portability/SysMman.h +68 -0
- package/external/folly/folly/portability/SysResource.cpp +108 -0
- package/external/folly/folly/portability/SysResource.h +71 -0
- package/external/folly/folly/portability/SysStat.cpp +66 -0
- package/external/folly/folly/portability/SysStat.h +52 -0
- package/external/folly/folly/portability/SysSyscall.h +73 -0
- package/external/folly/folly/portability/SysTime.cpp +62 -0
- package/external/folly/folly/portability/SysTime.h +50 -0
- package/external/folly/folly/portability/SysTypes.h +44 -0
- package/external/folly/folly/portability/SysUio.cpp +179 -0
- package/external/folly/folly/portability/SysUio.h +51 -0
- package/external/folly/folly/portability/Syslog.h +39 -0
- package/external/folly/folly/portability/Time.cpp +357 -0
- package/external/folly/folly/portability/Time.h +74 -0
- package/external/folly/folly/portability/Unistd.cpp +33 -0
- package/external/folly/folly/portability/Unistd.h +111 -0
- package/external/folly/folly/portability/Windows.h +108 -0
- package/external/folly/folly/portability/openat2.c +30 -0
- package/external/folly/folly/portability/openat2.h +39 -0
- package/external/folly/folly/portability/test/BUCK +59 -0
- package/external/folly/folly/portability/test/ConstexprTest.cpp +102 -0
- package/external/folly/folly/portability/test/FilesystemTest.cpp +35 -0
- package/external/folly/folly/portability/test/LibgenTest.cpp +35 -0
- package/external/folly/folly/portability/test/OpenSSLPortabilityTest.cpp +108 -0
- package/external/folly/folly/portability/test/PThreadTest.cpp +80 -0
- package/external/folly/folly/portability/test/TimeTest.cpp +90 -0
- package/external/folly/folly/small_vector.h +17 -0
- package/external/folly/folly/somerge_defs.bzl +399 -0
- package/external/folly/folly/sorted_vector_types.h +17 -0
- package/external/folly/folly/stop_watch.h +317 -0
- package/external/folly/folly/synchronization/AsymmetricThreadFence.cpp +91 -0
- package/external/folly/folly/synchronization/AsymmetricThreadFence.h +60 -0
- package/external/folly/folly/synchronization/AtomicNotification-inl.h +146 -0
- package/external/folly/folly/synchronization/AtomicNotification.cpp +34 -0
- package/external/folly/folly/synchronization/AtomicNotification.h +117 -0
- package/external/folly/folly/synchronization/AtomicRef.h +181 -0
- package/external/folly/folly/synchronization/AtomicStruct.h +150 -0
- package/external/folly/folly/synchronization/AtomicUtil-inl.h +482 -0
- package/external/folly/folly/synchronization/AtomicUtil.h +179 -0
- package/external/folly/folly/synchronization/BUCK +418 -0
- package/external/folly/folly/synchronization/Baton.h +419 -0
- package/external/folly/folly/synchronization/CallOnce.h +263 -0
- package/external/folly/folly/synchronization/DelayedInit.h +179 -0
- package/external/folly/folly/synchronization/DistributedMutex-inl.h +1744 -0
- package/external/folly/folly/synchronization/DistributedMutex.cpp +27 -0
- package/external/folly/folly/synchronization/DistributedMutex.h +342 -0
- package/external/folly/folly/synchronization/EventCount.h +200 -0
- package/external/folly/folly/synchronization/FlatCombining.h +629 -0
- package/external/folly/folly/synchronization/Hazptr-fwd.h +217 -0
- package/external/folly/folly/synchronization/Hazptr.cpp +36 -0
- package/external/folly/folly/synchronization/Hazptr.h +209 -0
- package/external/folly/folly/synchronization/HazptrDomain.cpp +68 -0
- package/external/folly/folly/synchronization/HazptrDomain.h +832 -0
- package/external/folly/folly/synchronization/HazptrHolder.h +431 -0
- package/external/folly/folly/synchronization/HazptrObj.h +533 -0
- package/external/folly/folly/synchronization/HazptrObjLinked.h +315 -0
- package/external/folly/folly/synchronization/HazptrRec.h +68 -0
- package/external/folly/folly/synchronization/HazptrThrLocal.h +180 -0
- package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.cpp +46 -0
- package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.h +25 -0
- package/external/folly/folly/synchronization/Latch.h +160 -0
- package/external/folly/folly/synchronization/LifoSem.h +767 -0
- package/external/folly/folly/synchronization/Lock.h +887 -0
- package/external/folly/folly/synchronization/MicroSpinLock.h +154 -0
- package/external/folly/folly/synchronization/NativeSemaphore.h +187 -0
- package/external/folly/folly/synchronization/ParkingLot.cpp +37 -0
- package/external/folly/folly/synchronization/ParkingLot.h +330 -0
- package/external/folly/folly/synchronization/PicoSpinLock.h +167 -0
- package/external/folly/folly/synchronization/RWSpinLock.h +549 -0
- package/external/folly/folly/synchronization/Rcu.cpp +26 -0
- package/external/folly/folly/synchronization/Rcu.h +553 -0
- package/external/folly/folly/synchronization/RelaxedAtomic.h +336 -0
- package/external/folly/folly/synchronization/SanitizeThread.cpp +141 -0
- package/external/folly/folly/synchronization/SanitizeThread.h +166 -0
- package/external/folly/folly/synchronization/SaturatingSemaphore.h +324 -0
- package/external/folly/folly/synchronization/SmallLocks.h +36 -0
- package/external/folly/folly/synchronization/ThrottledLifoSem.h +362 -0
- package/external/folly/folly/synchronization/WaitOptions.cpp +25 -0
- package/external/folly/folly/synchronization/WaitOptions.h +75 -0
- package/external/folly/folly/synchronization/detail/AtomicUtils.h +59 -0
- package/external/folly/folly/synchronization/detail/BUCK +104 -0
- package/external/folly/folly/synchronization/detail/Hardware.cpp +192 -0
- package/external/folly/folly/synchronization/detail/Hardware.h +75 -0
- package/external/folly/folly/synchronization/detail/HazptrUtils.h +339 -0
- package/external/folly/folly/synchronization/detail/InlineFunctionRef.h +229 -0
- package/external/folly/folly/synchronization/detail/Sleeper.cpp +27 -0
- package/external/folly/folly/synchronization/detail/Sleeper.h +62 -0
- package/external/folly/folly/synchronization/detail/Spin.h +96 -0
- package/external/folly/folly/synchronization/detail/ThreadCachedLists.h +174 -0
- package/external/folly/folly/synchronization/detail/ThreadCachedReaders.h +189 -0
- package/external/folly/folly/synchronization/detail/ThreadCachedTag.h +26 -0
- package/external/folly/folly/synchronization/detail/test/BUCK +28 -0
- package/external/folly/folly/synchronization/detail/test/HardwareTest.cpp +74 -0
- package/external/folly/folly/synchronization/detail/test/InlineFunctionRefTest.cpp +286 -0
- package/external/folly/folly/synchronization/example/BUCK +27 -0
- package/external/folly/folly/synchronization/example/HazptrLockFreeLIFO.h +88 -0
- package/external/folly/folly/synchronization/example/HazptrSWMRSet.h +133 -0
- package/external/folly/folly/synchronization/example/HazptrWideCAS.h +62 -0
- package/external/folly/folly/synchronization/test/AtomicNotificationTest.cpp +236 -0
- package/external/folly/folly/synchronization/test/AtomicRefTest.cpp +170 -0
- package/external/folly/folly/synchronization/test/AtomicStructTest.cpp +65 -0
- package/external/folly/folly/synchronization/test/AtomicUtilBench.cpp +457 -0
- package/external/folly/folly/synchronization/test/AtomicUtilTest.cpp +650 -0
- package/external/folly/folly/synchronization/test/BUCK +495 -0
- package/external/folly/folly/synchronization/test/Barrier.h +52 -0
- package/external/folly/folly/synchronization/test/BarrierTest.cpp +56 -0
- package/external/folly/folly/synchronization/test/BatonBenchmark.cpp +77 -0
- package/external/folly/folly/synchronization/test/BatonTest.cpp +164 -0
- package/external/folly/folly/synchronization/test/BatonTestHelpers.h +118 -0
- package/external/folly/folly/synchronization/test/CallOnceBenchmark.cpp +72 -0
- package/external/folly/folly/synchronization/test/CallOnceTest.cpp +153 -0
- package/external/folly/folly/synchronization/test/DelayedInitTest.cpp +281 -0
- package/external/folly/folly/synchronization/test/DistributedMutexTest.cpp +2074 -0
- package/external/folly/folly/synchronization/test/EventCountTest.cpp +124 -0
- package/external/folly/folly/synchronization/test/FlatCombiningBenchmark.cpp +1789 -0
- package/external/folly/folly/synchronization/test/FlatCombiningExamples.h +222 -0
- package/external/folly/folly/synchronization/test/FlatCombiningTest.cpp +121 -0
- package/external/folly/folly/synchronization/test/FlatCombiningTestHelpers.h +227 -0
- package/external/folly/folly/synchronization/test/HazptrTest.cpp +1689 -0
- package/external/folly/folly/synchronization/test/LatchTest.cpp +224 -0
- package/external/folly/folly/synchronization/test/LifoSemBench.cpp +185 -0
- package/external/folly/folly/synchronization/test/LifoSemTests.cpp +353 -0
- package/external/folly/folly/synchronization/test/LockTest.cpp +1239 -0
- package/external/folly/folly/synchronization/test/NativeSemaphoreTest.cpp +37 -0
- package/external/folly/folly/synchronization/test/ParkingLotBenchmark.cpp +239 -0
- package/external/folly/folly/synchronization/test/ParkingLotTest.cpp +170 -0
- package/external/folly/folly/synchronization/test/RWSpinLockTest.cpp +235 -0
- package/external/folly/folly/synchronization/test/RcuBench.cpp +66 -0
- package/external/folly/folly/synchronization/test/RcuTest.cpp +330 -0
- package/external/folly/folly/synchronization/test/RelaxedAtomicTest.cpp +389 -0
- package/external/folly/folly/synchronization/test/SaturatingSemaphoreTest.cpp +166 -0
- package/external/folly/folly/synchronization/test/Semaphore.h +242 -0
- package/external/folly/folly/synchronization/test/SemaphoreTest.cpp +271 -0
- package/external/folly/folly/synchronization/test/SmallLocksBenchmark.cpp +1296 -0
- package/external/folly/folly/synchronization/test/SmallLocksTest.cpp +510 -0
- package/external/folly/folly/synchronization/test/ThreadCachedEpochBench.h +67 -0
- package/external/folly/folly/synchronization/test/ThreadCachedReadersBench.cpp +42 -0
- package/external/folly/folly/synchronization/test/ThreadCachedReadersTest.cpp +52 -0
- package/external/folly/folly/synchronization/test/ThrottledLifoSemTest.cpp +243 -0
- package/external/folly/folly/system/AtFork.cpp +205 -0
- package/external/folly/folly/system/AtFork.h +116 -0
- package/external/folly/folly/system/AuxVector.h +198 -0
- package/external/folly/folly/system/BUCK +144 -0
- package/external/folly/folly/system/EnvUtil.cpp +93 -0
- package/external/folly/folly/system/EnvUtil.h +113 -0
- package/external/folly/folly/system/HardwareConcurrency.cpp +39 -0
- package/external/folly/folly/system/HardwareConcurrency.h +23 -0
- package/external/folly/folly/system/MemoryMapping.cpp +477 -0
- package/external/folly/folly/system/MemoryMapping.h +287 -0
- package/external/folly/folly/system/Pid.cpp +87 -0
- package/external/folly/folly/system/Pid.h +34 -0
- package/external/folly/folly/system/Shell.cpp +33 -0
- package/external/folly/folly/system/Shell.h +93 -0
- package/external/folly/folly/system/ThreadId.cpp +89 -0
- package/external/folly/folly/system/ThreadId.h +62 -0
- package/external/folly/folly/system/ThreadName.cpp +330 -0
- package/external/folly/folly/system/ThreadName.h +72 -0
- package/external/folly/folly/system/test/AtForkTest.cpp +309 -0
- package/external/folly/folly/system/test/AuxVectorTest.cpp +55 -0
- package/external/folly/folly/system/test/BUCK +120 -0
- package/external/folly/folly/system/test/EnvUtilSubprocess.cpp +26 -0
- package/external/folly/folly/system/test/EnvUtilTest.cpp +197 -0
- package/external/folly/folly/system/test/MemoryMappingTest.cpp +179 -0
- package/external/folly/folly/system/test/PidTest.cpp +46 -0
- package/external/folly/folly/system/test/ShellTest.cpp +66 -0
- package/external/folly/folly/system/test/ThreadIdTest.cpp +114 -0
- package/external/folly/folly/system/test/ThreadNameTest.cpp +85 -0
- package/external/folly/folly.vcxitems +164 -0
- package/external/folly/static/logo.svg +1 -0
- package/external/folly/sync-config.json +8 -0
- package/package.json +3 -3
- package/templates/cpp-lib/example/metro.config.js +18 -2
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
//
|
|
18
|
+
// Docs: https://fburl.com/fbcref_json
|
|
19
|
+
//
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Serialize and deserialize folly::dynamic values as JSON.
|
|
23
|
+
*
|
|
24
|
+
* Basic JSON type system:
|
|
25
|
+
*
|
|
26
|
+
* Value : String | Bool | Null | Object | Array | Number
|
|
27
|
+
* String : UTF-8 sequence
|
|
28
|
+
* Object : (String, Value) pairs, with unique String keys
|
|
29
|
+
* Array : ordered list of Values
|
|
30
|
+
* Null : null
|
|
31
|
+
* Bool : true | false
|
|
32
|
+
* Number : (representation unspecified)
|
|
33
|
+
*
|
|
34
|
+
* For more information see http://json.org or look up RFC 4627.
|
|
35
|
+
*
|
|
36
|
+
* If your dynamic has anything illegal with regard to this type
|
|
37
|
+
* system, the serializer will throw.
|
|
38
|
+
*
|
|
39
|
+
* @file json.h
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
#pragma once
|
|
43
|
+
|
|
44
|
+
#include <iosfwd>
|
|
45
|
+
#include <string>
|
|
46
|
+
|
|
47
|
+
#include <folly/Function.h>
|
|
48
|
+
#include <folly/Range.h>
|
|
49
|
+
#include <folly/json/dynamic.h>
|
|
50
|
+
|
|
51
|
+
namespace folly {
|
|
52
|
+
|
|
53
|
+
//////////////////////////////////////////////////////////////////////
|
|
54
|
+
|
|
55
|
+
namespace json {
|
|
56
|
+
|
|
57
|
+
struct serialization_opts {
|
|
58
|
+
// If true, keys in an object can be non-strings. (In strict
|
|
59
|
+
// JSON, object keys must be strings.) This is used by dynamic's
|
|
60
|
+
// operator<<.
|
|
61
|
+
bool allow_non_string_keys{false};
|
|
62
|
+
|
|
63
|
+
// If true, integer keys are allowed irrespective of 'allow_non_string_keys'
|
|
64
|
+
// in parsing, and are converted to strings in serialization. Other types are
|
|
65
|
+
// accepted accoring to 'allow_non_string_keys'. If set, validate_keys is
|
|
66
|
+
// enabled. Any key sorting will be applied on the stored integers, if present
|
|
67
|
+
// in the input object.
|
|
68
|
+
bool convert_int_keys{false};
|
|
69
|
+
|
|
70
|
+
/*
|
|
71
|
+
* If true, refuse to serialize 64-bit numbers that cannot be
|
|
72
|
+
* precisely represented by fit a double---instead, throws an
|
|
73
|
+
* exception if the document contains this.
|
|
74
|
+
*/
|
|
75
|
+
bool javascript_safe{false};
|
|
76
|
+
|
|
77
|
+
// If true, the serialized json will contain space and newlines to
|
|
78
|
+
// try to be minimally "pretty".
|
|
79
|
+
bool pretty_formatting{false};
|
|
80
|
+
|
|
81
|
+
// The number of spaces to indent by when pretty_formatting is enabled.
|
|
82
|
+
unsigned int pretty_formatting_indent_width{2};
|
|
83
|
+
|
|
84
|
+
// If true, non-ASCII utf8 characters would be encoded as \uXXXX:
|
|
85
|
+
// - if the code point is in [U+0000..U+FFFF] => encode as a single \uXXXX
|
|
86
|
+
// - if the code point is > U+FFFF => encode as 2 UTF-16 surrogate pairs.
|
|
87
|
+
bool encode_non_ascii{false};
|
|
88
|
+
|
|
89
|
+
// Check that strings are valid utf8
|
|
90
|
+
bool validate_utf8{false};
|
|
91
|
+
|
|
92
|
+
// Check that keys are distinct
|
|
93
|
+
bool validate_keys{false};
|
|
94
|
+
|
|
95
|
+
// Allow trailing comma in lists of values / items
|
|
96
|
+
bool allow_trailing_comma{false};
|
|
97
|
+
|
|
98
|
+
// Sort keys of all objects before printing out (potentially slow)
|
|
99
|
+
// using dynamic::operator<.
|
|
100
|
+
// Has no effect if sort_keys_by is set.
|
|
101
|
+
bool sort_keys{false};
|
|
102
|
+
|
|
103
|
+
// Sort keys of all objects before printing out (potentially slow)
|
|
104
|
+
// using the provided less functor.
|
|
105
|
+
Function<bool(dynamic const&, dynamic const&) const> sort_keys_by;
|
|
106
|
+
|
|
107
|
+
// Replace invalid utf8 characters with U+FFFD and continue
|
|
108
|
+
bool skip_invalid_utf8{false};
|
|
109
|
+
|
|
110
|
+
// true to allow NaN or INF values
|
|
111
|
+
bool allow_nan_inf{false};
|
|
112
|
+
|
|
113
|
+
// Options for how to print floating point values. See Conv.h
|
|
114
|
+
// toAppend implementation for floating point for more info
|
|
115
|
+
folly::DtoaMode dtoa_mode{};
|
|
116
|
+
|
|
117
|
+
unsigned int double_num_digits{0}; // ignored when mode is SHORTEST*
|
|
118
|
+
|
|
119
|
+
folly::DtoaFlags dtoa_flags{};
|
|
120
|
+
|
|
121
|
+
// Fallback to double when a value that looks like integer is too big to
|
|
122
|
+
// fit in an int64_t. Can result in loss a of precision.
|
|
123
|
+
bool double_fallback{false};
|
|
124
|
+
|
|
125
|
+
// Do not parse numbers. Instead, store them as strings and leave the
|
|
126
|
+
// conversion up to the user.
|
|
127
|
+
bool parse_numbers_as_strings{false};
|
|
128
|
+
|
|
129
|
+
// Recursion limit when parsing.
|
|
130
|
+
unsigned int recursion_limit{100};
|
|
131
|
+
|
|
132
|
+
// Bitmap representing ASCII characters to escape with unicode
|
|
133
|
+
// representations. The least significant bit of the first in the pair is
|
|
134
|
+
// ASCII value 0; the most significant bit of the second in the pair is ASCII
|
|
135
|
+
// value 127. Some specific characters in this range are always escaped
|
|
136
|
+
// regardless of the bitmask - namely characters less than 0x20, \, and ".
|
|
137
|
+
std::array<uint64_t, 2> extra_ascii_to_escape_bitmap{};
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Create bitmap for serialization_opts.extra_ascii_to_escape_bitmap.
|
|
142
|
+
*
|
|
143
|
+
* Generates a bitmap with bits set for each of the ASCII characters provided
|
|
144
|
+
* for use in the serialization_opts extra_ascii_to_escape_bitmap option. If any
|
|
145
|
+
* characters are not valid ASCII, they are ignored.
|
|
146
|
+
*/
|
|
147
|
+
std::array<uint64_t, 2> buildExtraAsciiToEscapeBitmap(StringPiece chars);
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Serialize dynamic to json-string, with options.
|
|
151
|
+
*
|
|
152
|
+
* Main JSON serialization routine taking folly::dynamic parameters.
|
|
153
|
+
* For the most common use cases there are simpler functions in the
|
|
154
|
+
* main folly namespace.
|
|
155
|
+
*/
|
|
156
|
+
std::string serialize(dynamic const&, serialization_opts const&);
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Escape a string so that it is legal to print it in JSON text.
|
|
160
|
+
*
|
|
161
|
+
* Append the result to out.
|
|
162
|
+
*/
|
|
163
|
+
void escapeString(
|
|
164
|
+
StringPiece input, std::string& out, const serialization_opts& opts);
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Strip all C99-like comments (i.e. // and / * ... * /)
|
|
168
|
+
*/
|
|
169
|
+
std::string stripComments(StringPiece jsonC);
|
|
170
|
+
|
|
171
|
+
// Parse error can be thrown when deserializing json (ie., converting string
|
|
172
|
+
// into json).
|
|
173
|
+
class FOLLY_EXPORT parse_error : public std::runtime_error {
|
|
174
|
+
public:
|
|
175
|
+
using std::runtime_error::runtime_error;
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
// Print error can be thrown when serializing json (ie., converting json into
|
|
179
|
+
// string).
|
|
180
|
+
class FOLLY_EXPORT print_error : public std::runtime_error {
|
|
181
|
+
public:
|
|
182
|
+
using std::runtime_error::runtime_error;
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
// may be extened in future to include offset, col, etc.
|
|
186
|
+
struct parse_location {
|
|
187
|
+
uint32_t line{}; // 0-indexed
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
// may be extended in future to include end location
|
|
191
|
+
struct parse_range {
|
|
192
|
+
parse_location begin;
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
struct parse_metadata {
|
|
196
|
+
parse_range key_range;
|
|
197
|
+
parse_range value_range;
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
using metadata_map = std::unordered_map<dynamic const*, parse_metadata>;
|
|
201
|
+
|
|
202
|
+
} // namespace json
|
|
203
|
+
|
|
204
|
+
//////////////////////////////////////////////////////////////////////
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Parse a json blob out of a range and produce a dynamic representing
|
|
208
|
+
* it.
|
|
209
|
+
*/
|
|
210
|
+
dynamic parseJson(StringPiece, json::serialization_opts const&);
|
|
211
|
+
dynamic parseJson(StringPiece);
|
|
212
|
+
|
|
213
|
+
dynamic parseJsonWithMetadata(StringPiece range, json::metadata_map* map);
|
|
214
|
+
dynamic parseJsonWithMetadata(
|
|
215
|
+
StringPiece range,
|
|
216
|
+
json::serialization_opts const& opts,
|
|
217
|
+
json::metadata_map* map);
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Serialize a dynamic into a json string.
|
|
221
|
+
*/
|
|
222
|
+
std::string toJson(dynamic const&);
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Serialize a dynamic into a json string with indentation.
|
|
226
|
+
* Note that the keys of all objects will be sorted.
|
|
227
|
+
*/
|
|
228
|
+
std::string toPrettyJson(dynamic const&);
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Printer for GTest.
|
|
232
|
+
*
|
|
233
|
+
* Uppercase name to fill GTest's API, which calls this method through ADL.
|
|
234
|
+
*/
|
|
235
|
+
void PrintTo(const dynamic&, std::ostream*);
|
|
236
|
+
//////////////////////////////////////////////////////////////////////
|
|
237
|
+
|
|
238
|
+
} // namespace folly
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
#include <folly/json/json_patch.h>
|
|
18
|
+
|
|
19
|
+
#include <glog/logging.h>
|
|
20
|
+
|
|
21
|
+
#include <folly/container/Enumerate.h>
|
|
22
|
+
|
|
23
|
+
namespace folly {
|
|
24
|
+
|
|
25
|
+
// JSON patch operation names
|
|
26
|
+
constexpr StringPiece kOperationTest = "test";
|
|
27
|
+
constexpr StringPiece kOperationRemove = "remove";
|
|
28
|
+
constexpr StringPiece kOperationAdd = "add";
|
|
29
|
+
constexpr StringPiece kOperationReplace = "replace";
|
|
30
|
+
constexpr StringPiece kOperationMove = "move";
|
|
31
|
+
constexpr StringPiece kOperationCopy = "copy";
|
|
32
|
+
// field tags in JSON patch
|
|
33
|
+
constexpr StringPiece kOpTag = "op";
|
|
34
|
+
constexpr StringPiece kValueTag = "value";
|
|
35
|
+
constexpr StringPiece kPathTag = "path";
|
|
36
|
+
constexpr StringPiece kFromTag = "from";
|
|
37
|
+
|
|
38
|
+
// static
|
|
39
|
+
Expected<json_patch, json_patch::parse_error> json_patch::try_parse(
|
|
40
|
+
dynamic const& obj) noexcept {
|
|
41
|
+
using err_code = parse_error_code;
|
|
42
|
+
|
|
43
|
+
json_patch patch;
|
|
44
|
+
if (!obj.isArray()) {
|
|
45
|
+
return makeUnexpected(parse_error{err_code::invalid_shape, &obj});
|
|
46
|
+
}
|
|
47
|
+
for (auto const& elem : obj) {
|
|
48
|
+
if (!elem.isObject()) {
|
|
49
|
+
return makeUnexpected(parse_error{err_code::invalid_shape, &elem});
|
|
50
|
+
}
|
|
51
|
+
auto const* op_ptr = elem.get_ptr(kOpTag);
|
|
52
|
+
if (!op_ptr) {
|
|
53
|
+
return makeUnexpected(parse_error{err_code::missing_op, &elem});
|
|
54
|
+
}
|
|
55
|
+
if (!op_ptr->isString()) {
|
|
56
|
+
return makeUnexpected(parse_error{err_code::malformed_op, &elem});
|
|
57
|
+
}
|
|
58
|
+
auto const op_str = op_ptr->asString();
|
|
59
|
+
patch_operation op;
|
|
60
|
+
|
|
61
|
+
// extract 'from' attribute
|
|
62
|
+
{
|
|
63
|
+
auto const* from_ptr = elem.get_ptr(kFromTag);
|
|
64
|
+
if (from_ptr) {
|
|
65
|
+
if (!from_ptr->isString()) {
|
|
66
|
+
return makeUnexpected(parse_error{err_code::invalid_shape, &elem});
|
|
67
|
+
}
|
|
68
|
+
auto json_ptr = json_pointer::try_parse(from_ptr->asString());
|
|
69
|
+
if (!json_ptr.hasValue()) {
|
|
70
|
+
return makeUnexpected(
|
|
71
|
+
parse_error{err_code::malformed_from_attr, &elem});
|
|
72
|
+
}
|
|
73
|
+
op.from = json_ptr.value();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// extract 'path' attribute
|
|
78
|
+
{
|
|
79
|
+
auto const* path_ptr = elem.get_ptr(kPathTag);
|
|
80
|
+
if (!path_ptr) {
|
|
81
|
+
return makeUnexpected(parse_error{err_code::missing_path_attr, &elem});
|
|
82
|
+
}
|
|
83
|
+
if (!path_ptr->isString()) {
|
|
84
|
+
return makeUnexpected(
|
|
85
|
+
parse_error{err_code::malformed_path_attr, &elem});
|
|
86
|
+
}
|
|
87
|
+
auto const json_ptr = json_pointer::try_parse(path_ptr->asString());
|
|
88
|
+
if (!json_ptr.hasValue()) {
|
|
89
|
+
return makeUnexpected(
|
|
90
|
+
parse_error{err_code::malformed_path_attr, &elem});
|
|
91
|
+
}
|
|
92
|
+
op.path = json_ptr.value();
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// extract 'value' attribute
|
|
96
|
+
{
|
|
97
|
+
auto const* val_ptr = elem.get_ptr(kValueTag);
|
|
98
|
+
if (val_ptr) {
|
|
99
|
+
op.value = *val_ptr;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// check mandatory attributes - different per operation
|
|
104
|
+
// NOTE: per RFC, the surplus attributes (e.g. 'from' with 'add')
|
|
105
|
+
// should be simply ignored
|
|
106
|
+
|
|
107
|
+
using op_code = patch_operation_code;
|
|
108
|
+
|
|
109
|
+
if (op_str == kOperationTest) {
|
|
110
|
+
if (!op.value) {
|
|
111
|
+
return makeUnexpected(parse_error{err_code::missing_value_attr, &elem});
|
|
112
|
+
}
|
|
113
|
+
op.op_code = op_code::test;
|
|
114
|
+
} else if (op_str == kOperationRemove) {
|
|
115
|
+
op.op_code = op_code::remove;
|
|
116
|
+
} else if (op_str == kOperationAdd) {
|
|
117
|
+
if (!op.value) {
|
|
118
|
+
return makeUnexpected(parse_error{err_code::missing_value_attr, &elem});
|
|
119
|
+
}
|
|
120
|
+
op.op_code = op_code::add;
|
|
121
|
+
} else if (op_str == kOperationReplace) {
|
|
122
|
+
if (!op.value) {
|
|
123
|
+
return makeUnexpected(parse_error{err_code::missing_value_attr, &elem});
|
|
124
|
+
}
|
|
125
|
+
op.op_code = op_code::replace;
|
|
126
|
+
} else if (op_str == kOperationMove) {
|
|
127
|
+
if (!op.from) {
|
|
128
|
+
return makeUnexpected(parse_error{err_code::missing_from_attr, &elem});
|
|
129
|
+
}
|
|
130
|
+
// is from a proper prefix to path?
|
|
131
|
+
if (op.from->is_prefix_of(op.path)) {
|
|
132
|
+
return makeUnexpected(
|
|
133
|
+
parse_error{err_code::overlapping_pointers, &elem});
|
|
134
|
+
}
|
|
135
|
+
op.op_code = op_code::move;
|
|
136
|
+
} else if (op_str == kOperationCopy) {
|
|
137
|
+
if (!op.from) {
|
|
138
|
+
return makeUnexpected(parse_error{err_code::missing_from_attr, &elem});
|
|
139
|
+
}
|
|
140
|
+
op.op_code = op_code::copy;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if (op.op_code != op_code::invalid) {
|
|
144
|
+
patch.ops_.emplace_back(std::move(op));
|
|
145
|
+
} else {
|
|
146
|
+
return makeUnexpected(parse_error{err_code::unknown_op, &elem});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return patch;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
std::vector<json_patch::patch_operation> const& json_patch::ops() const {
|
|
153
|
+
return ops_;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
namespace {
|
|
157
|
+
|
|
158
|
+
// clang-format off
|
|
159
|
+
Expected<Unit, json_patch::patch_application_error_code>
|
|
160
|
+
// clang-format on
|
|
161
|
+
do_remove(dynamic::resolved_json_pointer<dynamic>& ptr) {
|
|
162
|
+
using error_code = json_patch::patch_application_error_code;
|
|
163
|
+
|
|
164
|
+
if (!ptr.hasValue()) {
|
|
165
|
+
return makeUnexpected(error_code::path_not_found);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
auto parent = ptr->parent;
|
|
169
|
+
|
|
170
|
+
if (!parent) {
|
|
171
|
+
return makeUnexpected(error_code::other);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
if (parent->isObject()) {
|
|
175
|
+
parent->erase(ptr->parent_key);
|
|
176
|
+
return unit;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
if (parent->isArray()) {
|
|
180
|
+
parent->erase(parent->begin() + ptr->parent_index);
|
|
181
|
+
return unit;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
return makeUnexpected(error_code::other);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// clang-format off
|
|
188
|
+
Expected<Unit, json_patch::patch_application_error_code>
|
|
189
|
+
// clang-format on
|
|
190
|
+
do_add(
|
|
191
|
+
dynamic::resolved_json_pointer<dynamic>& ptr,
|
|
192
|
+
const dynamic& value,
|
|
193
|
+
const std::string& last_token) {
|
|
194
|
+
using app_err_code = json_patch::patch_application_error_code;
|
|
195
|
+
using res_err_code = dynamic::json_pointer_resolution_error_code;
|
|
196
|
+
|
|
197
|
+
// element found: see if parent is object or array
|
|
198
|
+
if (ptr.hasValue()) {
|
|
199
|
+
// root element, or key in object - replace (per RFC)
|
|
200
|
+
if (ptr->parent == nullptr || ptr->parent->isObject()) {
|
|
201
|
+
*ptr->value = value;
|
|
202
|
+
}
|
|
203
|
+
// valid index in array: insert at index and shift right
|
|
204
|
+
if (ptr->parent && ptr->parent->isArray()) {
|
|
205
|
+
ptr->parent->insert(ptr->parent->begin() + ptr->parent_index, value);
|
|
206
|
+
}
|
|
207
|
+
} else {
|
|
208
|
+
// see if we can add value, based on pointer resolution state
|
|
209
|
+
switch (ptr.error().error_code) {
|
|
210
|
+
// key not found. can only happen in object - add new key-value
|
|
211
|
+
case res_err_code::key_not_found: {
|
|
212
|
+
DCHECK(ptr.error().context->isObject());
|
|
213
|
+
ptr.error().context->insert(last_token, value);
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
// special '-' index in array - do append operation
|
|
217
|
+
case res_err_code::append_requested: {
|
|
218
|
+
DCHECK(ptr.error().context->isArray());
|
|
219
|
+
ptr.error().context->push_back(value);
|
|
220
|
+
break;
|
|
221
|
+
}
|
|
222
|
+
case res_err_code::other:
|
|
223
|
+
case res_err_code::index_out_of_bounds:
|
|
224
|
+
case res_err_code::index_not_numeric:
|
|
225
|
+
case res_err_code::index_has_leading_zero:
|
|
226
|
+
case res_err_code::element_not_object_or_array:
|
|
227
|
+
case res_err_code::json_pointer_out_of_bounds:
|
|
228
|
+
default:
|
|
229
|
+
return makeUnexpected(app_err_code::other);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return unit;
|
|
233
|
+
}
|
|
234
|
+
} // namespace
|
|
235
|
+
|
|
236
|
+
// clang-format off
|
|
237
|
+
Expected<Unit, json_patch::patch_application_error>
|
|
238
|
+
// clang-format on
|
|
239
|
+
json_patch::apply(dynamic& obj) const {
|
|
240
|
+
using op_code = patch_operation_code;
|
|
241
|
+
using error_code = patch_application_error_code;
|
|
242
|
+
using error = patch_application_error;
|
|
243
|
+
|
|
244
|
+
for (auto&& [index, op] : enumerate(ops_)) {
|
|
245
|
+
auto resolved_path = obj.try_get_ptr(op.path);
|
|
246
|
+
|
|
247
|
+
switch (op.op_code) {
|
|
248
|
+
case op_code::test:
|
|
249
|
+
if (!resolved_path.hasValue()) {
|
|
250
|
+
return makeUnexpected(error{error_code::path_not_found, index});
|
|
251
|
+
}
|
|
252
|
+
if (*resolved_path->value != *op.value) {
|
|
253
|
+
return makeUnexpected(error{error_code::test_failed, index});
|
|
254
|
+
}
|
|
255
|
+
break;
|
|
256
|
+
case op_code::remove: {
|
|
257
|
+
auto ret = do_remove(resolved_path);
|
|
258
|
+
if (ret.hasError()) {
|
|
259
|
+
return makeUnexpected(error{ret.error(), index});
|
|
260
|
+
}
|
|
261
|
+
break;
|
|
262
|
+
}
|
|
263
|
+
case op_code::add: {
|
|
264
|
+
DCHECK(op.value.has_value());
|
|
265
|
+
auto ret = do_add(resolved_path, *op.value, op.path.tokens().back());
|
|
266
|
+
if (ret.hasError()) {
|
|
267
|
+
return makeUnexpected(error{ret.error(), index});
|
|
268
|
+
}
|
|
269
|
+
break;
|
|
270
|
+
}
|
|
271
|
+
case op_code::replace: {
|
|
272
|
+
if (resolved_path.hasValue()) {
|
|
273
|
+
*resolved_path->value = *op.value;
|
|
274
|
+
} else {
|
|
275
|
+
return makeUnexpected(error{error_code::path_not_found, index});
|
|
276
|
+
}
|
|
277
|
+
break;
|
|
278
|
+
}
|
|
279
|
+
case op_code::move: {
|
|
280
|
+
DCHECK(op.from.has_value());
|
|
281
|
+
auto resolved_from = obj.try_get_ptr(*op.from);
|
|
282
|
+
if (!resolved_from.hasValue()) {
|
|
283
|
+
return makeUnexpected(error{error_code::from_not_found, index});
|
|
284
|
+
}
|
|
285
|
+
{
|
|
286
|
+
auto ret = do_add(
|
|
287
|
+
resolved_path, *resolved_from->value, op.path.tokens().back());
|
|
288
|
+
if (ret.hasError()) {
|
|
289
|
+
return makeUnexpected(error{ret.error(), index});
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
{
|
|
293
|
+
auto ret = do_remove(resolved_from);
|
|
294
|
+
if (ret.hasError()) {
|
|
295
|
+
return makeUnexpected(error{ret.error(), index});
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
break;
|
|
299
|
+
}
|
|
300
|
+
case op_code::copy: {
|
|
301
|
+
DCHECK(op.from.has_value());
|
|
302
|
+
auto const resolved_from = obj.try_get_ptr(*op.from);
|
|
303
|
+
if (!resolved_from.hasValue()) {
|
|
304
|
+
return makeUnexpected(error{error_code::from_not_found, index});
|
|
305
|
+
}
|
|
306
|
+
{
|
|
307
|
+
DCHECK(!op.path.tokens().empty());
|
|
308
|
+
auto ret = do_add(
|
|
309
|
+
resolved_path, *resolved_from->value, op.path.tokens().back());
|
|
310
|
+
if (ret.hasError()) {
|
|
311
|
+
return makeUnexpected(error{ret.error(), index});
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
break;
|
|
315
|
+
}
|
|
316
|
+
case op_code::invalid: {
|
|
317
|
+
DCHECK(false);
|
|
318
|
+
return makeUnexpected(error{error_code::other, index});
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
return unit;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
} // namespace folly
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
#pragma once
|
|
18
|
+
|
|
19
|
+
#include <vector>
|
|
20
|
+
|
|
21
|
+
#include <folly/Expected.h>
|
|
22
|
+
#include <folly/Optional.h>
|
|
23
|
+
#include <folly/json/dynamic.h>
|
|
24
|
+
#include <folly/json_pointer.h>
|
|
25
|
+
|
|
26
|
+
namespace folly {
|
|
27
|
+
|
|
28
|
+
/*
|
|
29
|
+
* json_patch
|
|
30
|
+
*
|
|
31
|
+
* As described in RFC 6902 "JSON Patch".
|
|
32
|
+
*
|
|
33
|
+
* Implements parsing. Application over data structures must be
|
|
34
|
+
* implemented separately.
|
|
35
|
+
*/
|
|
36
|
+
class json_patch {
|
|
37
|
+
public:
|
|
38
|
+
enum class parse_error_code : uint8_t {
|
|
39
|
+
undefined,
|
|
40
|
+
invalid_shape,
|
|
41
|
+
missing_op,
|
|
42
|
+
unknown_op,
|
|
43
|
+
malformed_op,
|
|
44
|
+
missing_path_attr,
|
|
45
|
+
malformed_path_attr,
|
|
46
|
+
missing_from_attr,
|
|
47
|
+
malformed_from_attr,
|
|
48
|
+
missing_value_attr,
|
|
49
|
+
overlapping_pointers,
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/*
|
|
53
|
+
* If parsing JSON patch object fails we return err code along with
|
|
54
|
+
* pointer to part of JSON document that we could not parse
|
|
55
|
+
*/
|
|
56
|
+
struct parse_error {
|
|
57
|
+
// one of the above error codes
|
|
58
|
+
parse_error_code error_code{parse_error_code::undefined};
|
|
59
|
+
// pointer to object that caused the error
|
|
60
|
+
dynamic const* obj{};
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
enum class patch_operation_code : uint8_t {
|
|
64
|
+
invalid = 0,
|
|
65
|
+
test,
|
|
66
|
+
remove,
|
|
67
|
+
add,
|
|
68
|
+
replace,
|
|
69
|
+
move,
|
|
70
|
+
copy,
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
/*
|
|
74
|
+
* Single JSON patch operation. Argument may vary based on op type
|
|
75
|
+
*/
|
|
76
|
+
struct patch_operation {
|
|
77
|
+
patch_operation_code op_code{patch_operation_code::invalid};
|
|
78
|
+
json_pointer path;
|
|
79
|
+
Optional<json_pointer> from;
|
|
80
|
+
Optional<dynamic> value;
|
|
81
|
+
friend bool operator==(
|
|
82
|
+
patch_operation const& lhs, patch_operation const& rhs) {
|
|
83
|
+
return lhs.op_code == rhs.op_code && lhs.path == rhs.path &&
|
|
84
|
+
lhs.from == rhs.from && lhs.value == rhs.value;
|
|
85
|
+
}
|
|
86
|
+
friend bool operator!=(
|
|
87
|
+
patch_operation const& lhs, patch_operation const& rhs) {
|
|
88
|
+
return !(lhs == rhs);
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
json_patch() = default;
|
|
93
|
+
~json_patch() = default;
|
|
94
|
+
|
|
95
|
+
static Expected<json_patch, parse_error> try_parse(
|
|
96
|
+
dynamic const& obj) noexcept;
|
|
97
|
+
|
|
98
|
+
std::vector<patch_operation> const& ops() const;
|
|
99
|
+
|
|
100
|
+
enum class patch_application_error_code : uint8_t {
|
|
101
|
+
other,
|
|
102
|
+
// "from" pointer did not resolve
|
|
103
|
+
from_not_found,
|
|
104
|
+
// "path" pointer did not resolve
|
|
105
|
+
path_not_found,
|
|
106
|
+
// "test" condition failed
|
|
107
|
+
test_failed,
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
struct patch_application_error {
|
|
111
|
+
patch_application_error_code error_code{};
|
|
112
|
+
// index of the patch element (in array) that caused error
|
|
113
|
+
size_t index{};
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
/*
|
|
117
|
+
* Mutate supplied object in accordance with patch operations. Leaves
|
|
118
|
+
* object in partially modified state if one of the operations fails.
|
|
119
|
+
*/
|
|
120
|
+
Expected<Unit, patch_application_error> apply(dynamic& obj) const;
|
|
121
|
+
|
|
122
|
+
private:
|
|
123
|
+
std::vector<patch_operation> ops_;
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
} // namespace folly
|