From 4dab5e1eeaf9bb73408d2d1408becd7e11b3e93c Mon Sep 17 00:00:00 2001 From: Jeroen Claessens Date: Fri, 19 Jan 2024 16:19:02 +0100 Subject: [PATCH] feat: add dynamic loader for buffer (#36) * feat: add dynamic loader for buffer * chore: remove console.logs --- hyperid.js | 9 ++++++++- package.json | 8 +++++--- test/buffer.ts | 16 ++++++++++++++++ 3 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 test/buffer.ts diff --git a/hyperid.js b/hyperid.js index 7f32004..b429d2b 100644 --- a/hyperid.js +++ b/hyperid.js @@ -3,7 +3,14 @@ const uuidv4 = require('./uuid-node') const parser = require('uuid-parse') const maxInt = Math.pow(2, 31) - 1 -const Buffer = require('buffer').Buffer +const Buffer = loadBuffer() +function loadBuffer () { + const b = require('buffer') + // use third party module if no buffer module + return b && b.Buffer + ? b.Buffer + : require('buffer/').Buffer +} const base64Padding = Buffer.from('==', 'base64') function hyperid (opts) { diff --git a/package.json b/package.json index 1bb06dc..17ea012 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ ], "scripts": { "typescript": "tsc --project ./test/tsconfig.json", - "test": "standard && tape test/test.js test/uniqueness.js | tap-dot && npm run typescript" + "test": "standard && tape test/test.js test/uniqueness.js test/buffer.ts | tap-dot && npm run typescript" }, "repository": { "type": "git", @@ -41,11 +41,13 @@ "standard": "^16.0.3", "tap-dot": "^2.0.0", "tape": "^5.0.0", - "typescript": "^4.3.4" + "typescript": "^4.3.4", + "proxyquire": "^2.1.3" }, "dependencies": { "uuid": "^8.3.2", - "uuid-parse": "^1.1.0" + "uuid-parse": "^1.1.0", + "buffer": "^5.2.1" }, "browser": { "./uuid-node.js": "./uuid-browser.js" diff --git a/test/buffer.ts b/test/buffer.ts new file mode 100644 index 0000000..26fd85c --- /dev/null +++ b/test/buffer.ts @@ -0,0 +1,16 @@ +const hyperid = require('..') +const test = require('tape') +const proxyquire = require('proxyquire') + +test('require buffer', function (t) { + t.plan(2); + + const instance = hyperid() + const id = instance() + t.ok(id) + + proxyquire('../hyperid', { 'buffer': { Buffer: null } }); + const instance2 = hyperid() + const id2 = instance2() + t.ok(id2) +})