UNPKG

7.46 kBJavaScriptView Raw
1// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2// SPDX-License-Identifier: Apache-2.0
3var MIME_MAP = [
4 { type: 'text/plain', ext: 'txt' },
5 { type: 'text/html', ext: 'html' },
6 { type: 'text/javascript', ext: 'js' },
7 { type: 'text/css', ext: 'css' },
8 { type: 'text/csv', ext: 'csv' },
9 { type: 'text/yaml', ext: 'yml' },
10 { type: 'text/yaml', ext: 'yaml' },
11 { type: 'text/calendar', ext: 'ics' },
12 { type: 'text/calendar', ext: 'ical' },
13 { type: 'image/apng', ext: 'apng' },
14 { type: 'image/bmp', ext: 'bmp' },
15 { type: 'image/gif', ext: 'gif' },
16 { type: 'image/x-icon', ext: 'ico' },
17 { type: 'image/x-icon', ext: 'cur' },
18 { type: 'image/jpeg', ext: 'jpg' },
19 { type: 'image/jpeg', ext: 'jpeg' },
20 { type: 'image/jpeg', ext: 'jfif' },
21 { type: 'image/jpeg', ext: 'pjp' },
22 { type: 'image/jpeg', ext: 'pjpeg' },
23 { type: 'image/png', ext: 'png' },
24 { type: 'image/svg+xml', ext: 'svg' },
25 { type: 'image/tiff', ext: 'tif' },
26 { type: 'image/tiff', ext: 'tiff' },
27 { type: 'image/webp', ext: 'webp' },
28 { type: 'application/json', ext: 'json' },
29 { type: 'application/xml', ext: 'xml' },
30 { type: 'application/x-sh', ext: 'sh' },
31 { type: 'application/zip', ext: 'zip' },
32 { type: 'application/x-rar-compressed', ext: 'rar' },
33 { type: 'application/x-tar', ext: 'tar' },
34 { type: 'application/x-bzip', ext: 'bz' },
35 { type: 'application/x-bzip2', ext: 'bz2' },
36 { type: 'application/pdf', ext: 'pdf' },
37 { type: 'application/java-archive', ext: 'jar' },
38 { type: 'application/msword', ext: 'doc' },
39 { type: 'application/vnd.ms-excel', ext: 'xls' },
40 { type: 'application/vnd.ms-excel', ext: 'xlsx' },
41 { type: 'message/rfc822', ext: 'eml' },
42];
43export var isEmpty = function (obj) {
44 if (obj === void 0) { obj = {}; }
45 return Object.keys(obj).length === 0;
46};
47export var sortByField = function (list, field, dir) {
48 if (!list || !list.sort) {
49 return false;
50 }
51 var dirX = dir && dir === 'desc' ? -1 : 1;
52 list.sort(function (a, b) {
53 var a_val = a[field];
54 var b_val = b[field];
55 if (typeof b_val === 'undefined') {
56 return typeof a_val === 'undefined' ? 0 : 1 * dirX;
57 }
58 if (typeof a_val === 'undefined') {
59 return -1 * dirX;
60 }
61 if (a_val < b_val) {
62 return -1 * dirX;
63 }
64 if (a_val > b_val) {
65 return 1 * dirX;
66 }
67 return 0;
68 });
69 return true;
70};
71export var objectLessAttributes = function (obj, less) {
72 var ret = Object.assign({}, obj);
73 if (less) {
74 if (typeof less === 'string') {
75 delete ret[less];
76 }
77 else {
78 less.forEach(function (attr) {
79 delete ret[attr];
80 });
81 }
82 }
83 return ret;
84};
85export var filenameToContentType = function (filename, defVal) {
86 if (defVal === void 0) { defVal = 'application/octet-stream'; }
87 var name = filename.toLowerCase();
88 var filtered = MIME_MAP.filter(function (mime) { return name.endsWith('.' + mime.ext); });
89 return filtered.length > 0 ? filtered[0].type : defVal;
90};
91export var isTextFile = function (contentType) {
92 var type = contentType.toLowerCase();
93 if (type.startsWith('text/')) {
94 return true;
95 }
96 return ('application/json' === type ||
97 'application/xml' === type ||
98 'application/sh' === type);
99};
100export var generateRandomString = function () {
101 var result = '';
102 var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
103 for (var i = 32; i > 0; i -= 1) {
104 result += chars[Math.floor(Math.random() * chars.length)];
105 }
106 return result;
107};
108export var makeQuerablePromise = function (promise) {
109 if (promise.isResolved)
110 return promise;
111 var isPending = true;
112 var isRejected = false;
113 var isFullfilled = false;
114 var result = promise.then(function (data) {
115 isFullfilled = true;
116 isPending = false;
117 return data;
118 }, function (e) {
119 isRejected = true;
120 isPending = false;
121 throw e;
122 });
123 result.isFullfilled = function () { return isFullfilled; };
124 result.isPending = function () { return isPending; };
125 result.isRejected = function () { return isRejected; };
126 return result;
127};
128export var isWebWorker = function () {
129 if (typeof self === 'undefined') {
130 return false;
131 }
132 var selfContext = self;
133 return (typeof selfContext.WorkerGlobalScope !== 'undefined' &&
134 self instanceof selfContext.WorkerGlobalScope);
135};
136export var browserOrNode = function () {
137 var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';
138 var isNode = typeof process !== 'undefined' &&
139 process.versions != null &&
140 process.versions.node != null;
141 return {
142 isBrowser: isBrowser,
143 isNode: isNode,
144 };
145};
146/**
147 * transfer the first letter of the keys to lowercase
148 * @param {Object} obj - the object need to be transferred
149 * @param {Array} whiteListForItself - whitelist itself from being transferred
150 * @param {Array} whiteListForChildren - whitelist its children keys from being transferred
151 */
152export var transferKeyToLowerCase = function (obj, whiteListForItself, whiteListForChildren) {
153 if (whiteListForItself === void 0) { whiteListForItself = []; }
154 if (whiteListForChildren === void 0) { whiteListForChildren = []; }
155 if (!isStrictObject(obj))
156 return obj;
157 var ret = {};
158 for (var key in obj) {
159 if (obj.hasOwnProperty(key)) {
160 var transferedKey = whiteListForItself.includes(key)
161 ? key
162 : key[0].toLowerCase() + key.slice(1);
163 ret[transferedKey] = whiteListForChildren.includes(key)
164 ? obj[key]
165 : transferKeyToLowerCase(obj[key], whiteListForItself, whiteListForChildren);
166 }
167 }
168 return ret;
169};
170/**
171 * transfer the first letter of the keys to lowercase
172 * @param {Object} obj - the object need to be transferred
173 * @param {Array} whiteListForItself - whitelist itself from being transferred
174 * @param {Array} whiteListForChildren - whitelist its children keys from being transferred
175 */
176export var transferKeyToUpperCase = function (obj, whiteListForItself, whiteListForChildren) {
177 if (whiteListForItself === void 0) { whiteListForItself = []; }
178 if (whiteListForChildren === void 0) { whiteListForChildren = []; }
179 if (!isStrictObject(obj))
180 return obj;
181 var ret = {};
182 for (var key in obj) {
183 if (obj.hasOwnProperty(key)) {
184 var transferredKey = whiteListForItself.includes(key)
185 ? key
186 : key[0].toUpperCase() + key.slice(1);
187 ret[transferredKey] = whiteListForChildren.includes(key)
188 ? obj[key]
189 : transferKeyToUpperCase(obj[key], whiteListForItself, whiteListForChildren);
190 }
191 }
192 return ret;
193};
194/**
195 * Return true if the object is a strict object
196 * which means it's not Array, Function, Number, String, Boolean or Null
197 * @param obj the Object
198 */
199export var isStrictObject = function (obj) {
200 return (obj instanceof Object &&
201 !(obj instanceof Array) &&
202 !(obj instanceof Function) &&
203 !(obj instanceof Number) &&
204 !(obj instanceof String) &&
205 !(obj instanceof Boolean));
206};