UNPKG

@yuntools/ali-oss

Version:

阿里云 OSS 命令行工具 ossutil 封装,支持 ESM,CJS 导入,提供 TypeScript 类型定义

77 lines (62 loc) 1.81 kB
import assert from 'node:assert' import { undefined } from '../config.js' import { commonProcessInputMap } from '../helper.js' import { BaseOptions, Config, DataBase, DataKey, ParamMap, PlaceholderKey, } from '../types.js' import { initBaseOptions } from './common.js' export interface SignOptions extends BaseOptions { /** cloudurl 路径,不包括 bucket */ src: string /** * 不对cloud_url中携带的正斜线(/)进行编码 * @default false */ disableEncodeSlash?: boolean | undefined /** * 签名 URL 过期时间,单位秒 * @default 60 */ timeoutSec?: number | undefined /** * 限定HTTP的访问速度,单位为bit/s。缺省值为0,表示不受限制。 * 取值范围为 245760~838860800 */ trafficLimit?: number | undefined /** Object 的指定版本ID。仅适用于已开启或暂停版本控制状态 Bucket下的 Object */ versionId?: string | undefined } export interface DataSign extends DataBase { /** 不带有 token 认证信息的文件路径 */ [DataKey.link]: string | undefined /** 不带有 token 认证信息的链接 */ [DataKey.httpUrl]: string | undefined /** 带有 token 认证信息的链接 */ [DataKey.httpShareUrl]: string | undefined } export const initOptions: SignOptions = { ...initBaseOptions, src: '', disableEncodeSlash: false, timeoutSec: 60, trafficLimit: undefined, versionId: undefined, } export async function processInput( input: SignOptions, globalConfig: Config | undefined, ): Promise<ParamMap> { const opts: SignOptions = { ...input, encodeSource: true, } const map = commonProcessInputMap(opts, initOptions, globalConfig) assert(map.get(PlaceholderKey.src), 'dest is required') map.delete(PlaceholderKey.dest) return map }