EddyVerbruggen / nativescript-randombytes

:twisted_rightwards_arrows: :1234: A NativeScript shim for the randombytes package
4 stars 3 forks source link

Buffer is not defined when calling randomBytes(16) #1

Open dali-gharbi opened 6 years ago

dali-gharbi commented 6 years ago

Hi actually i am trying to generate uuid using randombytes

but i got undefined in the plugin :

System.err: ReferenceError: Buffer is not defined
System.err: File: "file:///data/data/com.perfony.testOuat/files/app/tns_modules/nativescript-sentry/angular/error.handler.js, line: 18, column: 8
System.err: 
System.err: StackTrace: 

System.err:     Frame: function:'module.exports', file:'file:///data/data/com.perfony.testOuat/files/app/tns_modules/nativescript-randombytes/randombytes-native.js', line: 4, column: 17
System.err:     Frame: function:'v4', file:'file:///data/data/com.perfony.testOuat/files/app/database/database.manager.js', line: 220, column: 58

System.err:     Frame: function:'DatabaseManager.uuidV4', file:'file:///data/data/com.perfony.testOuat/files/app/database/database.manager.js', line: 234, column: 16

System.err:     Frame: function:'DatabaseManager.generateUUID', file:'file:///data/data/com.perfony.testOuat/files/app/database/database.manager.js', line: 266, column: 21
System.err:     Frame: function:'ParametersComponent.exec', file:'file:///data/data/com.perfony.testOuat/files/app/pages/parameters/parameters.component.js', line: 23, column: 42

System.err:     Frame: function:'', file:'', line: 52, column: 27

System.err:     Frame: function:'handleEvent', file:'file:///data/data/com.perfony.testOuat/files/app/tns_modules/@angular/core/bundles/core.umd.js', line: 12079, column: 138
System.err:     Frame: function:'callWithDebugContext', file:'file:///data/data/com.perfony.testOuat/files/app/tns_modules/@angular/core/bundles/core.umd.js', line: 13540, column: 42

System.err:     Frame: function:'debugHandleEvent', file:'file:///data/data/com.perfony.testOuat/files/app/tns_modules/@angular/core/bundles/core.umd.js', line: 13128, column: 12
System.err:     Frame: function:'dispatchEvent', file:'file:///data/data/com.perfony.testOuat/files/app/tns_modules/@angular/core/bundles/core.umd.js', line: 8691, column: 21
System.err:     Frame: function:'', file:'file:///data/data/com.perfony.testOuat/files/app/tns_modules/@angular/core/bundles/core.umd.js', line: 9302, column: 20
System.err:     Frame: function:'', file:'file:///data/data/com.perfony.testOuat/files/app/tns_modules/nativescript-angular/renderer.js', line: 175, column: 26

System.err:     Frame: function:'ZoneDelegate.invoke', file:'file:///data/data/com.perfony.testOuat/files/app/tns_modules/nativescript-angular/zone-js/dist/zone-nativescript.js', line: 365, column: 26
System.err:     Frame: function:'onInvoke', file:'file:///data/data/com.perfony.testOuat/files/app/tns_modules/@angular/core/bundles/core.umd.js', line: 3965, column: 37

System.err:     Frame: function:'ZoneDelegate.invoke', file:'file:///data/data/com.perfony.testOuat/files/app/tns_modules/nativescript-angular/zone-js/dist/zone-nativescript.js', line: 364, column: 32
System.err:     Frame: function:'Zone.run', file:'file:///data/data/com.perfony.testOuat/files/app/tns_modules/nativescript-angular/zone-js/dist/zone-nativescript.js', line: 125, column: 43

System.err:     Frame: function:'NgZone.run', file:'file:///data/data/com.perfony.testOuat/files/app/tns_modules/@angular/core/bundles/core.umd.js', line: 3833, column: 62

