backlib 0.3.2 → 0.4.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.
package/README.md CHANGED
@@ -8,7 +8,7 @@ Minimalist utilities for backend services.
8
8
  - **Web Async** Web request utilities based on [koajs](https://koajs.com/) over express as it is a modern rewrite of more or less the same API with backed in support for Promise/async/await (simplify many of the usecases)
9
9
 
10
10
 
11
- > NOTE: Still under development. If not part of BriteSnow, wait for 0.3.0 and above to use this library. In the meantime feel free to copy/paste code.
11
+ > NOTE: Version `0.4.0` and above uses ESM module (i.e., `type: module`) only.
12
12
 
13
13
 
14
14
  ## Log
@@ -1,19 +1,17 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.newLeafTracer = void 0;
4
1
  /**
5
2
  * Tracker to determine if a decorator is on the leaf"est" method of the class hierarchy.
6
3
  */
7
- function newLeafTracer() {
4
+ export function newLeafTracer() {
8
5
  return new LeafTracer();
9
6
  }
10
- exports.newLeafTracer = newLeafTracer;
11
7
  /**
12
8
  * Ter
13
9
  */
14
10
  class LeafTracer {
15
- // object class, by TopTarget
16
- dic = new Map();
11
+ constructor() {
12
+ // object class, by TopTarget
13
+ this.dic = new Map();
14
+ }
17
15
  /** Returns true if this method is the leaf most method annotatio traced by this tracer */
18
16
  trace(objectClass, targetClass, propertyKey) {
19
17
  let topTargetClassByProperty = this.dic.get(objectClass);
@@ -41,3 +39,4 @@ class LeafTracer {
41
39
  }
42
40
  }
43
41
  }
42
+ //# sourceMappingURL=decorator-leaf-tracer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorator-leaf-tracer.js","sourceRoot":"","sources":["../src/decorator-leaf-tracer.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,MAAM,UAAU,aAAa;IAC5B,OAAO,IAAI,UAAU,EAAE,CAAC;AACzB,CAAC;AAID;;GAEG;AACH,MAAM,UAAU;IAAhB;QAEC,6BAA6B;QACrB,QAAG,GAA6C,IAAI,GAAG,EAAE,CAAC;IAgCnE,CAAC;IA9BA,0FAA0F;IAC1F,KAAK,CAAC,WAAqB,EAAE,WAAqB,EAAE,WAAmB;QAEtE,IAAI,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAEzD,6FAA6F;QAC7F,oCAAoC;QACpC,IAAI,CAAC,wBAAwB,EAAE;YAC9B,wBAAwB,GAAG,IAAI,GAAG,EAAoB,CAAC;YACvD,wBAAwB,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAEvD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC;SACZ;QACD,+BAA+B;aAC1B;YACJ,IAAI,cAAc,GAAG,wBAAwB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAE/D,8DAA8D;YAC9D,6CAA6C;YAC7C,IAAI,CAAC,cAAc,EAAE;gBACpB,wBAAwB,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;gBACvD,OAAO,IAAI,CAAC;aACZ;YACD,6EAA6E;iBACxE;gBACJ,OAAO,CAAC,cAAc,KAAK,WAAW,CAAC,CAAC;aACxC;SACD;IACF,CAAC;CACD"}
package/dist/fs.js CHANGED
@@ -1,13 +1,7 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.saferRemove = exports.glob = void 0;
7
- const fast_glob_1 = __importDefault(require("fast-glob"));
8
- const fs_extra_1 = require("fs-extra");
9
- const path_1 = require("path");
10
- const utils_min_1 = require("utils-min");
1
+ import FastGlob from 'fast-glob';
2
+ import { join as pathJoin, resolve as pathResolve } from 'path';
3
+ import { asArray } from 'utils-min';
4
+ const { pathExists, remove } = (await import('fs-extra')).default;
11
5
  /**
12
6
  * Simplified and sorted glob function (using fast-glob) for one or more pattern from current directory or a optional cwd one.
13
7
  *
@@ -16,37 +10,35 @@ const utils_min_1 = require("utils-min");
16
10
  *
17
11
  * @returns always sorted result return Promise<string[]>
18
12
  */
19
- async function glob(pattern, cwdOrFastGlobOptions) {
13
+ export async function glob(pattern, cwdOrFastGlobOptions) {
20
14
  let opts = undefined;
21
15
  if (cwdOrFastGlobOptions != null) {
22
16
  opts = (typeof cwdOrFastGlobOptions === 'string') ? { cwd: cwdOrFastGlobOptions } : cwdOrFastGlobOptions;
23
17
  }
24
- const result = await fast_glob_1.default(pattern, opts);
18
+ const result = await FastGlob(pattern, opts);
25
19
  const cwd = (opts) ? opts.cwd : undefined;
26
20
  const list = result.map(path => {
27
- return (cwd) ? path_1.join(cwd, path) : path;
21
+ return (cwd) ? pathJoin(cwd, path) : path;
28
22
  });
29
23
  return list.sort(globCompare);
30
24
  }
31
- exports.glob = glob;
32
25
  /** Remove one or more files. Resolved the number of names removed */
33
- async function saferRemove(names, cwd) {
34
- const baseDir = (cwd) ? path_1.resolve(cwd) : path_1.resolve('./');
26
+ export async function saferRemove(names, cwd) {
27
+ const baseDir = (cwd) ? pathResolve(cwd) : pathResolve('./');
35
28
  let removedNames = [];
36
- for (const name of utils_min_1.asArray(names)) {
37
- const fullPath = path_1.join(baseDir, name);
29
+ for (const name of asArray(names)) {
30
+ const fullPath = pathJoin(baseDir, name);
38
31
  if (!fullPath.startsWith(baseDir)) {
39
32
  throw new Error(`Path to be removed does not look safe (nothing done): ${fullPath}\n\tCause: Does not belong to ${baseDir}`);
40
33
  }
41
- const exists = await fs_extra_1.pathExists(fullPath);
34
+ const exists = await pathExists(fullPath);
42
35
  if (exists) {
43
- await fs_extra_1.remove(fullPath);
36
+ await remove(fullPath);
44
37
  removedNames.push(name);
45
38
  }
46
39
  }
47
40
  return removedNames;
48
41
  }
49
- exports.saferRemove = saferRemove;
50
42
  //#region ---------- Utils ----------
51
43
  function globCompare(a, b) {
52
44
  const aPathIdxs = pathIndexes(a);
@@ -75,3 +67,4 @@ function pathIndexes(fullPath) {
75
67
  // return (names instanceof Array) ? names : [names];
76
68
  // }
77
69
  //#endregion ---------- /Utils ----------
70
+ //# sourceMappingURL=fs.js.map
package/dist/fs.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export * from './decorator-leaf-tracer';
2
- export * from './fs';
3
- export * from './log';
4
- export * from './utils';
1
+ export * from './decorator-leaf-tracer.js';
2
+ export * from './fs.js';
3
+ export * from './log.js';
4
+ export * from './utils.js';
package/dist/index.js CHANGED
@@ -1,16 +1,5 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
- };
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./decorator-leaf-tracer"), exports);
14
- __exportStar(require("./fs"), exports);
15
- __exportStar(require("./log"), exports);
16
- __exportStar(require("./utils"), exports);
1
+ export * from './decorator-leaf-tracer.js';
2
+ export * from './fs.js';
3
+ export * from './log.js';
4
+ export * from './utils.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC"}
package/dist/log.js CHANGED
@@ -1,35 +1,13 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.FileLogWriter = exports.BaseLog = void 0;
23
- const fs = __importStar(require("fs-extra"));
24
- const Path = __importStar(require("path"));
25
- const utils_min_1 = require("utils-min");
26
- const fs_1 = require("./fs");
1
+ import * as Path from 'path';
2
+ import { isString } from 'utils-min';
3
+ import { glob, saferRemove } from './fs.js';
4
+ const { pathExists, mkdirs, appendFile, rename } = (await import('fs-extra')).default;
27
5
  /**
28
6
  * Base Log class that handle the base log management logic.
29
7
  */
30
- class BaseLog {
31
- logWriters = [];
8
+ export class BaseLog {
32
9
  constructor(opts) {
10
+ this.logWriters = [];
33
11
  this.logWriters = [...opts.writers];
34
12
  }
35
13
  async log(rec) {
@@ -47,21 +25,12 @@ class BaseLog {
47
25
  }
48
26
  }
49
27
  }
50
- exports.BaseLog = BaseLog;
51
- class FileLogWriter {
52
- name;
53
- dir;
54
- maxCount;
55
- maxTime;
56
- fileProcessor;
57
- recordSerializer;
58
- _init = false;
59
- _rev = 0;
60
- count = 0;
61
- nextUpload = null; // null means nothing scheduled
62
- lastUpload;
63
- file;
28
+ export class FileLogWriter {
64
29
  constructor(opts) {
30
+ this._init = false;
31
+ this._rev = 0;
32
+ this.count = 0;
33
+ this.nextUpload = null; // null means nothing scheduled
65
34
  this.name = opts.name;
66
35
  this.maxCount = opts.maxCount;
67
36
  this.maxTime = opts.maxTime;
@@ -71,10 +40,10 @@ class FileLogWriter {
71
40
  }
72
41
  async init() {
73
42
  if (!this._init) {
74
- await fs.mkdirs(this.dir);
43
+ await mkdirs(this.dir);
75
44
  // delete the logs dir if exit
76
- const oldLogFiles = await fs_1.glob(this.dir + `${this.name}*.log`);
77
- await fs_1.saferRemove(oldLogFiles);
45
+ const oldLogFiles = await glob(this.dir + `${this.name}*.log`);
46
+ await saferRemove(oldLogFiles);
78
47
  console.log('Deleted old log files', oldLogFiles);
79
48
  this.rev();
80
49
  this._init = true;
@@ -96,7 +65,7 @@ class FileLogWriter {
96
65
  // NOTE: In fact, this whole file write and upload, should be part of a FileLogWriter, and we just treat it as above (perhaps in the BigQueryLogWriter extends FileLogWriter)
97
66
  const str = this.recordSerializer(rec);
98
67
  if (str != null) {
99
- await fs.appendFile(this.file, str);
68
+ await appendFile(this.file, str);
100
69
  }
101
70
  // add count
102
71
  this.count = this.count + 1;
@@ -122,12 +91,12 @@ class FileLogWriter {
122
91
  // we rev just before to make sure other logs will happen on new files
123
92
  this.rev();
124
93
  try {
125
- const exists = fs.pathExists(file);
94
+ const exists = await pathExists(file);
126
95
  if (exists) {
127
96
  if (this.fileProcessor) {
128
97
  await this.fileProcessor(file);
129
98
  }
130
- await fs_1.saferRemove(file);
99
+ await saferRemove(file);
131
100
  }
132
101
  else {
133
102
  console.log(`CODE ERROR - can't upload to big query ${file} does not exists`);
@@ -135,16 +104,16 @@ class FileLogWriter {
135
104
  }
136
105
  catch (ex) {
137
106
  console.log(`ERROR - logger.processLogFile - cannot upload to big query ${file}, ${ex.message}`);
138
- await fs.rename(file, file + '.error');
107
+ await rename(file, file + '.error');
139
108
  }
140
109
  this.count = 0;
141
110
  this.lastUpload = Date.now();
142
111
  this.nextUpload = null;
143
112
  }
144
113
  }
145
- exports.FileLogWriter = FileLogWriter;
146
114
  /** default serializer */
147
115
  function defaultSerializer(rec) {
148
- return utils_min_1.isString(rec) ? rec : JSON.stringify(rec);
116
+ return isString(rec) ? rec : JSON.stringify(rec);
149
117
  }
150
118
  //#endregion ---------- /FileLogWriter ----------
119
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC5C,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;AAQtF;;GAEG;AACH,MAAM,OAAO,OAAO;IAGnB,YAAY,IAAmB;QAFvB,eAAU,GAAmB,EAAE,CAAC;QAGvC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAM;QAEf,GAAG;QACH,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE;YACrC,IAAI,MAAM,CAAC,QAAQ,EAAE;gBACpB,IAAI;oBACH,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;iBAC3B;gBAAC,OAAO,EAAE,EAAE;oBACZ,kCAAkC;oBAClC,OAAO,CAAC,GAAG,CAAC,wDAAwD,MAAM,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC,CAAC;iBAC1F;aACD;SACD;IAEF,CAAC;CAED;AAmCD,MAAM,OAAO,aAAa;IAkBzB,YAAY,IAA6B;QATjC,UAAK,GAAG,KAAK,CAAC;QACd,SAAI,GAAG,CAAC,CAAC;QACT,UAAK,GAAG,CAAC,CAAC;QACV,eAAU,GAAkB,IAAI,CAAC,CAAC,+BAA+B;QAOxE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,iBAAiB,CAAC;IACpE,CAAC;IAEO,KAAK,CAAC,IAAI;QACjB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAChB,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEvB,8BAA8B;YAC9B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC;YAC/D,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC;YAElD,IAAI,CAAC,GAAG,EAAE,CAAC;YAEX,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;SAClB;IAEF,CAAC;IAED,+BAA+B;IACvB,GAAG;QACV,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,MAAM,CAAC,CAAA;IAC9D,CAAC;IAGD,iDAAiD;IACjD,KAAK,CAAC,QAAQ,CAAC,GAAM;QAEpB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAChB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;SAClB;QAED,oJAAoJ;QACpJ,6KAA6K;QAC7K,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,GAAG,IAAI,IAAI,EAAE;YAChB,MAAM,UAAU,CAAC,IAAI,CAAC,IAAK,EAAE,GAAG,CAAC,CAAC;SAClC;QAED,YAAY;QACZ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAE5B,uCAAuC;QACvC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC/B,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;SACrB;QACD,0EAA0E;aACrE,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,QAAQ;YAE/C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAC1C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAE7B,UAAU,CAAC,KAAK,IAAI,EAAE;gBACrB,kIAAkI;gBAClI,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;oBACnC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;iBACrB;YACF,CAAC,EAAE,SAAS,CAAC,CAAC;SACd;IAEF,CAAC;IAEO,KAAK,CAAC,OAAO;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAK,CAAC;QACxB,sEAAsE;QACtE,IAAI,CAAC,GAAG,EAAE,CAAC;QAEX,IAAI;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,MAAM,EAAE;gBACX,IAAI,IAAI,CAAC,aAAa,EAAE;oBACvB,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;iBAC/B;gBACD,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;aACxB;iBAAM;gBACN,OAAO,CAAC,GAAG,CAAC,0CAA0C,IAAI,kBAAkB,CAAC,CAAC;aAC9E;SAED;QAAC,OAAO,EAAO,EAAE;YACjB,OAAO,CAAC,GAAG,CAAC,8DAA8D,IAAI,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACjG,MAAM,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC;SACpC;QAED,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACxB,CAAC;CAED;AAED,yBAAyB;AAEzB,SAAS,iBAAiB,CAAI,GAAM;IACnC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAClD,CAAC;AAED,kDAAkD"}
package/dist/utils.js CHANGED
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.prompt = void 0;
4
1
  /** Promise a message and return the trimmed entered value */
5
- async function prompt(message) {
2
+ export async function prompt(message) {
6
3
  process.stdout.write(`\n${message}: `);
7
4
  return new Promise(function (resolve, reject) {
8
5
  process.stdin.resume();
@@ -13,4 +10,4 @@ async function prompt(message) {
13
10
  });
14
11
  });
15
12
  }
16
- exports.prompt = prompt;
13
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAe;IAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,OAAO,IAAI,CAAC,CAAC;IACvC,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM;QAC3C,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,IAAI;YACtC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "backlib",
3
- "version": "0.3.2",
3
+ "type": "module",
4
+ "version": "0.4.0",
4
5
  "description": "Minimalist library for backend services",
5
6
  "main": "dist/index.js",
6
7
  "typings": "dist/index.d.ts",
@@ -12,24 +13,20 @@
12
13
  "url": "https://github.com/britesnow/node-backlib.git"
13
14
  },
14
15
  "scripts": {
15
- "test": "TS_NODE_FILES=true ./node_modules/.bin/mocha -p ./test/tsconfig.json ./test/spec/*.spec.ts",
16
- "testw": "TS_NODE_FILES=true ./node_modules/.bin/mocha -p ./test/tsconfig.json ./test/spec/*.spec.ts --watch --watch-files './test/**/*.ts','./src/**/*.ts'",
16
+ "test": "echo 'no test for now'",
17
17
  "prepare": "node_modules/.bin/rimraf ./dist && ./node_modules/.bin/tsc"
18
18
  },
19
19
  "author": "jeremy.chone@gmail.com",
20
20
  "license": "MIT",
21
21
  "dependencies": {
22
- "fast-glob": "^3.2.4",
23
- "fs-extra": "^9.0.1",
24
- "utils-min": "^0.1.18"
22
+ "fast-glob": "^3.2.11",
23
+ "fs-extra": "^10.0.0",
24
+ "utils-min": "^0.2.0"
25
25
  },
26
26
  "devDependencies": {
27
- "@types/fs-extra": "^9.0.6",
28
- "@types/mocha": "^8.2.1",
29
- "mocha": "^8.2.1",
27
+ "@types/fs-extra": "^9.0.13",
30
28
  "rimraf": "^3.0.2",
31
- "ts-node-dev": "^1.1.6",
32
- "typescript": "^4.2.2"
29
+ "typescript": "^4.5.5"
33
30
  },
34
31
  "files": [
35
32
  "src/",
package/src/fs.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import FastGlob, { Options } from 'fast-glob';
2
- import { pathExists, remove } from 'fs-extra';
3
2
  import { join as pathJoin, resolve as pathResolve } from 'path';
4
3
  import { asArray } from 'utils-min';
4
+ const { pathExists, remove } = (await import('fs-extra')).default;
5
5
 
6
6
  /**
7
7
  * Simplified and sorted glob function (using fast-glob) for one or more pattern from current directory or a optional cwd one.
package/src/index.ts CHANGED
@@ -1,5 +1,5 @@
1
- export * from './decorator-leaf-tracer';
2
- export * from './fs';
3
- export * from './log';
4
- export * from './utils';
1
+ export * from './decorator-leaf-tracer.js';
2
+ export * from './fs.js';
3
+ export * from './log.js';
4
+ export * from './utils.js';
5
5
 
package/src/log.ts CHANGED
@@ -1,7 +1,7 @@
1
- import * as fs from 'fs-extra';
2
1
  import * as Path from 'path';
3
2
  import { isString } from 'utils-min';
4
- import { glob, saferRemove } from './fs';
3
+ import { glob, saferRemove } from './fs.js';
4
+ const { pathExists, mkdirs, appendFile, rename } = (await import('fs-extra')).default;
5
5
 
6
6
 
7
7
  //#region ---------- BaseLog ----------
@@ -99,7 +99,7 @@ export class FileLogWriter<R> implements LogWriter<R> {
99
99
 
100
100
  private async init() {
101
101
  if (!this._init) {
102
- await fs.mkdirs(this.dir);
102
+ await mkdirs(this.dir);
103
103
 
104
104
  // delete the logs dir if exit
105
105
  const oldLogFiles = await glob(this.dir + `${this.name}*.log`);
@@ -133,7 +133,7 @@ export class FileLogWriter<R> implements LogWriter<R> {
133
133
  // NOTE: In fact, this whole file write and upload, should be part of a FileLogWriter, and we just treat it as above (perhaps in the BigQueryLogWriter extends FileLogWriter)
134
134
  const str = this.recordSerializer(rec);
135
135
  if (str != null) {
136
- await fs.appendFile(this.file!, str);
136
+ await appendFile(this.file!, str);
137
137
  }
138
138
 
139
139
  // add count
@@ -166,7 +166,7 @@ export class FileLogWriter<R> implements LogWriter<R> {
166
166
  this.rev();
167
167
 
168
168
  try {
169
- const exists = fs.pathExists(file);
169
+ const exists = await pathExists(file);
170
170
  if (exists) {
171
171
  if (this.fileProcessor) {
172
172
  await this.fileProcessor(file);
@@ -176,9 +176,9 @@ export class FileLogWriter<R> implements LogWriter<R> {
176
176
  console.log(`CODE ERROR - can't upload to big query ${file} does not exists`);
177
177
  }
178
178
 
179
- } catch (ex) {
179
+ } catch (ex: any) {
180
180
  console.log(`ERROR - logger.processLogFile - cannot upload to big query ${file}, ${ex.message}`);
181
- await fs.rename(file, file + '.error');
181
+ await rename(file, file + '.error');
182
182
  }
183
183
 
184
184
  this.count = 0;
@@ -196,4 +196,3 @@ function defaultSerializer<R>(rec: R): string {
196
196
 
197
197
  //#endregion ---------- /FileLogWriter ----------
198
198
 
199
-