Socket
Socket
Sign inDemoInstall

attr-accept

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

attr-accept - npm Package Compare versions

Comparing version 1.0.1 to 1.0.2

.codeclimate.yml

43

dist/index.js

@@ -1,42 +0,1 @@

/**
* Check if the provided file type should be accepted by the input with accept attribute.
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input#attr-accept
*
* Borrowed from https://github.com/enyo/dropzone
*
* @param file {File} https://developer.mozilla.org/en-US/docs/Web/API/File
* @param acceptedFiles {string}
* @returns {boolean}
*/
'use strict';
exports.__esModule = true;
exports['default'] = function (file, acceptedFiles) {
if (acceptedFiles) {
var _ret = (function () {
var acceptedFilesArray = acceptedFiles.split(',');
var mimeType = file.type;
var baseMimeType = mimeType.replace(/\/.*$/, '');
return {
v: acceptedFilesArray.some(function (type) {
var validType = type.trim();
if (validType.charAt(0) === '.') {
return file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1;
} else if (/\/\*$/.test(validType)) {
// This is something like a image/* mime type
return baseMimeType === validType.replace(/\/.*$/, '');
}
return mimeType === validType;
})
};
})();
if (typeof _ret === 'object') return _ret.v;
}
return true;
};
module.exports = exports['default'];
exports["react-attr"]=function(t){function n(e){if(r[e])return r[e].exports;var o=r[e]={exports:{},id:e,loaded:!1};return t[e].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=t,n.c=r,n.p="",n(0)}([function(t,n,r){"use strict";n.__esModule=!0,r(8),r(9),n["default"]=function(t,n){if(t&&n){var r=function(){var r=n.split(","),e=t.name||"",o=t.type||"",i=o.replace(/\/.*$/,"");return{v:r.some(function(t){var n=t.trim();return"."===n.charAt(0)?e.toLowerCase().endsWith(n.toLowerCase()):/\/\*$/.test(n)?i===n.replace(/\/.*$/,""):o===n})}}();if("object"==typeof r)return r.v}return!0},t.exports=n["default"]},function(t,n){var r=t.exports={version:"1.2.2"};"number"==typeof __e&&(__e=r)},function(t,n){var r=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},function(t,n,r){var e=r(2),o=r(1),i=r(4),c=r(19),u="prototype",f=function(t,n){return function(){return t.apply(n,arguments)}},s=function(t,n,r){var a,p,l,y,d=t&s.G,h=t&s.P,v=d?e:t&s.S?e[n]||(e[n]={}):(e[n]||{})[u],x=d?o:o[n]||(o[n]={});d&&(r=n);for(a in r)p=!(t&s.F)&&v&&a in v,l=(p?v:r)[a],y=t&s.B&&p?f(l,e):h&&"function"==typeof l?f(Function.call,l):l,v&&!p&&c(v,a,l),x[a]!=l&&i(x,a,y),h&&((x[u]||(x[u]={}))[a]=l)};e.core=o,s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,t.exports=s},function(t,n,r){var e=r(5),o=r(18);t.exports=r(22)?function(t,n,r){return e.setDesc(t,n,o(1,r))}:function(t,n,r){return t[n]=r,t}},function(t,n){var r=Object;t.exports={create:r.create,getProto:r.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:r.getOwnPropertyDescriptor,setDesc:r.defineProperty,setDescs:r.defineProperties,getKeys:r.keys,getNames:r.getOwnPropertyNames,getSymbols:r.getOwnPropertySymbols,each:[].forEach}},function(t,n){var r=0,e=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++r+e).toString(36))}},function(t,n,r){var e=r(20)("wks"),o=r(2).Symbol;t.exports=function(t){return e[t]||(e[t]=o&&o[t]||(o||r(6))("Symbol."+t))}},function(t,n,r){r(26),t.exports=r(1).Array.some},function(t,n,r){r(25),t.exports=r(1).String.endsWith},function(t,n){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,n){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,n,r){var e=r(10);t.exports=function(t,n,r){if(e(t),void 0===n)return t;switch(r){case 1:return function(r){return t.call(n,r)};case 2:return function(r,e){return t.call(n,r,e)};case 3:return function(r,e,o){return t.call(n,r,e,o)}}return function(){return t.apply(n,arguments)}}},function(t,n){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,n,r){t.exports=function(t){var n=/./;try{"/./"[t](n)}catch(e){try{return n[r(7)("match")]=!1,!"/./"[t](n)}catch(o){}}return!0}},function(t,n){t.exports=function(t){try{return!!t()}catch(n){return!0}}},function(t,n){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,n,r){var e=r(16),o=r(11),i=r(7)("match");t.exports=function(t){var n;return e(t)&&(void 0!==(n=t[i])?!!n:"RegExp"==o(t))}},function(t,n){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},function(t,n,r){var e=r(2),o=r(4),i=r(6)("src"),c="toString",u=Function[c],f=(""+u).split(c);r(1).inspectSource=function(t){return u.call(t)},(t.exports=function(t,n,r,c){"function"==typeof r&&(o(r,i,t[n]?""+t[n]:f.join(String(n))),"name"in r||(r.name=n)),t===e?t[n]=r:(c||delete t[n],o(t,n,r))})(Function.prototype,c,function(){return"function"==typeof this&&this[i]||u.call(this)})},function(t,n,r){var e=r(2),o="__core-js_shared__",i=e[o]||(e[o]={});t.exports=function(t){return i[t]||(i[t]={})}},function(t,n,r){var e=r(17),o=r(13);t.exports=function(t,n,r){if(e(n))throw TypeError("String#"+r+" doesn't accept regex!");return String(o(t))}},function(t,n,r){t.exports=!r(15)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,n){var r=Math.ceil,e=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?e:r)(t)}},function(t,n,r){var e=r(23),o=Math.min;t.exports=function(t){return t>0?o(e(t),9007199254740991):0}},function(t,n,r){"use strict";var e=r(3),o=r(24),i=r(21),c="endsWith",u=""[c];e(e.P+e.F*r(14)(c),"String",{endsWith:function(t){var n=i(this,t,c),r=arguments,e=r.length>1?r[1]:void 0,f=o(n.length),s=void 0===e?f:Math.min(o(e),f),a=String(t);return u?u.call(n,a,s):n.slice(s-a.length,s)===a}})},function(t,n,r){var e=r(5),o=r(3),i=r(1).Array||Array,c={},u=function(t,n){e.each.call(t.split(","),function(t){void 0==n&&t in i?c[t]=i[t]:t in[]&&(c[t]=r(12)(Function.call,[][t],n))})};u("pop,reverse,shift,keys,values,entries",1),u("indexOf,every,some,forEach,map,filter,find,findIndex,includes",3),u("join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill"),o(o.S,"Array",c)}]);
{
"name": "attr-accept",
"version": "1.0.1",
"version": "1.0.2",
"description": "JavaScript implementation of the \"accept\" attribute for HTML5 <input type=\"file\">",
"main": "dist/index.js",
"scripts": {
"build": "babel src --out-dir dist",
"build": "webpack -p",
"prepublish": "npm run check && npm run build",

@@ -35,3 +35,6 @@ "test": "mocha --compilers js:babel/register --recursive",

"babel": "^5.8.23",
"babel-core": "5.8.25",
"babel-eslint": "^4.1.1",
"babel-loader": "5.3.2",
"core-js": "1.2.2",
"eslint": "^1.3.1",

@@ -41,4 +44,8 @@ "eslint-config-airbnb": "0.0.8",

"expect": "^1.9.0",
"mocha": "^2.3.2"
"mocha": "^2.3.2",
"webpack": "1.12.2"
},
"engines": {
"node": ">=0.10"
}
}
# attr-accept
JavaScript implementation of the "accept" attribute for HTML5 <input type="file">
JavaScript implementation of the "accept" attribute for HTML5 `<input type="file">`
[![Build Status](https://travis-ci.org/okonet/attr-accept.svg?branch=master)](https://travis-ci.org/okonet/attr-accept)
See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input#Attributes for more information.
Installation
=====
Install it from npm and include it in your build process (using [Webpack](http://webpack.github.io/), [Browserify](http://browserify.org/), etc).
```sh
npm install --save attr-accept
```
Usage
=====
```javascript
var accept = require('attr-accept');
accept({
name: 'my file.png',
type: 'image/png'
}, 'image/*') // => true
accept({
name: 'my file.json',
type: 'application/json'
}, 'image/*') // => false
```

@@ -5,3 +5,3 @@ /**

*
* Borrowed from https://github.com/enyo/dropzone
* Inspired by https://github.com/enyo/dropzone
*

@@ -13,6 +13,10 @@ * @param file {File} https://developer.mozilla.org/en-US/docs/Web/API/File

import 'core-js/fn/array/some';
import 'core-js/fn/string/ends-with';
export default function(file, acceptedFiles) {
if (acceptedFiles) {
if (file && acceptedFiles) {
const acceptedFilesArray = acceptedFiles.split(',');
const mimeType = file.type;
const fileName = file.name || '';
const mimeType = file.type || '';
const baseMimeType = mimeType.replace(/\/.*$/, '');

@@ -23,3 +27,3 @@

if (validType.charAt(0) === '.') {
return (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1);
return fileName.toLowerCase().endsWith(validType.toLowerCase());
} else if (/\/\*$/.test(validType)) {

@@ -26,0 +30,0 @@ // This is something like a image/* mime type

@@ -9,2 +9,3 @@ /* eslint no-unused-expressions: 0 */

expect(accept({
name: 'testfile.png',
type: 'some/type'

@@ -14,16 +15,37 @@ }, undefined)).toBe(true);

it('should not throw and return true if file is empty or null', () => {
expect(() => {
accept({});
accept({}, 'text/html');
accept({}, '*.png');
accept({}, 'image/*');
accept(null);
accept(null, 'text/html');
accept(null, '*.png');
accept(null, 'image/*');
}).toNotThrow();
});
it('should properly validate if called with concrete mime types', () => {
const acceptedMimeTypes = 'text/html,image/jpeg,application/json';
expect(accept({
name: 'testfile.png',
type: 'text/html'
}, acceptedMimeTypes)).toBe(true);
expect(accept({
name: 'testfile.png',
type: 'image/jpeg'
}, acceptedMimeTypes)).toBe(true);
expect(accept({
name: 'testfile.png',
type: 'application/json'
}, acceptedMimeTypes)).toBe(true);
expect(accept({
name: 'testfile.png',
type: 'image/bmp'
}, acceptedMimeTypes)).toBe(false);
expect(accept({
type: 'image/bmp'
}, acceptedMimeTypes)).toBe(false);
});

@@ -34,14 +56,19 @@

expect(accept({
name: 'testfile.png',
type: 'text/html'
}, acceptedMimeTypes)).toBe(true);
expect(accept({
name: 'testfile.png',
type: 'image/jpeg'
}, acceptedMimeTypes)).toBe(true);
expect(accept({
name: 'testfile.png',
type: 'application/json'
}, acceptedMimeTypes)).toBe(true);
expect(accept({
name: 'testfile.png',
type: 'image/bmp'
}, acceptedMimeTypes)).toBe(true);
expect(accept({
name: 'testfile.png',
type: 'some/type'

@@ -54,14 +81,19 @@ }, acceptedMimeTypes)).toBe(false);

expect(accept({
name: 'testfile.png',
type: 'text/html'
}, acceptedMimeTypes)).toBe(true);
expect(accept({
name: 'testfile.png',
type: 'image/jpeg'
}, acceptedMimeTypes)).toBe(true);
expect(accept({
name: 'testfile.png',
type: 'image/bmp'
}, acceptedMimeTypes)).toBe(false);
expect(accept({
name: 'testfile.png',
type: 'application/json'
}, acceptedMimeTypes)).toBe(true);
expect(accept({
name: 'testfile.png',
type: 'some/type'

@@ -74,5 +106,7 @@ }, acceptedMimeTypes)).toBe(false);

expect(accept({
name: 'testfile.png',
type: 'text/html'
}, acceptedMimeTypes)).toBe(true);
expect(accept({
name: 'testfile.png',
type: 'image/jpeg'

@@ -105,3 +139,3 @@ }, acceptedMimeTypes)).toBe(true);

expect(accept({
name: 'some-file file.png',
name: 'some-FILEi File.PNG',
type: 'random/type'

@@ -108,0 +142,0 @@ }, acceptedMimeTypes)).toBe(true);

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc