提交 8c636bfc authored 作者: supj's avatar supj

1、将外部库迁移初始化。已不维护

上级
.DS_Store
node_modules
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
/package-lock.json
/dist/compatible-tools.js
/dist/
/yarn.lock
build
example
docs
babel.config.js
.prettierignore
prettier.config.js
postcss.config.js
.eslintrc.js
.travis.yml
.eslintrc.js
.eslintignore
yarn.lock
jest.config.js
cypress.json
node_modules
.browserslistrc
yarn-error.log
npm-debug.log
dist
test
src
lib/*/*.map
{
"presets": [
["@babel/env"]
],
"plugins": [
"@babel/plugin-transform-runtime"
]
}
import {terser} from 'rollup-plugin-terser';
import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import babel from 'rollup-plugin-babel';
import path from "path";
const pkg = require('../package.json')
const resolveFile = (...args) => path.resolve(...args);
let inputFile=resolveFile("./src/index.js")
export default {
input: inputFile,
output: [
{
file:resolveFile(pkg.main),
format: 'cjs',
exports: "named"
},
// 输出 es 规范的代码
{
file: resolveFile(pkg.module),
format: 'esm',
sourcemap: false,
exports: "named"
}
],
plugins: [
resolve(), commonjs(),
babel({runtimeHelpers: true, exclude: 'node_modules/**',}),
terser(),
]
};
declare class CountDownTimer {
constructor(millisInFuture: number, countDownInterval: number)
/**
* 开启倒计时
*/
start(): void;
/**
* 取消倒计时
*/
cancel(): void;
/**
* 添加倒计时监听器
* @param listener
*/
addCountDownListener(listener: CountDownCallback): void;
/**
* 添加结束监听器
* @param listener
*/
addFinishListener(listener: FinishCallback): void;
}
type CountDownCallback = (time: TimeInfo) => void;
type FinishCallback = () => void;
declare class TimeInfo {
time: number;
day: number;
hour: number;
minute: number;
second: number;
format(value: number): number
}
declare interface CalendarHelper {
/**
* 获取当前日期字符串 YYYY-MM-DD 2019-06-01
*/
getCurrentFormatDateString(): string;
/**
* 获取特定月份的日历数据
* @param year
* @param month
*/
getCalendarData(year: number, month: number): MonthInfo;
/**
* 获取上个月的数据
* @param year
* @param month
*/
getLastMonthData(year: number, month: number): MonthInfo;
/**
* 获取下个月的日历数据
* @param year
* @param month
*/
getNextMonthData(year: number, month: number): MonthInfo;
/**
* 获取当前月份的日历数据
*/
getCurrentMonthData(): MonthInfo;
/**
* 获取日历基础数据(从当前月,往后推)
* @param count
* @returns {Array}
*/
getCalendarDataList(count): Array<MonthInfo>;
}
declare class DayInfo {
year: number;
month: number;
day: number;
isSupplementDay: boolean;
titleName: string;
formatDay: string;
time: number;
constructor(year, month, day);
setSupplementDay(isSupplement: Boolean): void;
getFormatDayString(): string;
equal(object: DayInfo): boolean;
toString(): string;
}
declare class Month {
year: number;
month: number;
}
declare class MonthInfo extends Month {
titleName: string;
year: number;
month: number;
constructor(year, month);
getDayItems(): Array<DayInfo>;
toString(): string;
}
declare interface ObjectHelper {
/**
* 克隆对象
* @param obj 需要克隆的原始对象
*/
cloneObject(obj: object): object;
/**
* 获取继承对象。类似java的继承实现
* @param targetObject 子对象
* @param sourceObject 父对象
*/
extendObject(targetObject: object, sourceObject: object): object;
/**
* 判断列表是否包含特定的对象
* @param list 对象列表
* @param object 对象
*/
containObject(list: Array<object>, object: object): boolean;
/**
* 深度比较对象是否相等
* @param obj1
* @param obj2
*/
deepEqual(obj1: object, obj2: object): boolean;
/**
* 从对象中获取值
* @param obj {a:{b:{c:{text:"10}}}}
* @param keyStr "a.b.c.text"
*/
getValueFromObject(obj: object, keyStr: string): any;
/**
* 根据字段列表获取对象
* @param keysList 字段列表
* @param valuesObject 包含当前数据的原始对象
*/
getObjectByList(keysList: Array<string>, valuesObject: object): object;
/**
*获取目标对象
* @param keysObject 需要获取的目标对象
* @param targetObject 原始目标对象
*/
getObjectByObject(keysObject: object, targetObject: object): object;
/**
* 设置监听器
* @param data 监听数据源
* @param watch 监听对象
*/
setWatcher(data: object, watch: object): void;
}
type DateParams = string | number | Date;
declare interface DateHelper {
/**
* 获取日期对象(兼容ios下 yyyy-MM-ddd 格式日期转换异常的问题 )
* @param date
*/
getDateInstance(date: DateParams): Date;
/**
* 判断是不是今天
* @param date 日期
*/
isToday(date: DateParams): boolean;
/**
* 格式化日期对象
* @param date Date对象或者 创建Date对象的构造参数
* @param formatStyle 格式化样式字符串 如:yyyy-MM ; YYYY-MM-DD HH:mm:ss ; yyyy-MM-dd hh:mm:SS
*/
formatDateString(date: DateParams, formatStyle: string): string;
/**
* 获取是星期几
* @param date
* @param isEnglish
*/
getWeekName(date: DateParams, isEnglish?: boolean): string;
/**
* 获取月份天数
* @param date Date 对象、时间戳
*/
getDaysInMonth(date: DateParams): number;
/**
* 判断是否是闰年
* @param year
*/
isLeapYear(year: number): boolean;
/**
* 获取指定月份天数
* @param year 年
* @param month 月
*/
getMonthDays(year: number, month: number): number;
/**
* 格式化数字
* @param num
*/
formatNumber(num: number): string
/**
* 获取当前日期 YYYY-MM-DD
*/
getCurrentFormatDate(): string;
/**
* 获取上个月的年月信息
* @param year
* @param month
*/
getLastMonthInfo(year: number, month: number): Month;
/**
* 获取下个月的年月信息
* @param year
* @param month
*/
getNextMonthInfo(year: number, month: number): Month;
/**
* 计算两日期相差多少年
* @param startTime 起始时间毫秒数
* @param endTime 结束时间毫秒数
*/
diffYears(startTime: number, endTime: number): number;
/**
* 计算两日期相差多少年
* @param startTime 起始时间毫秒数
* @param endTime 结束时间毫秒数
*/
diffMonths(startTime: number, endTime: number): number;
/**
* 计算两日期相差多少天
* @param startTime 起始时间毫秒数
* @param endTime 结束时间毫秒数
*/
diffDays(startTime: number, endTime: number): number;
/**
* 计算两日期相差多少小时
* @param startTime 起始时间毫秒数
* @param endTime 结束时间毫秒数
*/
diffHours(startTime: number, endTime: number): number;
/**
* 计算两日期相差多少分
* @param startTime 起始时间毫秒数
* @param endTime 结束时间毫秒数
*/
diffMinutes(startTime: number, endTime: number): number;
/**
* 计算两日期相差多少秒
* @param startTime 起始时间毫秒数
* @param endTime 结束时间毫秒数
*/
diffSeconds(startTime: number, endTime: number): number;
}
declare interface UrlHelper {
/**
* 获取(携带查询参数)地址
* @param baseUrl 基本地址
* @param params 参数对象
*/
getQueryUrl(baseUrl: string, params: Object): string;
/**
* 从地址上获取参数集合
* @param url 地址
*/
getQueryMapFromUrl(url: string): Map<string, any>;
}
/**
* 日期常量
*/
declare interface DateConstants {
/**
* 一天的毫秒数
*/
dayMillis: number;
/**
* 一个小时的毫秒数
*/
hourMillis: number;
/**
* 一分钟的毫秒数
*/
minuteMillis: number;
/**
* 一秒种的毫秒数
*/
secondMillis: number;
}
declare interface ArrayHelper {
/**
* 将数据分组
* @param list 原始数据列表
* @param groupNumber 分组的个数
*/
groupingList(list: Array<any>, groupNumber: number)
/**
* 补齐列表数据,使其是分组数的整数倍
* 返回新的数据
* @param list
* @param groupNumber
* @returns {*}
*/
makeUpGroupList(list: Array<any>, groupNumber: number)
}
declare interface StringHelper {
/**
* 判读字符串是不是空值
* @param str
*/
isEmpty(str): string;
/**
* 校验手机号(严格校验)
* //移动号段:134 135 136 137 138 139 147 148 150 151 152 157 158 159 165 172 178 182 183 184 187 188 195 198
* // 联通号段:130 131 132 145 146 155 156 166 167 171 175 176 185 186
* // 电信号段:133 149 153 173 174 177 180 181 189 191 199
* // 虚拟运营商:170
* 分组如下
* //130 131 132 133 134 135 136 137 138 139
* //145 146 147 148 149
* //150 151 152 153 155 156 157 158 159
* // 165 166 167
* //170 171 172 173 174 175 176 177 178
* //180 181 182 183 184 185 186 187 188 189
* // 191 195 198 199
* @param phone
* @returns {boolean}
*/
isPhoneNumber(phone: string | number): boolean;
/**
* 判断是不是身份证
* @param codeStr
*/
isIDCard(codeStr: string): boolean;
/**
* 判断是不是邮箱
* @param email
*/
isEmail(email: string): boolean;
/**
* 从富文本中,查找img 标签,收集图片地址(只支持.png .jpg .jpeg 结尾)
* @param richText 富文本
* @returns {[]} 返回图片列表
*/
getImageListFromRichText(richText: string): Array<string>
/**
* 将整数部分逢三一断
*/
formatNumber(value: number | string): string;
/**
* *RGB颜色转换为16进制
* @param rgbColor RGB颜色
*/
colorRbgToHex(rgbColor: string): string;
/**
*16进制颜色转为RGB格式
* @param hexColor 16进制颜色
* @returns {string} RGB格式颜色
*/
colorHexToRgb(hexColor: string): string;
/**
* 替换所有
* @param content 当前文本
* @param pattern 旧字符串或者正则表达式
* @param newStr 要替换的内容
* @returns {*} 返回新的字符串
*/
replaceAll(content: string, pattern: RegExp | string, newStr: string): string;
}
declare class WatcherHelper {
setWatcher(data: object, watch: object): void
}
type SubscriberCallback = (msg: any) => void;
declare interface EventBus {
postSticky(msg: any, eventType: string): void;
post(msg: any, eventType: string): void;
register(observer: any, sticky: boolean, eventType: string, subscriber: SubscriberCallback): void;
unregister(observer: any): void;
destroy(): void;
}
declare module 'compatible-tools' {
function getObjectHelper(): ObjectHelper;
function getDateHelper(): DateHelper;
function getUrlHelper(): UrlHelper;
function getCalendarHelper(): CalendarHelper;
function getCountDownTimer(millisInFuture: number, countDownInterval: number): CountDownTimer;
function getArrayHelper(): ArrayHelper;
function getStringHelper(): StringHelper;
function getEventBus(): EventBus;
function getWatcherHelper(): WatcherHelper;
const dateConstants: DateConstants;
class LogUtils {
constructor(debug: boolean);
setEnableDebug(debug: boolean): void;
debug(msg: any): void;
debugWithTag(tag: string, msg: any): void;
info(msg: any): void;
infoWithTag(tag: string, msg: any): void;
log(msg: any): void;
logWithTag(tag: string, msg: any): void
error(msg: any): void
errorWithTag(tag: string, msg: any): void
warn(msg: any): void
warnWithTag(tag: string, msg: any): void
}
}
"use strict";function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function t(e,t){return e(t={exports:{}},t.exports),t.exports}Object.defineProperty(exports,"__esModule",{value:!0});var n=e(t((function(e){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.default=e.exports,e.exports.__esModule=!0}))),r=e(t((function(e){function t(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}e.exports=function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e},e.exports.default=e.exports,e.exports.__esModule=!0}))),o=e(t((function(e){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},e.exports.default=e.exports,e.exports.__esModule=!0}))),u=e(t((function(e){function t(n){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(e.exports=t=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=t=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),t(n)}e.exports=t,e.exports.default=e.exports,e.exports.__esModule=!0})));function i(e,t){if(!e||e.length<1)return!1;for(var n=0,r=e.length;n<r;n++)if(a(e[n],t))return!0;return!1}function a(e,t){var n=u(e);if(n!==u(t))return!1;if("string"===n||"number"===n||"undefined"===n||"boolean"===n)return e===t;if("object"===n){if(n instanceof Array)return e.length==e.length&&(!!e.every((function(e){return i(t,e)}))&&!!t.every((function(t){return i(e,t)})));var r=Object.keys(e),o=Object.keys(t);if(r.length!==o.length)return!1;if(o.filter((function(e){return r.includes(e)})).length!==r.length)return!1;for(var s=0,f=r.length;s<f;s++){if(!a(e[r[s]],t[r[s]]))return!1}return!0}return!1}function s(e,t){var n={};if(e&&e.length>0&&t&&"object"===u(t))for(var r=0,o=e.length;r<o;r++){var i=e[r];i&&(n[i]=t[i])}return n}var f={getObjectByObject:function(e,t){return e&&t&&"object"===u(e)&&"object"===u(t)?s(Object.keys(e),t):{}},getObjectByList:s,getValueFromObject:function e(t,n){if("object"===u(t)&&n&&"string"==typeof n){if(t[n])return t[n];if(n.indexOf(".")<0)return t[n];var r=n.split(".");if(t[r[0]]&&t[r[0]]instanceof Object){var o=r.slice(1).join(".");return e(t[r[0]],o)}}return""},deepEqual:a,containObject:i,cloneObject:function e(t){if(t instanceof Array){for(var n=[],r=0,o=t.length;r<o;r++)n.push(e(t[r]));return n}if(t instanceof Object){var u={};for(var i in t)u[i]=e(t[i]);return u}return t},extendObject:function e(t,n){return n&&"object"===u(n)?(t&&"object"===u(n)&&Object.keys(n).forEach((function(r){void 0===t[r]?t[r]=n[r]:"object"===u(t[r])&&e(t[r],n[r])})),t):t},setWatcher:function(e,t){Object.keys(t).forEach((function(n){!function e(t,n,r){if(t&&"object"===u(t)){var o=t[n];if(o)Object.defineProperty(t,n,{configurable:!0,enumerable:!0,set:function(e){var t=o;o=e,r(e,t)},get:function(){return o}});else{var i=n.indexOf(".");if(i>0){var a=n.substring(0,i),s=n.substr(i+1);e(t[a],s,r)}}}}(e,n,t[n])}))}};var l={getQueryMapFromUrl:function(e){var t=new Map;if(e&&e.indexOf("?")>0){var n=e.substr(e.indexOf("?")+1).split("&");n&&n.length>0&&n.forEach((function(e){var n=e.split("=");n&&n.length>1&&t.set(n[0],n[1])}))}return t},getQueryUrl:function(e,t){var n=-1!==e.indexOf("?");if(t instanceof Object){var r=e;for(var o in t)void 0!==t[o]&&(r.endsWith("?")?r="".concat(r).concat(o,"=").concat(t[o]):(r="".concat(r).concat(n?"&":"?").concat(o,"=").concat(t[o]),n||(n=!0)));return r}return e}},c={dayMillis:864e5,hourMillis:36e5,minuteMillis:6e4,secondMillis:1e3};function h(e){return e>9?e:"0"+e}function g(e){if(e instanceof Date)return e;if("string"==typeof e&&e.indexOf("-")>0){var t=new RegExp("-","g");e=e.replace(t,"/")}return new Date(e)}function v(e){return e%400==0||e%4==0&&e%100!=0}function y(e,t){if(2===t||"2"===t)return v(e)?29:28;return[1,3,5,7,8,10,12].includes(t)?31:30}function p(e,t,n){if("number"==typeof e&&"number"==typeof t){var r=t-e;return Math.floor(r/n*100)/100}}function d(e,t){var n=Math.min(e,t),r=Math.max(e,t),o=g(n),u=g(r),i=u.getFullYear()-o.getFullYear(),a=o.getMonth()+1,s=u.getMonth()+1;return s<a&&(i-=1,s+=12),Number.parseInt((12*i+s-a).toFixed(0))}var b=[{symbolList:["yyyy","YYYY"],getValue:function(e){return h(e.getFullYear())}},{symbolList:["MM"],getValue:function(e){return h(e.getMonth()+1)}},{symbolList:["DD","dd"],getValue:function(e){return h(e.getDate())}},{symbolList:["HH","hh"],getValue:function(e){return h(e.getHours())}},{symbolList:["mm"],getValue:function(e){return h(e.getMinutes())}},{symbolList:["SS","ss"],getValue:function(e){return h(e.getSeconds())}}];var m={getDateInstance:g,isToday:function(e){var t=new Date,n=g(e);return t.getFullYear()===n.getFullYear()&&n.getMonth()===t.getMonth()&&n.getDate()===t.getDate()},formatNumber:h,formatDateString:function(e,t){var n=String(t);if(t){var r=g(e);b.forEach((function(e){for(var t=0,o=e.symbolList.length;t<o;t++)if(n.indexOf(e.symbolList[t])>=0){n=n.replace(e.symbolList[t],e.getValue(r));break}}))}return n},getCurrentFormatDate:function(){return e=new Date,(t=g(e)).getFullYear()+"-"+h(t.getMonth()+1)+"-"+h(t.getDate());var e,t},getDaysInMonth:function(e){var t=g(e);return y(t.getFullYear(),t.getMonth()+1)},getMonthDays:y,getWeekName:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=g(e),r=n.getDay();return 0===r?t?"Sunday":"周日":1===r?t?"Monday":"周一":2===r?t?"Tuesday":"周二":3===r?t?"Wednesday":"周三":4===r?t?"Thursday":"周四":5===r?t?"Friday":"周五":6===r?t?"Saturday":"周六":""},isLeapYear:v,getLastMonthInfo:function(e,t){return{year:1==t?e-1:e,month:1==t?12:t-1}},getNextMonthInfo:function(e,t){return{year:12==t?e+1:e,month:12==t?1:t+1}},diffYears:function(e,t){var n=d(e,t);return Math.floor(n/12*100)/100},diffMonths:d,diffDays:function(e,t){return p(e,t,c.dayMillis)},diffHours:function(e,t){return p(e,t,c.hourMillis)},diffMinutes:function(e,t){return p(e,t,c.minuteMillis)},diffSeconds:function(e,t){return p(e,t,c.secondMillis)}},D=function(){function e(t,r){n(this,e),this.millisInFuture=t,this.mInterval=r,this.onFinishListener=void 0,this.onCountDownListener=void 0,this.timer=void 0}return r(e,[{key:"addCountDownListener",value:function(e){e&&"function"==typeof e&&(this.onCountDownListener=e)}},{key:"addFinishListener",value:function(e){e&&"function"==typeof e&&(this.onFinishListener=e)}},{key:"start",value:function(){if(!this.timer&&this.onCountDownListener&&"function"==typeof this.onCountDownListener){var t=this;this.timer=setInterval((function(){t.millisInFuture=t.millisInFuture-t.mInterval,t.millisInFuture>0?t.onCountDownListener(e.getTimeInfo(t.millisInFuture)):(t.cancel(),t.onFinishListener&&"function"==typeof t.onFinishListener&&t.onFinishListener())}),t.mInterval)}}},{key:"cancel",value:function(){this.timer&&(clearInterval(this.timer),this.timer=void 0)}}],[{key:"getTimeInfo",value:function(e){var t=e%c.dayMillis,n=e%c.hourMillis,r=e%c.minuteMillis;return{time:e,day:Math.floor(e/c.dayMillis),hour:Math.floor(t/c.hourMillis),minute:Math.floor(n/c.minuteMillis),second:Math.floor(r/c.secondMillis),format:function(e){return e>=10?e:"0"+e}}}}]),e}(),k=t((function(e){e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r},e.exports.default=e.exports,e.exports.__esModule=!0}));e(k);var x=t((function(e){e.exports=function(e){if(Array.isArray(e))return k(e)},e.exports.default=e.exports,e.exports.__esModule=!0}));e(x);var M=t((function(e){e.exports=function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)},e.exports.default=e.exports,e.exports.__esModule=!0}));e(M);var L=t((function(e){e.exports=function(e,t){if(e){if("string"==typeof e)return k(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?k(e,t):void 0}},e.exports.default=e.exports,e.exports.__esModule=!0}));e(L);var w=t((function(e){e.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.default=e.exports,e.exports.__esModule=!0}));e(w);var j=e(t((function(e){e.exports=function(e){return x(e)||M(e)||L(e)||w()},e.exports.default=e.exports,e.exports.__esModule=!0})));var F={groupingList:function(e,t){if(e&&t>0){for(var n=[],r=e.length,o=0,u=t;o<r;)n.push(e.slice(o,u)),o+=t,u+=t;return n}return e},makeUpGroupList:function(e,t){if(e&&e.length>0){var n=j(e);if(t<2)return n;var r=n.length%t;if(r>0)for(var o=0,u=t-r;o<u;o++)n.push({});return n}return e}},I=function(){function e(){n(this,e)}return r(e,null,[{key:"getCurrentFormatDateString",value:function(){var e=new Date;return e.getFullYear()+"-"+O.getFullNumber(e.getMonth()+1)+"-"+O.getFullNumber(e.getDate())}},{key:"getCalendarData",value:function(e,t){var n=[],r=new S(e,t),o=O.getWeekDay(e,t);if(o>0)for(var u=O.getLastMonthInfo(e,t),i=O.getMonthDays(u.year,u.month),a=0;a<o;a++){var s=i-o+1+a,f=new T(u.year,u.month,s);f.setSupplementDay(!0),n.push(f)}var l=7-(n=n.concat(r.dayItems)).length%7;if(l<7)for(var c=O.getNextMonthInfo(e,t),h=0;h<l;h++){var g=new T(c.year,c.month,h+1);g.setSupplementDay(!0),n.push(g)}return r.dayItems=n,r}},{key:"getLastMonthData",value:function(t,n){var r=O.getLastMonthInfo(t,n);return e.getCalendarData(r.year,r.month)}},{key:"getNextMonthData",value:function(t,n){var r=O.getNextMonthInfo(t,n);return e.getCalendarData(r.year,r.month)}},{key:"getCurrentMonthData",value:function(){var t=new Date;return e.getCalendarData(t.getFullYear(),t.getMonth()+1)}},{key:"getCalendarDataList",value:function(t){var n=[],r=e.getCurrentMonthData();n.push(r);for(var o=1;o<t;o++)r=e.getNextMonthData(r.year,r.month),n.push(r);return n}}]),e}(),S=function(){function e(t,r){n(this,e),this.titleName=r,this.year=t,this.month=r,this.dayItems=this.getDayItems()}return r(e,[{key:"getDayItems",value:function(){for(var e=O.getMonthDays(this.year,this.month),t=[],n=1;n<=e;n++){var r=new T(this.year,this.month,n);t.push(r)}return t}},{key:"toString",value:function(){return"year= "+this.year+" month= "+this.month}}]),e}(),T=function(){function e(t,r,o){n(this,e),this.year=t,this.month=r,this.day=o,this.isSupplementDay=!1,this.titleName=o,this.formatDay=this.getFormatDayString();var u=new Date(this.formatDay);u.setHours(0,0,0,0),this.time=u.getTime()}return r(e,[{key:"setSupplementDay",value:function(e){this.isSupplementDay=e}},{key:"getFormatDayString",value:function(){var e=O.getFullNumber(this.month),t=O.getFullNumber(this.day);return this.year+"-"+e+"-"+t}},{key:"equal",value:function(t){return!!(t&&t instanceof e)&&(this.year===t.currentYear&&this.month===t.currentMonth&&this.day===t.currentDay)}},{key:"toString",value:function(){return"currentYear= "+this.year+" currentMonth= "+this.month+" currentDay= "+this.day}}]),e}(),O=function(){function e(){n(this,e)}return r(e,null,[{key:"getFullNumber",value:function(e){return e>=10?e:"0"+e}},{key:"isLeapYear",value:function(e){return e%400==0||e%4==0&&e%100!=0}},{key:"getMonthDays",value:function(t,n){return 2==n?e.isLeapYear(t)?29:28:1==n||3==n||5==n||7==n||8==n||10==n||12==n?31:30}},{key:"getNextMonthInfo",value:function(e,t){return{year:12==t?e+1:e,month:12==t?1:t+1}}},{key:"getLastMonthInfo",value:function(e,t){return{year:1==t?e-1:e,month:1==t?12:t-1}}},{key:"getWeekDay",value:function(e,t){return new Date(e,t-1,1).getDay()}}]),e}(),_=I,C={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"};function A(e,t,n,r){var o=(new Date).getFullYear();if(r.getFullYear()==e&&r.getMonth()+1==t&&r.getDate()==n){var u=o-e;return u>=0&&u<=130}return!1}var E={checkCard:function(e){return!1!==function(e){if(!1===/(^\d{15}$)|(^\d{17}(\d|X)$)/.test(e))return!1;return!0}(e)&&(!1!==function(e){var t=e.substr(0,2);if(null==C[t])return!1;return!0}(e)&&(!1!==function(e){var t=e.length;if("15"==t){var n=e.match(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/),r=n[2],o=n[3],u=n[4],i=new Date("19"+r+"/"+o+"/"+u);return A("19"+r,o,u,i)}if("18"==t){var a=e.match(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/),s=a[2],f=a[3],l=a[4],c=new Date(s+"/"+f+"/"+l);return A(s,f,l,c)}return!1}(e)&&!1!==function(e){if("18"==(e=function(e){if("15"==e.length){var t,n=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2],r=0;for(e=e.substr(0,6)+"19"+e.substr(6,e.length-6),t=0;t<17;t++)r+=e.substr(t,1)*n[t];return e+=["1","0","X","9","8","7","6","5","4","3","2"][r%11]}return e}(e)).length){var t,n=new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2),r=new Array("1","0","X","9","8","7","6","5","4","3","2"),o=0;for(t=0;t<17;t++)o+=e.substr(t,1)*n[t];return r[o%11]==e.substr(17,1)}return!1}(e)))}},Y=function(){function e(){n(this,e)}return r(e,null,[{key:"replaceAll",value:function(e,t,n){var r=new RegExp(t,"g");return e.replace(r,n)}},{key:"isIDCard",value:function(e){return E.checkCard(e)}},{key:"isEmpty",value:function(e){return!e||e.trim().length<1}},{key:"isPhoneNumber",value:function(e){var t=String(e);return!!/^1[38][0-9]{9}$/.test(t)||(!!/^14[56789][0-9]{8}$/.test(t)||(!!/^15[012356789][0-9]{8}$/.test(t)||(!!/^16[567][0-9]{8}$/.test(t)||(!!/^17[012345678][0-9]{8}$/.test(t)||!!/^19[1589][0-9]{8}$/.test(t)))))}},{key:"isEmail",value:function(e){if(e){return/^[a-zA-Z0-9]+([-_.][a-zA-Z0-9]+)*@[a-zA-Z0-9]+([-_.][a-zA-Z0-9]+)*\.[a-z]{2,}$/.test(e)}return!1}},{key:"getImageListFromRichText",value:function(e){var t=[],n=e.match(/<img[^>]*>/g);if(n&&n.length>0){var r=/http\S*((.jpg)|(.jpeg)|(.png))/g;n.forEach((function(e){var n=e.match(r);n&&n.length>0&&!t.includes(n[0])&&t.push(n[0])}))}return t}},{key:"colorRbgToHex",value:function(e){var t=e.toLowerCase();if(/^(rgb|RGB)/.test(t)){for(var n=t.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(","),r="#",o=0;o<n.length;o++){var u=Number(n[o]).toString(16);"0"===u&&(u+=u),r+=u}return 7!==r.length&&(r=t),r}if(/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(t)){var i=t.replace(/#/,"").split("");if(6===i.length)return t;if(3===i.length){for(var a="#",s=0;s<i.length;s+=1)a+=i[s]+i[s];return a}}return t}},{key:"colorHexToRgb",value:function(e){var t=e.toLowerCase();if(t&&/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(t)){if(4===t.length){for(var n="#",r=1;r<4;r+=1)n+=t.slice(r,r+1).concat(t.slice(r,r+1));t=n}for(var o=[],u=1;u<7;u+=2)o.push(parseInt("0x"+t.slice(u,u+2)));return"rgb("+o.join(",")+")"}return t}},{key:"formatNumber",value:function(e){return e?e.toString().replace(/(\d)(?=(?:\d{3})+$)/g,"$1,"):"0"}}]),e}(),N={observerList:[],stickyEvents:[]};function $(e){return e||"defaultType"}var H=function(){function e(){n(this,e)}return r(e,null,[{key:"postSticky",value:function(t,n){var r=$(n),o=N.stickyEvents.findIndex((function(e){return e.eventType===r}));o>=0?N.stickyEvents[o].msg=t:N.stickyEvents.push({eventType:r,msg:t}),e.post(t,r)}},{key:"post",value:function(e,t){var n=$(t);N.observerList.forEach((function(t){n===t.eventType&&t.subscriber&&"function"==typeof t.subscriber&&t.subscriber({eventType:t.eventType,msg:e})}))}},{key:"register",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"defaultType",r=arguments.length>3?arguments[3]:void 0;if(r){var o=$(n),u=N.observerList.findIndex((function(t){return t.observer===e&&t.eventType===n}));if(u<0){if(t){var i=N.stickyEvents.find((function(e){return e.eventType===o}));i&&r&&"function"==typeof r&&r(i)}N.observerList.push({observer:e,subscriber:r,eventType:o})}}}},{key:"unregister",value:function(e){N.observerList=N.observerList.filter((function(t){return t.observer!==e}))}},{key:"destroy",value:function(){N.stickyEvents=[],N.observerList=[]}}]),e}(),W=function(){function e(t){n(this,e),this.enableDebug=t}return r(e,[{key:"getTag",value:function(e){return e+"===================="}},{key:"setEnableDebug",value:function(e){this.enableDebug=e}},{key:"debug",value:function(e){this.enableDebug&&console.debug(e)}},{key:"debugWithTag",value:function(e,t){this.enableDebug&&console.debug(this.getTag(e),t)}},{key:"info",value:function(e){this.enableDebug&&console.info(e)}},{key:"infoWithTag",value:function(e,t){this.enableDebug&&console.info(this.getTag(e),t)}},{key:"log",value:function(e){this.enableDebug&&console.log(e)}},{key:"logWithTag",value:function(e,t){this.enableDebug&&console.log(this.getTag(e),t)}},{key:"error",value:function(e){this.enableDebug&&console.error(e)}},{key:"errorWithTag",value:function(e,t){this.enableDebug&&console.error(this.getTag(e),t)}},{key:"warn",value:function(e){this.enableDebug&&console.warn(e)}},{key:"warnWithTag",value:function(e,t){this.enableDebug&&console.warn(this.getTag(e),t)}}]),e}(),V=void 0,R=void 0,P=void 0,U=void 0,z=void 0,B=void 0,X=void 0;var Z=function(){function e(){n(this,e)}return r(e,null,[{key:"getObjectHelper",value:function(){return void 0===R&&(R=f),R}},{key:"getUrlHelper",value:function(){return void 0===V&&(V=l),V}},{key:"getDateHelper",value:function(){return void 0===P&&(P=m),P}},{key:"getCountDownTimer",value:function(e,t){return function(e,t){return new D(e,t)}(e,t)}},{key:"getArrayHelper",value:function(){return void 0===U&&(U=F),U}},{key:"getStringHelper",value:function(){return void 0===X&&(X=Y),X}},{key:"getCalendarHelper",value:function(){return void 0===z&&(z=_),z}},{key:"getEventBus",value:function(){return void 0===B&&(B=H),B}}]),e}();o(Z,"dateConstants",c),o(Z,"LogUtils",W);var G=Z;exports.default=G;
{
"name": "mf-js-lib",
"miniprogram": "lib/cjs",
"version": "0.0.1",
"private": false,
"license": "MIT",
"keywords": [],
"description": "当前JS版本已废弃,有问题请使用TS改写的版本",
"scripts": {
"build": "babel src -d lib",
"lib": " rimraf ./lib && rollup -c ./build/rollup.config.js"
},
"main": "./lib/cjs/index.cjs",
"module": "./lib/esm/index.mjs",
"exports": {
"node": {
"import": "./lib/esm/index.mjs",
"require":"./lib/cjs/index.cjs"
},
"default": "./lib/esm/index.mjs"
},
"types": "./index.d.ts",
"files": [
"lib",
"test",
"index.d.ts",
"typings.json"
],
"repository": {
"type": "git",
"url": "x"
},
"homepage": "x",
"dependencies": {
},
"peerDependencies": {},
"devDependencies": {
"@babel/cli": "^7.15.7",
"@babel/core": "^7.15.5",
"@babel/plugin-transform-arrow-functions": "^7.14.5",
"@babel/plugin-transform-block-scoping": "^7.15.3",
"@babel/plugin-transform-classes": "^7.15.4",
"@babel/plugin-transform-runtime": "^7.15.0",
"@babel/polyfill": "^7.12.1",
"@babel/preset-env": "^7.4.5",
"@babel/types": "^7.15.6",
"@types/node": "^14.14.35",
"babel-plugin-external-helpers": "^6.22.0",
"babel-plugin-transform-remove-console": "^6.9.4",
"rimraf": "^3.0.0",
"rollup": "^2.57.0",
"rollup-plugin-babel": "^4.4.0",
"rollup-plugin-commonjs": "^10.1.0",
"rollup-plugin-node-resolve": "^5.2.0",
"rollup-plugin-terser": "^5.1.1",
"core-js": "^2.6.5"
}
}
/**
* 将数据分组
* @param list 数据源
* @param groupNumber 分组的个数
* @returns {[]|*} 返回分组后的列表
*/
function groupingList(list, groupNumber) {
if (list && groupNumber > 0) {
const groupList = [];
let endLength = list.length;
let startIndex = 0;
let endIndex = groupNumber;
while (startIndex < endLength) {
groupList.push(list.slice(startIndex, endIndex))
startIndex = startIndex + groupNumber
endIndex = endIndex + groupNumber
}
return groupList;
}
return list;
}
/**
* 补齐数据
* 返回新的数据
* @param list
* @param groupNum
* @returns {*}
*/
function makeUpGroupList(list, groupNum) {
if (list && list.length > 0) {
const newList = [...list]
if (groupNum < 2) {
return newList;
}
let endCount = newList.length % groupNum;
if (endCount > 0) {//补全数据
for (let i = 0, len = groupNum - endCount; i < len; i++) {
newList.push({})
}
}
return newList;
}
return list;
}
module.exports = {
groupingList: groupingList,
makeUpGroupList: makeUpGroupList,
};
class CalendarHelper {
/**
* 获取当前时间 (2018-08-15)
*/
static getCurrentFormatDateString() {
const date = new Date();
return date.getFullYear() + "-" + CalenderUtils.getFullNumber(date.getMonth() + 1) + "-" + CalenderUtils.getFullNumber(date.getDate());
}
/**
* 获取日历数据
* @param year
* @param month
*/
static getCalendarData(year, month) {
let newDatas = [];
const monthInfo = new MonthInfo(year, month);
const weekDay = CalenderUtils.getWeekDay(year, month);
if (weekDay > 0) {
//月份的第一天不是表的第一天。需要在前面插入上个月数据
const lastMonthInfo = CalenderUtils.getLastMonthInfo(year, month);
const lastMonthDays = CalenderUtils.getMonthDays(lastMonthInfo.year, lastMonthInfo.month)
for (let j = 0; j < weekDay; j++) {
const currentDay = lastMonthDays - weekDay + 1 + j;
const dayInfo = new DayInfo(lastMonthInfo.year, lastMonthInfo.month, currentDay);
dayInfo.setSupplementDay(true);
newDatas.push(dayInfo);
}
}
newDatas = newDatas.concat(monthInfo.dayItems);
const size = newDatas.length;
//为了列表显示(个数必须是7的倍数),必须补充空数据
const emptyDays = 7 - size % 7;
if (emptyDays < 7) {
const nextMonthInfo = CalenderUtils.getNextMonthInfo(year, month)
for (let j = 0; j < emptyDays; j++) {
let dayInfo = new DayInfo(nextMonthInfo.year, nextMonthInfo.month,(j+1));
dayInfo.setSupplementDay(true);
newDatas.push(dayInfo)
}
}
monthInfo.dayItems = newDatas;
return monthInfo;
}
/**
* 获取上个月的数据
* @param year
* @param month
*/
static getLastMonthData(year, month) {
const info = CalenderUtils.getLastMonthInfo(year, month);
return CalendarHelper.getCalendarData(info.year, info.month)
}
/**
* 获取下个月的数据
* @param year
* @param month
*/
static getNextMonthData(year, month) {
const info = CalenderUtils.getNextMonthInfo(year, month);
return CalendarHelper.getCalendarData(info.year, info.month)
}
/**
* 获取当前月份的日历数据
*/
static getCurrentMonthData() {
const date = new Date();
return CalendarHelper.getCalendarData(date.getFullYear(), date.getMonth() + 1)
}
/**
* 获取日历基础数据(从当前月,往后推)
* @param count
* @returns {Array}
*/
static getCalendarDataList (count) {
const months = [];
let data = CalendarHelper.getCurrentMonthData();
months.push(data)
for (let i = 1; i < count; i++) {
data = CalendarHelper.getNextMonthData(data.year, data.month);
months.push(data)
}
return months;
}
}
class MonthInfo {
constructor(year, month) {
this.titleName = month;
this.year = year;
this.month = month;
this.dayItems = this.getDayItems();
}
getDayItems() {
const days = CalenderUtils.getMonthDays(this.year, this.month);
const dayItems = [];
for (let i = 1; i <= days; i++) {
const dayInfo = new DayInfo(this.year, this.month, i);
dayItems.push(dayInfo)
}
return dayItems;
}
toString() {
return "year= " + this.year + " month= " + this.month;
}
}
class DayInfo {
constructor(year, month, day) {
this.year = year;
this.month = month;
this.day = day;
this.isSupplementDay = false;
this.titleName = day;
this.formatDay = this.getFormatDayString();
const date = new Date(this.formatDay);
date.setHours(0,0,0,0)
this.time =date .getTime();
}
setSupplementDay(isSupplement) {
this.isSupplementDay = isSupplement;
}
getFormatDayString() {
const monthNumberString = CalenderUtils.getFullNumber(this.month);
const dayNumberString = CalenderUtils.getFullNumber(this.day);
return this.year + "-" + monthNumberString + "-" + dayNumberString;
}
equal(object) {
if (object && object instanceof DayInfo) {
return this.year === object.currentYear && this.month === object.currentMonth && this.day === object.currentDay
}
return false;
}
toString() {
return "currentYear= " + this.year + " currentMonth= " + this.month + " currentDay= " + this.day;
}
}
class CalenderUtils {
static getFullNumber(num) {
if (num >= 10) {
return num;
}
return "0" + num;
}
static isLeapYear(year) {
return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);
}
/**
* 获取指定月份天数
* @param year
* @param month
* @returns {number}
*/
static getMonthDays(year, month) {
if (month == 2) {
return CalenderUtils.isLeapYear(year) ? 29 : 28;
} else if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
return 31;
}
return 30;
}
static getNextMonthInfo(year, month) {
const newMonth = month == 12 ? 1 : month + 1;
const newYear = month == 12 ? year + 1 : year;
return {year: newYear, month: newMonth}
}
static getLastMonthInfo(year, month) {
//获取上个月实际月份
const newMonth = month == 1 ? 12 : month - 1;
//获取实际年份
const newYear = month == 1 ? year - 1 : year;
return {year: newYear, month: newMonth}
}
/**
* 获取某年某月第一天是星期几
* @param year
* @param month
*/
static getWeekDay(year, month) {
const date = new Date(year, month - 1, 1);
return date.getDay();
}
}
module.exports = CalendarHelper
const dateConstants = require('./DateConstants')
class CountDownTimer {
/**
*
* @param millisInFuture 时间毫秒数
* @param countDownInterval 时间毫秒数(单位间隔)
*/
constructor(millisInFuture, countDownInterval) {
this.millisInFuture = millisInFuture;
this.mInterval = countDownInterval;
this.onFinishListener =undefined;
this.onCountDownListener=undefined;
this.timer = undefined;
}
addCountDownListener(listener){
if(listener && typeof listener ==='function'){
this.onCountDownListener=listener;
}
}
addFinishListener(listener){
if(listener && typeof listener ==='function'){
this.onFinishListener=listener;
}
}
start() {
if (!this.timer && this.onCountDownListener && typeof this.onCountDownListener==='function') {
let that = this;
this.timer = setInterval(() => {
that.millisInFuture = that.millisInFuture - that.mInterval;
if (that.millisInFuture > 0) {
that.onCountDownListener(CountDownTimer.getTimeInfo(that.millisInFuture));
} else {
that.cancel();
if(that.onFinishListener && typeof that.onFinishListener ==='function'){
that.onFinishListener();
}
}
}, that.mInterval);
}
}
cancel() {
if (this.timer) {
clearInterval(this.timer);
this.timer = undefined;
}
}
static getTimeInfo(time) {
let hourTime = time % dateConstants.dayMillis;//剩余的小时部分时间
let minuteTime = time % dateConstants.hourMillis;//剩余的分钟部分时间
let secondTime = time % dateConstants.minuteMillis;//剩余的秒部分时间
return {
time: time,
day:Math.floor(time/dateConstants.dayMillis),
hour: Math.floor(hourTime /dateConstants.hourMillis),
minute: Math.floor(minuteTime /dateConstants.minuteMillis),
second: Math.floor(secondTime /dateConstants.secondMillis),
format: (value) => {
return value >= 10 ? value : "0" + value;
}
}
}
}
module.exports = CountDownTimer;
const dayMillis = 86400000;//一天的毫秒数
const hourMillis = 3600000;//小时的毫秒数
const minuteMillis = 60000;//分的毫秒数
const secondMillis = 1000;//秒的毫秒数
module.exports = {
dayMillis:dayMillis,
hourMillis:hourMillis,
minuteMillis:minuteMillis,
secondMillis:secondMillis,
};
const dateConstants = require("./DateConstants")
function formatNumber(num) {
return num > 9 ? num : "0" + num;
}
function getDateInstance(date) {
if (date instanceof Date) {
return date;
}
if (typeof date === 'string' && date.indexOf('-') > 0) {//兼容ios new Date('2020-10-10') 返回Invalid Date
const reg = new RegExp("-", "g");
date = date.replace(reg, '/')
}
return new Date(date);
}
function isToday(date) {
let currentDate = new Date();
let orderDate = getDateInstance(date)
return currentDate.getFullYear() === orderDate.getFullYear() && orderDate.getMonth() === currentDate.getMonth() && orderDate.getDate() === currentDate.getDate();
}
//格式化日期 YYYY-MM-DD
function getFormatDate(date) {
const dateInstance = getDateInstance(date);
return dateInstance.getFullYear() + "-" + formatNumber(dateInstance.getMonth() + 1) + "-" + formatNumber(dateInstance.getDate());
}
//获取当前日期
function getCurrentFormatDate() {
return getFormatDate(new Date())
}
//获取当前日期所在月份的天数
function getDaysInMonth(date) {
const dateInstance = getDateInstance(date);
return getMonthDays(dateInstance.getFullYear(), dateInstance.getMonth() + 1);
}
function getWeekName(date, isEnglish = false) {
const dateInstance = getDateInstance(date);
const weekDay = dateInstance.getDay()
if (weekDay === 0) {
return isEnglish ? 'Sunday' : '周日';
} else if (weekDay === 1) {
return isEnglish ? 'Monday' : "周一";
} else if (weekDay === 2) {
return isEnglish ? 'Tuesday' : '周二';
} else if (weekDay === 3) {
return isEnglish ? 'Wednesday' : '周三';
} else if (weekDay === 4) {
return isEnglish ? 'Thursday' : '周四';
} else if (weekDay === 5) {
return isEnglish ? 'Friday' : '周五';
} else if (weekDay === 6) {
return isEnglish ? 'Saturday' : '周六';
}
return '';
}
function isLeapYear(year) {
return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);
}
/**
* 获取指定月份天数
* @param year
* @param month
* @returns {number}
*/
function getMonthDays(year, month) {
if (month === 2 || month === "2") {
return isLeapYear(year) ? 29 : 28;
}
const bigMonths = [1, 3, 5, 7, 8, 10, 12]
if (bigMonths.includes(month)) {
return 31;
}
return 30;
}
function getNextMonthInfo(year, month) {
const newMonth = month == 12 ? 1 : month + 1;
const newYear = month == 12 ? year + 1 : year;
return {year: newYear, month: newMonth}
}
function getLastMonthInfo(year, month) {
//获取上个月实际月份
const newMonth = month == 1 ? 12 : month - 1;
//获取实际年份
const newYear = month == 1 ? year - 1 : year;
return {year: newYear, month: newMonth}
}
function diffTime(startTime, endTime, unitTime) {
if (typeof startTime === 'number' && typeof endTime === 'number') {
const diffTimeNum = endTime - startTime
return Math.floor((diffTimeNum / unitTime) * 100) / 100
}
return undefined;
}
function diffYears(startTime, endTime) {
let number = diffMonths(startTime, endTime);
return Math.floor(number / 12 * 100) / 100;
}
function diffMonths(startTime, endTime) {
let miniTime = Math.min(startTime, endTime);
let maxTime = Math.max(startTime, endTime);
const startDate = getDateInstance(miniTime);
const endDate = getDateInstance(maxTime);
let diffYear = endDate.getFullYear() - startDate.getFullYear();
let startMonth = startDate.getMonth() + 1;
let endMonth = endDate.getMonth() + 1;
if (endMonth < startMonth) {
diffYear = diffYear - 1;
endMonth = endMonth + 12;
}
return Number.parseInt((diffYear * 12 + endMonth - startMonth).toFixed(0))
}
function diffDays(startTime, endTime) {
return diffTime(startTime, endTime, dateConstants.dayMillis)
}
function diffHours(startTime, endTime) {
return diffTime(startTime, endTime, dateConstants.hourMillis)
}
function diffMinutes(startTime, endTime) {
return diffTime(startTime, endTime, dateConstants.minuteMillis)
}
function diffSeconds(startTime, endTime) {
return diffTime(startTime, endTime, dateConstants.secondMillis)
}
///yyyy-MM-dd HH:mm:ss
const formatDateList = [
{
symbolList: ["yyyy", "YYYY"],
getValue: function (date) {
return formatNumber(date.getFullYear());
}
},
{
symbolList: ["MM"],
getValue: function (date) {
return formatNumber(date.getMonth() + 1);
}
},
{
symbolList: ["DD", "dd"],
getValue: function (date) {
return formatNumber(date.getDate());
}
},
{
symbolList: ["HH", "hh"],
getValue: function (date) {
return formatNumber(date.getHours());
}
},
{
symbolList: ["mm"],
getValue: function (date) {
return formatNumber(date.getMinutes());
}
},
{
symbolList: ["SS", "ss"],
getValue: function (date) {
return formatNumber(date.getSeconds());
}
},
]
function formatDateString(date, formatStyle) {
let format = String(formatStyle);
if (formatStyle) {
let dateInstance = getDateInstance(date);
formatDateList.forEach(formatItem => {
for (let i = 0, len = formatItem.symbolList.length; i < len; i++) {
if (format.indexOf(formatItem.symbolList[i]) >= 0) {
format = format.replace(formatItem.symbolList[i], formatItem.getValue(dateInstance))
break;
}
}
})
}
return format;
}
module.exports = {
getDateInstance: getDateInstance,
isToday: isToday,
formatNumber: formatNumber,
formatDateString: formatDateString,
getCurrentFormatDate: getCurrentFormatDate,
getDaysInMonth: getDaysInMonth,
getMonthDays: getMonthDays,
getWeekName: getWeekName,
isLeapYear: isLeapYear,
getLastMonthInfo: getLastMonthInfo,
getNextMonthInfo: getNextMonthInfo,
diffYears: diffYears,
diffMonths: diffMonths,
diffDays: diffDays,
diffHours: diffHours,
diffMinutes: diffMinutes,
diffSeconds: diffSeconds,
};
const eventsHolder = {
observerList: [],//观察对象列表
stickyEvents: [],//粘性事件(消息)
}
function getRegisterType(eventType) {
return eventType ? eventType : "defaultType"
}
class EventBus {
/**
* 发送粘性事件消息(同一个类型,只保留最后一个)
* @param msg 消息
* @param eventType 事件类型
*/
static postSticky(msg, eventType) {
const registerType = getRegisterType(eventType);
const findIndex = eventsHolder.stickyEvents.findIndex(item => item.eventType === registerType);
if (findIndex >= 0) {
eventsHolder.stickyEvents[findIndex].msg = msg;
} else {
eventsHolder.stickyEvents.push({
eventType: registerType,
msg: msg,
})
}
EventBus.post(msg, registerType);
}
/**
* 发送事件消息
* @param msg 消息
* @param eventType 事件类型
*/
static post(msg, eventType) {
const postType = getRegisterType(eventType);
eventsHolder.observerList.forEach(item => {
if (postType === item.eventType && item.subscriber && typeof item.subscriber === "function") {
item.subscriber({eventType: item.eventType, msg: msg});
}
})
}
/**
* //注册一个事件(同一类型只能注册一次,即同一函数名称名称,只能注册一次)
* @param observer 需要观察的对象
* @param eventType 观察的对象事件类型,可确省,默认为 "defaultType"
* @param sticky 是否是粘性事件,可确省,默认为false
* @param subscriber 订阅回调
*/
static register(observer, sticky = false, eventType = 'defaultType', subscriber) {
if (subscriber) {
const registerType = getRegisterType(eventType);
let findIndex = eventsHolder.observerList.findIndex(item => item.observer === observer && item.eventType === eventType);
if (findIndex < 0) {
if (sticky) {
let findEvent = eventsHolder.stickyEvents.find(item => item.eventType === registerType);
if (findEvent && subscriber && typeof subscriber === "function") {
subscriber(findEvent);
}
}
eventsHolder.observerList.push({
observer: observer,
subscriber: subscriber,
eventType: registerType,
})
}
}
}
/**
* 解除注册
* @param observer
*/
static unregister(observer) {
eventsHolder.observerList = eventsHolder.observerList.filter(item => item.observer !== observer);
}
/**
* 销毁所有(谨慎调用)
*/
static destroy() {
eventsHolder.stickyEvents = []
eventsHolder.observerList = []
}
}
module.exports = EventBus;
let vcity = {
11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古",
21: "辽宁", 22: "吉林", 23: "黑龙江", 31: "上海", 32: "江苏",
33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南",
42: "湖北", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", 50: "重庆",
51: "四川", 52: "贵州", 53: "云南", 54: "西藏", 61: "陕西", 62: "甘肃",
63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外"
};
function checkCard(code) {
//是否为空
// if(card === '')
// {
// return false;
//}
//校验长度,类型
if (isCardNo(code) === false) {
return false;
}
//检查省份
if (checkProvince(code) === false) {
return false;
}
//校验生日
if (checkBirthday(code) === false) {
return false;
}
//检验位的检测
if (checkParity(code) === false) {
return false;
}
return true;
}
//检查号码是否符合规范,包括长度,类型
function isCardNo(obj) {
//身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
let reg = /(^\d{15}$)|(^\d{17}(\d|X)$)/;
if (reg.test(obj) === false) {
return false;
}
return true;
}
//取身份证前两位,校验省份
function checkProvince(obj) {
let province = obj.substr(0, 2);
if (vcity[province] == undefined) {
return false;
}
return true;
}
//检查生日是否正确
function checkBirthday(obj) {
let len = obj.length;
//身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字
if (len == '15') {
let re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;
let arr_data = obj.match(re_fifteen);
let year = arr_data[2];
let month = arr_data[3];
let day = arr_data[4];
let birthday = new Date('19' + year + '/' + month + '/' + day);
return verifyBirthday('19' + year, month, day, birthday);
}
//身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X
if (len == '18') {
let re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/;
let arr_data = obj.match(re_eighteen);
let year = arr_data[2];
let month = arr_data[3];
let day = arr_data[4];
let birthday = new Date(year + '/' + month + '/' + day);
return verifyBirthday(year, month, day, birthday);
}
return false;
}
//校验日期
function verifyBirthday(year, month, day, birthday) {
let now = new Date();
let now_year = now.getFullYear();
//年月日是否合理
if (birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day) {
//判断年份的范围(3岁到100岁之间)
let time = now_year - year;
if (time >= 0 && time <= 130) {
return true;
}
return false;
}
return false;
}
//校验位的检测
function checkParity(obj) {
//15位转18位
obj = changeFivteenToEighteen(obj);
let len = obj.length;
if (len == '18') {
let arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
let arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
let cardTemp = 0, i, valnum;
for (i = 0; i < 17; i++) {
cardTemp += obj.substr(i, 1) * arrInt[i];
}
valnum = arrCh[cardTemp % 11];
if (valnum == obj.substr(17, 1)) {
return true;
}
return false;
}
return false;
};
//15位转18位身份证号
function changeFivteenToEighteen(obj) {
if (obj.length == '15') {
let arrInt = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
let arrCh = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
let cardTemp = 0, i;
obj = obj.substr(0, 6) + '19' + obj.substr(6, obj.length - 6);
for (i = 0; i < 17; i++) {
cardTemp += obj.substr(i, 1) * arrInt[i];
}
obj += arrCh[cardTemp % 11];
return obj;
}
return obj;
}
module.exports={
checkCard:checkCard,
};
class LogUtils {
constructor(debug) {
this.enableDebug = debug
}
getTag(tag) {
return tag + '===================='
}
setEnableDebug(debug) {
this.enableDebug = debug
}
debug(msg) {
if (this.enableDebug) {
console.debug(msg)
}
}
debugWithTag(tag, msg) {
if (this.enableDebug) {
console.debug(this.getTag(tag), msg)
}
}
info(msg) {
if (this.enableDebug) {
console.info(msg)
}
}
infoWithTag(tag, msg) {
if (this.enableDebug) {
console.info(this.getTag(tag), msg)
}
}
log(msg) {
if (this.enableDebug) {
console.log(msg)
}
}
logWithTag(tag, msg) {
if (this.enableDebug) {
console.log(this.getTag(tag), msg)
}
}
error(msg) {
if (this.enableDebug) {
console.error(msg)
}
}
errorWithTag(tag, msg) {
if (this.enableDebug) {
console.error(this.getTag(tag), msg)
}
}
warn(msg) {
if (this.enableDebug) {
console.warn(msg)
}
}
warnWithTag(tag, msg) {
if (this.enableDebug) {
console.warn(this.getTag(tag), msg)
}
}
}
module.exports = LogUtils;
//克隆对象
function cloneObject(object) {
if (object instanceof Array) {
let newArray = [];
for (let i = 0, len = object.length; i < len; i++) {
newArray.push(cloneObject(object[i]));
}
return newArray;
} else if (object instanceof Object) {
let newObject = {};
for (let key in object) {
newObject[key] = cloneObject(object[key])
}
return newObject;
}
return object;
}
//将某个对象追加到当前对象中(扩展对象,类似java中的继承)
function extendObject(targetObject, sourceObject) {
if (!sourceObject || typeof (sourceObject) !== 'object') {//源对象为空或者不是对象时
return targetObject;
}
if (targetObject && typeof (sourceObject) === 'object') {
Object.keys(sourceObject).forEach(sourceKey=>{
if (typeof (targetObject[sourceKey]) === 'undefined') {//当前目标没有定义
targetObject[sourceKey] = sourceObject[sourceKey];
} else if (typeof (targetObject[sourceKey]) === 'object') {//当前目标不为空而且是对象时
extendObject(targetObject[sourceKey], sourceObject[sourceKey])
}
})
}
return targetObject;
}
//判断列表是是否包含特定的对象
function containObject(list, object) {
if (!list || list.length < 1) {
return false
}
for (let i = 0, len = list.length; i < len; i++) {
if(deepEqual(list[i],object)){
return true;
}
}
return false;
}
//深入比较对象(判断对象是否相等)
function deepEqual(object_1, object_2) {
let type1 = typeof object_1
let type2 = typeof object_2
if (type1 !== type2) {
return false
}
if (type1 === 'string' || type1 === 'number' || type1 === 'undefined' || type1 === 'boolean') {
return object_1 === object_2
}
if (type1 === 'object') {
if (type1 instanceof Array) {
if (object_1.length !== object_1.length) {
return false
}
if (!object_1.every(item => containObject(object_2, item))) {
return false
}
if (!object_2.every(item => containObject(object_1, item))) {
return false
}
return true
} else {
let keys_1 = Object.keys(object_1)
let keys_2 = Object.keys(object_2)
if (keys_1.length !== keys_2.length) {
return false
}
let filterKeys = keys_2.filter(key => keys_1.includes(key))
if (filterKeys.length !== keys_1.length) {
return false
}
for (let i = 0, len = keys_1.length; i < len; i++) {
let equal = deepEqual(object_1[keys_1[i]], object_2[keys_1[i]])
if (!equal) {
return false
}
}
return true
}
}
return false;
}
function getObjectByList(keysList, valuesObject) {
let newObject = {}
if (keysList && keysList.length > 0 && valuesObject && typeof valuesObject === 'object') {
for (let i = 0, len = keysList.length; i < len; i++) {
let key = keysList[i];
if (key) {
newObject[key] = valuesObject[key]
}
}
}
return newObject
}
function getObjectByObject(keysObject, targetObject) {
if (keysObject && targetObject && typeof keysObject === 'object' && typeof targetObject === 'object') {
let keys = Object.keys(keysObject)
return getObjectByList(keys,targetObject);
}
return {};
}
function getValueFromObject(obj,keyWords){
if(typeof obj ==='object' && keyWords && typeof keyWords==='string'){
if(obj[keyWords]){
return obj[keyWords];
}
let indexOf = keyWords.indexOf(".");
if(indexOf<0){
return obj[keyWords]
}else{
const keys=keyWords.split(".")
if(obj[keys[0]] && obj[keys[0]] instanceof Object){
const nextKeyWorks = keys.slice(1).join('.')
return getValueFromObject(obj[keys[0]] ,nextKeyWorks);
}
}
}
return "";
}
/**
* 监听属性 并执行监听函数
*/
function observe(obj, key,watchFun) {
if(obj && typeof obj==='object'){
let val = obj[key]; //给该属性设默认值
if(val){
Object.defineProperty(obj, key, {
configurable: true,
enumerable: true,
set: function(value) {
let oldVal = val;
val = value;
watchFun(value, oldVal);
},
get: function() {
return val;
}
})
}else{
let indexOf = key.indexOf(".");
if(indexOf>0){
const objKey=key.substring(0,indexOf)
let newKey=key.substr(indexOf+1);
observe(obj[objKey],newKey,watchFun)
}
}
}
}
/**
* 设置监听器
*/
function setWatcher(data, watch) {
Object.keys(watch).forEach(v => {
observe(data, v,watch[v]);
})
}
module.exports = {
getObjectByObject:getObjectByObject,
getObjectByList:getObjectByList,
getValueFromObject:getValueFromObject,
deepEqual:deepEqual,
containObject:containObject,
cloneObject:cloneObject,
extendObject:extendObject,
setWatcher:setWatcher,
};
const IdCardHelper = require("./IdCardHelper")
class StringHelper {
/**
* 替换所有
* @param content 当前文本
* @param pattern 旧字符串或者正则表达式
* @param newStr 要替换的内容
* @returns {*} 返回新的字符串
*/
static replaceAll(content, pattern, newStr) {
const reg = new RegExp(pattern, "g"); //创建正则RegExp对象
return content.replace(reg, newStr)
}
/**
* 判断是否是身份证
* @param codeStr
* @returns {boolean}
*/
static isIDCard(codeStr){
return IdCardHelper.checkCard(codeStr)
}
static isEmpty(str){
return !str || str.trim().length < 1;
}
/**
* 校验手机号(严格校验)
* //移动号段:134 135 136 137 138 139 147 148 150 151 152 157 158 159 165 172 178 182 183 184 187 188 195 198
* // 联通号段:130 131 132 145 146 155 156 166 167 171 175 176 185 186
* // 电信号段:133 149 153 173 174 177 180 181 189 191 199
* // 虚拟运营商:170
* 分组如下
* //130 131 132 133 134 135 136 137 138 139
* //145 146 147 148 149
* //150 151 152 153 155 156 157 158 159
* // 165 166 167
* //170 171 172 173 174 175 176 177 178
* //180 181 182 183 184 185 186 187 188 189
* // 191 195 198 199
* @param phone
* @returns {boolean}
*/
static isPhoneNumber(phone) {
const phoneStr=String(phone);
//手机号正则
if (/^1[38][0-9]{9}$/.test(phoneStr)) {//校验//130 131 132 133 134 135 136 137 138 139 180 181 182 183 184 185 186 187 188 189号段
return true;
}
if (/^14[56789][0-9]{8}$/.test(phoneStr)) {//校验14开头的号段
return true
}
if (/^15[012356789][0-9]{8}$/.test(phoneStr)) {//校验 1//150 151 152 153 155 156 157 158 159 开头的号段
return true;
}
if (/^16[567][0-9]{8}$/.test(phoneStr)) {//校验 // 165 166 167 开头的号段
return true;
}
if (/^17[012345678][0-9]{8}$/.test(phoneStr)) {//校验 //170 171 172 173 174 175 176 177 178 开头的号段
return true;
}
if (/^19[1589][0-9]{8}$/.test(phoneStr)) {//校验// 191 195 198 199 开头的号段
return true;
}
return false;
}
/**
* 判断是否是邮件地址
* @param email
* @returns {boolean}
*/
static isEmail(email) {
if (email) {
const regex = /^[a-zA-Z0-9]+([-_.][a-zA-Z0-9]+)*@[a-zA-Z0-9]+([-_.][a-zA-Z0-9]+)*\.[a-z]{2,}$/
return regex.test(email)
}
return false
}
/**
* 从富文本中,查找img 标签,收集图片地址(只支持.png .jpg .jpeg 结尾)
* @param text 富文本
* @returns {[]} 返回图片列表
*/
static getImageListFromRichText(text){
const list = [];
let regular = /<img[^>]*>/g
let keysWords = text.match(regular)
if(keysWords && keysWords.length>0){
let srcReg = /http\S*((.jpg)|(.jpeg)|(.png))/g
keysWords.forEach(words=>{
let strings= words.match(srcReg);
if(strings && strings.length>0 && !list.includes(strings[0])){
list.push(strings[0])
}
})
}
return list ;
}
/*RGB颜色转换为16进制*/
static colorRbgToHex(rgbColor){
let lowerCaseColor = rgbColor.toLowerCase();
let reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
if (/^(rgb|RGB)/.test(lowerCaseColor)) {
let aColor = lowerCaseColor.replace(/(?:\(|\)|rgb|RGB)*/g, "").split(",");
let strHex = "#";
for (let i=0; i<aColor.length; i++) {
let hex = Number(aColor[i]).toString(16);
if (hex === "0") {
hex += hex;
}
strHex += hex;
}
if (strHex.length !== 7) {
strHex = lowerCaseColor;
}
return strHex;
} else if (reg.test(lowerCaseColor)) {
let aNum = lowerCaseColor.replace(/#/,"").split("");
if (aNum.length === 6) {
return lowerCaseColor;
} else if(aNum.length === 3) {
let numHex = "#";
for (let i=0; i<aNum.length; i+=1) {
numHex += (aNum[i] + aNum[i]);
}
return numHex;
}
}
return lowerCaseColor;
}
/**
*16进制颜色转为RGB格式
* @param hexColor 16进制颜色
* @returns {string} RGB格式颜色
*/
static colorHexToRgb(hexColor){
let sColor = hexColor.toLowerCase();
let reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
if (sColor && reg.test(sColor)) {
if (sColor.length === 4) {
let sColorNew = "#";
for (let i=1; i<4; i+=1) {
sColorNew += sColor.slice(i, i+1).concat(sColor.slice(i, i+1));
}
sColor = sColorNew;
}
//处理六位的颜色值
let sColorChange = [];
for (let i=1; i<7; i+=2) {
sColorChange.push(parseInt("0x"+sColor.slice(i, i+2)));
}
return "rgb(" + sColorChange.join(",") + ")";
}
return sColor;
};
/**
* 将整数部分逢三一断
* @param value
* @returns {string}
*/
static formatNumber(value) {
if (!value) {
return '0'
}
return value.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,')
}
}
module.exports = StringHelper;
/**
* 获取跳转目标路径
* @param baseUrl
* @param params
* @returns {*}
*/
function getQueryUrl(baseUrl, params) {
let hasStartFlag = baseUrl.indexOf('?') !== -1
if (params instanceof Object) {
let requestUtl = baseUrl
for (let key in params) {
if (params[key] !== undefined) {
if (requestUtl.endsWith("?")) {
requestUtl = `${requestUtl}${key}=${params[key]}`
} else {
requestUtl = `${requestUtl}${!hasStartFlag ? '?' : '&'}${key}=${params[key]}`
if (!hasStartFlag) {
hasStartFlag = true
}
}
}
}
return requestUtl
} else {
return baseUrl
}
}
/**
* 从地址中截取参数
* @param url
* @returns {Map<any, any>}
*/
function getQueryMapFromUrl(url) {
const map = new Map()
if (url && url.indexOf("?") > 0) {
let paramsStr = url.substr(url.indexOf("?") + 1)
let groupList = paramsStr.split("&");
if (groupList && groupList.length > 0) {
groupList.forEach(item => {
let strings = item.split("=");
if (strings && strings.length > 1) {
map.set(strings[0], strings[1])
}
})
}
}
return map;
}
module.exports = {
getQueryMapFromUrl: getQueryMapFromUrl,
getQueryUrl: getQueryUrl,
};
let urlHelper = undefined;
let objectHelper = undefined;
let dateHelper = undefined;
let arrayHelper = undefined;
let calendarHelper = undefined;
let eventBus = undefined;
let stringHelper = undefined;
function getObjectHelper() {
if (objectHelper === undefined) {
objectHelper = require('./common/ObjectHelper')
}
return objectHelper;
}
function getUrlHelper() {
if (urlHelper === undefined) {
urlHelper = require('./common/UrlHelper')
}
return urlHelper;
}
function getDateHelper() {
if (dateHelper === undefined) {
dateHelper = require('./common/DateHelper')
}
return dateHelper;
}
function getCountDownTimer(millisInFuture, countDownInterval) {
let countDownTimer = require('./common/CountDownHelper');
return new countDownTimer(millisInFuture, countDownInterval);
}
function getArrayHelper() {
if (arrayHelper === undefined) {
arrayHelper = require('./common/ArrayHelper');
}
return arrayHelper;
}
function getCalendarHelper() {
if (calendarHelper === undefined) {
calendarHelper = require('./common/CalendarHelper')
}
return calendarHelper
}
function getStringHelper() {
if (stringHelper === undefined) {
stringHelper = require('./common/StringHelper')
}
return stringHelper
}
function getEventBus() {
if (eventBus === undefined) {
eventBus = require('./common/EventBus')
}
return eventBus;
}
class Common {
static getObjectHelper() {
return getObjectHelper();
}
static getUrlHelper() {
return getUrlHelper();
}
static getDateHelper() {
return getDateHelper();
}
static getCountDownTimer(millisInFuture, countDownInterval) {
return getCountDownTimer(millisInFuture, countDownInterval);
}
static getArrayHelper() {
return getArrayHelper();
}
static getStringHelper() {
return getStringHelper();
}
static getCalendarHelper() {
return getCalendarHelper();
}
static getEventBus() {
return getEventBus();
}
static dateConstants = require('./common/DateConstants');
static LogUtils = require('./common/LogUtils');
}
module.exports = Common;
{
"name": "compatible-tools",
"main": "index.d.ts"
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论