fetch-json-cache 1.6.1 → 1.6.3

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/dist/cjs/Cache.js CHANGED
@@ -19,6 +19,7 @@ function _class_call_check(instance, Constructor) {
19
19
  }
20
20
  }
21
21
  function _instanceof(left, right) {
22
+ "@swc/helpers - instanceof";
22
23
  if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
23
24
  return !!right[Symbol.hasInstance](left);
24
25
  } else {
@@ -46,12 +47,12 @@ var Cache = /*#__PURE__*/ function() {
46
47
  var _this = this;
47
48
  callback = typeof options === 'function' ? options : callback;
48
49
  options = typeof options === 'function' ? {} : options || {};
49
- function worker(endpoint, options, callback) {
50
- options.force ? _updatets.default.call(this, endpoint, callback) : _getts.default.call(this, endpoint, callback);
51
- }
52
- if (typeof callback === 'function') return worker.call(this, endpoint, options, callback);
50
+ var worker = function worker(endpoint, options, callback) {
51
+ options.force ? _updatets.default.call(_this, endpoint, callback) : _getts.default.call(_this, endpoint, callback);
52
+ };
53
+ if (typeof callback === 'function') return worker(endpoint, options, callback);
53
54
  return new Promise(function(resolve, reject) {
54
- return worker.call(_this, endpoint, options, function(err, json) {
55
+ return worker(endpoint, options, function(err, json) {
55
56
  return err ? reject(err) : resolve(json);
56
57
  });
57
58
  });
@@ -61,13 +62,14 @@ var Cache = /*#__PURE__*/ function() {
61
62
  };
62
63
  _proto.clear = function clear(callback) {
63
64
  var _this = this;
64
- function worker(callback) {
65
- // ignore errors since it is fine to delete a directory that doesn't exist from a cache standpoint
66
- (0, _fsremovecompat.safeRm)(this.cachePath, callback.bind(null, null));
67
- }
68
- if (typeof callback === 'function') return worker.call(this, callback);
65
+ var worker = function worker(callback) {
66
+ (0, _fsremovecompat.safeRm)(_this.cachePath, function() {
67
+ return callback();
68
+ });
69
+ };
70
+ if (typeof callback === 'function') return worker(callback);
69
71
  return new Promise(function(resolve, reject) {
70
- return worker.call(_this, function(err) {
72
+ return worker(function(err) {
71
73
  return err ? reject(err) : resolve();
72
74
  });
73
75
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/fetch-json-cache/src/Cache.ts"],"sourcesContent":["import { safeRm } from 'fs-remove-compat';\n\nimport get from './get.ts';\nimport getSync from './getSync.ts';\nimport hash from './hash.ts';\nimport type { CacheOptions, ClearCallback, GetCallback, GetOptions } from './types.ts';\nimport update from './update.ts';\n\nexport default class Cache {\n cachePath: string;\n options: CacheOptions;\n\n constructor(cachePath: string, options: CacheOptions = {}) {\n if (!(this instanceof Cache)) throw new Error('Cache needs to be called with new');\n if (!cachePath) throw new Error('Cache needs cachePath');\n this.cachePath = cachePath;\n this.options = options;\n if (!this.options.hash) this.options.hash = hash;\n }\n\n get<T>(endpoint: string, callback: GetCallback<T>): void;\n get<T>(endpoint: string, options: GetOptions, callback: GetCallback<T>): void;\n get<T>(endpoint: string, options?: GetOptions): Promise<T | null>;\n get<T>(endpoint: string, options?: GetOptions | GetCallback<T>, callback?: GetCallback<T>): void | Promise<T | null> {\n callback = typeof options === 'function' ? options : callback;\n options = typeof options === 'function' ? {} : ((options || {}) as GetOptions);\n\n function worker(endpoint, options, callback) {\n options.force ? update.call(this, endpoint, callback) : get.call(this, endpoint, callback);\n }\n\n if (typeof callback === 'function') return worker.call(this, endpoint, options, callback);\n return new Promise((resolve, reject) => worker.call(this, endpoint, options, (err, json) => (err ? reject(err) : resolve(json))));\n }\n\n getSync<T>(endpoint: string): T | null {\n return getSync.call(this, endpoint);\n }\n\n clear(callback: ClearCallback): void;\n clear(): Promise<void>;\n clear(callback?: ClearCallback): void | Promise<void> {\n function worker(callback) {\n // ignore errors since it is fine to delete a directory that doesn't exist from a cache standpoint\n safeRm(this.cachePath, callback.bind(null, null));\n }\n\n if (typeof callback === 'function') return worker.call(this, callback);\n return new Promise((resolve, reject) => worker.call(this, (err) => (err ? reject(err) : resolve())));\n }\n}\n"],"names":["Cache","cachePath","options","Error","hash","get","endpoint","callback","worker","force","update","call","Promise","resolve","reject","err","json","getSync","clear","safeRm","bind"],"mappings":";;;;;;;eAQqBA;;;8BARE;4DAEP;gEACI;6DACH;+DAEE;;;;;;;;;;;;;;;;;;AAEJ,IAAA,AAAMA,sBAAN;;aAAMA,MAIPC,SAAiB;YAAEC,UAAAA,iEAAwB,CAAC;gCAJrCF;QAKjB,IAAI,CAAE,AAAI,YAAJ,IAAI,EALOA,QAKa,MAAM,IAAIG,MAAM;QAC9C,IAAI,CAACF,WAAW,MAAM,IAAIE,MAAM;QAChC,IAAI,CAACF,SAAS,GAAGA;QACjB,IAAI,CAACC,OAAO,GAAGA;QACf,IAAI,CAAC,IAAI,CAACA,OAAO,CAACE,IAAI,EAAE,IAAI,CAACF,OAAO,CAACE,IAAI,GAAGA,eAAI;;iBAT/BJ;IAenBK,OAAAA,GAUC,GAVDA,SAAAA,IAAOC,QAAgB,EAAEJ,OAAqC,EAAEK,QAAyB;;QACvFA,WAAW,OAAOL,YAAY,aAAaA,UAAUK;QACrDL,UAAU,OAAOA,YAAY,aAAa,CAAC,IAAMA,WAAW,CAAC;QAE7D,SAASM,OAAOF,QAAQ,EAAEJ,OAAO,EAAEK,QAAQ;YACzCL,QAAQO,KAAK,GAAGC,iBAAM,CAACC,IAAI,CAAC,IAAI,EAAEL,UAAUC,YAAYF,cAAG,CAACM,IAAI,CAAC,IAAI,EAAEL,UAAUC;QACnF;QAEA,IAAI,OAAOA,aAAa,YAAY,OAAOC,OAAOG,IAAI,CAAC,IAAI,EAAEL,UAAUJ,SAASK;QAChF,OAAO,IAAIK,QAAQ,SAACC,SAASC;mBAAWN,OAAOG,IAAI,QAAOL,UAAUJ,SAAS,SAACa,KAAKC;uBAAUD,MAAMD,OAAOC,OAAOF,QAAQG;;;IAC3H;IAEAC,OAAAA,OAEC,GAFDA,SAAAA,QAAWX,QAAgB;QACzB,OAAOW,kBAAO,CAACN,IAAI,CAAC,IAAI,EAAEL;IAC5B;IAIAY,OAAAA,KAQC,GARDA,SAAAA,MAAMX,QAAwB;;QAC5B,SAASC,OAAOD,QAAQ;YACtB,kGAAkG;YAClGY,IAAAA,sBAAM,EAAC,IAAI,CAAClB,SAAS,EAAEM,SAASa,IAAI,CAAC,MAAM;QAC7C;QAEA,IAAI,OAAOb,aAAa,YAAY,OAAOC,OAAOG,IAAI,CAAC,IAAI,EAAEJ;QAC7D,OAAO,IAAIK,QAAQ,SAACC,SAASC;mBAAWN,OAAOG,IAAI,QAAO,SAACI;uBAASA,MAAMD,OAAOC,OAAOF;;;IAC1F;WAzCmBb"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/fetch-json-cache/src/Cache.ts"],"sourcesContent":["import { safeRm } from 'fs-remove-compat';\n\nimport get from './get.ts';\nimport getSync from './getSync.ts';\nimport hash from './hash.ts';\nimport type { CacheOptions, ClearCallback, GetCallback, GetOptions, UpdateCallback } from './types.ts';\nimport update from './update.ts';\n\nexport default class Cache {\n cachePath: string;\n options: CacheOptions;\n\n constructor(cachePath: string, options: CacheOptions = {}) {\n if (!(this instanceof Cache)) throw new Error('Cache needs to be called with new');\n if (!cachePath) throw new Error('Cache needs cachePath');\n this.cachePath = cachePath;\n this.options = options;\n if (!this.options.hash) this.options.hash = hash;\n }\n\n get<T>(endpoint: string, callback: GetCallback<T>): void;\n get<T>(endpoint: string, options: GetOptions, callback: GetCallback<T>): void;\n get<T>(endpoint: string, options?: GetOptions): Promise<T | null>;\n get<T>(endpoint: string, options?: GetOptions | GetCallback<T>, callback?: GetCallback<T>): void | Promise<T | null> {\n callback = typeof options === 'function' ? options : callback;\n options = typeof options === 'function' ? {} : ((options || {}) as GetOptions);\n\n const worker = (endpoint: string, options: GetOptions, callback: GetCallback<T>) => {\n options.force ? update.call(this, endpoint, callback as unknown as UpdateCallback<unknown>) : get.call(this, endpoint, callback as unknown as GetCallback<unknown>);\n };\n\n if (typeof callback === 'function') return worker(endpoint, options, callback);\n return new Promise((resolve, reject) => worker(endpoint, options as GetOptions, (err, json) => (err ? reject(err) : resolve(json as T | null))));\n }\n\n getSync<T>(endpoint: string): T | null {\n return getSync.call(this, endpoint) as T | null;\n }\n\n clear(callback: ClearCallback): void;\n clear(): Promise<void>;\n clear(callback?: ClearCallback): void | Promise<void> {\n const worker = (callback: ClearCallback) => {\n safeRm(this.cachePath, () => callback());\n };\n\n if (typeof callback === 'function') return worker(callback);\n return new Promise((resolve, reject) => worker((err) => (err ? reject(err) : resolve())));\n }\n}\n"],"names":["Cache","cachePath","options","Error","hash","get","endpoint","callback","worker","force","update","call","Promise","resolve","reject","err","json","getSync","clear","safeRm"],"mappings":";;;;;;;eAQqBA;;;8BARE;4DAEP;gEACI;6DACH;+DAEE;;;;;;;;;;;;;;;;;;;AAEJ,IAAA,AAAMA,sBAAN;;aAAMA,MAIPC,SAAiB;YAAEC,UAAAA,iEAAwB,CAAC;gCAJrCF;QAKjB,IAAI,CAAE,AAAI,YAAJ,IAAI,EALOA,QAKa,MAAM,IAAIG,MAAM;QAC9C,IAAI,CAACF,WAAW,MAAM,IAAIE,MAAM;QAChC,IAAI,CAACF,SAAS,GAAGA;QACjB,IAAI,CAACC,OAAO,GAAGA;QACf,IAAI,CAAC,IAAI,CAACA,OAAO,CAACE,IAAI,EAAE,IAAI,CAACF,OAAO,CAACE,IAAI,GAAGA,eAAI;;iBAT/BJ;IAenBK,OAAAA,GAUC,GAVDA,SAAAA,IAAOC,QAAgB,EAAEJ,OAAqC,EAAEK,QAAyB;;QACvFA,WAAW,OAAOL,YAAY,aAAaA,UAAUK;QACrDL,UAAU,OAAOA,YAAY,aAAa,CAAC,IAAMA,WAAW,CAAC;QAE7D,IAAMM,SAAS,gBAACF,UAAkBJ,SAAqBK;YACrDL,QAAQO,KAAK,GAAGC,iBAAM,CAACC,IAAI,QAAOL,UAAUC,YAAkDF,cAAG,CAACM,IAAI,QAAOL,UAAUC;QACzH;QAEA,IAAI,OAAOA,aAAa,YAAY,OAAOC,OAAOF,UAAUJ,SAASK;QACrE,OAAO,IAAIK,QAAQ,SAACC,SAASC;mBAAWN,OAAOF,UAAUJ,SAAuB,SAACa,KAAKC;uBAAUD,MAAMD,OAAOC,OAAOF,QAAQG;;;IAC9H;IAEAC,OAAAA,OAEC,GAFDA,SAAAA,QAAWX,QAAgB;QACzB,OAAOW,kBAAO,CAACN,IAAI,CAAC,IAAI,EAAEL;IAC5B;IAIAY,OAAAA,KAOC,GAPDA,SAAAA,MAAMX,QAAwB;;QAC5B,IAAMC,SAAS,gBAACD;YACdY,IAAAA,sBAAM,EAAC,MAAKlB,SAAS,EAAE;uBAAMM;;QAC/B;QAEA,IAAI,OAAOA,aAAa,YAAY,OAAOC,OAAOD;QAClD,OAAO,IAAIK,QAAQ,SAACC,SAASC;mBAAWN,OAAO,SAACO;uBAASA,MAAMD,OAAOC,OAAOF;;;IAC/E;WAxCmBb"}
@@ -1,2 +1,2 @@
1
- import type { GetCallback } from './types.js';
2
- export default function getCache<T>(endpoint: string, callback: GetCallback<T>): void;
1
+ import type { CacheContext, GetCallback } from './types.js';
2
+ export default function getCache<T>(this: CacheContext, endpoint: string, callback: GetCallback<T>): void;
package/dist/cjs/get.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import type { GetCallback } from './types.js';
2
- export default function getCache<T>(endpoint: string, callback: GetCallback<T>): void;
1
+ import type { CacheContext, GetCallback } from './types.js';
2
+ export default function getCache<T>(this: CacheContext, endpoint: string, callback: GetCallback<T>): void;
package/dist/cjs/get.js CHANGED
@@ -19,24 +19,25 @@ function _interop_require_default(obj) {
19
19
  }
20
20
  function getCache(endpoint, callback) {
21
21
  var _this = this;
22
- var fullPath = _path.default.join(this.cachePath, "".concat(this.options.hash(endpoint), ".json"));
22
+ var _this_options_hash, _this_options;
23
+ var fullPath = _path.default.join(this.cachePath, "".concat((_this_options_hash = (_this_options = this.options).hash) === null || _this_options_hash === void 0 ? void 0 : _this_options_hash.call(_this_options, endpoint), ".json"));
23
24
  _fs.default.readFile(fullPath, function(err, contents) {
24
25
  // doesn't exist so create
25
26
  if (err) {
26
27
  _updatets.default.call(_this, endpoint, function(err, json) {
27
- err ? callback(err) : callback(null, json);
28
+ err ? callback(err) : callback(undefined, json);
28
29
  });
29
30
  } else {
30
31
  var record = JSON.parse(contents.toString());
31
32
  (0, _getfilecompat.head)(endpoint, function(err, res) {
32
33
  // not accessible
33
34
  if (err) {
34
- if (err.code === 'ENOTFOUND' || err.message.indexOf('routines:SSL23_GET_SERVER_HELLO') >= 0) return callback(null, record.body);
35
+ if (err.code === 'ENOTFOUND' || err.message.indexOf('routines:SSL23_GET_SERVER_HELLO') >= 0) return callback(undefined, record.body);
35
36
  return callback(err);
36
37
  }
37
- if (res.headers.etag === record.headers.etag) return callback(null, record.body);
38
+ if ((res === null || res === void 0 ? void 0 : res.headers).etag === record.headers.etag) return callback(undefined, record.body);
38
39
  _updatets.default.call(_this, endpoint, function(err, json) {
39
- err ? callback(err) : callback(null, json);
40
+ err ? callback(err) : callback(undefined, json);
40
41
  });
41
42
  });
42
43
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/fetch-json-cache/src/get.ts"],"sourcesContent":["import fs from 'fs';\nimport { head } from 'get-file-compat';\nimport path from 'path';\n\nimport update from './update.ts';\n\ninterface GetError {\n code?: string;\n}\n\ninterface GetHeaders {\n etag?: string;\n}\n\nimport type { GetCallback } from './types.ts';\n\nexport default function getCache<T>(endpoint: string, callback: GetCallback<T>): void {\n const fullPath = path.join(this.cachePath, `${this.options.hash(endpoint)}.json`);\n fs.readFile(fullPath, (err, contents) => {\n // doesn't exist so create\n if (err) {\n update.call(this, endpoint, (err, json) => {\n err ? callback(err) : callback(null, json);\n });\n }\n // check existing if etag changed and if so, recache\n else {\n const record = JSON.parse(contents.toString());\n head(endpoint, (err, res) => {\n // not accessible\n if (err) {\n if ((err as GetError).code === 'ENOTFOUND' || err.message.indexOf('routines:SSL23_GET_SERVER_HELLO') >= 0) return callback(null, record.body);\n return callback(err);\n }\n if ((res.headers as GetHeaders).etag === record.headers.etag) return callback(null, record.body);\n update.call(this, endpoint, (err, json) => {\n err ? callback(err) : callback(null, json);\n });\n });\n }\n });\n}\n"],"names":["getCache","endpoint","callback","fullPath","path","join","cachePath","options","hash","fs","readFile","err","contents","update","call","json","record","JSON","parse","toString","head","res","code","message","indexOf","body","headers","etag"],"mappings":";;;;+BAgBA;;;eAAwBA;;;yDAhBT;6BACM;2DACJ;+DAEE;;;;;;AAYJ,SAASA,SAAYC,QAAgB,EAAEC,QAAwB;;IAC5E,IAAMC,WAAWC,aAAI,CAACC,IAAI,CAAC,IAAI,CAACC,SAAS,EAAE,AAAC,GAA8B,OAA5B,IAAI,CAACC,OAAO,CAACC,IAAI,CAACP,WAAU;IAC1EQ,WAAE,CAACC,QAAQ,CAACP,UAAU,SAACQ,KAAKC;QAC1B,0BAA0B;QAC1B,IAAID,KAAK;YACPE,iBAAM,CAACC,IAAI,QAAOb,UAAU,SAACU,KAAKI;gBAChCJ,MAAMT,SAASS,OAAOT,SAAS,MAAMa;YACvC;QACF,OAEK;YACH,IAAMC,SAASC,KAAKC,KAAK,CAACN,SAASO,QAAQ;YAC3CC,IAAAA,mBAAI,EAACnB,UAAU,SAACU,KAAKU;gBACnB,iBAAiB;gBACjB,IAAIV,KAAK;oBACP,IAAI,AAACA,IAAiBW,IAAI,KAAK,eAAeX,IAAIY,OAAO,CAACC,OAAO,CAAC,sCAAsC,GAAG,OAAOtB,SAAS,MAAMc,OAAOS,IAAI;oBAC5I,OAAOvB,SAASS;gBAClB;gBACA,IAAI,AAACU,IAAIK,OAAO,CAAgBC,IAAI,KAAKX,OAAOU,OAAO,CAACC,IAAI,EAAE,OAAOzB,SAAS,MAAMc,OAAOS,IAAI;gBAC/FZ,iBAAM,CAACC,IAAI,QAAOb,UAAU,SAACU,KAAKI;oBAChCJ,MAAMT,SAASS,OAAOT,SAAS,MAAMa;gBACvC;YACF;QACF;IACF;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/fetch-json-cache/src/get.ts"],"sourcesContent":["import fs from 'fs';\nimport { head } from 'get-file-compat';\nimport path from 'path';\n\nimport update from './update.ts';\n\ninterface GetError {\n code?: string;\n}\n\ninterface GetHeaders {\n etag?: string;\n}\n\nimport type { CacheContext, GetCallback } from './types.ts';\n\nexport default function getCache<T>(this: CacheContext, endpoint: string, callback: GetCallback<T>): void {\n const fullPath = path.join(this.cachePath, `${this.options.hash?.(endpoint)}.json`);\n fs.readFile(fullPath, (err, contents) => {\n // doesn't exist so create\n if (err) {\n update.call(this, endpoint, (err, json) => {\n err ? callback(err) : callback(undefined, json as T | undefined);\n });\n }\n // check existing if etag changed and if so, recache\n else {\n const record = JSON.parse(contents.toString());\n head(endpoint, (err, res) => {\n // not accessible\n if (err) {\n if ((err as GetError).code === 'ENOTFOUND' || err.message.indexOf('routines:SSL23_GET_SERVER_HELLO') >= 0) return callback(undefined, record.body);\n return callback(err);\n }\n if ((res?.headers as GetHeaders).etag === record.headers.etag) return callback(undefined, record.body);\n update.call(this, endpoint, (err, json) => {\n err ? callback(err) : callback(undefined, json as T | undefined);\n });\n });\n }\n });\n}\n"],"names":["getCache","endpoint","callback","fullPath","path","join","cachePath","options","hash","fs","readFile","err","contents","update","call","json","undefined","record","JSON","parse","toString","head","res","code","message","indexOf","body","headers","etag"],"mappings":";;;;+BAgBA;;;eAAwBA;;;yDAhBT;6BACM;2DACJ;+DAEE;;;;;;AAYJ,SAASA,SAAgCC,QAAgB,EAAEC,QAAwB;;QAClD,oBAAA;IAA9C,IAAMC,WAAWC,aAAI,CAACC,IAAI,CAAC,IAAI,CAACC,SAAS,EAAE,AAAC,GAAgC,QAA9B,qBAAA,CAAA,gBAAA,IAAI,CAACC,OAAO,EAACC,IAAI,cAAjB,yCAAA,wBAAA,eAAoBP,WAAU;IAC5EQ,WAAE,CAACC,QAAQ,CAACP,UAAU,SAACQ,KAAKC;QAC1B,0BAA0B;QAC1B,IAAID,KAAK;YACPE,iBAAM,CAACC,IAAI,QAAOb,UAAU,SAACU,KAAKI;gBAChCJ,MAAMT,SAASS,OAAOT,SAASc,WAAWD;YAC5C;QACF,OAEK;YACH,IAAME,SAASC,KAAKC,KAAK,CAACP,SAASQ,QAAQ;YAC3CC,IAAAA,mBAAI,EAACpB,UAAU,SAACU,KAAKW;gBACnB,iBAAiB;gBACjB,IAAIX,KAAK;oBACP,IAAI,AAACA,IAAiBY,IAAI,KAAK,eAAeZ,IAAIa,OAAO,CAACC,OAAO,CAAC,sCAAsC,GAAG,OAAOvB,SAASc,WAAWC,OAAOS,IAAI;oBACjJ,OAAOxB,SAASS;gBAClB;gBACA,IAAI,CAACW,gBAAAA,0BAAAA,IAAKK,OAAO,EAAgBC,IAAI,KAAKX,OAAOU,OAAO,CAACC,IAAI,EAAE,OAAO1B,SAASc,WAAWC,OAAOS,IAAI;gBACrGb,iBAAM,CAACC,IAAI,QAAOb,UAAU,SAACU,KAAKI;oBAChCJ,MAAMT,SAASS,OAAOT,SAASc,WAAWD;gBAC5C;YACF;QACF;IACF;AACF"}
@@ -1 +1,2 @@
1
- export default function getCacheAsync<T>(endpoint: string): T;
1
+ import type { CacheContext } from './types.js';
2
+ export default function getCacheAsync<T>(this: CacheContext, endpoint: string): T | null;
@@ -1 +1,2 @@
1
- export default function getCacheAsync<T>(endpoint: string): T;
1
+ import type { CacheContext } from './types.js';
2
+ export default function getCacheAsync<T>(this: CacheContext, endpoint: string): T | null;
@@ -16,7 +16,8 @@ function _interop_require_default(obj) {
16
16
  };
17
17
  }
18
18
  function getCacheAsync(endpoint) {
19
- var fullPath = _path.default.join(this.cachePath, "".concat(this.options.hash(endpoint), ".json"));
19
+ var _this_options_hash, _this_options;
20
+ var fullPath = _path.default.join(this.cachePath, "".concat((_this_options_hash = (_this_options = this.options).hash) === null || _this_options_hash === void 0 ? void 0 : _this_options_hash.call(_this_options, endpoint), ".json"));
20
21
  try {
21
22
  var contents = _fs.default.readFileSync(fullPath, 'utf8');
22
23
  var record = JSON.parse(contents.toString());
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/fetch-json-cache/src/getSync.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nexport default function getCacheAsync<T>(endpoint: string): T {\n const fullPath = path.join(this.cachePath, `${this.options.hash(endpoint)}.json`);\n try {\n const contents = fs.readFileSync(fullPath, 'utf8');\n const record = JSON.parse(contents.toString());\n return record.body;\n } catch (_err) {\n return null;\n }\n}\n"],"names":["getCacheAsync","endpoint","fullPath","path","join","cachePath","options","hash","contents","fs","readFileSync","record","JSON","parse","toString","body","_err"],"mappings":";;;;+BAGA;;;eAAwBA;;;yDAHT;2DACE;;;;;;AAEF,SAASA,cAAiBC,QAAgB;IACvD,IAAMC,WAAWC,aAAI,CAACC,IAAI,CAAC,IAAI,CAACC,SAAS,EAAE,AAAC,GAA8B,OAA5B,IAAI,CAACC,OAAO,CAACC,IAAI,CAACN,WAAU;IAC1E,IAAI;QACF,IAAMO,WAAWC,WAAE,CAACC,YAAY,CAACR,UAAU;QAC3C,IAAMS,SAASC,KAAKC,KAAK,CAACL,SAASM,QAAQ;QAC3C,OAAOH,OAAOI,IAAI;IACpB,EAAE,OAAOC,MAAM;QACb,OAAO;IACT;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/fetch-json-cache/src/getSync.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport type { CacheContext } from './types.ts';\n\nexport default function getCacheAsync<T>(this: CacheContext, endpoint: string): T | null {\n const fullPath = path.join(this.cachePath, `${this.options.hash?.(endpoint)}.json`);\n try {\n const contents = fs.readFileSync(fullPath, 'utf8');\n const record = JSON.parse(contents.toString());\n return record.body;\n } catch (_err) {\n return null;\n }\n}\n"],"names":["getCacheAsync","endpoint","fullPath","path","join","cachePath","options","hash","contents","fs","readFileSync","record","JSON","parse","toString","body","_err"],"mappings":";;;;+BAKA;;;eAAwBA;;;yDALT;2DACE;;;;;;AAIF,SAASA,cAAqCC,QAAgB;QAC7B,oBAAA;IAA9C,IAAMC,WAAWC,aAAI,CAACC,IAAI,CAAC,IAAI,CAACC,SAAS,EAAE,AAAC,GAAgC,QAA9B,qBAAA,CAAA,gBAAA,IAAI,CAACC,OAAO,EAACC,IAAI,cAAjB,yCAAA,wBAAA,eAAoBN,WAAU;IAC5E,IAAI;QACF,IAAMO,WAAWC,WAAE,CAACC,YAAY,CAACR,UAAU;QAC3C,IAAMS,SAASC,KAAKC,KAAK,CAACL,SAASM,QAAQ;QAC3C,OAAOH,OAAOI,IAAI;IACpB,EAAE,OAAOC,MAAM;QACb,OAAO;IACT;AACF"}
@@ -5,9 +5,13 @@ export interface Record<T> {
5
5
  export interface CacheOptions {
6
6
  hash?: (string: string) => string;
7
7
  }
8
+ export interface CacheContext {
9
+ cachePath: string;
10
+ options: CacheOptions;
11
+ }
8
12
  export interface GetOptions {
9
13
  force?: boolean;
10
14
  }
11
- export type GetCallback<T> = (error?: Error, result?: T) => void;
12
- export type ClearCallback = (error?: Error) => void;
13
- export type UpdateCallback<T> = (error?: Error, result?: T) => void;
15
+ export type GetCallback<T> = (error?: Error | null, result?: T) => void;
16
+ export type ClearCallback = (error?: Error | null) => void;
17
+ export type UpdateCallback<T> = (error?: Error | null, result?: T) => void;
@@ -5,9 +5,13 @@ export interface Record<T> {
5
5
  export interface CacheOptions {
6
6
  hash?: (string: string) => string;
7
7
  }
8
+ export interface CacheContext {
9
+ cachePath: string;
10
+ options: CacheOptions;
11
+ }
8
12
  export interface GetOptions {
9
13
  force?: boolean;
10
14
  }
11
- export type GetCallback<T> = (error?: Error, result?: T) => void;
12
- export type ClearCallback = (error?: Error) => void;
13
- export type UpdateCallback<T> = (error?: Error, result?: T) => void;
15
+ export type GetCallback<T> = (error?: Error | null, result?: T) => void;
16
+ export type ClearCallback = (error?: Error | null) => void;
17
+ export type UpdateCallback<T> = (error?: Error | null, result?: T) => void;
@@ -1,2 +1,2 @@
1
- import type { UpdateCallback } from './types.js';
2
- export default function update<T>(endpoint: string, callback: UpdateCallback<T>): void;
1
+ import type { CacheContext, UpdateCallback } from './types.js';
2
+ export default function update<T>(this: CacheContext, endpoint: string, callback: UpdateCallback<T>): void;
@@ -1,2 +1,2 @@
1
- import type { UpdateCallback } from './types.js';
2
- export default function update<T>(endpoint: string, callback: UpdateCallback<T>): void;
1
+ import type { CacheContext, UpdateCallback } from './types.js';
2
+ export default function update<T>(this: CacheContext, endpoint: string, callback: UpdateCallback<T>): void;
@@ -21,28 +21,43 @@ function _interop_require_default(obj) {
21
21
  };
22
22
  }
23
23
  function update(endpoint, callback) {
24
- var fullPath = _path.default.join(this.cachePath, "".concat(this.options.hash(endpoint), ".json"));
24
+ var _this_options_hash, _this_options;
25
+ var fullPath = _path.default.join(this.cachePath, "".concat((_this_options_hash = (_this_options = this.options).hash) === null || _this_options_hash === void 0 ? void 0 : _this_options_hash.call(_this_options, endpoint), ".json"));
25
26
  (0, _mkdirpclassic.default)(this.cachePath, function(err) {
26
27
  if (err && err.code !== 'EEXIST') return callback(err);
27
28
  (0, _getfilecompat.getContent)(endpoint, 'utf8', function(err, res) {
28
29
  if (err) return callback(err);
29
30
  try {
30
- var body = JSON.parse(res.content);
31
+ var _ref, _ref1;
32
+ var body = JSON.parse((_ref = res === null || res === void 0 ? void 0 : res.content) !== null && _ref !== void 0 ? _ref : 'null');
31
33
  var record = {
32
- headers: res.headers,
34
+ headers: (_ref1 = res === null || res === void 0 ? void 0 : res.headers) !== null && _ref1 !== void 0 ? _ref1 : {},
33
35
  body: body
34
36
  };
35
37
  var tempFile = "".concat(fullPath, "-").concat((0, _tempsuffix.default)());
36
38
  var queue = new _queuecb.default(1);
37
- queue.defer(_fs.default.writeFile.bind(null, tempFile, JSON.stringify(record), 'utf8'));
38
39
  queue.defer(function(cb) {
39
- return (0, _fsremovecompat.rm)(fullPath, cb.bind(null, null));
40
+ return _fs.default.writeFile(tempFile, JSON.stringify(record), 'utf8', function(err) {
41
+ return cb(err);
42
+ });
43
+ });
44
+ queue.defer(function(cb) {
45
+ return (0, _fsremovecompat.rm)(fullPath, {
46
+ force: true
47
+ }, function(err) {
48
+ return cb(err);
49
+ });
50
+ });
51
+ queue.defer(function(cb) {
52
+ return _fs.default.rename(tempFile, fullPath, function(err) {
53
+ return cb(err);
54
+ });
40
55
  });
41
- queue.defer(_fs.default.rename.bind(null, tempFile, fullPath));
42
56
  queue.await(function(err) {
43
- if (!err) return callback(null, record.body);
44
- // cleanup the temp file if the operation failed
45
- (0, _fsremovecompat.rm)(tempFile, callback.bind(err));
57
+ if (!err) return callback(undefined, record.body);
58
+ (0, _fsremovecompat.rm)(tempFile, function() {
59
+ return callback(err);
60
+ });
46
61
  });
47
62
  } catch (err) {
48
63
  return callback(err);
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/fetch-json-cache/src/update.ts"],"sourcesContent":["import fs from 'fs';\nimport { rm } from 'fs-remove-compat';\nimport { getContent } from 'get-file-compat';\nimport mkdirp from 'mkdirp-classic';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport tempSuffix from 'temp-suffix';\n\nimport type { Record, UpdateCallback } from './types.ts';\n\nexport default function update<T>(endpoint: string, callback: UpdateCallback<T>): void {\n const fullPath = path.join(this.cachePath, `${this.options.hash(endpoint)}.json`);\n\n mkdirp(this.cachePath, (err) => {\n if (err && err.code !== 'EEXIST') return callback(err);\n\n getContent(endpoint, 'utf8', (err, res) => {\n if (err) return callback(err);\n\n try {\n const body = JSON.parse(res.content);\n const record = { headers: res.headers, body } as Record<T>;\n const tempFile = `${fullPath}-${tempSuffix()}`;\n\n const queue = new Queue(1);\n queue.defer(fs.writeFile.bind(null, tempFile, JSON.stringify(record), 'utf8'));\n queue.defer((cb) => rm(fullPath, cb.bind(null, null)));\n queue.defer(fs.rename.bind(null, tempFile, fullPath));\n queue.await((err) => {\n if (!err) return callback(null, record.body);\n // cleanup the temp file if the operation failed\n rm(tempFile, callback.bind(err));\n });\n } catch (err) {\n return callback(err);\n }\n });\n });\n}\n"],"names":["update","endpoint","callback","fullPath","path","join","cachePath","options","hash","mkdirp","err","code","getContent","res","body","JSON","parse","content","record","headers","tempFile","tempSuffix","queue","Queue","defer","fs","writeFile","bind","stringify","cb","rm","rename","await"],"mappings":";;;;+BAUA;;;eAAwBA;;;yDAVT;8BACI;6BACQ;oEACR;2DACF;8DACC;iEACK;;;;;;AAIR,SAASA,OAAUC,QAAgB,EAAEC,QAA2B;IAC7E,IAAMC,WAAWC,aAAI,CAACC,IAAI,CAAC,IAAI,CAACC,SAAS,EAAE,AAAC,GAA8B,OAA5B,IAAI,CAACC,OAAO,CAACC,IAAI,CAACP,WAAU;IAE1EQ,IAAAA,sBAAM,EAAC,IAAI,CAACH,SAAS,EAAE,SAACI;QACtB,IAAIA,OAAOA,IAAIC,IAAI,KAAK,UAAU,OAAOT,SAASQ;QAElDE,IAAAA,yBAAU,EAACX,UAAU,QAAQ,SAACS,KAAKG;YACjC,IAAIH,KAAK,OAAOR,SAASQ;YAEzB,IAAI;gBACF,IAAMI,OAAOC,KAAKC,KAAK,CAACH,IAAII,OAAO;gBACnC,IAAMC,SAAS;oBAAEC,SAASN,IAAIM,OAAO;oBAAEL,MAAAA;gBAAK;gBAC5C,IAAMM,WAAW,AAAC,GAAcC,OAAZlB,UAAS,KAAgB,OAAbkB,IAAAA,mBAAU;gBAE1C,IAAMC,QAAQ,IAAIC,gBAAK,CAAC;gBACxBD,MAAME,KAAK,CAACC,WAAE,CAACC,SAAS,CAACC,IAAI,CAAC,MAAMP,UAAUL,KAAKa,SAAS,CAACV,SAAS;gBACtEI,MAAME,KAAK,CAAC,SAACK;2BAAOC,IAAAA,kBAAE,EAAC3B,UAAU0B,GAAGF,IAAI,CAAC,MAAM;;gBAC/CL,MAAME,KAAK,CAACC,WAAE,CAACM,MAAM,CAACJ,IAAI,CAAC,MAAMP,UAAUjB;gBAC3CmB,MAAMU,KAAK,CAAC,SAACtB;oBACX,IAAI,CAACA,KAAK,OAAOR,SAAS,MAAMgB,OAAOJ,IAAI;oBAC3C,gDAAgD;oBAChDgB,IAAAA,kBAAE,EAACV,UAAUlB,SAASyB,IAAI,CAACjB;gBAC7B;YACF,EAAE,OAAOA,KAAK;gBACZ,OAAOR,SAASQ;YAClB;QACF;IACF;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/fetch-json-cache/src/update.ts"],"sourcesContent":["import fs from 'fs';\nimport { rm } from 'fs-remove-compat';\nimport { getContent } from 'get-file-compat';\nimport mkdirp from 'mkdirp-classic';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport tempSuffix from 'temp-suffix';\n\nimport type { CacheContext, Record, UpdateCallback } from './types.ts';\n\nexport default function update<T>(this: CacheContext, endpoint: string, callback: UpdateCallback<T>): void {\n const fullPath = path.join(this.cachePath, `${this.options.hash?.(endpoint)}.json`);\n\n mkdirp(this.cachePath, (err) => {\n if (err && (err as NodeJS.ErrnoException).code !== 'EEXIST') return callback(err);\n\n getContent(endpoint, 'utf8', (err, res) => {\n if (err) return callback(err);\n\n try {\n const body = JSON.parse(res?.content ?? 'null');\n const record = { headers: res?.headers ?? {}, body } as Record<T>;\n const tempFile = `${fullPath}-${tempSuffix()}`;\n\n const queue = new Queue(1);\n queue.defer((cb) => fs.writeFile(tempFile, JSON.stringify(record), 'utf8', (err) => cb(err)));\n queue.defer((cb) => rm(fullPath, { force: true }, (err?: NodeJS.ErrnoException | null) => cb(err)));\n queue.defer((cb) => fs.rename(tempFile, fullPath, (err) => cb(err)));\n queue.await((err) => {\n if (!err) return callback(undefined, record.body);\n rm(tempFile, () => callback(err));\n });\n } catch (err) {\n return callback(err as Error);\n }\n });\n });\n}\n"],"names":["update","endpoint","callback","fullPath","path","join","cachePath","options","hash","mkdirp","err","code","getContent","res","body","JSON","parse","content","record","headers","tempFile","tempSuffix","queue","Queue","defer","cb","fs","writeFile","stringify","rm","force","rename","await","undefined"],"mappings":";;;;+BAUA;;;eAAwBA;;;yDAVT;8BACI;6BACQ;oEACR;2DACF;8DACC;iEACK;;;;;;AAIR,SAASA,OAA8BC,QAAgB,EAAEC,QAA2B;QACnD,oBAAA;IAA9C,IAAMC,WAAWC,aAAI,CAACC,IAAI,CAAC,IAAI,CAACC,SAAS,EAAE,AAAC,GAAgC,QAA9B,qBAAA,CAAA,gBAAA,IAAI,CAACC,OAAO,EAACC,IAAI,cAAjB,yCAAA,wBAAA,eAAoBP,WAAU;IAE5EQ,IAAAA,sBAAM,EAAC,IAAI,CAACH,SAAS,EAAE,SAACI;QACtB,IAAIA,OAAO,AAACA,IAA8BC,IAAI,KAAK,UAAU,OAAOT,SAASQ;QAE7EE,IAAAA,yBAAU,EAACX,UAAU,QAAQ,SAACS,KAAKG;YACjC,IAAIH,KAAK,OAAOR,SAASQ;YAEzB,IAAI;;gBACF,IAAMI,OAAOC,KAAKC,KAAK,SAACH,gBAAAA,0BAAAA,IAAKI,OAAO,uCAAI;gBACxC,IAAMC,SAAS;oBAAEC,OAAO,WAAEN,gBAAAA,0BAAAA,IAAKM,OAAO,yCAAI,CAAC;oBAAGL,MAAAA;gBAAK;gBACnD,IAAMM,WAAW,AAAC,GAAcC,OAAZlB,UAAS,KAAgB,OAAbkB,IAAAA,mBAAU;gBAE1C,IAAMC,QAAQ,IAAIC,gBAAK,CAAC;gBACxBD,MAAME,KAAK,CAAC,SAACC;2BAAOC,WAAE,CAACC,SAAS,CAACP,UAAUL,KAAKa,SAAS,CAACV,SAAS,QAAQ,SAACR;+BAAQe,GAAGf;;;gBACvFY,MAAME,KAAK,CAAC,SAACC;2BAAOI,IAAAA,kBAAE,EAAC1B,UAAU;wBAAE2B,OAAO;oBAAK,GAAG,SAACpB;+BAAuCe,GAAGf;;;gBAC7FY,MAAME,KAAK,CAAC,SAACC;2BAAOC,WAAE,CAACK,MAAM,CAACX,UAAUjB,UAAU,SAACO;+BAAQe,GAAGf;;;gBAC9DY,MAAMU,KAAK,CAAC,SAACtB;oBACX,IAAI,CAACA,KAAK,OAAOR,SAAS+B,WAAWf,OAAOJ,IAAI;oBAChDe,IAAAA,kBAAE,EAACT,UAAU;+BAAMlB,SAASQ;;gBAC9B;YACF,EAAE,OAAOA,KAAK;gBACZ,OAAOR,SAASQ;YAClB;QACF;IACF;AACF"}
package/dist/esm/Cache.js CHANGED
@@ -7,22 +7,21 @@ let Cache = class Cache {
7
7
  get(endpoint, options, callback) {
8
8
  callback = typeof options === 'function' ? options : callback;
9
9
  options = typeof options === 'function' ? {} : options || {};
10
- function worker(endpoint, options, callback) {
10
+ const worker = (endpoint, options, callback)=>{
11
11
  options.force ? update.call(this, endpoint, callback) : get.call(this, endpoint, callback);
12
- }
13
- if (typeof callback === 'function') return worker.call(this, endpoint, options, callback);
14
- return new Promise((resolve, reject)=>worker.call(this, endpoint, options, (err, json)=>err ? reject(err) : resolve(json)));
12
+ };
13
+ if (typeof callback === 'function') return worker(endpoint, options, callback);
14
+ return new Promise((resolve, reject)=>worker(endpoint, options, (err, json)=>err ? reject(err) : resolve(json)));
15
15
  }
16
16
  getSync(endpoint) {
17
17
  return getSync.call(this, endpoint);
18
18
  }
19
19
  clear(callback) {
20
- function worker(callback) {
21
- // ignore errors since it is fine to delete a directory that doesn't exist from a cache standpoint
22
- safeRm(this.cachePath, callback.bind(null, null));
23
- }
24
- if (typeof callback === 'function') return worker.call(this, callback);
25
- return new Promise((resolve, reject)=>worker.call(this, (err)=>err ? reject(err) : resolve()));
20
+ const worker = (callback)=>{
21
+ safeRm(this.cachePath, ()=>callback());
22
+ };
23
+ if (typeof callback === 'function') return worker(callback);
24
+ return new Promise((resolve, reject)=>worker((err)=>err ? reject(err) : resolve()));
26
25
  }
27
26
  constructor(cachePath, options = {}){
28
27
  if (!(this instanceof Cache)) throw new Error('Cache needs to be called with new');
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/fetch-json-cache/src/Cache.ts"],"sourcesContent":["import { safeRm } from 'fs-remove-compat';\n\nimport get from './get.ts';\nimport getSync from './getSync.ts';\nimport hash from './hash.ts';\nimport type { CacheOptions, ClearCallback, GetCallback, GetOptions } from './types.ts';\nimport update from './update.ts';\n\nexport default class Cache {\n cachePath: string;\n options: CacheOptions;\n\n constructor(cachePath: string, options: CacheOptions = {}) {\n if (!(this instanceof Cache)) throw new Error('Cache needs to be called with new');\n if (!cachePath) throw new Error('Cache needs cachePath');\n this.cachePath = cachePath;\n this.options = options;\n if (!this.options.hash) this.options.hash = hash;\n }\n\n get<T>(endpoint: string, callback: GetCallback<T>): void;\n get<T>(endpoint: string, options: GetOptions, callback: GetCallback<T>): void;\n get<T>(endpoint: string, options?: GetOptions): Promise<T | null>;\n get<T>(endpoint: string, options?: GetOptions | GetCallback<T>, callback?: GetCallback<T>): void | Promise<T | null> {\n callback = typeof options === 'function' ? options : callback;\n options = typeof options === 'function' ? {} : ((options || {}) as GetOptions);\n\n function worker(endpoint, options, callback) {\n options.force ? update.call(this, endpoint, callback) : get.call(this, endpoint, callback);\n }\n\n if (typeof callback === 'function') return worker.call(this, endpoint, options, callback);\n return new Promise((resolve, reject) => worker.call(this, endpoint, options, (err, json) => (err ? reject(err) : resolve(json))));\n }\n\n getSync<T>(endpoint: string): T | null {\n return getSync.call(this, endpoint);\n }\n\n clear(callback: ClearCallback): void;\n clear(): Promise<void>;\n clear(callback?: ClearCallback): void | Promise<void> {\n function worker(callback) {\n // ignore errors since it is fine to delete a directory that doesn't exist from a cache standpoint\n safeRm(this.cachePath, callback.bind(null, null));\n }\n\n if (typeof callback === 'function') return worker.call(this, callback);\n return new Promise((resolve, reject) => worker.call(this, (err) => (err ? reject(err) : resolve())));\n }\n}\n"],"names":["safeRm","get","getSync","hash","update","Cache","endpoint","options","callback","worker","force","call","Promise","resolve","reject","err","json","clear","cachePath","bind","Error"],"mappings":"AAAA,SAASA,MAAM,QAAQ,mBAAmB;AAE1C,OAAOC,SAAS,WAAW;AAC3B,OAAOC,aAAa,eAAe;AACnC,OAAOC,UAAU,YAAY;AAE7B,OAAOC,YAAY,cAAc;AAElB,IAAA,AAAMC,QAAN,MAAMA;IAenBJ,IAAOK,QAAgB,EAAEC,OAAqC,EAAEC,QAAyB,EAA4B;QACnHA,WAAW,OAAOD,YAAY,aAAaA,UAAUC;QACrDD,UAAU,OAAOA,YAAY,aAAa,CAAC,IAAMA,WAAW,CAAC;QAE7D,SAASE,OAAOH,QAAQ,EAAEC,OAAO,EAAEC,QAAQ;YACzCD,QAAQG,KAAK,GAAGN,OAAOO,IAAI,CAAC,IAAI,EAAEL,UAAUE,YAAYP,IAAIU,IAAI,CAAC,IAAI,EAAEL,UAAUE;QACnF;QAEA,IAAI,OAAOA,aAAa,YAAY,OAAOC,OAAOE,IAAI,CAAC,IAAI,EAAEL,UAAUC,SAASC;QAChF,OAAO,IAAII,QAAQ,CAACC,SAASC,SAAWL,OAAOE,IAAI,CAAC,IAAI,EAAEL,UAAUC,SAAS,CAACQ,KAAKC,OAAUD,MAAMD,OAAOC,OAAOF,QAAQG;IAC3H;IAEAd,QAAWI,QAAgB,EAAY;QACrC,OAAOJ,QAAQS,IAAI,CAAC,IAAI,EAAEL;IAC5B;IAIAW,MAAMT,QAAwB,EAAwB;QACpD,SAASC,OAAOD,QAAQ;YACtB,kGAAkG;YAClGR,OAAO,IAAI,CAACkB,SAAS,EAAEV,SAASW,IAAI,CAAC,MAAM;QAC7C;QAEA,IAAI,OAAOX,aAAa,YAAY,OAAOC,OAAOE,IAAI,CAAC,IAAI,EAAEH;QAC7D,OAAO,IAAII,QAAQ,CAACC,SAASC,SAAWL,OAAOE,IAAI,CAAC,IAAI,EAAE,CAACI,MAASA,MAAMD,OAAOC,OAAOF;IAC1F;IArCA,YAAYK,SAAiB,EAAEX,UAAwB,CAAC,CAAC,CAAE;QACzD,IAAI,CAAE,CAAA,IAAI,YAAYF,KAAI,GAAI,MAAM,IAAIe,MAAM;QAC9C,IAAI,CAACF,WAAW,MAAM,IAAIE,MAAM;QAChC,IAAI,CAACF,SAAS,GAAGA;QACjB,IAAI,CAACX,OAAO,GAAGA;QACf,IAAI,CAAC,IAAI,CAACA,OAAO,CAACJ,IAAI,EAAE,IAAI,CAACI,OAAO,CAACJ,IAAI,GAAGA;IAC9C;AAgCF;AA1CA,SAAqBE,mBA0CpB"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/fetch-json-cache/src/Cache.ts"],"sourcesContent":["import { safeRm } from 'fs-remove-compat';\n\nimport get from './get.ts';\nimport getSync from './getSync.ts';\nimport hash from './hash.ts';\nimport type { CacheOptions, ClearCallback, GetCallback, GetOptions, UpdateCallback } from './types.ts';\nimport update from './update.ts';\n\nexport default class Cache {\n cachePath: string;\n options: CacheOptions;\n\n constructor(cachePath: string, options: CacheOptions = {}) {\n if (!(this instanceof Cache)) throw new Error('Cache needs to be called with new');\n if (!cachePath) throw new Error('Cache needs cachePath');\n this.cachePath = cachePath;\n this.options = options;\n if (!this.options.hash) this.options.hash = hash;\n }\n\n get<T>(endpoint: string, callback: GetCallback<T>): void;\n get<T>(endpoint: string, options: GetOptions, callback: GetCallback<T>): void;\n get<T>(endpoint: string, options?: GetOptions): Promise<T | null>;\n get<T>(endpoint: string, options?: GetOptions | GetCallback<T>, callback?: GetCallback<T>): void | Promise<T | null> {\n callback = typeof options === 'function' ? options : callback;\n options = typeof options === 'function' ? {} : ((options || {}) as GetOptions);\n\n const worker = (endpoint: string, options: GetOptions, callback: GetCallback<T>) => {\n options.force ? update.call(this, endpoint, callback as unknown as UpdateCallback<unknown>) : get.call(this, endpoint, callback as unknown as GetCallback<unknown>);\n };\n\n if (typeof callback === 'function') return worker(endpoint, options, callback);\n return new Promise((resolve, reject) => worker(endpoint, options as GetOptions, (err, json) => (err ? reject(err) : resolve(json as T | null))));\n }\n\n getSync<T>(endpoint: string): T | null {\n return getSync.call(this, endpoint) as T | null;\n }\n\n clear(callback: ClearCallback): void;\n clear(): Promise<void>;\n clear(callback?: ClearCallback): void | Promise<void> {\n const worker = (callback: ClearCallback) => {\n safeRm(this.cachePath, () => callback());\n };\n\n if (typeof callback === 'function') return worker(callback);\n return new Promise((resolve, reject) => worker((err) => (err ? reject(err) : resolve())));\n }\n}\n"],"names":["safeRm","get","getSync","hash","update","Cache","endpoint","options","callback","worker","force","call","Promise","resolve","reject","err","json","clear","cachePath","Error"],"mappings":"AAAA,SAASA,MAAM,QAAQ,mBAAmB;AAE1C,OAAOC,SAAS,WAAW;AAC3B,OAAOC,aAAa,eAAe;AACnC,OAAOC,UAAU,YAAY;AAE7B,OAAOC,YAAY,cAAc;AAElB,IAAA,AAAMC,QAAN,MAAMA;IAenBJ,IAAOK,QAAgB,EAAEC,OAAqC,EAAEC,QAAyB,EAA4B;QACnHA,WAAW,OAAOD,YAAY,aAAaA,UAAUC;QACrDD,UAAU,OAAOA,YAAY,aAAa,CAAC,IAAMA,WAAW,CAAC;QAE7D,MAAME,SAAS,CAACH,UAAkBC,SAAqBC;YACrDD,QAAQG,KAAK,GAAGN,OAAOO,IAAI,CAAC,IAAI,EAAEL,UAAUE,YAAkDP,IAAIU,IAAI,CAAC,IAAI,EAAEL,UAAUE;QACzH;QAEA,IAAI,OAAOA,aAAa,YAAY,OAAOC,OAAOH,UAAUC,SAASC;QACrE,OAAO,IAAII,QAAQ,CAACC,SAASC,SAAWL,OAAOH,UAAUC,SAAuB,CAACQ,KAAKC,OAAUD,MAAMD,OAAOC,OAAOF,QAAQG;IAC9H;IAEAd,QAAWI,QAAgB,EAAY;QACrC,OAAOJ,QAAQS,IAAI,CAAC,IAAI,EAAEL;IAC5B;IAIAW,MAAMT,QAAwB,EAAwB;QACpD,MAAMC,SAAS,CAACD;YACdR,OAAO,IAAI,CAACkB,SAAS,EAAE,IAAMV;QAC/B;QAEA,IAAI,OAAOA,aAAa,YAAY,OAAOC,OAAOD;QAClD,OAAO,IAAII,QAAQ,CAACC,SAASC,SAAWL,OAAO,CAACM,MAASA,MAAMD,OAAOC,OAAOF;IAC/E;IApCA,YAAYK,SAAiB,EAAEX,UAAwB,CAAC,CAAC,CAAE;QACzD,IAAI,CAAE,CAAA,IAAI,YAAYF,KAAI,GAAI,MAAM,IAAIc,MAAM;QAC9C,IAAI,CAACD,WAAW,MAAM,IAAIC,MAAM;QAChC,IAAI,CAACD,SAAS,GAAGA;QACjB,IAAI,CAACX,OAAO,GAAGA;QACf,IAAI,CAAC,IAAI,CAACA,OAAO,CAACJ,IAAI,EAAE,IAAI,CAACI,OAAO,CAACJ,IAAI,GAAGA;IAC9C;AA+BF;AAzCA,SAAqBE,mBAyCpB"}
package/dist/esm/get.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import type { GetCallback } from './types.js';
2
- export default function getCache<T>(endpoint: string, callback: GetCallback<T>): void;
1
+ import type { CacheContext, GetCallback } from './types.js';
2
+ export default function getCache<T>(this: CacheContext, endpoint: string, callback: GetCallback<T>): void;
package/dist/esm/get.js CHANGED
@@ -3,24 +3,25 @@ import { head } from 'get-file-compat';
3
3
  import path from 'path';
4
4
  import update from './update.js';
5
5
  export default function getCache(endpoint, callback) {
6
- const fullPath = path.join(this.cachePath, `${this.options.hash(endpoint)}.json`);
6
+ var _this_options_hash, _this_options;
7
+ const fullPath = path.join(this.cachePath, `${(_this_options_hash = (_this_options = this.options).hash) === null || _this_options_hash === void 0 ? void 0 : _this_options_hash.call(_this_options, endpoint)}.json`);
7
8
  fs.readFile(fullPath, (err, contents)=>{
8
9
  // doesn't exist so create
9
10
  if (err) {
10
11
  update.call(this, endpoint, (err, json)=>{
11
- err ? callback(err) : callback(null, json);
12
+ err ? callback(err) : callback(undefined, json);
12
13
  });
13
14
  } else {
14
15
  const record = JSON.parse(contents.toString());
15
16
  head(endpoint, (err, res)=>{
16
17
  // not accessible
17
18
  if (err) {
18
- if (err.code === 'ENOTFOUND' || err.message.indexOf('routines:SSL23_GET_SERVER_HELLO') >= 0) return callback(null, record.body);
19
+ if (err.code === 'ENOTFOUND' || err.message.indexOf('routines:SSL23_GET_SERVER_HELLO') >= 0) return callback(undefined, record.body);
19
20
  return callback(err);
20
21
  }
21
- if (res.headers.etag === record.headers.etag) return callback(null, record.body);
22
+ if ((res === null || res === void 0 ? void 0 : res.headers).etag === record.headers.etag) return callback(undefined, record.body);
22
23
  update.call(this, endpoint, (err, json)=>{
23
- err ? callback(err) : callback(null, json);
24
+ err ? callback(err) : callback(undefined, json);
24
25
  });
25
26
  });
26
27
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/fetch-json-cache/src/get.ts"],"sourcesContent":["import fs from 'fs';\nimport { head } from 'get-file-compat';\nimport path from 'path';\n\nimport update from './update.ts';\n\ninterface GetError {\n code?: string;\n}\n\ninterface GetHeaders {\n etag?: string;\n}\n\nimport type { GetCallback } from './types.ts';\n\nexport default function getCache<T>(endpoint: string, callback: GetCallback<T>): void {\n const fullPath = path.join(this.cachePath, `${this.options.hash(endpoint)}.json`);\n fs.readFile(fullPath, (err, contents) => {\n // doesn't exist so create\n if (err) {\n update.call(this, endpoint, (err, json) => {\n err ? callback(err) : callback(null, json);\n });\n }\n // check existing if etag changed and if so, recache\n else {\n const record = JSON.parse(contents.toString());\n head(endpoint, (err, res) => {\n // not accessible\n if (err) {\n if ((err as GetError).code === 'ENOTFOUND' || err.message.indexOf('routines:SSL23_GET_SERVER_HELLO') >= 0) return callback(null, record.body);\n return callback(err);\n }\n if ((res.headers as GetHeaders).etag === record.headers.etag) return callback(null, record.body);\n update.call(this, endpoint, (err, json) => {\n err ? callback(err) : callback(null, json);\n });\n });\n }\n });\n}\n"],"names":["fs","head","path","update","getCache","endpoint","callback","fullPath","join","cachePath","options","hash","readFile","err","contents","call","json","record","JSON","parse","toString","res","code","message","indexOf","body","headers","etag"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,SAASC,IAAI,QAAQ,kBAAkB;AACvC,OAAOC,UAAU,OAAO;AAExB,OAAOC,YAAY,cAAc;AAYjC,eAAe,SAASC,SAAYC,QAAgB,EAAEC,QAAwB;IAC5E,MAAMC,WAAWL,KAAKM,IAAI,CAAC,IAAI,CAACC,SAAS,EAAE,GAAG,IAAI,CAACC,OAAO,CAACC,IAAI,CAACN,UAAU,KAAK,CAAC;IAChFL,GAAGY,QAAQ,CAACL,UAAU,CAACM,KAAKC;QAC1B,0BAA0B;QAC1B,IAAID,KAAK;YACPV,OAAOY,IAAI,CAAC,IAAI,EAAEV,UAAU,CAACQ,KAAKG;gBAChCH,MAAMP,SAASO,OAAOP,SAAS,MAAMU;YACvC;QACF,OAEK;YACH,MAAMC,SAASC,KAAKC,KAAK,CAACL,SAASM,QAAQ;YAC3CnB,KAAKI,UAAU,CAACQ,KAAKQ;gBACnB,iBAAiB;gBACjB,IAAIR,KAAK;oBACP,IAAI,AAACA,IAAiBS,IAAI,KAAK,eAAeT,IAAIU,OAAO,CAACC,OAAO,CAAC,sCAAsC,GAAG,OAAOlB,SAAS,MAAMW,OAAOQ,IAAI;oBAC5I,OAAOnB,SAASO;gBAClB;gBACA,IAAI,AAACQ,IAAIK,OAAO,CAAgBC,IAAI,KAAKV,OAAOS,OAAO,CAACC,IAAI,EAAE,OAAOrB,SAAS,MAAMW,OAAOQ,IAAI;gBAC/FtB,OAAOY,IAAI,CAAC,IAAI,EAAEV,UAAU,CAACQ,KAAKG;oBAChCH,MAAMP,SAASO,OAAOP,SAAS,MAAMU;gBACvC;YACF;QACF;IACF;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/fetch-json-cache/src/get.ts"],"sourcesContent":["import fs from 'fs';\nimport { head } from 'get-file-compat';\nimport path from 'path';\n\nimport update from './update.ts';\n\ninterface GetError {\n code?: string;\n}\n\ninterface GetHeaders {\n etag?: string;\n}\n\nimport type { CacheContext, GetCallback } from './types.ts';\n\nexport default function getCache<T>(this: CacheContext, endpoint: string, callback: GetCallback<T>): void {\n const fullPath = path.join(this.cachePath, `${this.options.hash?.(endpoint)}.json`);\n fs.readFile(fullPath, (err, contents) => {\n // doesn't exist so create\n if (err) {\n update.call(this, endpoint, (err, json) => {\n err ? callback(err) : callback(undefined, json as T | undefined);\n });\n }\n // check existing if etag changed and if so, recache\n else {\n const record = JSON.parse(contents.toString());\n head(endpoint, (err, res) => {\n // not accessible\n if (err) {\n if ((err as GetError).code === 'ENOTFOUND' || err.message.indexOf('routines:SSL23_GET_SERVER_HELLO') >= 0) return callback(undefined, record.body);\n return callback(err);\n }\n if ((res?.headers as GetHeaders).etag === record.headers.etag) return callback(undefined, record.body);\n update.call(this, endpoint, (err, json) => {\n err ? callback(err) : callback(undefined, json as T | undefined);\n });\n });\n }\n });\n}\n"],"names":["fs","head","path","update","getCache","endpoint","callback","fullPath","join","cachePath","options","hash","readFile","err","contents","call","json","undefined","record","JSON","parse","toString","res","code","message","indexOf","body","headers","etag"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,SAASC,IAAI,QAAQ,kBAAkB;AACvC,OAAOC,UAAU,OAAO;AAExB,OAAOC,YAAY,cAAc;AAYjC,eAAe,SAASC,SAAgCC,QAAgB,EAAEC,QAAwB;QAClD,oBAAA;IAA9C,MAAMC,WAAWL,KAAKM,IAAI,CAAC,IAAI,CAACC,SAAS,EAAE,IAAG,qBAAA,CAAA,gBAAA,IAAI,CAACC,OAAO,EAACC,IAAI,cAAjB,yCAAA,wBAAA,eAAoBN,UAAU,KAAK,CAAC;IAClFL,GAAGY,QAAQ,CAACL,UAAU,CAACM,KAAKC;QAC1B,0BAA0B;QAC1B,IAAID,KAAK;YACPV,OAAOY,IAAI,CAAC,IAAI,EAAEV,UAAU,CAACQ,KAAKG;gBAChCH,MAAMP,SAASO,OAAOP,SAASW,WAAWD;YAC5C;QACF,OAEK;YACH,MAAME,SAASC,KAAKC,KAAK,CAACN,SAASO,QAAQ;YAC3CpB,KAAKI,UAAU,CAACQ,KAAKS;gBACnB,iBAAiB;gBACjB,IAAIT,KAAK;oBACP,IAAI,AAACA,IAAiBU,IAAI,KAAK,eAAeV,IAAIW,OAAO,CAACC,OAAO,CAAC,sCAAsC,GAAG,OAAOnB,SAASW,WAAWC,OAAOQ,IAAI;oBACjJ,OAAOpB,SAASO;gBAClB;gBACA,IAAI,CAACS,gBAAAA,0BAAAA,IAAKK,OAAO,EAAgBC,IAAI,KAAKV,OAAOS,OAAO,CAACC,IAAI,EAAE,OAAOtB,SAASW,WAAWC,OAAOQ,IAAI;gBACrGvB,OAAOY,IAAI,CAAC,IAAI,EAAEV,UAAU,CAACQ,KAAKG;oBAChCH,MAAMP,SAASO,OAAOP,SAASW,WAAWD;gBAC5C;YACF;QACF;IACF;AACF"}
@@ -1 +1,2 @@
1
- export default function getCacheAsync<T>(endpoint: string): T;
1
+ import type { CacheContext } from './types.js';
2
+ export default function getCacheAsync<T>(this: CacheContext, endpoint: string): T | null;
@@ -1,7 +1,8 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
3
  export default function getCacheAsync(endpoint) {
4
- const fullPath = path.join(this.cachePath, `${this.options.hash(endpoint)}.json`);
4
+ var _this_options_hash, _this_options;
5
+ const fullPath = path.join(this.cachePath, `${(_this_options_hash = (_this_options = this.options).hash) === null || _this_options_hash === void 0 ? void 0 : _this_options_hash.call(_this_options, endpoint)}.json`);
5
6
  try {
6
7
  const contents = fs.readFileSync(fullPath, 'utf8');
7
8
  const record = JSON.parse(contents.toString());
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/fetch-json-cache/src/getSync.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nexport default function getCacheAsync<T>(endpoint: string): T {\n const fullPath = path.join(this.cachePath, `${this.options.hash(endpoint)}.json`);\n try {\n const contents = fs.readFileSync(fullPath, 'utf8');\n const record = JSON.parse(contents.toString());\n return record.body;\n } catch (_err) {\n return null;\n }\n}\n"],"names":["fs","path","getCacheAsync","endpoint","fullPath","join","cachePath","options","hash","contents","readFileSync","record","JSON","parse","toString","body","_err"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AAExB,eAAe,SAASC,cAAiBC,QAAgB;IACvD,MAAMC,WAAWH,KAAKI,IAAI,CAAC,IAAI,CAACC,SAAS,EAAE,GAAG,IAAI,CAACC,OAAO,CAACC,IAAI,CAACL,UAAU,KAAK,CAAC;IAChF,IAAI;QACF,MAAMM,WAAWT,GAAGU,YAAY,CAACN,UAAU;QAC3C,MAAMO,SAASC,KAAKC,KAAK,CAACJ,SAASK,QAAQ;QAC3C,OAAOH,OAAOI,IAAI;IACpB,EAAE,OAAOC,MAAM;QACb,OAAO;IACT;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/fetch-json-cache/src/getSync.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport type { CacheContext } from './types.ts';\n\nexport default function getCacheAsync<T>(this: CacheContext, endpoint: string): T | null {\n const fullPath = path.join(this.cachePath, `${this.options.hash?.(endpoint)}.json`);\n try {\n const contents = fs.readFileSync(fullPath, 'utf8');\n const record = JSON.parse(contents.toString());\n return record.body;\n } catch (_err) {\n return null;\n }\n}\n"],"names":["fs","path","getCacheAsync","endpoint","fullPath","join","cachePath","options","hash","contents","readFileSync","record","JSON","parse","toString","body","_err"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AAIxB,eAAe,SAASC,cAAqCC,QAAgB;QAC7B,oBAAA;IAA9C,MAAMC,WAAWH,KAAKI,IAAI,CAAC,IAAI,CAACC,SAAS,EAAE,IAAG,qBAAA,CAAA,gBAAA,IAAI,CAACC,OAAO,EAACC,IAAI,cAAjB,yCAAA,wBAAA,eAAoBL,UAAU,KAAK,CAAC;IAClF,IAAI;QACF,MAAMM,WAAWT,GAAGU,YAAY,CAACN,UAAU;QAC3C,MAAMO,SAASC,KAAKC,KAAK,CAACJ,SAASK,QAAQ;QAC3C,OAAOH,OAAOI,IAAI;IACpB,EAAE,OAAOC,MAAM;QACb,OAAO;IACT;AACF"}
@@ -5,9 +5,13 @@ export interface Record<T> {
5
5
  export interface CacheOptions {
6
6
  hash?: (string: string) => string;
7
7
  }
8
+ export interface CacheContext {
9
+ cachePath: string;
10
+ options: CacheOptions;
11
+ }
8
12
  export interface GetOptions {
9
13
  force?: boolean;
10
14
  }
11
- export type GetCallback<T> = (error?: Error, result?: T) => void;
12
- export type ClearCallback = (error?: Error) => void;
13
- export type UpdateCallback<T> = (error?: Error, result?: T) => void;
15
+ export type GetCallback<T> = (error?: Error | null, result?: T) => void;
16
+ export type ClearCallback = (error?: Error | null) => void;
17
+ export type UpdateCallback<T> = (error?: Error | null, result?: T) => void;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/fetch-json-cache/src/types.ts"],"sourcesContent":["export interface Record<T> {\n headers: object;\n body: T;\n}\n\nexport interface CacheOptions {\n hash?: (string: string) => string;\n}\n\nexport interface GetOptions {\n force?: boolean;\n}\nexport type GetCallback<T> = (error?: Error, result?: T) => void;\nexport type ClearCallback = (error?: Error) => void;\nexport type UpdateCallback<T> = (error?: Error, result?: T) => void;\n"],"names":[],"mappings":"AAcA,WAAoE"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/fetch-json-cache/src/types.ts"],"sourcesContent":["export interface Record<T> {\n headers: object;\n body: T;\n}\n\nexport interface CacheOptions {\n hash?: (string: string) => string;\n}\n\nexport interface CacheContext {\n cachePath: string;\n options: CacheOptions;\n}\n\nexport interface GetOptions {\n force?: boolean;\n}\nexport type GetCallback<T> = (error?: Error | null, result?: T) => void;\nexport type ClearCallback = (error?: Error | null) => void;\nexport type UpdateCallback<T> = (error?: Error | null, result?: T) => void;\n"],"names":[],"mappings":"AAmBA,WAA2E"}
@@ -1,2 +1,2 @@
1
- import type { UpdateCallback } from './types.js';
2
- export default function update<T>(endpoint: string, callback: UpdateCallback<T>): void;
1
+ import type { CacheContext, UpdateCallback } from './types.js';
2
+ export default function update<T>(this: CacheContext, endpoint: string, callback: UpdateCallback<T>): void;
@@ -6,26 +6,29 @@ import path from 'path';
6
6
  import Queue from 'queue-cb';
7
7
  import tempSuffix from 'temp-suffix';
8
8
  export default function update(endpoint, callback) {
9
- const fullPath = path.join(this.cachePath, `${this.options.hash(endpoint)}.json`);
9
+ var _this_options_hash, _this_options;
10
+ const fullPath = path.join(this.cachePath, `${(_this_options_hash = (_this_options = this.options).hash) === null || _this_options_hash === void 0 ? void 0 : _this_options_hash.call(_this_options, endpoint)}.json`);
10
11
  mkdirp(this.cachePath, (err)=>{
11
12
  if (err && err.code !== 'EEXIST') return callback(err);
12
13
  getContent(endpoint, 'utf8', (err, res)=>{
13
14
  if (err) return callback(err);
14
15
  try {
15
- const body = JSON.parse(res.content);
16
+ var _ref, _ref1;
17
+ const body = JSON.parse((_ref = res === null || res === void 0 ? void 0 : res.content) !== null && _ref !== void 0 ? _ref : 'null');
16
18
  const record = {
17
- headers: res.headers,
19
+ headers: (_ref1 = res === null || res === void 0 ? void 0 : res.headers) !== null && _ref1 !== void 0 ? _ref1 : {},
18
20
  body
19
21
  };
20
22
  const tempFile = `${fullPath}-${tempSuffix()}`;
21
23
  const queue = new Queue(1);
22
- queue.defer(fs.writeFile.bind(null, tempFile, JSON.stringify(record), 'utf8'));
23
- queue.defer((cb)=>rm(fullPath, cb.bind(null, null)));
24
- queue.defer(fs.rename.bind(null, tempFile, fullPath));
24
+ queue.defer((cb)=>fs.writeFile(tempFile, JSON.stringify(record), 'utf8', (err)=>cb(err)));
25
+ queue.defer((cb)=>rm(fullPath, {
26
+ force: true
27
+ }, (err)=>cb(err)));
28
+ queue.defer((cb)=>fs.rename(tempFile, fullPath, (err)=>cb(err)));
25
29
  queue.await((err)=>{
26
- if (!err) return callback(null, record.body);
27
- // cleanup the temp file if the operation failed
28
- rm(tempFile, callback.bind(err));
30
+ if (!err) return callback(undefined, record.body);
31
+ rm(tempFile, ()=>callback(err));
29
32
  });
30
33
  } catch (err) {
31
34
  return callback(err);
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/fetch-json-cache/src/update.ts"],"sourcesContent":["import fs from 'fs';\nimport { rm } from 'fs-remove-compat';\nimport { getContent } from 'get-file-compat';\nimport mkdirp from 'mkdirp-classic';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport tempSuffix from 'temp-suffix';\n\nimport type { Record, UpdateCallback } from './types.ts';\n\nexport default function update<T>(endpoint: string, callback: UpdateCallback<T>): void {\n const fullPath = path.join(this.cachePath, `${this.options.hash(endpoint)}.json`);\n\n mkdirp(this.cachePath, (err) => {\n if (err && err.code !== 'EEXIST') return callback(err);\n\n getContent(endpoint, 'utf8', (err, res) => {\n if (err) return callback(err);\n\n try {\n const body = JSON.parse(res.content);\n const record = { headers: res.headers, body } as Record<T>;\n const tempFile = `${fullPath}-${tempSuffix()}`;\n\n const queue = new Queue(1);\n queue.defer(fs.writeFile.bind(null, tempFile, JSON.stringify(record), 'utf8'));\n queue.defer((cb) => rm(fullPath, cb.bind(null, null)));\n queue.defer(fs.rename.bind(null, tempFile, fullPath));\n queue.await((err) => {\n if (!err) return callback(null, record.body);\n // cleanup the temp file if the operation failed\n rm(tempFile, callback.bind(err));\n });\n } catch (err) {\n return callback(err);\n }\n });\n });\n}\n"],"names":["fs","rm","getContent","mkdirp","path","Queue","tempSuffix","update","endpoint","callback","fullPath","join","cachePath","options","hash","err","code","res","body","JSON","parse","content","record","headers","tempFile","queue","defer","writeFile","bind","stringify","cb","rename","await"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,SAASC,EAAE,QAAQ,mBAAmB;AACtC,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,OAAOC,YAAY,iBAAiB;AACpC,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAC7B,OAAOC,gBAAgB,cAAc;AAIrC,eAAe,SAASC,OAAUC,QAAgB,EAAEC,QAA2B;IAC7E,MAAMC,WAAWN,KAAKO,IAAI,CAAC,IAAI,CAACC,SAAS,EAAE,GAAG,IAAI,CAACC,OAAO,CAACC,IAAI,CAACN,UAAU,KAAK,CAAC;IAEhFL,OAAO,IAAI,CAACS,SAAS,EAAE,CAACG;QACtB,IAAIA,OAAOA,IAAIC,IAAI,KAAK,UAAU,OAAOP,SAASM;QAElDb,WAAWM,UAAU,QAAQ,CAACO,KAAKE;YACjC,IAAIF,KAAK,OAAON,SAASM;YAEzB,IAAI;gBACF,MAAMG,OAAOC,KAAKC,KAAK,CAACH,IAAII,OAAO;gBACnC,MAAMC,SAAS;oBAAEC,SAASN,IAAIM,OAAO;oBAAEL;gBAAK;gBAC5C,MAAMM,WAAW,GAAGd,SAAS,CAAC,EAAEJ,cAAc;gBAE9C,MAAMmB,QAAQ,IAAIpB,MAAM;gBACxBoB,MAAMC,KAAK,CAAC1B,GAAG2B,SAAS,CAACC,IAAI,CAAC,MAAMJ,UAAUL,KAAKU,SAAS,CAACP,SAAS;gBACtEG,MAAMC,KAAK,CAAC,CAACI,KAAO7B,GAAGS,UAAUoB,GAAGF,IAAI,CAAC,MAAM;gBAC/CH,MAAMC,KAAK,CAAC1B,GAAG+B,MAAM,CAACH,IAAI,CAAC,MAAMJ,UAAUd;gBAC3Ce,MAAMO,KAAK,CAAC,CAACjB;oBACX,IAAI,CAACA,KAAK,OAAON,SAAS,MAAMa,OAAOJ,IAAI;oBAC3C,gDAAgD;oBAChDjB,GAAGuB,UAAUf,SAASmB,IAAI,CAACb;gBAC7B;YACF,EAAE,OAAOA,KAAK;gBACZ,OAAON,SAASM;YAClB;QACF;IACF;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/fetch-json-cache/src/update.ts"],"sourcesContent":["import fs from 'fs';\nimport { rm } from 'fs-remove-compat';\nimport { getContent } from 'get-file-compat';\nimport mkdirp from 'mkdirp-classic';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport tempSuffix from 'temp-suffix';\n\nimport type { CacheContext, Record, UpdateCallback } from './types.ts';\n\nexport default function update<T>(this: CacheContext, endpoint: string, callback: UpdateCallback<T>): void {\n const fullPath = path.join(this.cachePath, `${this.options.hash?.(endpoint)}.json`);\n\n mkdirp(this.cachePath, (err) => {\n if (err && (err as NodeJS.ErrnoException).code !== 'EEXIST') return callback(err);\n\n getContent(endpoint, 'utf8', (err, res) => {\n if (err) return callback(err);\n\n try {\n const body = JSON.parse(res?.content ?? 'null');\n const record = { headers: res?.headers ?? {}, body } as Record<T>;\n const tempFile = `${fullPath}-${tempSuffix()}`;\n\n const queue = new Queue(1);\n queue.defer((cb) => fs.writeFile(tempFile, JSON.stringify(record), 'utf8', (err) => cb(err)));\n queue.defer((cb) => rm(fullPath, { force: true }, (err?: NodeJS.ErrnoException | null) => cb(err)));\n queue.defer((cb) => fs.rename(tempFile, fullPath, (err) => cb(err)));\n queue.await((err) => {\n if (!err) return callback(undefined, record.body);\n rm(tempFile, () => callback(err));\n });\n } catch (err) {\n return callback(err as Error);\n }\n });\n });\n}\n"],"names":["fs","rm","getContent","mkdirp","path","Queue","tempSuffix","update","endpoint","callback","fullPath","join","cachePath","options","hash","err","code","res","body","JSON","parse","content","record","headers","tempFile","queue","defer","cb","writeFile","stringify","force","rename","await","undefined"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,SAASC,EAAE,QAAQ,mBAAmB;AACtC,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,OAAOC,YAAY,iBAAiB;AACpC,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAC7B,OAAOC,gBAAgB,cAAc;AAIrC,eAAe,SAASC,OAA8BC,QAAgB,EAAEC,QAA2B;QACnD,oBAAA;IAA9C,MAAMC,WAAWN,KAAKO,IAAI,CAAC,IAAI,CAACC,SAAS,EAAE,IAAG,qBAAA,CAAA,gBAAA,IAAI,CAACC,OAAO,EAACC,IAAI,cAAjB,yCAAA,wBAAA,eAAoBN,UAAU,KAAK,CAAC;IAElFL,OAAO,IAAI,CAACS,SAAS,EAAE,CAACG;QACtB,IAAIA,OAAO,AAACA,IAA8BC,IAAI,KAAK,UAAU,OAAOP,SAASM;QAE7Eb,WAAWM,UAAU,QAAQ,CAACO,KAAKE;YACjC,IAAIF,KAAK,OAAON,SAASM;YAEzB,IAAI;;gBACF,MAAMG,OAAOC,KAAKC,KAAK,SAACH,gBAAAA,0BAAAA,IAAKI,OAAO,uCAAI;gBACxC,MAAMC,SAAS;oBAAEC,OAAO,WAAEN,gBAAAA,0BAAAA,IAAKM,OAAO,yCAAI,CAAC;oBAAGL;gBAAK;gBACnD,MAAMM,WAAW,GAAGd,SAAS,CAAC,EAAEJ,cAAc;gBAE9C,MAAMmB,QAAQ,IAAIpB,MAAM;gBACxBoB,MAAMC,KAAK,CAAC,CAACC,KAAO3B,GAAG4B,SAAS,CAACJ,UAAUL,KAAKU,SAAS,CAACP,SAAS,QAAQ,CAACP,MAAQY,GAAGZ;gBACvFU,MAAMC,KAAK,CAAC,CAACC,KAAO1B,GAAGS,UAAU;wBAAEoB,OAAO;oBAAK,GAAG,CAACf,MAAuCY,GAAGZ;gBAC7FU,MAAMC,KAAK,CAAC,CAACC,KAAO3B,GAAG+B,MAAM,CAACP,UAAUd,UAAU,CAACK,MAAQY,GAAGZ;gBAC9DU,MAAMO,KAAK,CAAC,CAACjB;oBACX,IAAI,CAACA,KAAK,OAAON,SAASwB,WAAWX,OAAOJ,IAAI;oBAChDjB,GAAGuB,UAAU,IAAMf,SAASM;gBAC9B;YACF,EAAE,OAAOA,KAAK;gBACZ,OAAON,SAASM;YAClB;QACF;IACF;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fetch-json-cache",
3
- "version": "1.6.1",
3
+ "version": "1.6.3",
4
4
  "description": "Caches fetched json. Updates when etag changes and is uses cache regardless if endpoint unreachable. Uses write-file-atomic for safe updates",
5
5
  "keywords": [
6
6
  "every",