Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

minio

Package Overview
Dependencies
Maintainers
4
Versions
80
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

minio - npm Package Compare versions

Comparing version 3.0.0 to 3.1.0

dist/main/listen-bucket-notification.js

17

dist/main/helpers.js

@@ -27,2 +27,3 @@ /*

exports.isVirtualHostStyle = isVirtualHostStyle;
exports.isValidIP = isValidIP;
exports.isValidEndpoint = isValidEndpoint;

@@ -88,6 +89,6 @@ exports.isValidDomain = isValidDomain;

// isAmazonEndpoint - true if endpoint is 's3.amazonaws.com'.
// isAmazonEndpoint - true if endpoint is 's3.amazonaws.com' or 's3.cn-north-1.amazonaws.com.cn'
function isAmazonEndpoint(endpoint) {
return endpoint === 's3.amazonaws.com';
return endpoint === 's3.amazonaws.com' || endpoint === 's3.cn-north-1.amazonaws.com.cn';
}

@@ -108,10 +109,16 @@

var ipv4Regex = /^(\d{1,3}\.){3,3}\d{1,3}$/;
function isValidIP(ip) {
return ipv4Regex.test(ip);
}
// isValidEndpoint - true if endpoint is valid domain.
function isValidEndpoint(endpoint) {
if (!isValidDomain(endpoint)) {
if (!isValidDomain(endpoint) && !isValidIP(endpoint)) {
return false;
}
// Endpoint matches amazon, make sure its 's3.amazonaws.com'
if (endpoint.match('.amazonaws.com$')) {
if (endpoint.match('.amazonaws.com$') || endpoint.match('.amazonaws.com.cn$')) {
if (!isAmazonEndpoint(endpoint)) {

@@ -121,3 +128,3 @@ return false;

}
// Returning true for all other cases.
// Return true.
return true;

@@ -124,0 +131,0 @@ }

@@ -195,3 +195,3 @@ /*

function NotificationPoller(client, bucketName, notificationARN) {
function NotificationPoller(client, bucketName, prefix, suffix, events) {
_classCallCheck(this, NotificationPoller);

@@ -203,3 +203,5 @@

this.bucketName = bucketName;
this.notificationARN = notificationARN;
this.prefix = prefix;
this.suffix = suffix;
this.events = events;

@@ -238,4 +240,22 @@ this.ending = false;

var method = 'GET';
var query = _querystring2['default'].stringify({ notificationARN: this.notificationARN });
var queries = [];
if (this.prefix) {
var prefix = (0, _helpers.uriEscape)(this.prefix);
queries.push('prefix=' + prefix);
}
if (this.suffix) {
var suffix = (0, _helpers.uriEscape)(this.suffix);
queries.push('suffix=' + suffix);
}
if (this.events) {
this.events.forEach(function (s3event) {
return queries.push('events=' + (0, _helpers.uriEscape)(s3event));
});
}
queries.sort();
var query = '';
if (queries.length > 0) {
query = '' + queries.join('&');
}
this.client.makeRequest({ method: method, bucketName: this.bucketName, query: query }, '', 200, '', function (e, response) {

@@ -242,0 +262,0 @@ if (e) return _this2.emit('error', e);

@@ -29,5 +29,8 @@ /*

'us-east-1': 's3.amazonaws.com',
'us-east-2': 's3-us-east-2.amazonaws.com',
'us-west-1': 's3-us-west-1.amazonaws.com',
'us-west-2': 's3-us-west-2.amazonaws.com',
'ca-central-1': 's3.ca-central-1.amazonaws.com',
'eu-west-1': 's3-eu-west-1.amazonaws.com',
'eu-west-2': 's3-eu-west-2.amazonaws.com',
'sa-east-1': 's3-sa-east-1.amazonaws.com',

@@ -38,3 +41,4 @@ 'eu-central-1': 's3-eu-central-1.amazonaws.com',

'ap-southeast-2': 's3-ap-southeast-2.amazonaws.com',
'ap-northeast-1': 's3-ap-northeast-1.amazonaws.com'
'ap-northeast-1': 's3-ap-northeast-1.amazonaws.com',
'cn-north-1': 's3.cn-north-1.amazonaws.com.cn'
// Add new endpoints here.

@@ -41,0 +45,0 @@ };

@@ -24,4 +24,4 @@ /*

exports.getErrorTransformer = getErrorTransformer;
exports.getSizeLimiter = getSizeLimiter;
exports.getHashSummer = getHashSummer;
exports.getCopyObjectTransformer = getCopyObjectTransformer;
exports.getListBucketTransformer = getListBucketTransformer;

@@ -162,28 +162,2 @@ exports.getListMultipartTransformer = getListMultipartTransformer;

// Makes sure that only size number of bytes go through this stream
function getSizeLimiter(size, stream, chunker) {
var sizeRemaining = size;
return _through22['default'].obj(function (chunk, enc, cb) {
var length = Math.min(chunk.length, sizeRemaining);
// We should read only till 'size'
if (length < chunk.length) chunk = chunk.slice(0, length);
this.push(chunk);
sizeRemaining -= length;
if (sizeRemaining === 0) {
// Unpipe so that the streams do not send us more data
stream.unpipe();
chunker.unpipe();
this.push(null);
}
cb();
}, function (cb) {
if (sizeRemaining !== 0) {
return cb(new errors.IncorrectSizeError('size of the input stream is not equal to the expected size(' + size + ')'));
}
this.push(null);
cb();
});
}
// A through stream that calculates md5sum and sha256sum

@@ -213,2 +187,8 @@

// Parses CopyObject response.
function getCopyObjectTransformer() {
return getConcater(xmlParsers.parseCopyObject);
}
// Parses listBuckets response.

@@ -215,0 +195,0 @@

@@ -23,2 +23,3 @@ /*

exports.parseError = parseError;
exports.parseCopyObject = parseCopyObject;
exports.parseListMultipart = parseListMultipart;

@@ -104,2 +105,16 @@ exports.parseListBucket = parseListBucket;

// parse XML response for copy object
function parseCopyObject(xml) {
var result = {
etag: "",
lastModified: ""
};
var xmlobj = parseXml(xml);
if (xmlobj.ETag) result.etag = xmlobj.ETag[0].replace(/^\"/g, '').replace(/\"$/g, '').replace(/^&quot;/g, '').replace(/&quot;$/g, '').replace(/^&#34;/g, '').replace(/^&#34;$/g, '');
if (xmlobj.LastModified) result.lastModified = new Date(xmlobj.LastModified[0]);
return result;
}
// parse XML response for listing in-progress multipart uploads

@@ -106,0 +121,0 @@

# JavaScript Client API Reference [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/Minio/minio?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
## Initialize Minio Client object.
## Initialize Minio Client object.

@@ -29,8 +29,7 @@ ## Minio

endPoint: 's3.amazonaws.com',
accessKey: 'YOUR-ACCESSKEYID',
secretKey: 'YOUR-SECRETACCESSKEY'
accessKey: 'YOUR-ACCESSKEYID',
secretKey: 'YOUR-SECRETACCESSKEY'
})
```
| Bucket operations | Object operations | Presigned operations | Bucket Policy & Notification operations |

@@ -41,8 +40,9 @@ | ------------- |-------------| -----| ----- |

| [`bucketExists`](#bucketExists) | [`fGetObject`](#fGetObject) | [`presignedPostPolicy`](#presignedPostPolicy) | [`removeAllBucketNotification`](#removeAllBucketNotification) |
| [`removeBucket`](#removeBucket) | [`putObject`](#putObject) | | [`getBucketPolicy`](#getBucketPolicy) | [`listenBucketNotification`](#listenBucketNotification) |
| [`removeBucket`](#removeBucket) | [`putObject`](#putObject) | | [`getBucketPolicy`](#getBucketPolicy) | |
| [`listObjects`](#listObjects) | [`fPutObject`](#fPutObject) | | [`setBucketPolicy`](#setBucketPolicy)
| [`listObjectsV2`](#listObjectsV2) | [`statObject`](#statObject) |
| [`listIncompleteUploads`](#listIncompleteUploads) | |
| [`listObjectsV2`](#listObjectsV2) | [`copyObject`](#copyObject) | | [`listenBucketNotification`](#listenBucketNotification)|
| [`listIncompleteUploads`](#listIncompleteUploads) | [`statObject`](#statObject) |
| | [`removeObject`](#removeObject) |
| | [`removeIncompleteUpload`](#removeIncompleteUpload) |

@@ -70,3 +70,3 @@

| `port` | _number_ | TCP/IP port number. This input is optional. Default value set to 80 for HTTP and 443 for HTTPs. |
| `accessKey` | _string_ |accessKey is like user-id that uniquely identifies your account. |
| `accessKey` | _string_ |accessKey is like user-id that uniquely identifies your account. |
|`secretKey` | _string_ | secretKey is the password to your account.|

@@ -124,3 +124,3 @@ |`secure` | _bool_ |If set to true, https is used instead of http. Default is https if not set. |

|---|---|---|
|`bucketName` | _string_ | Name of the bucket. |
|`bucketName` | _string_ | Name of the bucket. |
| `region` | _string_ | Default value is us-east-1 Region where the bucket is created. Valid values are listed below: |

@@ -131,7 +131,8 @@ | | |us-east-1 |

| | |eu-west-1 |
| | | eu-central-1|
| | | ap-southeast-1|
| | | ap-northeast-1|
| | | ap-southeast-2|
| | | sa-east-1|
| | |eu-central-1|
| | |ap-southeast-1|
| | |ap-northeast-1|
| | |ap-southeast-2|
| | |sa-east-1|
| | |cn-north-1|
|`callback(err)` |_function_ | Callback function with `err` as the error argument. `err` is null if the bucket is successfully created. |

@@ -172,3 +173,3 @@

|`bucket.name` | _string_ |bucket name |
|`bucket.creationDate`| _Date_ |date when bucket was created. |
|`bucket.creationDate`| _Date_ |date when bucket was created. |

@@ -500,3 +501,3 @@

| `stream` | _Stream_ |Readable stream. |
|`size` | _number_ | Size of the object. |
|`size` | _number_ | Size of the object (optional). |
|`contentType` | _string_ | Content-Type of the object (optional, default `application/octet-stream`). |

@@ -519,3 +520,3 @@ | `callback(err, etag)` | _function_ | Non-null `err` indicates error, `etag` _string_ is the etag of the object uploaded.|

}
minioClient.putObject('mybucket', '40mbfile', fileStream, stats.size, 'application/octet-stream', function(err, etag) {
minioClient.putObject('mybucket', '40mbfile', fileStream, stats.size, function(err, etag) {
return console.log(err, etag) // err should be null

@@ -547,3 +548,3 @@ })

var buffer = 'Hello World'
minioClient.putObject('mybucket', 'hello-file', buffer, 'application/octet-stream', function(err, etag) {
minioClient.putObject('mybucket', 'hello-file', buffer, function(err, etag) {
return console.log(err, etag) // err should be null

@@ -583,2 +584,35 @@ })

<a name="copyObject"></a>
### copyObject(bucketName, objectName, sourceObject, conditions, callback)
Copy a source object into a new object in the specied bucket.
__Parameters__
| Param | Type | Description |
|---|---|---|
| `bucketName` | _string_ | Name of the bucket. |
|`objectName` |_string_ | Name of the object. |
| `sourceObject` | _string_ | Path of the file to be copied. |
| `conditions` | _CopyConditions_ | Conditions to be satisfied before allowing object copy. |
| `callback(err, {etag, lastModified})` | _function_ | Non-null `err` indicates error, `etag` _string_ and lastModified _Date_ are the etag and the last modified date of the object newly copied. |
__Example__
```js
var conds = new Minio.CopyConditions()
conds.setMatchETag('bd891862ea3e22c93ed53a098218791d')
minioClient.copyObject('mybucket', 'newobject', '/mybucket/srcobject', conds, function(e, data) {
if (e) {
return console.log(e)
}
console.log("Successfully copied the object:")
console.log("etag = " + data.etag + ", lastModified = " + data.lastModified)
})
```
<a name="statObject"></a>

@@ -921,6 +955,8 @@ ### statObject(bucketName, objectName, callback)

<a name="listenBucketNotification"></a>
### listenBucketNotification(bucketName, notificationARN)
### listenBucketNotification(bucketName, prefix, suffix, events)
Listen for notifications on a bucket, using the given notification ARN. The bucket
must already have a notification configuration set.
Listen for notifications on a bucket. Additionally one can provider
filters for prefix, suffix and events. There is no prior set bucket notification
needed to use this API. This is an Minio extension API where unique identifiers
are regitered and unregistered by the server automatically based on incoming requests.

@@ -936,17 +972,13 @@ Returns an `EventEmitter`, which will emit a `notification` event carrying the record.

| `bucketName` | _string_ | Name of the bucket |
| `notificationARN` | _string_ | Amazon Resource Name, built using `Minio.buildARN`. |
| `prefix` | _string_ | Object key prefix to filter notifications for. |
| `suffix` | _string_ | Object key suffix to filter notifications for. |
| `events` | _Array_ | Enables notifications for specific event types. |
See [here](../examples/minio/listen-bucket-notification.js) for a full example.
See [here](https://github.com/minio/minio-js/blob/master/examples/minio/listen-bucket-notification.js) for a full example.
```js
// 'us-east-1' may have to be replaced with your bucket region (use `getBucketRegion`).
// '123' is an account ID, which need not be changed.
var arn = Minio.buildARN('minio', 'sns', 'us-east-1', '123', 'listen')
var listener = minioClient.listenBucketNotification('my-bucketname', arn)
var listener = minioClient.listenBucketNotification('my-bucketname', 'photos/', '.jpg', ['s3:ObjectCreated:*'])
listener.on('notification', function(record) {
// For example: 's3:ObjectCreated:Put event occurred (2016-08-23T18:26:07.214Z)'
console.log('%s event occurred (%s)', record.eventName, record.eventTime)
listener.stop()

@@ -1016,2 +1048,1 @@ })

- [Build your own Shopping App Example](https://docs.minio.io/docs/javascript-shopping-app)

@@ -28,58 +28,35 @@ /*

s3Client.getBucketRegion('bucket1', (err, location) => {
// Build an ARN. `minio`, `sns`, and `listen` are all standard and need
// not be changed. Only `location` must be loaded, and the account ID
// (`123`) doesn't matter.
let arn = Minio.buildARN('minio', 'sns', location, '123', 'listen')
// Start listening for notifications on the bucket, using our arn.
let poller = s3Client.listenBucketNotification('bucket1', 'photos/', '.jpg', ['s3:ObjectCreated:*'])
// Notification will be emitted every time a new notification is received.
// For object creation, here is a sample record:
// For this example, we'll listen for object creations.
let topic = new Minio.TopicConfig(arn)
topic.addEvent(Minio.ObjectCreatedAll)
// { eventVersion: '2.0',
// eventSource: 'aws:s3',
// awsRegion: 'us-east-1',
// eventTime: '2016-08-23T18:26:07.214Z',
// eventName: 's3:ObjectCreated:Put',
// userIdentity: { principalId: 'minio' },
// requestParameters: { sourceIPAddress: '...' },
// responseElements: {},
// s3:
// { s3SchemaVersion: '1.0',
// configurationId: 'Config',
// bucket:
// { name: 'bucket1',
// ownerIdentity: [Object],
// arn: 'arn:aws:s3:::bucket1' },
// object: { key: 'photos%2Fobject.jpg', size: 10, sequencer: '...' } } }
poller.on('notification', record => {
console.log('New object: %s/%s (size: %d)', record.s3.bucket.name,
record.s3.object.key, record.s3.object.size)
// Create a new notification config. This will allow us to tell s3 to notify
// us when our events happen.
let bucketNotification = new Minio.NotificationConfig();
bucketNotification.add(topic)
// Now that we've received our notification, we can cancel the listener.
// We could leave it open if we wanted to continue to receive notifications.
poller.stop()
})
// We need to update the bucket notification config in order to receive updates.
s3Client.setBucketNotification('bucket1', bucketNotification, function(err) {
if (err) throw err
// Start listening for notifications on the bucket, using our arn.
let poller = s3Client.listenBucketNotification('bucket1', arn)
// Notification will be emitted every time a new notification is received.
// For object creation, here is a sample record:
// { eventVersion: '2.0',
// eventSource: 'aws:s3',
// awsRegion: 'us-east-1',
// eventTime: '2016-08-23T18:26:07.214Z',
// eventName: 's3:ObjectCreated:Put',
// userIdentity: { principalId: 'minio' },
// requestParameters: { sourceIPAddress: '...' },
// responseElements: {},
// s3:
// { s3SchemaVersion: '1.0',
// configurationId: 'Config',
// bucket:
// { name: 'bucket1',
// ownerIdentity: [Object],
// arn: 'arn:aws:s3:::bucket1' },
// object: { key: 'object', size: 10, sequencer: '...' } } }
poller.on('notification', record => {
console.log('New object: %s/%s (size: %d)', record.s3.bucket.name,
record.s3.object.key, record.s3.object.size)
// Now that we've received our notification, we can cancel the listener.
// We could leave it open if we wanted to continue to receive notifications.
poller.stop()
})
// Create an object - this should trigger a notification.
s3Client.putObject('bucket1', 'file.jpg', 'stringdata', (err, etag) => {
if (err) throw err
})
})
// Create an object - this should trigger a notification.
s3Client.putObject('bucket1', 'file.jpg', 'stringdata', (err, etag) => {
if (err) throw err
})
{
"name": "minio",
"version": "3.0.0",
"version": "3.1.0",
"description": "S3 Compatible Cloud Storage client",

@@ -5,0 +5,0 @@ "main": "./dist/main/minio.js",

@@ -16,3 +16,3 @@ # Minio JavaScript Library for Amazon S3 Compatible Cloud Storage [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/Minio/minio?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

$ npm install --save minio
npm install --save minio@3.1.0

@@ -25,6 +25,6 @@ ```

$ git clone https://github.com/minio/minio-js
$ cd minio-js
$ npm install
$ npm install -g
git clone https://github.com/minio/minio-js
cd minio-js
npm install
npm install -g

@@ -39,7 +39,7 @@

| Params | Description |
| :------- | :------------ |
| endPoint | URL to object storage service. |
| Params | Description |
| :------- | :------------ |
| endPoint | URL to object storage service. |
|port| TCP/IP port number. This input is optional. Default value set to ``80`` for HTTP and ``443`` for HTTPs.|
| accessKey | Access key is like user ID that uniquely identifies your account. |
| accessKey | Access key is like user ID that uniquely identifies your account. |
| secretKey | Secret key is the password to your account. |

@@ -63,5 +63,21 @@ |secure |Set this value to 'true' to enable secure (HTTPS) access |

If you are using minio-js version [2X](https://github.com/minio/minio-js/tree/release-2.0), Initialize Minio Client as below.
```js
var Minio = require('minio')
var minioClient = new Minio({
endPoint: 'play.minio.io',
port: 9000,
secure: true,
accessKey: 'Q3AM3UQ867SPQQA43P2F',
secretKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG'
});
```
## Quick Start Example - File Uploader
This example program connects to an object storage server, makes a bucket on the server and then uploads a file to the bucket.
This example program connects to an object storage server, makes a bucket on the server and then uploads a file to the bucket.

@@ -76,3 +92,3 @@ We will use the Minio server running at [https://play.minio.io:9000](https://play.minio.io:9000) in this example. Feel free to use this service for testing and development. Access credentials shown in this example are open to the public.

// Instantiate the minio client with the endpoint
// Instantiate the minio client with the endpoint
// and access keys as shown below.

@@ -95,4 +111,4 @@ var minioClient = new Minio.Client({

console.log('Bucket created successfully in "us-east-1".')
// Using fPutObject API upload your file to the bucket europetrip.
// Using fPutObject API upload your file to the bucket europetrip.
minioClient.fPutObject('europetrip', 'photos-europe.tar', file, 'application/octet-stream', function(err, etag) {

@@ -110,6 +126,6 @@ if (err) return console.log(err)

$ node file-uploader.js
node file-uploader.js
Bucket created successfully in "us-east-1".
$ mc ls play/europetrip/
mc ls play/europetrip/
[2016-05-25 23:49:50 PDT] 17MiB photos-europe.tar

@@ -122,3 +138,3 @@

The full API Reference is available here.
* [Complete API Reference](https://docs.minio.io/docs/javascript-client-api-reference)

@@ -133,2 +149,3 @@

* [`listObjects`](https://docs.minio.io/docs/javascript-client-api-reference#listObjects)
* [`listObjectsV2`](https://docs.minio.io/docs/javascript-client-api-reference#listObjectsV2)
* [`listIncompleteUploads`](https://docs.minio.io/docs/javascript-client-api-reference#listIncompleteUploads)

@@ -145,2 +162,3 @@

* [`putObject`](https://docs.minio.io/docs/javascript-client-api-reference#putObject)
* [`copyObject`](https://docs.minio.io/docs/javascript-client-api-reference#copyObject)
* [`statObject`](https://docs.minio.io/docs/javascript-client-api-reference#statObject)

@@ -156,3 +174,15 @@ * [`removeObject`](https://docs.minio.io/docs/javascript-client-api-reference#removeObjec)

### API Reference : Bucket Notification Operations
* [`getBucketNotification`](https://docs.minio.io/docs/javascript-client-api-reference#getBucketNotification)
* [`setBucketNotification`](https://docs.minio.io/docs/javascript-client-api-reference#setBucketNotification)
* [`removeAllBucketNotification`](https://docs.minio.io/docs/javascript-client-api-reference#removeAllBucketNotification)
* [`listenBucketNotification`](https://docs.minio.io/docs/javascript-client-api-reference#listenBucketNotification) (Minio Extension)
### API Reference : Bucket Policy Operations
* [`getBucketPolicy`](https://docs.minio.io/docs/javascript-client-api-reference#getBucketPolicy)
* [`setBucketPolicy`](https://docs.minio.io/docs/javascript-client-api-reference#setBucketPolicy)
## Full Examples

@@ -164,2 +194,3 @@

* [list-objects.js](https://github.com/minio/minio-js/blob/master/examples/list-objects.js)
* [list-objects-v2.js](https://github.com/minio/minio-js/blob/master/examples/list-objects-v2.js)
* [bucket-exists.js](https://github.com/minio/minio-js/blob/master/examples/bucket-exists.js)

@@ -177,4 +208,6 @@ * [make-bucket.js](https://github.com/minio/minio-js/blob/master/examples/make-bucket.js)

* [get-object.js](https://github.com/minio/minio-js/blob/master/examples/get-object.js)
* [copy-object.js](https://github.com/minio/minio-js/blob/master/examples/copy-object.js)
* [get-partialobject.js](https://github.com/minio/minio-js/blob/master/examples/get-partialobject.js)
* [remove-object.js](https://github.com/minio/minio-js/blob/master/examples/remove-object.js)
* [remove-incomplete-upload.js](https://github.com/minio/minio-js/blob/master/examples/remove-incomplete-upload.js)
* [stat-object.js](https://github.com/minio/minio-js/blob/master/examples/stat-object.js)

@@ -187,6 +220,15 @@

#### Full Examples: Bucket Notification Operations
* [get-bucket-notification.js](https://github.com/minio/minio-js/blob/master/examples/get-bucket-notification.js)
* [set-bucket-notification.js](https://github.com/minio/minio-js/blob/master/examples/set-bucket-notification.js)
* [remove-all-bucket-notification.js](https://github.com/minio/minio-js/blob/master/examples/remove-all-bucket-notification.js)
* [listen-bucket-notification.js](https://github.com/minio/minio-js/blob/master/examples/minio/listen-bucket-notification.js) (Minio Extension)
#### Full Examples: Bucket Policy Operations
* [get-bucket-policy.js](https://github.com/minio/minio-js/blob/master/examples/get-bucket-policy.js)
* [set-bucket-policy.js](https://github.com/minio/minio-js/blob/master/examples/set-bucket-policy.js)
## Explore Further
* [Complete Documentation](https://docs.minio.io)
* [Minio JavaScript Client SDK API Reference](https://docs.minio.io/docs/javascript-client-api-reference)
* [Minio JavaScript Client SDK API Reference](https://docs.minio.io/docs/javascript-client-api-reference)
* [Build your own Shopping App Example- Full Application Example ](https://docs.minio.io/docs/javascript-shopping-app)

@@ -193,0 +235,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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