diff --git a/.gitignore b/.gitignore index 25871d0..585b599 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules build/ +.vscode/ \ No newline at end of file diff --git a/README.md b/README.md index 59c7131..a2ab64f 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ This repository serves as a nearly minimal native extension built on [Nan](https To compile the extension for the first time, run ``` +$ npm i -g node-gyp # assuming python 3.x.x $ npm i $ npm run configure $ npm run build diff --git a/binding.gyp b/binding.gyp index b5c6aea..98869b9 100644 --- a/binding.gyp +++ b/binding.gyp @@ -2,7 +2,7 @@ "targets": [ { "target_name": "NativeExtension", - "sources": [ "NativeExtension.cc", "functions.cc" ], + "sources": [ "src/NativeExtension.cc", "src/functions.cc" ], "include_dirs" : [ " { + console.log("ES Module import:", NativeExtension); +}); \ No newline at end of file diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 0000000..665e361 --- /dev/null +++ b/index.d.ts @@ -0,0 +1,4 @@ +declare module 'NativeExtension' { + const NativeExtension: any; + export default NativeExtension; +} \ No newline at end of file diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..1280bd6 --- /dev/null +++ b/index.mjs @@ -0,0 +1,6 @@ +import { createRequire } from "node:module"; + +const require = createRequire(import.meta.url); +const NativeExtension = require('./index.js'); + +export default NativeExtension; \ No newline at end of file diff --git a/package.json b/package.json index ff7c4ea..e5d6c6a 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,15 @@ { "main": "index.js", + "module": "./index.mjs", + "types": "./index.d.ts", + "type": "commonjs", "scripts": { "configure": "node-gyp configure", "build": "node-gyp build", "test": "mocha" }, "devDependencies": { - "mocha": "^2.2.5", - "node-gyp": "^3.8.0" + "mocha": "^2.2.5" }, "dependencies": { "bindings": "^1.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..3556023 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,183 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + bindings: + specifier: ^1.3.0 + version: 1.5.0 + nan: + specifier: ^2.11.1 + version: 2.20.0 + devDependencies: + mocha: + specifier: ^2.2.5 + version: 2.5.3 + +packages: + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + commander@0.6.1: + resolution: {integrity: sha512-0fLycpl1UMTGX257hRsu/arL/cUbcvQM4zMKwvLvzXtfdezIV4yotPS2dYtknF+NmEfWSoCEF6+hj9XLm/6hEw==} + engines: {node: '>= 0.4.x'} + + commander@2.3.0: + resolution: {integrity: sha512-CD452fnk0jQyk3NfnK+KkR/hUPoHt5pVaKHogtyyv3N0U4QfAal9W0/rXLOg/vVZgQKa7jdtXypKs1YAip11uQ==} + engines: {node: '>= 0.6.x'} + + debug@2.2.0: + resolution: {integrity: sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + diff@1.4.0: + resolution: {integrity: sha512-VzVc42hMZbYU9Sx/ltb7KYuQ6pqAw+cbFWVy4XKdkuEL2CFaRLGEnISPs7YdzaUGpi+CpIqvRmu7hPQ4T7EQ5w==} + engines: {node: '>=0.3.1'} + + escape-string-regexp@1.0.2: + resolution: {integrity: sha512-cQpUid7bdTUnFin8S7BnNdOk+/eDqQmKgCANSyd/jAhrKEvxUvr9VQ8XZzXiOtest8NLfk3FSBZzwvemZNQ6Vg==} + engines: {node: '>=0.8.0'} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + glob@3.2.11: + resolution: {integrity: sha512-hVb0zwEZwC1FXSKRPFTeOtN7AArJcJlI6ULGLtrstaswKNlrTJqAA+1lYlSUop4vjA423xlBzqfVS3iWGlqJ+g==} + deprecated: Glob versions prior to v9 are no longer supported + + growl@1.9.2: + resolution: {integrity: sha512-RTBwDHhNuOx4F0hqzItc/siXCasGfC4DeWcBamclWd+6jWtBaeB/SGbMkGf0eiQoW7ib8JpvOgnUsmgMHI3Mfw==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + jade@0.26.3: + resolution: {integrity: sha512-mkk3vzUHFjzKjpCXeu+IjXeZD+QOTjUUdubgmHtHTDwvAO2ZTkMTTVrapts5CWz3JvJryh/4KWZpjeZrCepZ3A==} + deprecated: Jade has been renamed to pug, please install the latest version of pug instead of jade + hasBin: true + + lru-cache@2.7.3: + resolution: {integrity: sha512-WpibWJ60c3AgAz8a2iYErDrcT2C7OmKnsWhIcHOjkUHFjkXncJhtLxNSqUmxRxRunpb5I8Vprd7aNSd2NtksJQ==} + + minimatch@0.3.0: + resolution: {integrity: sha512-WFX1jI1AaxNTZVOHLBVazwTWKaQjoykSzCBNXB72vDTCzopQGtyP91tKdFK5cv1+qMwPyiTu1HqUriqplI8pcA==} + deprecated: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue + + minimist@0.0.8: + resolution: {integrity: sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==} + + mkdirp@0.3.0: + resolution: {integrity: sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew==} + deprecated: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) + + mkdirp@0.5.1: + resolution: {integrity: sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==} + deprecated: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) + hasBin: true + + mocha@2.5.3: + resolution: {integrity: sha512-jNt2iEk9FPmZLzL+sm4FNyOIDYXf2wUU6L4Cc8OIKK/kzgMHKPi4YhTZqG4bW4kQVdIv6wutDybRhXfdnujA1Q==} + engines: {node: '>= 0.8.x'} + hasBin: true + + ms@0.7.1: + resolution: {integrity: sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==} + + nan@2.20.0: + resolution: {integrity: sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==} + + sigmund@1.0.1: + resolution: {integrity: sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==} + + supports-color@1.2.0: + resolution: {integrity: sha512-mS5xsnjTh5b7f2DM6bch6lR582UCOTphzINlZnDsfpIRrwI6r58rb6YSSGsdexkm8qw2bBVO2ID2fnJOTuLiPA==} + engines: {node: '>=0.10.0'} + hasBin: true + + to-iso-string@0.0.2: + resolution: {integrity: sha512-oeHLgfWA7d0CPQa6h0+i5DAJZISz5un0d5SHPkw+Untclcvzv9T+AC3CvGXlZJdOlIbxbTfyyzlqCXc5hjpXYg==} + deprecated: to-iso-string has been deprecated, use @segment/to-iso-string instead. + +snapshots: + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + + commander@0.6.1: {} + + commander@2.3.0: {} + + debug@2.2.0(supports-color@1.2.0): + dependencies: + ms: 0.7.1 + optionalDependencies: + supports-color: 1.2.0 + + diff@1.4.0: {} + + escape-string-regexp@1.0.2: {} + + file-uri-to-path@1.0.0: {} + + glob@3.2.11: + dependencies: + inherits: 2.0.4 + minimatch: 0.3.0 + + growl@1.9.2: {} + + inherits@2.0.4: {} + + jade@0.26.3: + dependencies: + commander: 0.6.1 + mkdirp: 0.3.0 + + lru-cache@2.7.3: {} + + minimatch@0.3.0: + dependencies: + lru-cache: 2.7.3 + sigmund: 1.0.1 + + minimist@0.0.8: {} + + mkdirp@0.3.0: {} + + mkdirp@0.5.1: + dependencies: + minimist: 0.0.8 + + mocha@2.5.3: + dependencies: + commander: 2.3.0 + debug: 2.2.0(supports-color@1.2.0) + diff: 1.4.0 + escape-string-regexp: 1.0.2 + glob: 3.2.11 + growl: 1.9.2 + jade: 0.26.3 + mkdirp: 0.5.1 + supports-color: 1.2.0 + to-iso-string: 0.0.2 + + ms@0.7.1: {} + + nan@2.20.0: {} + + sigmund@1.0.1: {} + + supports-color@1.2.0: {} + + to-iso-string@0.0.2: {} diff --git a/NativeExtension.cc b/src/NativeExtension.cc similarity index 100% rename from NativeExtension.cc rename to src/NativeExtension.cc diff --git a/functions.cc b/src/functions.cc similarity index 100% rename from functions.cc rename to src/functions.cc diff --git a/functions.h b/src/functions.h similarity index 100% rename from functions.h rename to src/functions.h