image-hash-native 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/.idea/copilot.data.migration.ask2agent.xml +6 -0
  2. package/README.md +71 -0
  3. package/binding.gyp +50 -0
  4. package/build/Release/img_hash.exp +0 -0
  5. package/build/Release/img_hash.iobj +0 -0
  6. package/build/Release/img_hash.ipdb +0 -0
  7. package/build/Release/img_hash.lib +0 -0
  8. package/build/Release/img_hash.node +0 -0
  9. package/build/Release/img_hash.pdb +0 -0
  10. package/build/Release/nothing.lib +0 -0
  11. package/build/Release/obj/img_hash/img_hash.node.recipe +11 -0
  12. package/build/Release/obj/img_hash/img_hash.tlog/CL.command.1.tlog +0 -0
  13. package/build/Release/obj/img_hash/img_hash.tlog/CL.read.1.tlog +0 -0
  14. package/build/Release/obj/img_hash/img_hash.tlog/CL.write.1.tlog +0 -0
  15. package/build/Release/obj/img_hash/img_hash.tlog/Cl.items.tlog +2 -0
  16. package/build/Release/obj/img_hash/img_hash.tlog/img_hash.lastbuildstate +2 -0
  17. package/build/Release/obj/img_hash/img_hash.tlog/link.command.1.tlog +0 -0
  18. package/build/Release/obj/img_hash/img_hash.tlog/link.read.1.tlog +0 -0
  19. package/build/Release/obj/img_hash/img_hash.tlog/link.secondary.1.tlog +5 -0
  20. package/build/Release/obj/img_hash/img_hash.tlog/link.write.1.tlog +0 -0
  21. package/build/Release/obj/img_hash/src/addon.obj +0 -0
  22. package/build/Release/obj/img_hash/win_delay_load_hook.obj +0 -0
  23. package/build/binding.sln +45 -0
  24. package/build/img_hash.vcxproj +157 -0
  25. package/build/img_hash.vcxproj.filters +58 -0
  26. package/build/node_modules/.pnpm/node-addon-api@8.5.0/node_modules/node-addon-api/Release/obj/nothing/node_modules/.pnpm/node-addon-api@8.5.0/node_modules/node-addon-api/nothing.obj +0 -0
  27. package/build/node_modules/.pnpm/node-addon-api@8.5.0/node_modules/node-addon-api/Release/obj/nothing/nothing.lib.recipe +7 -0
  28. package/build/node_modules/.pnpm/node-addon-api@8.5.0/node_modules/node-addon-api/Release/obj/nothing/nothing.tlog/CL.command.1.tlog +0 -0
  29. package/build/node_modules/.pnpm/node-addon-api@8.5.0/node_modules/node-addon-api/Release/obj/nothing/nothing.tlog/CL.read.1.tlog +0 -0
  30. package/build/node_modules/.pnpm/node-addon-api@8.5.0/node_modules/node-addon-api/Release/obj/nothing/nothing.tlog/CL.write.1.tlog +0 -0
  31. package/build/node_modules/.pnpm/node-addon-api@8.5.0/node_modules/node-addon-api/Release/obj/nothing/nothing.tlog/Cl.items.tlog +2 -0
  32. package/build/node_modules/.pnpm/node-addon-api@8.5.0/node_modules/node-addon-api/Release/obj/nothing/nothing.tlog/Lib-link.read.1.tlog +0 -0
  33. package/build/node_modules/.pnpm/node-addon-api@8.5.0/node_modules/node-addon-api/Release/obj/nothing/nothing.tlog/Lib-link.write.1.tlog +0 -0
  34. package/build/node_modules/.pnpm/node-addon-api@8.5.0/node_modules/node-addon-api/Release/obj/nothing/nothing.tlog/Lib.command.1.tlog +0 -0
  35. package/build/node_modules/.pnpm/node-addon-api@8.5.0/node_modules/node-addon-api/Release/obj/nothing/nothing.tlog/nothing.lastbuildstate +2 -0
  36. package/build/node_modules/.pnpm/node-addon-api@8.5.0/node_modules/node-addon-api/Release/obj/nothing/win_delay_load_hook.obj +0 -0
  37. package/build/node_modules/.pnpm/node-addon-api@8.5.0/node_modules/node-addon-api/node_api.sln +19 -0
  38. package/build/node_modules/.pnpm/node-addon-api@8.5.0/node_modules/node-addon-api/nothing.vcxproj +141 -0
  39. package/build/node_modules/.pnpm/node-addon-api@8.5.0/node_modules/node-addon-api/nothing.vcxproj.filters +115 -0
  40. package/index.d.ts +9 -0
  41. package/index.js +54 -0
  42. package/package.json +22 -0
  43. package/src/addon.cpp +116 -0
  44. package/src/index.hpp +246 -0
  45. package/test.js +20 -0
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="Ask2AgentMigrationStateService">
4
+ <option name="migrationStatus" value="COMPLETED" />
5
+ </component>
6
+ </project>
package/README.md ADDED
@@ -0,0 +1,71 @@
1
+ # image-hash-native
2
+
3
+ A fast, native Node.js addon for calculating image hashes (Average Hash, Difference Hash, Perceptual Hash) and comparing them using Hamming distance.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install image-hash-native
9
+ # or
10
+ pnpm add image-hash-native
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ This library operates on raw image buffers (RGB). You can use image processing libraries like `sharp` to convert images into the required format.
16
+
17
+ ### Example with `sharp`
18
+
19
+ ```javascript
20
+ const { aHash, dHash, pHash, hamming } = require('image-hash-native');
21
+ const sharp = require('sharp');
22
+
23
+ (async () => {
24
+ // Read an image and convert to raw RGB buffer
25
+ const { data, info } = await sharp('image.jpg')
26
+ .raw()
27
+ .toBuffer({ resolveWithObject: true });
28
+
29
+ // Calculate hashes
30
+ const ah = aHash(data, info.width, info.height);
31
+ const dh = dHash(data, info.width, info.height);
32
+ const ph = pHash(data, info.width, info.height);
33
+
34
+ console.log(`Average Hash: ${ah.toString(16)}`);
35
+ console.log(`Difference Hash: ${dh.toString(16)}`);
36
+ console.log(`Perceptual Hash: ${ph.toString(16)}`);
37
+
38
+ // Compare hashes
39
+ const distance = hamming(ah, ph);
40
+ console.log(`Hamming Distance: ${distance}`);
41
+ })();
42
+ ```
43
+
44
+ ## API
45
+
46
+ ### `aHash(buffer, width, height)`
47
+ Calculates the Average Hash.
48
+ - **buffer**: `Buffer` - Raw image data (RGB).
49
+ - **width**: `number` - Image width.
50
+ - **height**: `number` - Image height.
51
+ - **Returns**: `bigint` - The 64-bit hash.
52
+
53
+ ### `dHash(buffer, width, height)`
54
+ Calculates the Difference Hash.
55
+ - **buffer**: `Buffer` - Raw image data (RGB).
56
+ - **width**: `number` - Image width.
57
+ - **height**: `number` - Image height.
58
+ - **Returns**: `bigint` - The 64-bit hash.
59
+
60
+ ### `pHash(buffer, width, height)`
61
+ Calculates the Perceptual Hash.
62
+ - **buffer**: `Buffer` - Raw image data (RGB).
63
+ - **width**: `number` - Image width.
64
+ - **height**: `number` - Image height.
65
+ - **Returns**: `bigint` - The 64-bit hash.
66
+
67
+ ### `hamming(hash1, hash2)`
68
+ Calculates the Hamming distance between two hashes.
69
+ - **hash1**: `bigint`
70
+ - **hash2**: `bigint`
71
+ - **Returns**: `number` - The number of differing bits (0-64).
package/binding.gyp ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "targets": [
3
+ {
4
+ "target_name": "img_hash",
5
+ "sources": [ "src/addon.cpp" ],
6
+ "include_dirs": [
7
+ "<!@(node -p \"require('node-addon-api').include\")"
8
+ ],
9
+ "dependencies": [
10
+ "<!(node -p \"require('node-addon-api').gyp\")"
11
+ ],
12
+ "cflags!": [ "-fno-exceptions" ],
13
+ "cflags_cc!": [ "-fno-exceptions" ],
14
+ "xcode_settings": {
15
+ "GCC_ENABLE_CPP_EXCEPTIONS": "YES",
16
+ "CLANG_CXX_LIBRARY": "libc++",
17
+ "MACOSX_DEPLOYMENT_TARGET": "10.14",
18
+ "OTHER_CPLUSPLUSFLAGS": [
19
+ "-O3",
20
+ "-mavx2",
21
+ "-mfma",
22
+ "-march=native",
23
+ "-funroll-loops"
24
+ ]
25
+ },
26
+ "conditions": [
27
+ ["OS==\"win\"", {
28
+ "msvs_settings": {
29
+ "VCCLCompilerTool": {
30
+ "ExceptionHandling": 1,
31
+ "EnableEnhancedInstructionSet": "5",
32
+ "Optimization": "2",
33
+ "FavorSizeOrSpeed": "1"
34
+ }
35
+ }
36
+ }],
37
+ ["OS!=\"win\"", {
38
+ "cflags_cc": [
39
+ "-O3",
40
+ "-mavx2",
41
+ "-mfma",
42
+ "-march=native",
43
+ "-std=c++17",
44
+ "-fno-rtti"
45
+ ]
46
+ }]
47
+ ]
48
+ }
49
+ ]
50
+ }
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <Project>
3
+ <ProjectOutputs>
4
+ <ProjectOutput>
5
+ <FullPath>C:\Users\tinar\WebstormProjects\image-hash\build\Release\img_hash.node</FullPath>
6
+ </ProjectOutput>
7
+ </ProjectOutputs>
8
+ <ContentFiles />
9
+ <SatelliteDlls />
10
+ <NonRecipeFileRefs />
11
+ </Project>
@@ -0,0 +1,2 @@
1
+ C:\Users\tinar\WebstormProjects\image-hash\src\addon.cpp;C:\Users\tinar\WebstormProjects\image-hash\build\Release\obj\img_hash\src\addon.obj
2
+ C:\Users\tinar\WebstormProjects\image-hash\node_modules\.pnpm\node-gyp@12.1.0\node_modules\node-gyp\src\win_delay_load_hook.cc;C:\Users\tinar\WebstormProjects\image-hash\build\Release\obj\img_hash\win_delay_load_hook.obj
@@ -0,0 +1,2 @@
1
+ PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.22621.0:
2
+ Release|x64|C:\Users\tinar\WebstormProjects\image-hash\build\|
@@ -0,0 +1,5 @@
1
+ ^C:\USERS\TINAR\WEBSTORMPROJECTS\IMAGE-HASH\BUILD\RELEASE\NOTHING.LIB|C:\USERS\TINAR\WEBSTORMPROJECTS\IMAGE-HASH\BUILD\RELEASE\OBJ\IMG_HASH\SRC\ADDON.OBJ|C:\USERS\TINAR\WEBSTORMPROJECTS\IMAGE-HASH\BUILD\RELEASE\OBJ\IMG_HASH\WIN_DELAY_LOAD_HOOK.OBJ
2
+ C:\Users\tinar\WebstormProjects\image-hash\build\Release\img_hash.LIB
3
+ C:\Users\tinar\WebstormProjects\image-hash\build\Release\img_hash.EXP
4
+ C:\Users\tinar\WebstormProjects\image-hash\build\Release\img_hash.IPDB
5
+ C:\Users\tinar\WebstormProjects\image-hash\build\Release\img_hash.IOBJ
@@ -0,0 +1,45 @@
1
+ Microsoft Visual Studio Solution File, Format Version 12.00
2
+ # Visual Studio 2015
3
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "img_hash", "img_hash.vcxproj", "{66C55B94-DF4C-6A74-56C7-B332B88A8FA2}"
4
+ ProjectSection(ProjectDependencies) = postProject
5
+ {D16AA5BB-0FAA-C315-8B42-674B7FC329B3} = {D16AA5BB-0FAA-C315-8B42-674B7FC329B3}
6
+ EndProjectSection
7
+ EndProject
8
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nothing", "node_modules\.pnpm\node-addon-api@8.5.0\node_modules\node-addon-api\nothing.vcxproj", "{D16AA5BB-0FAA-C315-8B42-674B7FC329B3}"
9
+ EndProject
10
+ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "(node_modules)", "..\node_modules", "{9D350B9E-06FB-960D-859F-B43C9597383A}"
11
+ EndProject
12
+ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "(.pnpm)", "..\node_modules\.pnpm", "{B7C2E3AA-093A-B65C-48E3-CDB279AA97C9}"
13
+ EndProject
14
+ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "(node-addon-api@8.5.0)", "..\node_modules\.pnpm\node-addon-api@8.5.0", "{A9864ADB-681D-0E8C-C598-5CEDF82C2D93}"
15
+ EndProject
16
+ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "(node_modules)", "..\node_modules\.pnpm\node-addon-api@8.5.0\node_modules", "{1D266807-C17A-75D5-AE56-0B59AB9BBEAA}"
17
+ EndProject
18
+ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "(node-addon-api)", "..\node_modules\.pnpm\node-addon-api@8.5.0\node_modules\node-addon-api", "{7A8F4D74-9E12-CB54-83EB-258DE4DE8ADC}"
19
+ EndProject
20
+ Global
21
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
22
+ Debug|x64 = Debug|x64
23
+ Release|x64 = Release|x64
24
+ EndGlobalSection
25
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
26
+ {66C55B94-DF4C-6A74-56C7-B332B88A8FA2}.Debug|x64.ActiveCfg = Debug|x64
27
+ {66C55B94-DF4C-6A74-56C7-B332B88A8FA2}.Debug|x64.Build.0 = Debug|x64
28
+ {66C55B94-DF4C-6A74-56C7-B332B88A8FA2}.Release|x64.ActiveCfg = Release|x64
29
+ {66C55B94-DF4C-6A74-56C7-B332B88A8FA2}.Release|x64.Build.0 = Release|x64
30
+ {D16AA5BB-0FAA-C315-8B42-674B7FC329B3}.Debug|x64.ActiveCfg = Debug|x64
31
+ {D16AA5BB-0FAA-C315-8B42-674B7FC329B3}.Debug|x64.Build.0 = Debug|x64
32
+ {D16AA5BB-0FAA-C315-8B42-674B7FC329B3}.Release|x64.ActiveCfg = Release|x64
33
+ {D16AA5BB-0FAA-C315-8B42-674B7FC329B3}.Release|x64.Build.0 = Release|x64
34
+ EndGlobalSection
35
+ GlobalSection(SolutionProperties) = preSolution
36
+ HideSolutionNode = FALSE
37
+ EndGlobalSection
38
+ GlobalSection(NestedProjects) = preSolution
39
+ {B7C2E3AA-093A-B65C-48E3-CDB279AA97C9} = {9D350B9E-06FB-960D-859F-B43C9597383A}
40
+ {A9864ADB-681D-0E8C-C598-5CEDF82C2D93} = {B7C2E3AA-093A-B65C-48E3-CDB279AA97C9}
41
+ {1D266807-C17A-75D5-AE56-0B59AB9BBEAA} = {A9864ADB-681D-0E8C-C598-5CEDF82C2D93}
42
+ {7A8F4D74-9E12-CB54-83EB-258DE4DE8ADC} = {1D266807-C17A-75D5-AE56-0B59AB9BBEAA}
43
+ {D16AA5BB-0FAA-C315-8B42-674B7FC329B3} = {7A8F4D74-9E12-CB54-83EB-258DE4DE8ADC}
44
+ EndGlobalSection
45
+ EndGlobal
@@ -0,0 +1,157 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
+ <ItemGroup Label="ProjectConfigurations">
4
+ <ProjectConfiguration Include="Debug|x64">
5
+ <Configuration>Debug</Configuration>
6
+ <Platform>x64</Platform>
7
+ </ProjectConfiguration>
8
+ <ProjectConfiguration Include="Release|x64">
9
+ <Configuration>Release</Configuration>
10
+ <Platform>x64</Platform>
11
+ </ProjectConfiguration>
12
+ </ItemGroup>
13
+ <PropertyGroup Label="Globals">
14
+ <ProjectGuid>{66C55B94-DF4C-6A74-56C7-B332B88A8FA2}</ProjectGuid>
15
+ <Keyword>Win32Proj</Keyword>
16
+ <RootNamespace>img_hash</RootNamespace>
17
+ <IgnoreWarnCompileDuplicatedFilename>true</IgnoreWarnCompileDuplicatedFilename>
18
+ <PreferredToolArchitecture>x64</PreferredToolArchitecture>
19
+ <WindowsTargetPlatformVersion>10.0.22621.0</WindowsTargetPlatformVersion>
20
+ </PropertyGroup>
21
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/>
22
+ <PropertyGroup Label="Configuration">
23
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
24
+ </PropertyGroup>
25
+ <PropertyGroup Label="Locals">
26
+ <PlatformToolset>v143</PlatformToolset>
27
+ </PropertyGroup>
28
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/>
29
+ <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props"/>
30
+ <ImportGroup Label="ExtensionSettings"/>
31
+ <ImportGroup Label="PropertySheets">
32
+ <Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
33
+ </ImportGroup>
34
+ <PropertyGroup Label="UserMacros"/>
35
+ <PropertyGroup>
36
+ <ExecutablePath>$(ExecutablePath);$(MSBuildProjectDirectory)\..\bin\;$(MSBuildProjectDirectory)\..\bin\</ExecutablePath>
37
+ <IgnoreImportLibrary>true</IgnoreImportLibrary>
38
+ <IntDir>$(Configuration)\obj\$(ProjectName)\</IntDir>
39
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
40
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
41
+ <OutDir>$(SolutionDir)$(Configuration)\</OutDir>
42
+ <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.node</TargetExt>
43
+ <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.node</TargetExt>
44
+ <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.node</TargetExt>
45
+ <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.node</TargetExt>
46
+ <TargetName>$(ProjectName)</TargetName>
47
+ <TargetPath>$(OutDir)\$(ProjectName).node</TargetPath>
48
+ </PropertyGroup>
49
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
50
+ <ClCompile>
51
+ <AdditionalIncludeDirectories>C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\include\node;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\src;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\deps\openssl\config;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\deps\openssl\openssl\include;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\deps\uv\include;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\deps\zlib;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\deps\v8\include;C:\Users\tinar\WebstormProjects\image-hash\node_modules\.pnpm\node-addon-api@8.5.0\node_modules\node-addon-api;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
52
+ <AdditionalOptions>/Zc:__cplusplus -std:c++20 /Zm2000 %(AdditionalOptions)</AdditionalOptions>
53
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
54
+ <BufferSecurityCheck>true</BufferSecurityCheck>
55
+ <DebugInformationFormat>OldStyle</DebugInformationFormat>
56
+ <DisableSpecificWarnings>4351;4355;4800;4251;4275;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
57
+ <EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
58
+ <ExceptionHandling>Sync</ExceptionHandling>
59
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
60
+ <MinimalRebuild>false</MinimalRebuild>
61
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
62
+ <OmitFramePointers>false</OmitFramePointers>
63
+ <Optimization>Disabled</Optimization>
64
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
65
+ <PreprocessorDefinitions>NODE_GYP_MODULE_NAME=img_hash;USING_UV_SHARED=1;USING_V8_SHARED=1;V8_DEPRECATION_WARNINGS=1;_GLIBCXX_USE_CXX11_ABI=1;_FILE_OFFSET_BITS=64;WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_HAS_EXCEPTIONS=0;NOMINMAX;OPENSSL_NO_PINSHARED;OPENSSL_THREADS;BUILDING_NODE_EXTENSION;HOST_BINARY=&quot;node.exe&quot;;DEBUG;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
66
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
67
+ <StringPooling>true</StringPooling>
68
+ <SuppressStartupBanner>true</SuppressStartupBanner>
69
+ <TreatWarningAsError>false</TreatWarningAsError>
70
+ <WarningLevel>Level3</WarningLevel>
71
+ <WholeProgramOptimization>true</WholeProgramOptimization>
72
+ </ClCompile>
73
+ <Lib>
74
+ <AdditionalOptions>/LTCG:INCREMENTAL %(AdditionalOptions)</AdditionalOptions>
75
+ </Lib>
76
+ <Link>
77
+ <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;delayimp.lib;&quot;C:\\Users\\tinar\\AppData\\Local\\node-gyp\\Cache\\22.18.0\\x64\\node.lib&quot;</AdditionalDependencies>
78
+ <AdditionalOptions>/LTCG:INCREMENTAL /ignore:4199 %(AdditionalOptions)</AdditionalOptions>
79
+ <DelayLoadDLLs>node.exe;%(DelayLoadDLLs)</DelayLoadDLLs>
80
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
81
+ <GenerateDebugInformation>true</GenerateDebugInformation>
82
+ <OptimizeReferences>true</OptimizeReferences>
83
+ <OutputFile>$(OutDir)$(ProjectName).node</OutputFile>
84
+ <SuppressStartupBanner>true</SuppressStartupBanner>
85
+ <TargetExt>.node</TargetExt>
86
+ <TargetMachine>MachineX64</TargetMachine>
87
+ </Link>
88
+ <ResourceCompile>
89
+ <AdditionalIncludeDirectories>C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\include\node;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\src;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\deps\openssl\config;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\deps\openssl\openssl\include;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\deps\uv\include;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\deps\zlib;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\deps\v8\include;C:\Users\tinar\WebstormProjects\image-hash\node_modules\.pnpm\node-addon-api@8.5.0\node_modules\node-addon-api;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
90
+ <PreprocessorDefinitions>NODE_GYP_MODULE_NAME=img_hash;USING_UV_SHARED=1;USING_V8_SHARED=1;V8_DEPRECATION_WARNINGS=1;_GLIBCXX_USE_CXX11_ABI=1;_FILE_OFFSET_BITS=64;WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_HAS_EXCEPTIONS=0;NOMINMAX;OPENSSL_NO_PINSHARED;OPENSSL_THREADS;BUILDING_NODE_EXTENSION;HOST_BINARY=&quot;node.exe&quot;;DEBUG;_DEBUG;%(PreprocessorDefinitions);%(PreprocessorDefinitions)</PreprocessorDefinitions>
91
+ </ResourceCompile>
92
+ </ItemDefinitionGroup>
93
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
94
+ <ClCompile>
95
+ <AdditionalIncludeDirectories>C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\include\node;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\src;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\deps\openssl\config;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\deps\openssl\openssl\include;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\deps\uv\include;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\deps\zlib;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\deps\v8\include;C:\Users\tinar\WebstormProjects\image-hash\node_modules\.pnpm\node-addon-api@8.5.0\node_modules\node-addon-api;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
96
+ <AdditionalOptions>/Zc:__cplusplus -std:c++20 /Zm2000 %(AdditionalOptions)</AdditionalOptions>
97
+ <BufferSecurityCheck>true</BufferSecurityCheck>
98
+ <DebugInformationFormat>OldStyle</DebugInformationFormat>
99
+ <DisableSpecificWarnings>4351;4355;4800;4251;4275;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
100
+ <EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
101
+ <ExceptionHandling>Sync</ExceptionHandling>
102
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
103
+ <FunctionLevelLinking>true</FunctionLevelLinking>
104
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
105
+ <IntrinsicFunctions>true</IntrinsicFunctions>
106
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
107
+ <OmitFramePointers>true</OmitFramePointers>
108
+ <Optimization>Full</Optimization>
109
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
110
+ <PreprocessorDefinitions>NODE_GYP_MODULE_NAME=img_hash;USING_UV_SHARED=1;USING_V8_SHARED=1;V8_DEPRECATION_WARNINGS=1;_GLIBCXX_USE_CXX11_ABI=1;_FILE_OFFSET_BITS=64;WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_HAS_EXCEPTIONS=0;NOMINMAX;OPENSSL_NO_PINSHARED;OPENSSL_THREADS;BUILDING_NODE_EXTENSION;HOST_BINARY=&quot;node.exe&quot;;%(PreprocessorDefinitions)</PreprocessorDefinitions>
111
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
112
+ <RuntimeTypeInfo>false</RuntimeTypeInfo>
113
+ <StringPooling>true</StringPooling>
114
+ <SuppressStartupBanner>true</SuppressStartupBanner>
115
+ <TreatWarningAsError>false</TreatWarningAsError>
116
+ <WarningLevel>Level3</WarningLevel>
117
+ <WholeProgramOptimization>true</WholeProgramOptimization>
118
+ </ClCompile>
119
+ <Lib>
120
+ <AdditionalOptions>/LTCG:INCREMENTAL %(AdditionalOptions)</AdditionalOptions>
121
+ </Lib>
122
+ <Link>
123
+ <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;delayimp.lib;&quot;C:\\Users\\tinar\\AppData\\Local\\node-gyp\\Cache\\22.18.0\\x64\\node.lib&quot;</AdditionalDependencies>
124
+ <AdditionalOptions>/LTCG:INCREMENTAL /ignore:4199 %(AdditionalOptions)</AdditionalOptions>
125
+ <DelayLoadDLLs>node.exe;%(DelayLoadDLLs)</DelayLoadDLLs>
126
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
127
+ <GenerateDebugInformation>true</GenerateDebugInformation>
128
+ <OptimizeReferences>true</OptimizeReferences>
129
+ <OutputFile>$(OutDir)$(ProjectName).node</OutputFile>
130
+ <SuppressStartupBanner>true</SuppressStartupBanner>
131
+ <TargetExt>.node</TargetExt>
132
+ <TargetMachine>MachineX64</TargetMachine>
133
+ </Link>
134
+ <ResourceCompile>
135
+ <AdditionalIncludeDirectories>C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\include\node;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\src;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\deps\openssl\config;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\deps\openssl\openssl\include;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\deps\uv\include;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\deps\zlib;C:\Users\tinar\AppData\Local\node-gyp\Cache\22.18.0\deps\v8\include;C:\Users\tinar\WebstormProjects\image-hash\node_modules\.pnpm\node-addon-api@8.5.0\node_modules\node-addon-api;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
136
+ <PreprocessorDefinitions>NODE_GYP_MODULE_NAME=img_hash;USING_UV_SHARED=1;USING_V8_SHARED=1;V8_DEPRECATION_WARNINGS=1;_GLIBCXX_USE_CXX11_ABI=1;_FILE_OFFSET_BITS=64;WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_HAS_EXCEPTIONS=0;NOMINMAX;OPENSSL_NO_PINSHARED;OPENSSL_THREADS;BUILDING_NODE_EXTENSION;HOST_BINARY=&quot;node.exe&quot;;%(PreprocessorDefinitions);%(PreprocessorDefinitions)</PreprocessorDefinitions>
137
+ </ResourceCompile>
138
+ </ItemDefinitionGroup>
139
+ <ItemGroup>
140
+ <None Include="..\binding.gyp"/>
141
+ </ItemGroup>
142
+ <ItemGroup>
143
+ <ClCompile Include="..\src\addon.cpp">
144
+ <ObjectFileName>$(IntDir)\src\addon.obj</ObjectFileName>
145
+ </ClCompile>
146
+ <ClCompile Include="C:\Users\tinar\WebstormProjects\image-hash\node_modules\.pnpm\node-gyp@12.1.0\node_modules\node-gyp\src\win_delay_load_hook.cc"/>
147
+ </ItemGroup>
148
+ <ItemGroup>
149
+ <ProjectReference Include="node_modules\.pnpm\node-addon-api@8.5.0\node_modules\node-addon-api\nothing.vcxproj">
150
+ <Project>{D16AA5BB-0FAA-C315-8B42-674B7FC329B3}</Project>
151
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
152
+ </ProjectReference>
153
+ </ItemGroup>
154
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
155
+ <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets"/>
156
+ <ImportGroup Label="ExtensionTargets"/>
157
+ </Project>
@@ -0,0 +1,58 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
+ <ItemGroup>
4
+ <Filter Include="..">
5
+ <UniqueIdentifier>{739DB09A-CC57-A953-A6CF-F64FA08E4FA7}</UniqueIdentifier>
6
+ </Filter>
7
+ <Filter Include="..\src">
8
+ <UniqueIdentifier>{8CDEE807-BC53-E450-C8B8-4DEBB66742D4}</UniqueIdentifier>
9
+ </Filter>
10
+ <Filter Include="C:">
11
+ <UniqueIdentifier>{7B735499-E5DD-1C2B-6C26-70023832A1CF}</UniqueIdentifier>
12
+ </Filter>
13
+ <Filter Include="C:\Users">
14
+ <UniqueIdentifier>{E9F714C1-DA89-54E2-60CF-39FEB20BF756}</UniqueIdentifier>
15
+ </Filter>
16
+ <Filter Include="C:\Users\tinar">
17
+ <UniqueIdentifier>{E4181FEF-40DE-A68A-9710-04148DE17DA4}</UniqueIdentifier>
18
+ </Filter>
19
+ <Filter Include="C:\Users\tinar\WebstormProjects">
20
+ <UniqueIdentifier>{1BE06873-5E24-6012-F79E-EC2F7B02B909}</UniqueIdentifier>
21
+ </Filter>
22
+ <Filter Include="C:\Users\tinar\WebstormProjects\image-hash">
23
+ <UniqueIdentifier>{5C8E9DD2-39C9-7984-A5ED-436FBCF03341}</UniqueIdentifier>
24
+ </Filter>
25
+ <Filter Include="C:\Users\tinar\WebstormProjects\image-hash\node_modules">
26
+ <UniqueIdentifier>{56DF7A98-063D-FB9D-485C-089023B4C16A}</UniqueIdentifier>
27
+ </Filter>
28
+ <Filter Include="C:\Users\tinar\WebstormProjects\image-hash\node_modules\.pnpm">
29
+ <UniqueIdentifier>{293CE058-3CF8-8B4D-C9A0-FD024AF736DB}</UniqueIdentifier>
30
+ </Filter>
31
+ <Filter Include="C:\Users\tinar\WebstormProjects\image-hash\node_modules\.pnpm\node-gyp@12.1.0">
32
+ <UniqueIdentifier>{F772891E-BC75-D5CD-4728-55F5D332D75E}</UniqueIdentifier>
33
+ </Filter>
34
+ <Filter Include="C:\Users\tinar\WebstormProjects\image-hash\node_modules\.pnpm\node-gyp@12.1.0\node_modules">
35
+ <UniqueIdentifier>{56DF7A98-063D-FB9D-485C-089023B4C16A}</UniqueIdentifier>
36
+ </Filter>
37
+ <Filter Include="C:\Users\tinar\WebstormProjects\image-hash\node_modules\.pnpm\node-gyp@12.1.0\node_modules\node-gyp">
38
+ <UniqueIdentifier>{77348C0E-2034-7791-74D5-63C077DF5A3B}</UniqueIdentifier>
39
+ </Filter>
40
+ <Filter Include="C:\Users\tinar\WebstormProjects\image-hash\node_modules\.pnpm\node-gyp@12.1.0\node_modules\node-gyp\src">
41
+ <UniqueIdentifier>{8CDEE807-BC53-E450-C8B8-4DEBB66742D4}</UniqueIdentifier>
42
+ </Filter>
43
+ <Filter Include="..">
44
+ <UniqueIdentifier>{739DB09A-CC57-A953-A6CF-F64FA08E4FA7}</UniqueIdentifier>
45
+ </Filter>
46
+ </ItemGroup>
47
+ <ItemGroup>
48
+ <ClCompile Include="..\src\addon.cpp">
49
+ <Filter>..\src</Filter>
50
+ </ClCompile>
51
+ <ClCompile Include="C:\Users\tinar\WebstormProjects\image-hash\node_modules\.pnpm\node-gyp@12.1.0\node_modules\node-gyp\src\win_delay_load_hook.cc">
52
+ <Filter>C:\Users\tinar\WebstormProjects\image-hash\node_modules\.pnpm\node-gyp@12.1.0\node_modules\node-gyp\src</Filter>
53
+ </ClCompile>
54
+ <None Include="..\binding.gyp">
55
+ <Filter>..</Filter>
56
+ </None>
57
+ </ItemGroup>
58
+ </Project>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <Project>
3
+ <ProjectOutputs />
4
+ <ContentFiles />
5
+ <SatelliteDlls />
6
+ <NonRecipeFileRefs />
7
+ </Project>
@@ -0,0 +1,2 @@
1
+ C:\Users\tinar\WebstormProjects\image-hash\node_modules\.pnpm\node-addon-api@8.5.0\node_modules\node-addon-api\nothing.c;C:\Users\tinar\WebstormProjects\image-hash\build\node_modules\.pnpm\node-addon-api@8.5.0\node_modules\node-addon-api\Release\obj\nothing\node_modules\.pnpm\node-addon-api@8.5.0\node_modules\node-addon-api\nothing.obj
2
+ C:\Users\tinar\WebstormProjects\image-hash\node_modules\.pnpm\node-gyp@12.1.0\node_modules\node-gyp\src\win_delay_load_hook.cc;C:\Users\tinar\WebstormProjects\image-hash\build\node_modules\.pnpm\node-addon-api@8.5.0\node_modules\node-addon-api\Release\obj\nothing\win_delay_load_hook.obj
@@ -0,0 +1,2 @@
1
+ PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.22621.0:
2
+ Release|x64|C:\Users\tinar\WebstormProjects\image-hash\build\|
@@ -0,0 +1,19 @@
1
+ Microsoft Visual Studio Solution File, Format Version 12.00
2
+ # Visual Studio 2015
3
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nothing", "nothing.vcxproj", "{D16AA5BB-0FAA-C315-8B42-674B7FC329B3}"
4
+ EndProject
5
+ Global
6
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
7
+ Debug|x64 = Debug|x64
8
+ Release|x64 = Release|x64
9
+ EndGlobalSection
10
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
11
+ {D16AA5BB-0FAA-C315-8B42-674B7FC329B3}.Debug|x64.ActiveCfg = Debug|x64
12
+ {D16AA5BB-0FAA-C315-8B42-674B7FC329B3}.Debug|x64.Build.0 = Debug|x64
13
+ {D16AA5BB-0FAA-C315-8B42-674B7FC329B3}.Release|x64.ActiveCfg = Release|x64
14
+ {D16AA5BB-0FAA-C315-8B42-674B7FC329B3}.Release|x64.Build.0 = Release|x64
15
+ EndGlobalSection
16
+ GlobalSection(SolutionProperties) = preSolution
17
+ HideSolutionNode = FALSE
18
+ EndGlobalSection
19
+ EndGlobal