@soga/fetcher 0.0.1 → 0.1.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # downloader
@@ -0,0 +1,2 @@
1
+ import { AliBufferParams } from './types';
2
+ export declare function getAliBuffer(params: AliBufferParams): Promise<Buffer<ArrayBuffer>>;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAliBuffer=getAliBuffer;const ali_fetcher_1=require("./ali-fetcher"),common_1=require("./common");async function getAliBuffer(e){const t=calculateRangeData(e);return await parallelGetBuffer(t)}async function parallelGetBuffer(e){const{ranges:t,threads:a}=e,r=[...t],n=async()=>{if(!r.length)return;const e=r.shift();if(!e)return;const t=(0,common_1.getKey)(e);if(!common_1.bufferCache[t]?.data){const a=(0,ali_fetcher_1.getAliFetcher)(),{access_token:r,drive_id:n,file_id:c}=e,o=await a.getArrayBuffer({access_token:r,drive_id:n,file_id:c,start:e.start,end:e.end,ua:e.ua});common_1.bufferCache[t]={updated:Date.now(),data:Buffer.from(o)}}await n()},c=[];for(let e=0;e<a;e++)c.push(n());await Promise.all(c);const o=t.map((e=>{const t=(0,common_1.getKey)(e);return common_1.bufferCache[t]?.data?common_1.bufferCache[t].data:null})),f=Buffer.concat(o);return t.forEach((e=>{const t=(0,common_1.getKey)(e);delete common_1.bufferCache[t]})),f}function calculateRangeData(e){const{start:t,end:a}=e,r=Math.max(a-t+1,0),n=Math.ceil(r/1572864),c=Math.ceil(r/n),o=[];for(let r=0;r<n;r++){const n=t+r*c,f=Math.min(a,n+c-1);o.push({...e,start:n,end:f})}return{ranges:o,threads:2}}
@@ -0,0 +1,27 @@
1
+ import { AxiosInstance } from 'axios';
2
+ import { Repository } from 'typeorm';
3
+ import { FetchUrl } from '@soga/entities';
4
+ export declare class AliFetcher {
5
+ axios: AxiosInstance;
6
+ private domain;
7
+ protected urlRepository: Repository<FetchUrl>;
8
+ constructor();
9
+ getDownloadUrl({ access_token, drive_id, file_id, ua, }: {
10
+ access_token: string;
11
+ drive_id: string;
12
+ file_id: string;
13
+ ua?: string;
14
+ }): Promise<string>;
15
+ getArrayBuffer(params: {
16
+ access_token: string;
17
+ drive_id: string;
18
+ file_id: string;
19
+ start: number;
20
+ end: number;
21
+ ua?: string;
22
+ }): Promise<ArrayBuffer>;
23
+ private multipleGetArrayBuffer;
24
+ private fetchDownloadInfo;
25
+ private getKey;
26
+ }
27
+ export declare const getAliFetcher: () => AliFetcher;
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAliFetcher=exports.AliFetcher=void 0;const axios_1=__importDefault(require("axios")),typeorm_1=require("typeorm"),global_1=require("@soga/global"),entities_1=require("@soga/entities"),processMap={};let instance=null;class AliFetcher{axios;domain="https://openapi.alipan.com";urlRepository;constructor(){this.axios=axios_1.default.create({baseURL:this.domain}),this.axios.interceptors.response.use((e=>e.data),(e=>Promise.reject(e)));const e=(0,global_1.getDataSource)();this.urlRepository=e.getRepository(entities_1.FetchUrl)}async getDownloadUrl({access_token:e,drive_id:t,file_id:i,ua:r}){const a=this.getKey({access_token:e,file_id:i,ua:r});try{for(;processMap[a];)await new Promise((e=>setTimeout(e,100)));processMap[a]=!0;const o=await this.urlRepository.findOne({where:{key:a,fail:(0,typeorm_1.LessThan)(2),expire:(0,typeorm_1.MoreThan)(Date.now())},order:{fail:"ASC"}});if(o)return o.fail>1?(await this.urlRepository.delete({key:a}),""):o.dlink;const{url:s,expiration:n}=await this.fetchDownloadInfo({access_token:e,drive_id:t,file_id:i,ua:r});if(s)return await this.urlRepository.save({dlink:s,key:a,speed:100,expire:new Date(n).getTime()}),s;throw new Error("ali fetch download url failed")}finally{delete processMap[a]}}async getArrayBuffer(e){return await this.multipleGetArrayBuffer({...e,times:0})}async multipleGetArrayBuffer({access_token:e,drive_id:t,file_id:i,start:r,end:a,times:o=0,ua:s}){const n=await this.getDownloadUrl({access_token:e,drive_id:t,file_id:i,ua:s});if(!n)throw new Error("获取下载链接失败");try{const e=a-r+1,t=Math.max(1e3*Math.ceil(e/1024/50),3e3);return(await axios_1.default.get(n,{headers:{Range:`bytes=${r}-${a}`,"User-Agent":s,Accept:"application/octet-stream"},responseType:"arraybuffer",timeout:t})).data}catch(l){const c=this.getKey({access_token:e,file_id:i,ua:s});if(await this.urlRepository.increment({key:c,dlink:n},"fail",1),await new Promise((e=>setTimeout(e,1e3))),(o||0)<3)return await this.multipleGetArrayBuffer({access_token:e,drive_id:t,file_id:i,start:r,end:a,times:(o||0)+1,ua:s});throw l}}async fetchDownloadInfo({access_token:e,drive_id:t,file_id:i,ua:r}){const a={Authorization:`Bearer ${e}`,"User-Agent":r},{url:o,expiration:s}=await this.axios.post("/adrive/v1.0/openFile/getDownloadUrl",{drive_id:t,file_id:i},{headers:a});return{url:o,expiration:s}}getKey({access_token:e,file_id:t,ua:i}){const r=i?encodeURIComponent(i):"ua";return`ali-${encodeURIComponent(e)}-${r}-${t}`}}exports.AliFetcher=AliFetcher;const getAliFetcher=()=>(instance||((0,global_1.checkDataSource)(),instance=new AliFetcher),instance);exports.getAliFetcher=getAliFetcher;
@@ -0,0 +1,2 @@
1
+ import { BaiduBufferParams } from './types';
2
+ export declare function getBaiduBuffer(params: BaiduBufferParams): Promise<Buffer<ArrayBuffer>>;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getBaiduBuffer=getBaiduBuffer;const baidu_ua_1=require("@soga/baidu-ua"),baidu_fetcher_1=require("./baidu-fetcher"),common_1=require("./common");async function getBaiduBuffer(t){const e=calculateRangeData(t);return await parallelGetBuffer(e)}async function parallelGetBuffer(t){const{ranges:e,threads:a}=t,r=[...e],n=async()=>{if(!r.length)return;const t=r.shift();if(!t)return;const e=(0,common_1.getKey)(t);if(!common_1.bufferCache[e]?.data){const a=(0,baidu_fetcher_1.getBaiduFetcher)(),{access_token:r,fs_id:n,host_id:u}=t,{ua:o,finishBaiduUA:c}=await(0,baidu_ua_1.getBaiduUA)(u,t.total),s=await a.getArrayBuffer({access_token:r,fs_id:n,start:t.start,end:t.end,ua:t.auto_ua?o:t.ua});c(),common_1.bufferCache[e]={updated:Date.now(),data:Buffer.from(s)}}await n()},u=[];for(let t=0;t<a;t++)u.push(n());await Promise.all(u);const o=e.map((t=>{const e=(0,common_1.getKey)(t);return common_1.bufferCache[e]?.data?common_1.bufferCache[e].data:null})),c=Buffer.concat(o);return e.forEach((t=>{const e=(0,common_1.getKey)(t);delete common_1.bufferCache[e]})),c}function calculateRangeData(t){const{start:e,end:a,total:r}=t,n=Math.max(a-e+1,0);if(2==t.host_vip_type){const r=Math.ceil(n/1572864),u=Math.ceil(n/r),o=[];for(let n=0;n<r;n++){const r=e+n*u,c=Math.min(a,r+u-1);o.push({...t,start:r,end:c,auto_ua:!1})}return{ranges:o,threads:2}}{const u=Math.ceil(n/131072),o=Math.ceil(n/u),c=[];for(let r=0;r<u;r++){const n=e+r*o,u=Math.min(a,n+o-1);c.push({...t,start:n,end:u,auto_ua:!0})}return{ranges:c,threads:Math.min(r<52428800?8:6,u)}}}
@@ -0,0 +1,34 @@
1
+ import { AxiosInstance } from 'axios';
2
+ import { Repository } from 'typeorm';
3
+ import { FetchUrl } from '@soga/entities';
4
+ export declare class BaiduFetcher {
5
+ axios: AxiosInstance;
6
+ private domain;
7
+ protected urlRepository: Repository<FetchUrl>;
8
+ constructor();
9
+ getDownloadUrl({ access_token, fs_id, ua, }: {
10
+ access_token: string;
11
+ fs_id: number;
12
+ ua?: string;
13
+ }): Promise<string>;
14
+ getArrayBuffer(params: {
15
+ access_token: string;
16
+ fs_id: number;
17
+ start: number;
18
+ end: number;
19
+ ua?: string;
20
+ }): Promise<ArrayBuffer>;
21
+ getDownloadUrlByRange({ access_token, fs_id, start, end, ua, }: {
22
+ access_token: string;
23
+ fs_id: number;
24
+ start: number;
25
+ end: number;
26
+ ua?: string;
27
+ }): Promise<string>;
28
+ private cleanExpired;
29
+ private fetchBestDlink;
30
+ private fetchDownloadUrl;
31
+ private multipleGetArrayBuffer;
32
+ private getKey;
33
+ }
34
+ export declare const getBaiduFetcher: () => BaiduFetcher;
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getBaiduFetcher=exports.BaiduFetcher=void 0;const axios_1=__importDefault(require("axios")),typeorm_1=require("typeorm"),global_1=require("@soga/global"),entities_1=require("@soga/entities"),processMap={};let instance=null,lastCleanTime=0;class BaiduFetcher{axios;domain="https://pan.baidu.com";urlRepository;constructor(){this.axios=axios_1.default.create({baseURL:this.domain}),this.axios.interceptors.response.use((e=>e.data),(e=>Promise.reject(e)));const e=(0,global_1.getDataSource)();this.urlRepository=e.getRepository(entities_1.FetchUrl)}async getDownloadUrl({access_token:e,fs_id:t,ua:a}){return await this.getDownloadUrlByRange({access_token:e,fs_id:t,start:0,end:0,ua:a})}async getArrayBuffer(e){return await this.cleanExpired(),await this.multipleGetArrayBuffer({...e,times:0})}async getDownloadUrlByRange({access_token:e,fs_id:t,start:a=0,end:s=0,ua:i}){const r=this.getKey({fs_id:t,access_token:e,ua:i});try{for(;processMap[r];)await new Promise((e=>setTimeout(e,100)));processMap[r]=!0;const n=await this.urlRepository.findOne({where:{key:r,speed:(0,typeorm_1.MoreThan)(30),expire:(0,typeorm_1.MoreThan)(Date.now())},order:{speed:"DESC",fail:"ASC"}});if(n)return n.fail>10?(await this.urlRepository.delete({key:r}),""):n.dlink;const{dlink:o,speed:c}=await this.fetchBestDlink({access_token:e,fs_id:t,start:a,end:s,ua:i});if(o)return await this.urlRepository.save({dlink:o,key:r,speed:c,expire:Date.now()+252e5}),o;throw new Error("baidu fetch download url failed")}finally{delete processMap[r]}}async cleanExpired(){Date.now()-lastCleanTime>18e5&&(await this.urlRepository.delete({expire:(0,typeorm_1.LessThan)(Date.now())}),lastCleanTime=Date.now())}async fetchBestDlink({fs_id:e,start:t=0,end:a=0,ua:s,access_token:i}){const r=[];let n="";const o=await this.fetchDownloadUrl({fs_id:e,access_token:i,ua:s});if(!o)return{dlink:"",speed:0};const c=Math.min(t+127,a),d={"User-Agent":s,Range:`bytes=${t}-${c}`},l=c-t+1,u={start:0,end:0};for(let e=0;e<50;e++){const e=(await axios_1.default.get(o,{headers:d,maxRedirects:0,validateStatus:e=>e>=200&&e<303})).headers.location;if(!e)return{dlink:"",speed:0};const t=new URL(e),{hostname:a}=t;if(!r.includes(a)){n=e;try{return u.start=Date.now(),await axios_1.default.get(e,{headers:d,timeout:2e3}),u.end=Date.now(),{dlink:e,speed:1e3*l/(u.end-u.start)}}catch(e){r.push(a),await new Promise((e=>setTimeout(e,200)));continue}}}return{dlink:n,speed:1e3*l/(u.end-u.start)}}async fetchDownloadUrl({fs_id:e,ua:t="pan.baidu.com",access_token:a}){const s=await this.axios.get("/rest/2.0/xpan/multimedia",{params:{access_token:a,dlink:"1",method:"filemetas",fsids:JSON.stringify([e])},headers:{"User-Agent":t}}),{errno:i,list:r}=s||{};if(0!=i)throw new Error(`获取下载链接失败: ${i}`);if(!r||!r.length)throw new Error("获取下载链接失败");return`${r[0].dlink}&access_token=${a}`}async multipleGetArrayBuffer({access_token:e,fs_id:t,start:a,end:s,times:i=0,ua:r}){const n=await this.getDownloadUrlByRange({access_token:e,fs_id:t,start:a,end:s,ua:r});if(!n)throw new Error("获取下载链接失败");try{const e=s-a+1,t=Math.max(1e3*Math.ceil(e/1024/10),3e3);return(await axios_1.default.get(n,{headers:{Range:`bytes=${a}-${s}`,"User-Agent":r,Accept:"application/octet-stream"},responseType:"arraybuffer",timeout:t})).data}catch(o){const c=this.getKey({fs_id:t,access_token:e,ua:r});if(await this.urlRepository.increment({key:c,dlink:n},"fail",1),await new Promise((e=>setTimeout(e,1e3))),(i||0)<3)return await this.multipleGetArrayBuffer({access_token:e,fs_id:t,start:a,end:s,times:(i||0)+1,ua:r});throw o}}getKey({access_token:e,fs_id:t,ua:a}){const s=a?encodeURIComponent(a):"ua";return`baidu-${encodeURIComponent(e)}-${s}-${t}`}}exports.BaiduFetcher=BaiduFetcher;const getBaiduFetcher=()=>(instance||((0,global_1.checkDataSource)(),instance=new BaiduFetcher),instance);exports.getBaiduFetcher=getBaiduFetcher;
@@ -0,0 +1,10 @@
1
+ export declare const bufferCache: Record<string, {
2
+ updated: number;
3
+ data: Buffer<ArrayBuffer>;
4
+ }>;
5
+ export declare const getKey: ({ record_id, part_name, start, end, }: {
6
+ record_id: number;
7
+ part_name: string;
8
+ start: number;
9
+ end: number;
10
+ }) => string;
package/dist/common.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getKey=exports.bufferCache=void 0,exports.bufferCache={};const getKey=({record_id:e,part_name:t,start:r,end:o})=>`${t}_${e}-${r}-${o}`;exports.getKey=getKey;
package/dist/main.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ export { BaiduFetcher, getBaiduFetcher } from './baidu-fetcher';
2
+ export { AliFetcher, getAliFetcher } from './ali-fetcher';
3
+ export { getBaiduBuffer } from './baidu-buffer';
4
+ export { getAliBuffer } from './ali-buffer';
5
+ export { getBaiduPreviewBuffer, getAliPreviewBuffer } from './preview-buffer';
6
+ export { FetchUrl } from '@soga/entities';
7
+ export * from './types';
package/dist/main.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,i){void 0===i&&(i=t);var u=Object.getOwnPropertyDescriptor(r,t);u&&!("get"in u?!r.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,i,u)}:function(e,r,t,i){void 0===i&&(i=t),e[i]=r[t]}),__exportStar=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||__createBinding(r,e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.FetchUrl=exports.getAliPreviewBuffer=exports.getBaiduPreviewBuffer=exports.getAliBuffer=exports.getBaiduBuffer=exports.getAliFetcher=exports.AliFetcher=exports.getBaiduFetcher=exports.BaiduFetcher=void 0;var baidu_fetcher_1=require("./baidu-fetcher");Object.defineProperty(exports,"BaiduFetcher",{enumerable:!0,get:function(){return baidu_fetcher_1.BaiduFetcher}}),Object.defineProperty(exports,"getBaiduFetcher",{enumerable:!0,get:function(){return baidu_fetcher_1.getBaiduFetcher}});var ali_fetcher_1=require("./ali-fetcher");Object.defineProperty(exports,"AliFetcher",{enumerable:!0,get:function(){return ali_fetcher_1.AliFetcher}}),Object.defineProperty(exports,"getAliFetcher",{enumerable:!0,get:function(){return ali_fetcher_1.getAliFetcher}});var baidu_buffer_1=require("./baidu-buffer");Object.defineProperty(exports,"getBaiduBuffer",{enumerable:!0,get:function(){return baidu_buffer_1.getBaiduBuffer}});var ali_buffer_1=require("./ali-buffer");Object.defineProperty(exports,"getAliBuffer",{enumerable:!0,get:function(){return ali_buffer_1.getAliBuffer}});var preview_buffer_1=require("./preview-buffer");Object.defineProperty(exports,"getBaiduPreviewBuffer",{enumerable:!0,get:function(){return preview_buffer_1.getBaiduPreviewBuffer}}),Object.defineProperty(exports,"getAliPreviewBuffer",{enumerable:!0,get:function(){return preview_buffer_1.getAliPreviewBuffer}});var entities_1=require("@soga/entities");Object.defineProperty(exports,"FetchUrl",{enumerable:!0,get:function(){return entities_1.FetchUrl}}),__exportStar(require("./types"),exports);
@@ -0,0 +1,3 @@
1
+ import { AliPreviewBufferParams, BaiduPreviewBufferParams } from './types';
2
+ export declare const getBaiduPreviewBuffer: ({ record_id, start, end, total, part_name, access_token, host_id, host_vip_type, fs_id, cache, cache_folder, }: BaiduPreviewBufferParams) => Promise<Buffer<ArrayBufferLike>>;
3
+ export declare const getAliPreviewBuffer: ({ record_id, start, end, total, part_name, access_token, host_id, host_vip_type, drive_id, file_id, cache, cache_folder, }: AliPreviewBufferParams) => Promise<Buffer<ArrayBufferLike>>;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAliPreviewBuffer=exports.getBaiduPreviewBuffer=void 0;const ali_buffer_1=require("./ali-buffer"),baidu_buffer_1=require("./baidu-buffer"),preview_store_1=require("./stores/preview-store"),getKey=e=>`${e.part_name}_${e.start}_${e.end}`,getBaiduPreviewBuffer=async({record_id:e,start:t,end:r,total:i,part_name:a,access_token:_,host_id:f,host_vip_type:s,fs_id:o,cache:d,cache_folder:u})=>{const n=(0,preview_store_1.getPreviewStore)(u),c=getKey({part_name:a,start:t,end:r}),p=await n.readBuffer(c);if(p)return p;const v=await(0,baidu_buffer_1.getBaiduBuffer)({record_id:e,start:t,end:r,total:i,access_token:_,host_id:f,host_vip_type:s,fs_id:o,part_name:a});return d&&await n.writeBuffer(c,v),v};exports.getBaiduPreviewBuffer=getBaiduPreviewBuffer;const getAliPreviewBuffer=async({record_id:e,start:t,end:r,total:i,part_name:a,access_token:_,host_id:f,host_vip_type:s,drive_id:o,file_id:d,cache:u,cache_folder:n})=>{const c=(0,preview_store_1.getPreviewStore)(n),p=getKey({part_name:a,start:t,end:r}),v=await c.readBuffer(p);if(v)return v;const w=await(0,ali_buffer_1.getAliBuffer)({record_id:e,start:t,end:r,total:i,access_token:_,host_id:f,host_vip_type:s,drive_id:o,file_id:d,part_name:a});return u&&await c.writeBuffer(p,w),w};exports.getAliPreviewBuffer=getAliPreviewBuffer;
@@ -0,0 +1,15 @@
1
+ import { Level } from 'level';
2
+ import { AbstractSublevel } from 'abstract-level';
3
+ export declare class PreviewStore {
4
+ folder_path: string;
5
+ db: Level<string, any>;
6
+ sub: AbstractSublevel<Level<string, any>, string | Buffer<ArrayBufferLike> | Uint8Array<ArrayBufferLike>, string, Buffer<ArrayBuffer | ArrayBufferLike>>;
7
+ constructor(folder_path: string);
8
+ read<V>(key: string): Promise<V>;
9
+ write<V>(key: string, value: V): Promise<void>;
10
+ delete(key: string): Promise<void>;
11
+ writeBuffer(key: string, buffer: Buffer<ArrayBuffer | ArrayBufferLike>): Promise<void>;
12
+ readBuffer(key: string): Promise<Buffer<ArrayBufferLike>>;
13
+ deleteBuffer(key: string): Promise<void>;
14
+ }
15
+ export declare const getPreviewStore: (folder_path: string) => PreviewStore;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getPreviewStore=exports.PreviewStore=void 0;const level_1=require("level"),path_1=require("path");class PreviewStore{folder_path;db;sub;constructor(e){this.folder_path=e,this.db=new level_1.Level((0,path_1.resolve)(e,"preview_cache"),{valueEncoding:"json",maxFileSize:67108864}),this.sub=this.db.sublevel("sub",{valueEncoding:"buffer"})}async read(e){return await this.db.get(e,{})}async write(e,t){await this.db.put(e,t,{})}async delete(e){await this.db.del(e)}async writeBuffer(e,t){await this.sub.put(e,t)}async readBuffer(e){return await this.sub.get(e)}async deleteBuffer(e){await this.sub.del(e)}}exports.PreviewStore=PreviewStore;const storeMap={},getPreviewStore=e=>{if(storeMap[e])return storeMap[e].updated_at=Date.now(),storeMap[e].store;const t=new PreviewStore(e);return storeMap[e]={updated_at:Date.now(),store:t},t};exports.getPreviewStore=getPreviewStore;
@@ -0,0 +1,27 @@
1
+ interface CommonBufferParams {
2
+ record_id: number;
3
+ part_name: string;
4
+ start: number;
5
+ end: number;
6
+ total: number;
7
+ host_id: number;
8
+ host_vip_type: number;
9
+ access_token: string;
10
+ ua?: string;
11
+ }
12
+ export interface BaiduBufferParams extends CommonBufferParams {
13
+ fs_id: number;
14
+ }
15
+ export interface AliBufferParams extends CommonBufferParams {
16
+ drive_id: string;
17
+ file_id: string;
18
+ }
19
+ export interface BaiduPreviewBufferParams extends BaiduBufferParams {
20
+ cache: boolean;
21
+ cache_folder: string;
22
+ }
23
+ export interface AliPreviewBufferParams extends AliBufferParams {
24
+ cache: boolean;
25
+ cache_folder: string;
26
+ }
27
+ export {};
package/dist/types.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
package/package.json CHANGED
@@ -1,15 +1,57 @@
1
1
  {
2
2
  "name": "@soga/fetcher",
3
- "version": "0.0.1",
4
- "main": "index.js",
3
+ "version": "0.1.24",
5
4
  "publishConfig": {
6
5
  "access": "public"
7
6
  },
7
+ "description": "",
8
+ "main": "dist/main.js",
9
+ "types": "dist/main.d.ts",
10
+ "files": [
11
+ "dist"
12
+ ],
8
13
  "scripts": {
9
- "test": "echo \"Error: no test specified\" && exit 1"
14
+ "build": "rimraf dist && tsc && ts-node ./scripts/minify",
15
+ "minify": "ts-node ./scripts/minify",
16
+ "demo_backup": "ts-node ./demo/demo.ts",
17
+ "demo": "ts-node ./demo/demo.ts",
18
+ "worker": "tsc && ts-node ./demo/worker.ts",
19
+ "test": "jest",
20
+ "dev": "ts-node ./src/main.ts",
21
+ "lint": "eslint . --ext .ts",
22
+ "prepublishOnly": "npm run build"
23
+ },
24
+ "devDependencies": {
25
+ "@types/fs-extra": "^11.0.4",
26
+ "@types/glob": "^8.1.0",
27
+ "@types/jest": "^29.5.14",
28
+ "@types/node": "^20.8.7",
29
+ "@typescript-eslint/eslint-plugin": "^6.4.1",
30
+ "@typescript-eslint/parser": "^6.4.1",
31
+ "eslint": "^8.47.0",
32
+ "eslint-config-prettier": "^9.1.0",
33
+ "eslint-plugin-jest": "^27.9.0",
34
+ "eslint-plugin-prettier": "^5.2.3",
35
+ "glob": "^10.4.5",
36
+ "jest": "^29.7.0",
37
+ "prettier": "^3.0.2",
38
+ "rimraf": "^6.0.1",
39
+ "terser": "^5.19.2",
40
+ "ts-jest": "^29.2.5",
41
+ "ts-node": "^10.9.1",
42
+ "typescript": "^5.1.6"
10
43
  },
11
44
  "keywords": [],
12
45
  "author": "",
13
46
  "license": "ISC",
14
- "description": ""
47
+ "dependencies": {
48
+ "@soga/baidu-ua": "^0.1.23",
49
+ "@soga/entities": "^0.1.23",
50
+ "@soga/global": "^0.1.24"
51
+ },
52
+ "peerDependencies": {
53
+ "axios": "*",
54
+ "typeorm": "*"
55
+ },
56
+ "gitHead": "cc88cbbe4716930ff55abd0fd6cf05267abd6631"
15
57
  }
package/index.js DELETED
@@ -1 +0,0 @@
1
- console.log("cache");