System.err:     Frame: function:'zonedCallback', file:'file:///data/data/com.perfony.testOuat/files/app/tns_modules/nativescript-angular/renderer.js', line: 174, column: 24
System.err:     Frame: function:'Observable.notify', file:'file:///data/data/com.perfony.testOuat/files/app/tns_modules/tns-core-modules/data/observable/observable.js', line: 103, column: 23
System.err:     Frame: function:'Observable._emit', file:'file:///data/data/com.perfony.testOuat/files/app/tns_modules/tns-core-modules/data/observable/observable.js', line: 120, column: 18
System.err:     Frame: function:'ClickListenerImpl.onClick', file:'file:///data/data/com.perfony.testOuat/files/app/tns_modules/tns-core-modules/ui/button/button.js', line: 24, column: 24
System.err: 
System.err:     at com.tns.Runtime.callJSMethodNative(Native Method)
System.err:     at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1084)
System.err:     at com.tns.Runtime.callJSMethodImpl(Runtime.java:966)
System.err:     at com.tns.Runtime.callJSMethod(Runtime.java:953)
System.err:     at com.tns.Runtime.callJSMethod(Runtime.java:937)
System.err:     at com.tns.Runtime.callJSMethod(Runtime.java:929)
System.err:     at com.tns.gen.java.lang.Object_frnal_ts_helpers_l58_c38__ClickListenerImpl.onClick(Object_frnal_ts_helpers_l58_c38__ClickListenerImpl.java:12)
System.err:     at android.view.View.performClick(View.java:6213)
System.err:     at android.widget.TextView.performClick(TextView.java:11074)
System.err:     at android.view.View$PerformClick.run(View.java:23645)
System.err:     at android.os.Handler.handleCallback(Handler.java:751)
System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
System.err:     at android.os.Looper.loop(Looper.java:154)
System.err:     at android.app.ActivityThread.main(ActivityThread.java:6692)
System.err:     at java.lang.reflect.Method.invoke(Native Method)
System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
JS: NativeScriptError: Error: The application crashed because of an uncaught exception. You can look at "stackTrace" or "nativeException" for more detailed information about the exception.

this is my code to generate uuid v4

let randomBytes = require('nativescript-randombytes');
private uuidV4(Extoptions, Extbuf, Extoffset) {
        let byteToHex = [];
        for (let i = 0; i < 256; ++i) {
          byteToHex[i] = (i + 0x100).toString(16).substr(1);
        }
        function bytesToUuid(buf, offset?) {
          let i = offset || 0;
          let bth = byteToHex;
          return  bth[buf[i++]] + bth[buf[i++]] +
                  bth[buf[i++]] + bth[buf[i++]] + '-' +
                  bth[buf[i++]] + bth[buf[i++]] + '-' +
                  bth[buf[i++]] + bth[buf[i++]] + '-' +
                  bth[buf[i++]] + bth[buf[i++]] + '-' +
                  bth[buf[i++]] + bth[buf[i++]] +
                  bth[buf[i++]] + bth[buf[i++]] +
                  bth[buf[i++]] + bth[buf[i++]];
        }
         function v4(options, buf, offset) {
          let i = buf && offset || 0;

          // tslint:disable-next-line:triple-equals
          if (typeof(options) == 'string') {
            // tslint:disable-next-line:triple-equals
            buf = options == 'binary' ? new Array(16) : null;
            options = null;
          }
          options = options || {};

          let rnds = options.random || (options.rng || randomBytes(16))();

          // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
          // tslint:disable-next-line:no-bitwise
          rnds[6] = (rnds[6] & 0x0f) | 0x40;
          // tslint:disable-next-line:no-bitwise
          rnds[8] = (rnds[8] & 0x3f) | 0x80;

          // Copy bytes to buffer, if provided
          if (buf) {
            for (let ii = 0; ii < 16; ++ii) {
              buf[i + ii] = rnds[ii];
            }
          }

          return buf || bytesToUuid(rnds);
        }
        return v4(Extoptions, Extbuf, Extoffset);
    }
ukch commented 6 years ago

@dali-gharbi I have found a workaround for this issue:

@EddyVerbruggen unless I'm barking up the wrong tree here, I guess adding a buffer dependency would fix this issue.