1.0.2 • Published 3 years ago

which-boxed-primitive v1.0.2

Weekly downloads
1,028,526
License
MIT
Repository
github
Last release
3 years ago

which-boxed-primitive Version Badge

dependency status dev dependency status License Downloads

npm badge

Which kind of boxed JS primitive is this? This module works cross-realm/iframe, does not depend on instanceof or mutable properties, and works despite ES6 Symbol.toStringTag.

Example

var whichBoxedPrimitive = require('which-boxed-primitive');
var assert = require('assert');

// unboxed primitives return `null`
// boxed primitives return the builtin constructor name

assert.equal(whichBoxedPrimitive(undefined), null);
assert.equal(whichBoxedPrimitive(null), null);

assert.equal(whichBoxedPrimitive(false), null);
assert.equal(whichBoxedPrimitive(true), null);
assert.equal(whichBoxedPrimitive(new Boolean(false)), 'Boolean');
assert.equal(whichBoxedPrimitive(new Boolean(true)), 'Boolean');

assert.equal(whichBoxedPrimitive(42), null);
assert.equal(whichBoxedPrimitive(NaN), null);
assert.equal(whichBoxedPrimitive(Infinity), null);
assert.equal(whichBoxedPrimitive(new Number(42)), 'Number');
assert.equal(whichBoxedPrimitive(new Number(NaN)), 'Number');
assert.equal(whichBoxedPrimitive(new Number(Infinity)), 'Number');

assert.equal(whichBoxedPrimitive(''), null);
assert.equal(whichBoxedPrimitive('foo'), null);
assert.equal(whichBoxedPrimitive(new String('')), 'String');
assert.equal(whichBoxedPrimitive(new String('foo')), 'String');

assert.equal(whichBoxedPrimitive(Symbol()), null);
assert.equal(whichBoxedPrimitive(Object(Symbol()), 'Symbol');

assert.equal(whichBoxedPrimitive(42n), null);
assert.equal(whichBoxedPrimitive(Object(42n), 'BigInt');

// non-boxed-primitive objects return `undefined`
assert.equal(whichBoxedPrimitive([]), undefined);
assert.equal(whichBoxedPrimitive({}), undefined);
assert.equal(whichBoxedPrimitive(/a/g), undefined);
assert.equal(whichBoxedPrimitive(new RegExp('a', 'g')), undefined);
assert.equal(whichBoxedPrimitive(new Date()), undefined);
assert.equal(whichBoxedPrimitive(function () {}), undefined);
assert.equal(whichBoxedPrimitive(function* () {}), undefined);
assert.equal(whichBoxedPrimitive(x => x * x), undefined);
assert.equal(whichBoxedPrimitive([]), undefined);

Tests

Simply clone the repo, npm install, and run npm test

deep-equalarchetype-libraryeasy-select-rnvuedragdropuploadimages@phil8795/pecuniarius-apideneme323112@fundefund/funde_ck@ntt_app/react-native-custom-notificationreact-native-covid-sdkgql_din_modafryxiconsmutasi-bca@jttechnic/interpreter@saeon/quick-formreact-native-printer-brothersreact-native-shekhar-bridge-testcogoportutilsuncoded-connectwilscanner@khalitovadel/abstract-repository@oiti/documentoscopy-react-nativequoc-testreact-native-slider-kf@infinitebrahmanuniverse/nolb-whi@saaspe/componentsexpand-react-bridgeopea-bootstraapluminos-ui-coresklif-ui-kitsklif-apijawwy-sdkjawwy_gamification_release@everything-registry/sub-chunk-3144@deepakorg/test@deepak757/testreact-native-sphereuisphereuijawwy_libraryreact-native-credit-card-pkgp149-tablesklif-uimachinebeemrcapsreact-native-jawwy_samplekardussomplakdavidbeckahm45rn-adyen-dropinrn-agora-ios-mrn-counter-demojrennsoh88-react-native-scroll-indicatorrn-circular-chartrn-check-btndate-to-block-ethjulien-easy-modaldegeamunited28jualwkascopexxtruscout-chatbot-widgetkhaled-salem-custom-componentsdemdemsirjusmelon204rusferdevdwi0712sabugratisdotenv-corekintilidin15dohundogandev-simple-toastronaldocr7vibesdesign-system-fitbank-450kamanawaedipchainjilha1jilha2jilha3jilha4jilha5@con-test/react-native-concent-commonreact-router-v5-v6-bridged-featuresreact-native-tejab41097-sample-libraryreact-native-teknoctrl-componentsreact-native-teads-sdk-modulereact-native-swalreact-native-test-viewreact-native-test-comlibrary@cs6/react-native-test-native-view-libraryreact-native-ui-components-library@cute-apocalypse/react-treereact-otp-input-uptdreact-native-version-appconstellation-frontendreact-native-uvc-camera-android@cvortex-design/dstokens@devorso/dcountdownip-design@dimcheify/dimuiis-boxed-primitivereactofy-css-librarycreate-nano-modulecpdek1
1.0.2

3 years ago

1.0.1

5 years ago

1.0.0

5 years ago