New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

omi

Package Overview
Dependencies
Maintainers
1
Versions
373
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

omi - npm Package Compare versions

Comparing version 0.3.2 to 0.3.3

docs/en_lifecycle.md

66

dist/omi.lite.js
/*!
* Omi v0.3.2 By dntzhang
* Omi v0.3.3 By dntzhang
* Github: https://github.com/AlloyTeam/omi

@@ -643,3 +643,3 @@ * MIT Licensed.

//childStr = childStr.replace("<child", "<div").replace("/>", "></div>");
this._mergeData(childStr, isFirst);
this._mergeData(childStr);
this._generateHTMLCSS();

@@ -772,16 +772,8 @@ this._extractChildren(this);

key: '_mergeData',
value: function _mergeData(childStr, isFirst) {
var arr = childStr.match(/\s+data=['|"](\S*)['|"][\s+|/]/);
if (isFirst) {
var parentData = arr ? this._extractPropertyFromString(RegExp.$1, this.parent) : null;
var groupArr = childStr.match(/\s+group-data=['|"](\S*)['|"][\s+|/]/);
this.data = Object.assign(this.data, this._dataset, parentData, groupArr ? this._extractPropertyFromString(RegExp.$1, this.parent)[this._omiGroupDataIndex] : null);
value: function _mergeData(childStr) {
if (this.dataFirst) {
this.data = Object.assign({}, this._getDataset(childStr), this.data);
} else {
if (this.dataFirst) {
this.data = Object.assign({}, this._getDataset(childStr), this.data);
} else {
this.data = Object.assign({}, this.data, this._getDataset(childStr));
}
this.data = Object.assign({}, this.data, this._getDataset(childStr));
}
isFirst && this.install();
}

@@ -870,33 +862,45 @@ }, {

(function () {
var ChildClass = _omi2['default'].getClassFromString(name);
if (!ChildClass) throw "Can't find Class called [" + name + "]";
var sub_child = new ChildClass(Object.assign({}, child.childrenData[i]), false);
sub_child._omiChildStr = childStr;
sub_child.parent = child;
sub_child.___omi_constructor_name = name;
sub_child._dataset = {};
var baseData = {};
var dataset = {};
var dataFromParent = {};
var groupData = {};
var omiID = null;
var instanceName = null;
Object.keys(attr).forEach(function (key) {
var value = attr[key];
if (key.indexOf('on') === 0) {
var handler = sub_child.parent[value];
var handler = child[value];
if (handler) {
sub_child.data[key] = handler.bind(sub_child.parent);
baseData[key] = handler.bind(child);
}
} else if (key === 'omi-id') {
omiID = value;
} else if (key === 'name') {
instanceName = value;
} else if (key === 'group-data') {
if (child._omiGroupDataCounter.hasOwnProperty(value)) {
child._omiGroupDataCounter[value]++;
sub_child._omiGroupDataIndex = child._omiGroupDataCounter[value];
} else {
sub_child._omiGroupDataIndex = child._omiGroupDataCounter[value] = 0;
child._omiGroupDataCounter[value] = 0;
}
} else if (key === 'omi-id') {
_omi2['default'].mapping[value] = sub_child;
} else if (key === 'name') {
child[value] = sub_child;
groupData = _this9._extractPropertyFromString(value, child)[child._omiGroupDataCounter[value]];
} else if (key.indexOf('data-') === 0) {
sub_child._dataset[_this9._capitalize(key.replace('data-', ''))] = value;
dataset[_this9._capitalize(key.replace('data-', ''))] = value;
} else if (key === 'data') {
dataFromParent = _this9._extractPropertyFromString(value, child);
}
});
var ChildClass = _omi2['default'].getClassFromString(name);
if (!ChildClass) throw "Can't find Class called [" + name + "]";
var sub_child = new ChildClass(Object.assign(baseData, child.childrenData[i], dataset, dataFromParent, groupData), false);
sub_child._omiChildStr = childStr;
sub_child.parent = child;
sub_child.___omi_constructor_name = name;
sub_child._dataset = {};
sub_child.install();
omiID && (_omi2['default'].mapping[omiID] = sub_child);
instanceName && (child[instanceName] = sub_child);
if (!cmi) {

@@ -903,0 +907,0 @@ child.children.push(sub_child);

@@ -152,3 +152,3 @@ <h2 id="组件通讯">组件通讯</h2>

通用this.childrenData传递data给子组件,childrenData是一个数组类型,所以支持同时给多个组件传递data,与render里面的组件会一一对应上。
使用this.childrenData传递data给子组件,childrenData是一个数组类型,所以支持同时给多个组件传递data,与render里面的组件会一一对应上。

@@ -155,0 +155,0 @@ ### group-data通讯

@@ -89,3 +89,3 @@ <h2 id="组件">组件</h2>

this.data.length = this.data.items.length;
this.childrenData = [ { items : this.data.items } ];
this.listData = { items : this.data.items };
}

@@ -115,3 +115,3 @@

<h3>TODO</h3>
<List omi-id="list" name="list" />
<List name="list" data="listData" />
<form onsubmit="add(event)" >

@@ -127,7 +127,10 @@ <input type="text" onchange="handleChange(this)" value="{{text}}" />

* 第3行,通过makeHTML方法把组件制作成可以在render中使用的标签。当然Omi.makeHTML('List', List);也可以写在List组件的代码下面。
* 第9行,通过设置this.childrenData可以把参数传递给子组件。this.childrenData是个数组,这样就支持多child的情况。
* 第34行,在render方法中使用List组件。其中name方法可以让你在代码里通过this快速方法到该组件的实例。omi-id可以让你通过Omi.mapping['list']快速访问到组件对象的实例。
* 第34行,在父组件上定义listData属性用来传递给子组件。
* 第34行,在render方法中使用List组件。其中name方法可以让你在代码里通过this快速方法到该组件的实例。data="listData"可以让你把this.listData传递给子组件。
需要注意的是,this.childrenData传递给子组件的data是一锤子买卖,data会被克隆到子组件。意思就是后续只能改变子组件实例的data属性再update才能改变页面。关于Omi组件通讯其实有4种方案,这个后续教程会专门来讲。
需要注意的是,父组件的this.listData会被通过Object.assign浅拷贝到子组件。
这样做的目的主要是希望以后DOM的变更都尽量修改子组件自身的data,然后再调用其update方法,而不是去更改父组件的listData。
关于Omi组件通讯其实有4种方案,这个后续教程会专门来讲。
<a href="http://alloyteam.github.io/omi/website/redirect.html?type=todo_nest" target="_blank">点击这里→在线试试</a>

@@ -1,2 +0,2 @@

<h2 id="component-communication">Component Communication</h2>
<h2 id="Communication">Component Communication</h2>

@@ -152,7 +152,7 @@ Communication between [Omi](https://github.com/AlloyTeam/omi) components is very flexible, there are many options:

通用this.childrenData传递data给子组件,childrenData是一个数组类型,所以支持同时给多个组件传递data,与render里面的组件会一一对应上。
We can use `this.childrenData` to transfer data to the sub-component. In this case, `childrenData` is an array, so it can pass data to multiple components in the same time. In the meanwhile, the data will be passed to components one by one.
### group-data通讯
### Communicate by `group-data`
childrenData的方式可以批量传递数据给组件,但是有很多场景下data的来源不一定非要都从childrenData来,childrenData是个数组,会和组件的顺序一一对应,这就给不同传递方式的data必须全部集中的childrenData中,非常不方便。group-data专门为解决上面的痛点而生,专门是为了给一组组件批量传递data。
`childrenData` can pass data to multiple components. However, there are many scenes where the source of data does not have to be from `childrenData`. `childrenData` is an array, and it should be the same order with the components, so that the data must all concentrated in `childrenData`, it's very inconvenient. `group-data` dedicated to solve the above pain points, specifically to pass data to a group of components.

@@ -186,11 +186,12 @@ ```js

只需要在声明的子组件上标记group-data,就会去当前组件的instance(也就是this)下面找对应的属性,然后根据当前的位置,和对应数组的位置会一一对应起来。
By declaring a `group-data` tag in the sub-components, it will go to the current instance of the component (that is, `this`) to find the corresponding property. Then according to the current location, the data will pass to the positions one by one.
运行结果如下:
![](http://images2015.cnblogs.com/blog/105416/201702/105416-20170216110701535-1698390390.png)
The results are as follows:
<a href="http://alloyteam.github.io/omi/website/redirect.html?type=group_data" target="_blank">点击这里→group-data</a>
![group-data results](http://images2015.cnblogs.com/blog/105416/201702/105416-20170216110701535-1698390390.png)
同样group-data支持复杂数据类型的映射,需要注意的是,group-data映射的终点必须是一个数组:
<a href="http://alloyteam.github.io/omi/website/redirect.html?type=group_data" target="_blank">Click me for the group-data example</a>
Similarly, `group-data` supports the mapping of complex data types. It should be noted that the end of the group-data mapping must be an array:
```js

@@ -239,5 +240,5 @@ import Hello from './hello.js';

<a href="http://alloyteam.github.io/omi/website/redirect.html?type=group_data_complex" target="_blank">点击这里→group-data映射复杂数据</a>
<a href="http://alloyteam.github.io/omi/website/redirect.html?type=group_data_complex" target="_blank">Click me for the complex group-data mapping</a>
### 通过对象实例
### By object instance

@@ -268,3 +269,3 @@ ```js

### 通过omi-id
### By omi-id

@@ -296,11 +297,12 @@ ```js

通过在组件上声明omi-id,在程序任何地方拿到该对象的实例。这个可以算是跨任意组件通讯神器。
By declaring `omi-id` on the component, we can get the instance of the object anywhere in the program. This can be regarded as any component communication artifacts.
### 特别强调
### Warm Tips
* 通过childrenData或者data方式通讯都是一锤子买卖。后续变更只能通过组件实例下的data属性去更新组件
* 通过data-✼通讯也是一锤子买卖。后续变更只能通过组件实例下的data属性去更新组件。
* 关于data-✼通讯也可以不是一锤子买卖,但是要设置组件实例的dataFirst为false,这样的话data-✼就会覆盖组件实例的data对应的属性
- The data that passed by `childrenData` or `data` is shadow copied to sub-components. In order to update it, we need to update the `data` attribute of the component instance.
- The data that passed by `data-*` is also shadow copied to sub-components. In order to update it, we need to update the `data` attribute of the component instance.
- If we set the `dataFirst` property of the component instance to `false`, then `data-*` will override the `data` of component instance.
关于上面的第三条也就是这样的逻辑伪代码:
For the third tip, please checkout the pseudo-code:
```js

@@ -307,0 +309,0 @@ if(this.dataFirst){

@@ -1,2 +0,2 @@

<h2 id="components">Components</h2>
<h2 id="Components">Components</h2>

@@ -91,3 +91,3 @@ [Omi](https://github.com/AlloyTeam/omi) is based entirely on component architecture, which allows developers to build web applications like building blocks. Everything is components, components can be nested to create new components.

this.data.length = this.data.items.length;
this.childrenData = [ { items : this.data.items } ];
this.listData = { items : this.data.items };
}

@@ -117,3 +117,3 @@

<h3>TODO</h3>
<List omi-id="list" name="list" />
<List name="list" data="listData" />
<form onsubmit="add(event)" >

@@ -129,6 +129,6 @@ <input type="text" onchange="handleChange(this)" value="{{text}}" />

- In line 3, we use `makeHTML` to make the component to a tag which can be used in render method. Of course, `Omi.makeHTML('List', List);` can also be written in the end of List component.
- In line 9, by setting `this.childrenData`, we can pass parameters to subcomponents. `this.childrenData` is an array, which supports multiple child.
- In line 34, we use List component in the render method. `name` attribute allows us easily find the instance of the component by using `this`. `omi-id` attribute allows us easily find the instance of the component by using `Omi.mapping['list']`.
- In line 9, the parent component defines the 'listData' property
- In line 34, we use List component in the render method. `name` attribute allows us easily find the instance of the component by using `this`.`data="listData"` attribute allows us easily pass `this.listData` to the sub component from parent component.
It should be noted that the `data` passed from `this.childrenData` is cloned to the subcomponents, which means if we want to change the DOM, we need to first update the `data` of the instance of subcomponent and secondly call the `update` method.
It should be noted that the `data` passed from `data="listData"` is cloned to the subcomponents by Object.assign(shallow copy) , which means if we want to change the DOM, we recommend that first update the `data` of the instance of subcomponent(not the parent component's `listData` ) and secondly call the `update` method.

@@ -135,0 +135,0 @@ In fact there are 4 way to communicate between components, it'll be explained later.

@@ -10,3 +10,3 @@ import Omi from '../../src/index.js';

this.data.length = this.data.items.length;
this.childrenData = [ { items : this.data.items } ];
this.listData = { items : this.data.items };
}

@@ -36,3 +36,3 @@

<h3>TODO</h3>
<List omi-id="list" name="list" />
<List name="list" data="listData" />
<form onsubmit="add(event)" >

@@ -39,0 +39,0 @@ <input type="text" onchange="handleChange(this)" value="{{text}}" />

{
"name": "omi",
"version": "0.3.2",
"version": "0.3.3",
"description": "Open and modern framework for building user interfaces.",

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

@@ -25,2 +25,12 @@ <p align="center">

## 特性
* 超小的尺寸,7 kb (gzip)
* 良好的兼容性,支持IE8
* 完全面向对象的组件体系
* 局部CSS,HTML+ Scoped CSS + JS组成可复用的组件
* 更自由的更新,每个组件都有update方法,自由选择时机进行更新
* 模板引擎可替换,开发者可以重写Omi.template方法来使用任意模板引擎
* 提供了ES6+和ES5的两种开发方案供开发者自由选择
## 生态

@@ -107,2 +117,12 @@

## Fetures
* Super tiny size, 7 KB (gzip)
* Good compatibility, support IE8
* Fully object-oriented component system
* Support Scoped CSS, reusable components are composed of HTML, Scoped CSS and JS
* More free updates, each component has a update method, free to choose the right time to update
* Template engines can be replaced, developers can override the Omi.template method to use any template engine
* Provides two development way ( ES6+ and ES5) for developers to choose freely
## Plugins

@@ -177,3 +197,11 @@

## Contributors
|name |avatars |company |
|---|---|---|
| [xcatliu](https://github.com/xcatliu) | ![](https://avatars3.githubusercontent.com/u/5453359?v=3&amp;s=60) | Microsoft |
| [pasturn](https://github.com/pasturn) | ![](https://avatars2.githubusercontent.com/u/6126885?v=3&s=60) | |
| [dntzhang](https://github.com/dntzhang) | ![](https://avatars2.githubusercontent.com/u/7917954?v=3&s=60) | Tencent |
# License
This content is released under the [MIT](http://opensource.org/licenses/MIT) License.

@@ -214,3 +214,3 @@ import Omi from './omi.js';

//childStr = childStr.replace("<child", "<div").replace("/>", "></div>");
this._mergeData(childStr,isFirst);
this._mergeData(childStr);
this._generateHTMLCSS();

@@ -329,16 +329,8 @@ this._extractChildren(this);

_mergeData(childStr,isFirst) {
let arr = childStr.match(/\s+data=['|"](\S*)['|"][\s+|/]/);
if(isFirst) {
let parentData = arr ? this._extractPropertyFromString(RegExp.$1, this.parent) : null;
let groupArr = childStr.match(/\s+group-data=['|"](\S*)['|"][\s+|/]/);
this.data = Object.assign(this.data, this._dataset, parentData, groupArr ? this._extractPropertyFromString(RegExp.$1, this.parent)[this._omiGroupDataIndex] : null);
_mergeData(childStr) {
if(this.dataFirst){
this.data = Object.assign({},this._getDataset(childStr),this.data);
}else{
if(this.dataFirst){
this.data = Object.assign({},this._getDataset(childStr),this.data);
}else{
this.data = Object.assign({},this.data, this._getDataset(childStr));
}
this.data = Object.assign({},this.data, this._getDataset(childStr));
}
isFirst && this.install();
}

@@ -417,33 +409,46 @@

} else {
let ChildClass = Omi.getClassFromString(name);
if (!ChildClass) throw "Can't find Class called [" + name+"]";
let sub_child = new ChildClass( Object.assign({},child.childrenData[i] ),false);
sub_child._omiChildStr = childStr;
sub_child.parent = child;
sub_child.___omi_constructor_name = name;
sub_child._dataset = {};
let baseData = {};
let dataset = {};
let dataFromParent = {};
let groupData = {};
let omiID = null;
let instanceName = null;
Object.keys(attr).forEach(key => {
const value = attr[key];
if (key.indexOf('on') === 0) {
let handler = sub_child.parent[value];
let handler = child[value];
if (handler) {
sub_child.data[key] = handler.bind(sub_child.parent);
baseData[key] = handler.bind(child);
}
} else if (key === 'group-data') {
} else if (key === 'omi-id'){
omiID = value;
}else if (key === 'name'){
instanceName = value;
}else if (key === 'group-data') {
if (child._omiGroupDataCounter.hasOwnProperty(value)) {
child._omiGroupDataCounter[value]++;
sub_child._omiGroupDataIndex = child._omiGroupDataCounter[value];
} else {
sub_child._omiGroupDataIndex = child._omiGroupDataCounter[value] = 0;
child._omiGroupDataCounter[value] = 0;
}
} else if (key === 'omi-id'){
Omi.mapping[value] = sub_child;
}else if (key === 'name'){
child[value] = sub_child;
}else if(key.indexOf('data-') === 0){
sub_child._dataset[this._capitalize(key.replace('data-', ''))] = value;
groupData = this._extractPropertyFromString(value,child)[child._omiGroupDataCounter[value]];
} else if(key.indexOf('data-') === 0){
dataset[this._capitalize(key.replace('data-', ''))] = value;
}else if(key === 'data'){
dataFromParent = this._extractPropertyFromString(value,child);
}
});
let ChildClass = Omi.getClassFromString(name);
if (!ChildClass) throw "Can't find Class called [" + name+"]";
let sub_child = new ChildClass( Object.assign(baseData,child.childrenData[i],dataset,dataFromParent,groupData ),false);
sub_child._omiChildStr = childStr;
sub_child.parent = child;
sub_child.___omi_constructor_name = name;
sub_child._dataset = {};
sub_child.install();
omiID && (Omi.mapping[omiID] = sub_child);
instanceName && (child[instanceName] = sub_child);
if (!cmi) {

@@ -450,0 +455,0 @@ child.children.push(sub_child);

@@ -66,3 +66,3 @@ // Karma configuration

// if true, Karma captures browsers, runs the tests and exits
singleRun: false,
singleRun: true,

@@ -69,0 +69,0 @@ // Concurrency level

@@ -75,3 +75,3 @@ var path = require('path');

// Avoid publishing files when compilation fails
new webpack.BannerPlugin(" Omi v0.3.2 By dntzhang \r\n Github: https://github.com/AlloyTeam/omi\r\n MIT Licensed."),
new webpack.BannerPlugin(" Omi v0.3.3 By dntzhang \r\n Github: https://github.com/AlloyTeam/omi\r\n MIT Licensed."),
new webpack.NoErrorsPlugin()

@@ -87,4 +87,8 @@ ],

}else if(ENV === 'website') {
config.entry = './website/js/docs_main.js';
config.entry ={
bundler: './website/js/docs_main.js',
bundler_en: './website/js/docs_main_en.js'
}
config.output.path = './website/dist/';
config.output.filename = '[name].js';
config.module.loaders.push( { test: /\.md$/, loader: "md-text" });

@@ -91,0 +95,0 @@ }else {

@@ -24,3 +24,3 @@ import Omi from '../../src/index.js';

install() {
this.data.html = marked(getMarkDownByArr(config.mds, 'cn'));
this.data.html = marked(getMarkDownByArr(config.mds[this.data.lan], this.data.lan));
}

@@ -27,0 +27,0 @@

@@ -52,2 +52,3 @@ import Omi from '../../src/index.js';

highlightBlock(lh) {
if(this.data.lan === 'en') return;
var codes = document.querySelectorAll("code");

@@ -67,3 +68,3 @@ for (let i = 0, len = codes.length; i < len; i++) {

for (let key in config.highlight) {
pres[key].setAttribute("data-line", highlight[key]);
pres[key]&&pres[key].setAttribute("data-line", highlight[key]);
}

@@ -80,3 +81,3 @@

return `<div>
<Head />
<Head data-lan="{{lan}}" />
<div class="main" style="height:{{height}}px;width:{{width}}px;">

@@ -83,0 +84,0 @@ <Content data-lan="{{lan}}" />

@@ -1,2 +0,2 @@

import Omi from '../../src/index.js';
import Omi from '../../src/index.js';

@@ -8,2 +8,6 @@ class Head extends Omi.Component {

install(){
this.data.isEnLan = this.data.lan === 'en';
}
style () {

@@ -63,5 +67,12 @@ return `

<ul class="menu">
<li class="github_li"><a href="https://github.com/AlloyTeam/omi">Github</a>
<li><a href="http://alloyteam.github.io/omi/example/playground/">Playground</a></li>
<li><a href="https://github.com/AlloyTeam/omi/tree/master/docs">[Edit the Docs]</a></li>
{{#isEnLan}}
<li class="github_li"><a href="docs.html">中文</a>
{{/isEnLan}}
{{^isEnLan}}
<li class="github_li"><a href="docs_en.html">English</a>
{{/isEnLan}}
</li>

@@ -68,0 +79,0 @@ </ul>

@@ -13,3 +13,3 @@ import Omi from '../../src/index.js';

install () {
this.data.items = config[this.data.lan+'_menus'] ;
this.data.items = config['menus'][this.data.lan] ;
this.data.height = window.innerHeight -45;

@@ -16,0 +16,0 @@ }

@@ -26,45 +26,51 @@ const config = {

},
mds:['installation', 'hello_world', 'components', 'communication', 'lifecycle', 'events', 'condition', 'loop', 'form', 'inherit', 'template', 'get_dom', 'thinking_in_omi','pr_env','pr_hello'],
cn_menus:[
{title: "快速开始", list: [
{"name": "安装"},
{"name": "Hello World"},
{"name": "组件"},
{"name": "组件通讯"},
{"name": "生命周期"},
{"name": "事件处理"},
{"name": "条件判断"},
{"name": "循环遍历"},
{"name": "表单"},
{"name": "继承"},
//{"name": "容器系统"},
{"name": "模板切换"},
{"name": "获取DOM节点"},
//{"name": "服务器端渲染"},
{"name": "Omi的理念"}
]},
{title: "Omi原理", list: [
{"name": "环境搭建"},
{"name": "Hello Omi"},
{"name": "未完待续.."},
{"name": "..."}
mds:{
cn:['installation', 'hello_world', 'components', 'communication', 'lifecycle', 'events', 'condition', 'loop', 'form', 'inherit', 'template', 'get_dom', 'thinking_in_omi','pr_env','pr_hello'],
en:['installation', 'hello_world', 'components', 'communication', 'lifecycle']
},
menus:{
cn:[
{title: "快速开始", list: [
{"name": "安装"},
{"name": "Hello World"},
{"name": "组件"},
{"name": "组件通讯"},
{"name": "生命周期"},
{"name": "事件处理"},
{"name": "条件判断"},
{"name": "循环遍历"},
{"name": "表单"},
{"name": "继承"},
//{"name": "容器系统"},
{"name": "模板切换"},
{"name": "获取DOM节点"},
//{"name": "服务器端渲染"},
{"name": "Omi的理念"}
]},
{title: "Omi原理", list: [
{"name": "环境搭建"},
{"name": "Hello Omi"},
{"name": "未完待续.."},
{"name": "..."}
]}
],
en_menu:[
{title: "QUICK START", list: [
{"name": "Installation"},
{"name": "Hello World"},
{"name": "Components"},
{"name": "Lifecycle"},
{"name": "Handling Events"},
{"name": "Conditional Rendering"},
{"name": "Lists and Keys"},
{"name": "Forms"},
{"name": "Inheritance"},
{"name": "Sever-side Rendering"},
{"name": "Thinking In Omi"}
]},
{title: "Principle of Omi", list: [ {"name": "Scoped CSS"}]}
]
]}
],
en:[
{title: "QUICK START", list: [
{"name": "Installation"},
{"name": "Hello World"},
{"name": "Components"},
{"name": "Communication"},
{"name": "Lifecycle"}
//{"name": "Handling Events"},
//{"name": "Conditional Rendering"},
//{"name": "Lists and Keys"},
//{"name": "Forms"},
//{"name": "Inheritance"},
//{"name": "Sever-side Rendering"},
//{"name": "Thinking In Omi"}
]},
{title: "Principle of Omi", list: [ {"name": "Coming soom.."}]}
]
}

@@ -71,0 +77,0 @@ }

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

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

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

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 too big to display

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

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