ddan-js 2.0.8 → 2.1.0

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.
@@ -40,7 +40,7 @@ class DStore extends event_1.default {
40
40
  result = obj_1.default.copy(val);
41
41
  }
42
42
  else {
43
- const [, data] = await hook_1.default.exec(() => this.dispatch(key), `${this.__eventId__}_${key}`);
43
+ const [, data] = await hook_1.default.exec(() => this.dispatch(key), `${this.__eventId}_${key}`);
44
44
  result = data;
45
45
  }
46
46
  return result;
@@ -2,19 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const is_1 = require("../util/is");
4
4
  class DTask {
5
- __source__;
5
+ __source;
6
6
  constructor(source) {
7
- this.__source__ = source;
7
+ this.__source = source;
8
8
  }
9
9
  run() {
10
10
  let promise;
11
11
  try {
12
12
  let temp;
13
- if (is_1.default.isFunction(this.__source__)) {
14
- temp = this.__source__();
13
+ if (is_1.default.isFunction(this.__source)) {
14
+ temp = this.__source();
15
15
  }
16
16
  else {
17
- temp = this.__source__;
17
+ temp = this.__source;
18
18
  }
19
19
  promise = is_1.default.isPromise(temp) ? temp : Promise.resolve(temp);
20
20
  return promise.then(data => [null, data]).catch(err => [err, undefined]);
@@ -48,12 +48,12 @@ class DTrack {
48
48
  }
49
49
  exports.DTrack = DTrack;
50
50
  class DTracker {
51
- __map__ = new Map();
52
- __trackList__ = [];
51
+ __map = new Map();
52
+ __trackList = [];
53
53
  can = true;
54
54
  clear() {
55
- this.__map__.clear();
56
- this.__trackList__ = [];
55
+ this.__map.clear();
56
+ this.__trackList = [];
57
57
  return this;
58
58
  }
59
59
  add(name, { desc = "", type = "" } = {}) {
@@ -63,13 +63,13 @@ class DTracker {
63
63
  _track.name = name;
64
64
  _track.type = type;
65
65
  _track.desc = desc;
66
- this.__trackList__.push(_track);
66
+ this.__trackList.push(_track);
67
67
  return _track.id;
68
68
  }
69
69
  done(id) {
70
70
  if (!id || !this.can)
71
71
  return;
72
- const _track = this.__trackList__.find(e => e.id === id);
72
+ const _track = this.__trackList.find(e => e.id === id);
73
73
  if (!_track || _track.isDone)
74
74
  return;
75
75
  _track.done();
@@ -77,38 +77,38 @@ class DTracker {
77
77
  endTrack.id = this._endId(id);
78
78
  endTrack.flag = 1;
79
79
  endTrack.desc = `${_track.desc} | end`;
80
- this.__trackList__.push(endTrack);
80
+ this.__trackList.push(endTrack);
81
81
  }
82
82
  getTrack(id) {
83
- return this.__trackList__.find(e => e.id === id);
83
+ return this.__trackList.find(e => e.id === id);
84
84
  }
85
85
  getLine(id) {
86
86
  if (!id || id.endsWith("-end"))
87
87
  return [];
88
- const idx_s = this.__trackList__.findIndex(e => e.id === id);
88
+ const idx_s = this.__trackList.findIndex(e => e.id === id);
89
89
  if (idx_s < 0)
90
90
  return [];
91
91
  const endid = this._endId(id);
92
- const idx_e = this.__trackList__.findIndex(e => e.id === endid);
93
- const count = idx_e < 0 ? this.__trackList__.length - idx_s : idx_e - idx_s + 1;
94
- return list_1.default.take(this.__trackList__, count, idx_s);
92
+ const idx_e = this.__trackList.findIndex(e => e.id === endid);
93
+ const count = idx_e < 0 ? this.__trackList.length - idx_s : idx_e - idx_s + 1;
94
+ return list_1.default.take(this.__trackList, count, idx_s);
95
95
  }
96
96
  getListByName(name, id = "") {
97
97
  if (!name)
98
98
  return [];
99
- const _nameList = this.__trackList__.filter(e => e.name === name);
99
+ const _nameList = this.__trackList.filter(e => e.name === name);
100
100
  if (_nameList.length <= 0)
101
101
  return [];
102
102
  if (!id)
103
103
  return _nameList;
104
104
  const endid = this._endId(id);
105
- return this.__trackList__.filter(e => e.id === id || e.id === endid);
105
+ return this.__trackList.filter(e => e.id === id || e.id === endid);
106
106
  }
107
107
  getList() {
108
- return this.__trackList__;
108
+ return this.__trackList;
109
109
  }
110
110
  size() {
111
- return this.__trackList__.length;
111
+ return this.__trackList.length;
112
112
  }
113
113
  _endId = (id) => `${id}-end`;
114
114
  }
@@ -4,9 +4,9 @@ function mutex(func) {
4
4
  var lastThis = null;
5
5
  async function mutexed(...args) {
6
6
  lastThis = this || lastThis || {};
7
- if (lastThis.__ddMutex__)
7
+ if (lastThis.__ddMutex)
8
8
  return false;
9
- lastThis.__ddMutex__ = true;
9
+ lastThis.__ddMutex = true;
10
10
  try {
11
11
  func && (await Promise.resolve(func.apply(this, args)));
12
12
  }
@@ -14,7 +14,7 @@ function mutex(func) {
14
14
  console.log(err);
15
15
  }
16
16
  finally {
17
- lastThis.__ddMutex__ = false;
17
+ lastThis.__ddMutex = false;
18
18
  }
19
19
  }
20
20
  return mutexed;
@@ -36,11 +36,29 @@ const readAsDataURL = (file, cb) => {
36
36
  cb && cb(e.target?.result);
37
37
  };
38
38
  };
39
- const downloadFile = (fileName, dataUrl) => {
40
- const a = document.createElement("a");
41
- a.href = dataUrl;
42
- a.download = fileName;
43
- a.click();
39
+ const downloadUrl = (filename, url) => {
40
+ try {
41
+ const a = document.createElement("a");
42
+ a.href = url;
43
+ a.download = filename;
44
+ a.click();
45
+ }
46
+ catch (err) {
47
+ console.warn(`[ddan] downloadUrl`, err);
48
+ }
49
+ };
50
+ const download = (filename, obj) => {
51
+ if (!obj)
52
+ return;
53
+ if (typeof obj === "string") {
54
+ downloadUrl(filename, obj);
55
+ return;
56
+ }
57
+ const href = URL?.createObjectURL(obj);
58
+ if (!href)
59
+ return;
60
+ downloadUrl(filename, href);
61
+ URL?.revokeObjectURL(href);
44
62
  };
45
63
  const downloadImage = (url) => {
46
64
  try {
@@ -56,13 +74,13 @@ const downloadImage = (url) => {
56
74
  let context = canvas.getContext("2d");
57
75
  context && context.drawImage(img, 0, 0, img.width, img.height);
58
76
  let base64 = canvas.toDataURL(); //得到图片的base64编码数据
59
- downloadFile(name, base64);
77
+ downloadUrl(name, base64);
60
78
  };
61
79
  img.src = url; // 将canvas对象转换为图片的data url
62
80
  img.setAttribute("crossOrigin", "Anonymous");
63
81
  }
64
82
  catch (err) {
65
- console.log(`[ddan] downloadImageUrl`, err);
83
+ console.warn(`[ddan] downloadImage`, err);
66
84
  }
67
85
  return Promise.resolve();
68
86
  };
@@ -85,8 +103,8 @@ const watermark = (text, { width = 400, height = 300, angle = 0, fillStyle = "rg
85
103
  return `url(${canvas.toDataURL()})`; // "image/png" 默认
86
104
  }
87
105
  catch (err) {
88
- console.log(`[ddan] watermark`, err);
106
+ console.warn(`[ddan] watermark`, err);
89
107
  return "";
90
108
  }
91
109
  };
92
- exports.default = { dataURLtoFile, dataURLtoBlob, blobToFile, readAsDataURL, downloadFile, downloadImage, watermark };
110
+ exports.default = { dataURLtoFile, dataURLtoBlob, blobToFile, readAsDataURL, downloadUrl, download, downloadImage, watermark };
@@ -25,4 +25,14 @@ const parseUrl = (url) => {
25
25
  params
26
26
  };
27
27
  };
28
- exports.default = { parse: decode_1.default, stringify: encode_1.default, https, parseUrl };
28
+ const parsePath = (path) => {
29
+ const _path = (path || "").replace(/\\/g, "/").split("?")[0];
30
+ const idx = _path.lastIndexOf('/') + 1;
31
+ const name = _path.substring(idx);
32
+ const last = name.lastIndexOf(".");
33
+ const withoutExtension = name.substring(0, last);
34
+ const extension = name.substring(last);
35
+ const root = _path.substring(0, idx);
36
+ return { root, name, withoutExtension, extension };
37
+ };
38
+ exports.default = { parse: decode_1.default, stringify: encode_1.default, https, parseUrl, parsePath };
@@ -4,9 +4,9 @@ export interface IDEvent {
4
4
  tag: string;
5
5
  }
6
6
  export default class DEvent {
7
- __map__: Map<string, Set<Function | any>>;
8
- __tagList__: IDEvent[];
9
- __eventId__: string;
7
+ __map: Map<string, Set<Function | any>>;
8
+ __tagList: IDEvent[];
9
+ __eventId: string;
10
10
  constructor();
11
11
  clear(): this;
12
12
  /**
@@ -1,7 +1,7 @@
1
1
  export type TSVG = "back" | "right" | "home" | "close" | "close_circle" | "close_circle_fill" | "warning" | "play" | "lock" | "lock_fill" | "plus" | "plus_circle" | "plus_circle_fill" | "star" | "star_fill" | "share" | "love" | "love_fill";
2
2
  export declare class DIcon {
3
- __defStyle__: string;
4
- __map__: Record<TSVG, string>;
3
+ __defStyle: string;
4
+ __map: Record<TSVG, string>;
5
5
  getBase64: (svgType: TSVG) => string;
6
6
  getSVG: (svgType: TSVG) => {
7
7
  url: string;
@@ -1,5 +1,5 @@
1
1
  export default class DPipeTask {
2
- __list__: any[];
2
+ __list: any[];
3
3
  constructor(_task?: any);
4
4
  push(_task?: any): this;
5
5
  clear(): this;
@@ -1,7 +1,7 @@
1
1
  export default class DPipeline {
2
- __list__: any[];
3
- __running__: boolean;
4
- __waitting__: boolean;
2
+ __list: any[];
3
+ __running: boolean;
4
+ __waitting: boolean;
5
5
  constructor();
6
6
  pipe(_task?: any): this;
7
7
  delay(t?: number): this;
@@ -1,5 +1,5 @@
1
1
  export default class DPipeparallel {
2
- __list__: any[];
2
+ __list: any[];
3
3
  constructor();
4
4
  add(_task?: any): this;
5
5
  clear(): this;
@@ -1,5 +1,5 @@
1
1
  export default class DTask {
2
- __source__: any;
2
+ __source: any;
3
3
  constructor(source?: any);
4
4
  run(): Promise<any[]>;
5
5
  static _lockedMap: Map<string, Promise<any[]>>;
@@ -25,8 +25,8 @@ export declare class DTrack {
25
25
  done: (t?: number) => void;
26
26
  }
27
27
  export declare class DTracker {
28
- __map__: Map<string, DTrack>;
29
- __trackList__: DTrack[];
28
+ __map: Map<string, DTrack>;
29
+ __trackList: DTrack[];
30
30
  can: boolean;
31
31
  clear(): this;
32
32
  add(name: string, { desc, type }?: {
@@ -192,6 +192,12 @@ declare const _default: {
192
192
  query: string;
193
193
  params: {};
194
194
  };
195
+ parsePath: (path: string) => {
196
+ root: string;
197
+ name: string;
198
+ withoutExtension: string;
199
+ extension: string;
200
+ };
195
201
  };
196
202
  css: {
197
203
  stringify: (styleObj: Record<string, string | number>) => string;
@@ -224,7 +230,8 @@ declare const _default: {
224
230
  dataURLtoBlob: (dataurl: any) => Blob;
225
231
  blobToFile: (theBlob: any, fileName: any) => any;
226
232
  readAsDataURL: (file: any, cb: any) => void;
227
- downloadFile: (fileName: any, dataUrl: any) => void;
233
+ downloadUrl: (filename: string, url: string) => void;
234
+ download: (filename: string, obj: string | Blob | MediaSource) => void;
228
235
  downloadImage: (url: string) => Promise<void> | undefined;
229
236
  watermark: (text: string, { width, height, angle, fillStyle, font, textAlign, textBaseline }?: {
230
237
  width?: number | undefined;
@@ -3,7 +3,8 @@ declare const _default: {
3
3
  dataURLtoBlob: (dataurl: any) => Blob;
4
4
  blobToFile: (theBlob: any, fileName: any) => any;
5
5
  readAsDataURL: (file: any, cb: any) => void;
6
- downloadFile: (fileName: any, dataUrl: any) => void;
6
+ downloadUrl: (filename: string, url: string) => void;
7
+ download: (filename: string, obj: string | Blob | MediaSource) => void;
7
8
  downloadImage: (url: string) => Promise<void> | undefined;
8
9
  watermark: (text: string, { width, height, angle, fillStyle, font, textAlign, textBaseline }?: {
9
10
  width?: number | undefined;
@@ -25,5 +25,11 @@ declare const _default: {
25
25
  query: string;
26
26
  params: {};
27
27
  };
28
+ parsePath: (path: string) => {
29
+ root: string;
30
+ name: string;
31
+ withoutExtension: string;
32
+ extension: string;
33
+ };
28
34
  };
29
35
  export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ddan-js",
3
- "version": "2.0.8",
3
+ "version": "2.1.0",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "main": "bin/ddan-js.js",