Skip to content

Commit

Permalink
chore: 修改说明
Browse files Browse the repository at this point in the history
  • Loading branch information
pearone committed Dec 17, 2023
1 parent 1d85893 commit 4c111e0
Show file tree
Hide file tree
Showing 3 changed files with 143 additions and 0 deletions.
26 changes: 26 additions & 0 deletions packages/event/src/lifecycle.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/** 这是一个生命周期Hooks
*
*/

/** 状态枚举
* 数据加载完成状态
* 渲染完成状态
* 更新完成
* 销毁完成
*/

enum Status {
Loading = 'loading',
Loaded = 'loaded',
Rendering = 'rendering',
Rendered = 'rendered',
UpdateStart = 'start_update',
Updated = 'updated',
Destroyed = 'destroyed'
}

export type LifeCycleHandler = (...args: any[]) => void;
/** 生命周期处理方法 */
export type LifeCycle = {
[key: string]: LifeCycleHandler[];
};
47 changes: 47 additions & 0 deletions packages/event/src/url/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import {
decodeHashURI,
decodeParamsURI,
encodeHashURI,
encodeParamsURI,
setEncodeParams,
getDecodeParams
} from './url';

declare global {
interface URL {
encodeParamsURI: (params: Record<string, any>) => string;
decodeParamsURI: () => Record<string, any>;
encodeHashURI: (params: Record<string, any>) => string;
decodeHashURI: () => Record<string, any>;
}
}

/** 给URL上添加加密的params属性 */
URL.prototype.encodeParamsURI = function (params: Record<string, any>) {
setEncodeParams(this.searchParams, params);
return this.toString();
};

/** 解密URL上params属性 */
URL.prototype.decodeParamsURI = function () {
const default_params = this.searchParams;
return getDecodeParams(default_params);
};

/** 给URL上添加加密的hash属性 */
URL.prototype.encodeHashURI = function (params: Record<string, any>) {
const hash = this.hash.slice(1);
const hash_params = new URLSearchParams(hash);
setEncodeParams(hash_params, params);
this.hash = hash_params.toString();
return this.toString();
};

/** 解密URL上hash属性 */
URL.prototype.decodeHashURI = function () {
const hash = this.hash.slice(1);
const hash_params = new URLSearchParams(hash);
return getDecodeParams(hash_params);
};

export { encodeParamsURI, decodeParamsURI, encodeHashURI, decodeHashURI };
70 changes: 70 additions & 0 deletions packages/event/src/url/url.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
/**
* 对URL上的参数增加加密参数
* @param target_params 添加参数的URL对象
* @param params 需要添加的参数
* @returns
*/
export const setEncodeParams = (
target_params: URLSearchParams,
params: Record<string, any>
) => {
Object.keys(params).forEach((p) => {
const append = window.btoa(
window.encodeURIComponent(JSON.stringify(params[p]))
);
target_params.set(p, append);
});
return target_params;
};

/**
* 保留原始没有加密过的参数,对加密过的参数进行解密
* @param default_params 原始URL上的参数信息
* @returns 解密后的结果
*/
export const getDecodeParams = (default_params: URLSearchParams) => {
const target_params: Record<string, any> = {};
for (const [key, value] of default_params.entries()) {
if (value) {
try {
const decode = JSON.parse(
window.decodeURIComponent(window.atob(value))
);
target_params[key] = decode;
} catch (e) {
target_params[key] = value;
}
}
}
return target_params;
};

/** 给URL上添加加密的params属性 */
export const encodeParamsURI = (uri: string, params: Record<string, any>) => {
const url = new URL(uri);
setEncodeParams(url.searchParams, params);
return url.toString();
};

/** 解密URL上params属性 */
export const decodeParamsURI = (uri: string) => {
const default_params = new URL(uri).searchParams;
return getDecodeParams(default_params);
};

/** 给URL上添加加密的hash属性 */
export const encodeHashURI = (uri: string, params: Record<string, any>) => {
const url = new URL(uri);
const hash = url.hash.slice(1);
const hash_params = new URLSearchParams(hash);
setEncodeParams(hash_params, params);
url.hash = hash_params.toString();
return url.toString();
};

/** 解密URL上hash属性 */
export const decodeHashURI = (uri: string) => {
const hash = new URL(uri).hash.slice(1);
const hash_params = new URLSearchParams(hash);
return getDecodeParams(hash_params);
};

0 comments on commit 4c111e0

Please sign in to comment.