uscc-utils
Version:
Utils about unified social credit code | 统一社会信用代码工具方法
165 lines • 4.05 kB
TypeScript
//#region src/types.d.ts
/**
* {@link parseUSCC} 的返回结果
*/
interface ParseResult {
/**
* 统一社会信用代码的登记管理部门类别
*/
category: string;
/**
* 统一社会信用代码是否有效
*/
isValid: boolean;
/**
* 统一社会信用代码对应的机构类型
*/
type: string;
}
/**
* {@link parseUSCC} 的选项
*/
interface ParseOptions {
/**
* 未知类别时的占位文本
*/
unknownCategory?: string;
/**
* 未知类型时的占位文本
*/
unknownType?: string;
/**
* 在解析/校验前标准化输入
* - 去除首尾空白
* - 转为大写
*
* @default false
*/
normalize?: boolean;
}
/**
* 校验相关函数的选项
*/
interface ValidateOptions {
/**
* 在解析/校验前标准化输入
* - 去除首尾空白
* - 转为大写
*
* @default false
*/
normalize?: boolean;
}
/**
* 校验失败原因
*/
type USCCValidationErrorCode = 'INVALID_LENGTH' | 'INVALID_PATTERN' | 'INVALID_CHECKSUM';
/**
* 详细校验结果
*/
interface ValidateUSCCResult {
/**
* 标准化后的输入代码
*/
normalizedCode: string;
/**
* 统一社会信用代码是否有效
*/
isValid: boolean;
/**
* 无效时的失败原因
*/
errorCode?: USCCValidationErrorCode;
}
/**
* 有效统一社会信用代码的结构化字段
*/
interface USCCParts {
/**
* 登记管理部门代码(第1位)
*/
registrationAuthorityCode: string;
/**
* 机构类别代码(第2位)
*/
entityTypeCode: string;
/**
* 行政区划代码(第3-8位)
*/
regionCode: string;
/**
* 主体标识码(第9-17位)
*/
organizationCode: string;
/**
* 校验码(第18位)
*/
checkChar: string;
}
//#endregion
//#region src/parse.d.ts
/**
* 解析统一社会信用代码
* @param code - 待解析的统一社会信用代码
* @param options - 解析选项
* @returns 解析结果 `ParseResult`
*
* @example
* ```
* import { parseUSCC } from 'uscc-utils'
* parseUSCC('91110108551385082Q') // { isValid: true, category: '工商', type: '企业' }
* ```
*/
declare function parseUSCC(code: string, options?: ParseOptions): ParseResult;
//#endregion
//#region src/validate.d.ts
/**
* 标准化统一社会信用代码输入
* @param code - 原始统一社会信用代码
* @returns 标准化后的统一社会信用代码
*/
declare function normalizeUSCC(code: string): string;
/**
* 获取统一社会信用代码的详细校验结果
* @param code - 统一社会信用代码
* @param options - 校验选项
* @returns 详细校验结果
*/
declare function explainUSCC(code: string, options?: ValidateOptions): ValidateUSCCResult;
/**
* 校验统一社会信用代码
* @param code - 统一社会信用代码
* @param options - 校验选项
* @returns 是否有效
*
* @example
* ```
* import { validateUSCC } from 'uscc-utils'
* validateUSCC('91110108551385082Q') // true
* ```
*/
declare function validateUSCC(code: string, options?: ValidateOptions): boolean;
/**
* 按标准结构拆分统一社会信用代码
* @param code - 统一社会信用代码
* @param options - 校验选项
* @returns 若代码有效则返回结构化字段,否则返回 `null`
*/
declare function splitUSCC(code: string, options?: ValidateOptions): USCCParts | null;
//#endregion
//#region src/constants.d.ts
/**
* 正则 统一社会信用代码
* @see {@link https://www.wikidata.org/wiki/Property:P6795}
* @see {@link https://regexper.com/#%2F%5B1-9ANY%5D%5B1-59%5D%5Cd%7B6%7D%5B%5CdA-Z%5D%7B8%7D%5B%5CdX%5D%5B%5CdA-HJ-NP-RTUW-Y%5D%2F}
*/
declare const USCC_PATTERN: RegExp;
/**
* 登记管理部门代码
*/
declare const USCC_CATEGORY_MAP: Record<string, {
category: string;
map: Record<string, string>;
}>;
//#endregion
export { ParseOptions, ParseResult, USCCParts, USCCValidationErrorCode, USCC_CATEGORY_MAP, USCC_PATTERN, ValidateOptions, ValidateUSCCResult, explainUSCC, normalizeUSCC, parseUSCC, splitUSCC, validateUSCC };