fetch-json-cache 1.6.0 → 1.6.2
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 +14 -12
- package/dist/cjs/Cache.js.map +1 -1
- package/dist/cjs/get.d.cts +2 -2
- package/dist/cjs/get.d.ts +2 -2
- package/dist/cjs/get.js +6 -5
- package/dist/cjs/get.js.map +1 -1
- package/dist/cjs/getSync.d.cts +2 -1
- package/dist/cjs/getSync.d.ts +2 -1
- package/dist/cjs/getSync.js +2 -1
- package/dist/cjs/getSync.js.map +1 -1
- package/dist/cjs/types.d.cts +4 -0
- package/dist/cjs/types.d.ts +4 -0
- package/dist/cjs/update.d.cts +2 -2
- package/dist/cjs/update.d.ts +2 -2
- package/dist/cjs/update.js +25 -10
- package/dist/cjs/update.js.map +1 -1
- package/dist/esm/Cache.js +9 -12
- package/dist/esm/Cache.js.map +1 -1
- package/dist/esm/get.d.ts +2 -2
- package/dist/esm/get.js +6 -5
- package/dist/esm/get.js.map +1 -1
- package/dist/esm/getSync.d.ts +2 -1
- package/dist/esm/getSync.js +2 -1
- package/dist/esm/getSync.js.map +1 -1
- package/dist/esm/types.d.ts +4 -0
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/update.d.ts +2 -2
- package/dist/esm/update.js +13 -10
- package/dist/esm/update.js.map +1 -1
- package/package.json +1 -1
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(
|
|
51
|
-
}
|
|
52
|
-
if (typeof callback === 'function') return worker
|
|
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
|
|
55
|
+
return worker(endpoint, options, function(err, json) {
|
|
55
56
|
return err ? reject(err) : resolve(json);
|
|
56
57
|
});
|
|
57
58
|
});
|
|
@@ -61,14 +62,15 @@ var Cache = /*#__PURE__*/ function() {
|
|
|
61
62
|
};
|
|
62
63
|
_proto.clear = function clear(callback) {
|
|
63
64
|
var _this = this;
|
|
64
|
-
function worker(callback) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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
|
|
71
|
-
err ? reject(err) : resolve();
|
|
72
|
+
return worker(function(err) {
|
|
73
|
+
return err ? reject(err) : resolve();
|
|
72
74
|
});
|
|
73
75
|
});
|
|
74
76
|
};
|
package/dist/cjs/Cache.js.map
CHANGED
|
@@ -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
|
|
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"}
|
package/dist/cjs/get.d.cts
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.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
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
40
|
+
err ? callback(err) : callback(undefined, json);
|
|
40
41
|
});
|
|
41
42
|
});
|
|
42
43
|
}
|
package/dist/cjs/get.js.map
CHANGED
|
@@ -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(
|
|
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"}
|
package/dist/cjs/getSync.d.cts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import type { CacheContext } from './types.js';
|
|
2
|
+
export default function getCacheAsync<T>(this: CacheContext, endpoint: string): T | null;
|
package/dist/cjs/getSync.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import type { CacheContext } from './types.js';
|
|
2
|
+
export default function getCacheAsync<T>(this: CacheContext, endpoint: string): T | null;
|
package/dist/cjs/getSync.js
CHANGED
|
@@ -16,7 +16,8 @@ function _interop_require_default(obj) {
|
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
18
|
function getCacheAsync(endpoint) {
|
|
19
|
-
var
|
|
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());
|
package/dist/cjs/getSync.js.map
CHANGED
|
@@ -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":";;;;+
|
|
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"}
|
package/dist/cjs/types.d.cts
CHANGED
package/dist/cjs/types.d.ts
CHANGED
package/dist/cjs/update.d.cts
CHANGED
|
@@ -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;
|
package/dist/cjs/update.d.ts
CHANGED
|
@@ -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;
|
package/dist/cjs/update.js
CHANGED
|
@@ -21,28 +21,43 @@ function _interop_require_default(obj) {
|
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
23
|
function update(endpoint, callback) {
|
|
24
|
-
var
|
|
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
|
-
if (err && err.code !== 'EEXIST') return callback(err);
|
|
27
|
+
if (err && err.code !== 'EEXIST') return callback(err !== null && err !== void 0 ? err : undefined);
|
|
27
28
|
(0, _getfilecompat.getContent)(endpoint, 'utf8', function(err, res) {
|
|
28
29
|
if (err) return callback(err);
|
|
29
30
|
try {
|
|
30
|
-
var
|
|
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 (
|
|
40
|
+
return _fs.default.writeFile(tempFile, JSON.stringify(record), 'utf8', function(err) {
|
|
41
|
+
return cb(err !== null && err !== void 0 ? err : undefined);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
queue.defer(function(cb) {
|
|
45
|
+
return (0, _fsremovecompat.rm)(fullPath, {
|
|
46
|
+
force: true
|
|
47
|
+
}, function(err) {
|
|
48
|
+
return cb(err !== null && err !== void 0 ? err : undefined);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
queue.defer(function(cb) {
|
|
52
|
+
return _fs.default.rename(tempFile, fullPath, function(err) {
|
|
53
|
+
return cb(err !== null && err !== void 0 ? err : undefined);
|
|
54
|
+
});
|
|
40
55
|
});
|
|
41
|
-
queue.defer(_fs.default.rename.bind(null, tempFile, fullPath));
|
|
42
56
|
queue.await(function(err) {
|
|
43
|
-
if (!err) return callback(
|
|
44
|
-
|
|
45
|
-
|
|
57
|
+
if (!err) return callback(undefined, record.body);
|
|
58
|
+
(0, _fsremovecompat.rm)(tempFile, function() {
|
|
59
|
+
return callback(err !== null && err !== void 0 ? err : undefined);
|
|
60
|
+
});
|
|
46
61
|
});
|
|
47
62
|
} catch (err) {
|
|
48
63
|
return callback(err);
|
package/dist/cjs/update.js.map
CHANGED
|
@@ -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
|
|
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 ?? undefined);\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 ?? undefined)));\n queue.defer((cb) => rm(fullPath, { force: true }, (err?: NodeJS.ErrnoException | null) => cb(err ?? undefined)));\n queue.defer((cb) => fs.rename(tempFile, fullPath, (err) => cb(err ?? undefined)));\n queue.await((err) => {\n if (!err) return callback(undefined, record.body);\n rm(tempFile, () => callback(err ?? undefined));\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","undefined","getContent","res","body","JSON","parse","content","record","headers","tempFile","tempSuffix","queue","Queue","defer","cb","fs","writeFile","stringify","rm","force","rename","await"],"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,gBAAAA,iBAAAA,MAAOE;QAEpFC,IAAAA,yBAAU,EAACZ,UAAU,QAAQ,SAACS,KAAKI;YACjC,IAAIJ,KAAK,OAAOR,SAASQ;YAEzB,IAAI;;gBACF,IAAMK,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,OAAZnB,UAAS,KAAgB,OAAbmB,IAAAA,mBAAU;gBAE1C,IAAMC,QAAQ,IAAIC,gBAAK,CAAC;gBACxBD,MAAME,KAAK,CAAC,SAACC;2BAAOC,WAAE,CAACC,SAAS,CAACP,UAAUL,KAAKa,SAAS,CAACV,SAAS,QAAQ,SAACT;+BAAQgB,GAAGhB,gBAAAA,iBAAAA,MAAOE;;;gBAC9FW,MAAME,KAAK,CAAC,SAACC;2BAAOI,IAAAA,kBAAE,EAAC3B,UAAU;wBAAE4B,OAAO;oBAAK,GAAG,SAACrB;+BAAuCgB,GAAGhB,gBAAAA,iBAAAA,MAAOE;;;gBACpGW,MAAME,KAAK,CAAC,SAACC;2BAAOC,WAAE,CAACK,MAAM,CAACX,UAAUlB,UAAU,SAACO;+BAAQgB,GAAGhB,gBAAAA,iBAAAA,MAAOE;;;gBACrEW,MAAMU,KAAK,CAAC,SAACvB;oBACX,IAAI,CAACA,KAAK,OAAOR,SAASU,WAAWO,OAAOJ,IAAI;oBAChDe,IAAAA,kBAAE,EAACT,UAAU;+BAAMnB,SAASQ,gBAAAA,iBAAAA,MAAOE;;gBACrC;YACF,EAAE,OAAOF,KAAK;gBACZ,OAAOR,SAASQ;YAClB;QACF;IACF;AACF"}
|
package/dist/esm/Cache.js
CHANGED
|
@@ -7,24 +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
|
-
|
|
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
|
|
14
|
-
return new Promise((resolve, reject)=>worker
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return new Promise((resolve, reject)=>worker.call(this, (err)=>{
|
|
26
|
-
err ? reject(err) : resolve();
|
|
27
|
-
}));
|
|
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()));
|
|
28
25
|
}
|
|
29
26
|
constructor(cachePath, options = {}){
|
|
30
27
|
if (!(this instanceof Cache)) throw new Error('Cache needs to be called with new');
|
package/dist/esm/Cache.js.map
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
24
|
+
err ? callback(err) : callback(undefined, json);
|
|
24
25
|
});
|
|
25
26
|
});
|
|
26
27
|
}
|
package/dist/esm/get.js.map
CHANGED
|
@@ -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(
|
|
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"}
|
package/dist/esm/getSync.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import type { CacheContext } from './types.js';
|
|
2
|
+
export default function getCacheAsync<T>(this: CacheContext, endpoint: string): T | null;
|
package/dist/esm/getSync.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
export default function getCacheAsync(endpoint) {
|
|
4
|
-
|
|
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());
|
package/dist/esm/getSync.js.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/esm/types.d.ts
CHANGED
package/dist/esm/types.js.map
CHANGED
|
@@ -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":"
|
|
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, result?: T) => void;\nexport type ClearCallback = (error?: Error) => void;\nexport type UpdateCallback<T> = (error?: Error, result?: T) => void;\n"],"names":[],"mappings":"AAmBA,WAAoE"}
|
package/dist/esm/update.d.ts
CHANGED
|
@@ -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;
|
package/dist/esm/update.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
if (err && err.code !== 'EEXIST') return callback(err);
|
|
12
|
+
if (err && err.code !== 'EEXIST') return callback(err !== null && err !== void 0 ? err : undefined);
|
|
12
13
|
getContent(endpoint, 'utf8', (err, res)=>{
|
|
13
14
|
if (err) return callback(err);
|
|
14
15
|
try {
|
|
15
|
-
|
|
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
|
|
23
|
-
queue.defer((cb)=>rm(fullPath,
|
|
24
|
-
|
|
24
|
+
queue.defer((cb)=>fs.writeFile(tempFile, JSON.stringify(record), 'utf8', (err)=>cb(err !== null && err !== void 0 ? err : undefined)));
|
|
25
|
+
queue.defer((cb)=>rm(fullPath, {
|
|
26
|
+
force: true
|
|
27
|
+
}, (err)=>cb(err !== null && err !== void 0 ? err : undefined)));
|
|
28
|
+
queue.defer((cb)=>fs.rename(tempFile, fullPath, (err)=>cb(err !== null && err !== void 0 ? err : undefined)));
|
|
25
29
|
queue.await((err)=>{
|
|
26
|
-
if (!err) return callback(
|
|
27
|
-
|
|
28
|
-
rm(tempFile, callback.bind(err));
|
|
30
|
+
if (!err) return callback(undefined, record.body);
|
|
31
|
+
rm(tempFile, ()=>callback(err !== null && err !== void 0 ? err : undefined));
|
|
29
32
|
});
|
|
30
33
|
} catch (err) {
|
|
31
34
|
return callback(err);
|
package/dist/esm/update.js.map
CHANGED
|
@@ -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
|
|
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 ?? undefined);\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 ?? undefined)));\n queue.defer((cb) => rm(fullPath, { force: true }, (err?: NodeJS.ErrnoException | null) => cb(err ?? undefined)));\n queue.defer((cb) => fs.rename(tempFile, fullPath, (err) => cb(err ?? undefined)));\n queue.await((err) => {\n if (!err) return callback(undefined, record.body);\n rm(tempFile, () => callback(err ?? undefined));\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","undefined","res","body","JSON","parse","content","record","headers","tempFile","queue","defer","cb","writeFile","stringify","force","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,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,gBAAAA,iBAAAA,MAAOE;QAEpFf,WAAWM,UAAU,QAAQ,CAACO,KAAKG;YACjC,IAAIH,KAAK,OAAON,SAASM;YAEzB,IAAI;;gBACF,MAAMI,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,GAAGf,SAAS,CAAC,EAAEJ,cAAc;gBAE9C,MAAMoB,QAAQ,IAAIrB,MAAM;gBACxBqB,MAAMC,KAAK,CAAC,CAACC,KAAO5B,GAAG6B,SAAS,CAACJ,UAAUL,KAAKU,SAAS,CAACP,SAAS,QAAQ,CAACR,MAAQa,GAAGb,gBAAAA,iBAAAA,MAAOE;gBAC9FS,MAAMC,KAAK,CAAC,CAACC,KAAO3B,GAAGS,UAAU;wBAAEqB,OAAO;oBAAK,GAAG,CAAChB,MAAuCa,GAAGb,gBAAAA,iBAAAA,MAAOE;gBACpGS,MAAMC,KAAK,CAAC,CAACC,KAAO5B,GAAGgC,MAAM,CAACP,UAAUf,UAAU,CAACK,MAAQa,GAAGb,gBAAAA,iBAAAA,MAAOE;gBACrES,MAAMO,KAAK,CAAC,CAAClB;oBACX,IAAI,CAACA,KAAK,OAAON,SAASQ,WAAWM,OAAOJ,IAAI;oBAChDlB,GAAGwB,UAAU,IAAMhB,SAASM,gBAAAA,iBAAAA,MAAOE;gBACrC;YACF,EAAE,OAAOF,KAAK;gBACZ,OAAON,SAASM;YAClB;QACF;IACF;AACF"}
|
package/package.json
CHANGED