Comparing version 5.20.0 to 5.21.0-next.1627420488.3a607600e5709517323bb186807900b161df3a49
@@ -1,34 +0,34 @@ | ||
declare type Log = (logLevel: string, ...args: any[]) => any | ||
declare type Retrieve<Result> = () => Promise<Result> | ||
declare type Status = 'valid' | 'invalid' | 'updating' | 'empty' | ||
declare type Log = (logLevel: string, ...args: any[]) => any; | ||
declare type Retrieve<Result> = () => Promise<Result>; | ||
declare type Status = 'valid' | 'invalid' | 'updating' | 'empty'; | ||
interface CachelyOptions<Result> { | ||
/** the milliseconds that the cache should be valid for, defaults to one day */ | ||
duration?: number | ||
/** method to send log output to */ | ||
log?: Log | ||
/** the method that fetches the new source data, it should return a promise that resolves the result that will be cached */ | ||
retrieve: Retrieve<Result> | ||
/** the milliseconds that the cache should be valid for, defaults to one day */ | ||
duration?: number; | ||
/** method to send log output to */ | ||
log?: Log; | ||
/** the method that fetches the new source data, it should return a promise that resolves the result that will be cached */ | ||
retrieve: Retrieve<Result>; | ||
} | ||
export default class Cachely<Result> { | ||
duration: number | ||
log: Log | ||
retrieve: Retrieve<Result> | ||
data?: Result | ||
refresh: boolean | ||
lastRequested?: number | ||
lastRetrieval?: Promise<Result> | ||
lastUpdated: number | null | ||
/** Construct our Cachely class, setting the configuration from the options */ | ||
constructor(opts: CachelyOptions<Result>) | ||
/** Creates and returns new instance of the current class */ | ||
static create<Result>(opts: CachelyOptions<Result>): Cachely<Result> | ||
/** Determines whether or not the cache is still valid, by returning its current status */ | ||
protected validate(): Status | ||
/** Invalidates the current cache, so that it is retrieved again. | ||
duration: number; | ||
log: Log; | ||
retrieve: Retrieve<Result>; | ||
data?: Result; | ||
refresh: boolean; | ||
lastRequested?: number; | ||
lastRetrieval?: Promise<Result>; | ||
lastUpdated: number | null; | ||
/** Construct our Cachely class, setting the configuration from the options */ | ||
constructor(opts: CachelyOptions<Result>); | ||
/** Creates and returns new instance of the current class */ | ||
static create<Result>(opts: CachelyOptions<Result>): Cachely<Result>; | ||
/** Determines whether or not the cache is still valid, by returning its current status */ | ||
protected validate(): Status; | ||
/** Invalidates the current cache, so that it is retrieved again. | ||
Only applies to future resolution requets, does not cancel or modify active retrieval requests. */ | ||
invalidate(): this | ||
/** Resolve the cache, if it is valid use the cache's data, otherwise retrieve new data */ | ||
resolve(): Promise<Result> | ||
invalidate(): this; | ||
/** Resolve the cache, if it is valid use the cache's data, otherwise retrieve new data */ | ||
resolve(): Promise<Result>; | ||
} | ||
export {} | ||
//# sourceMappingURL=index.d.ts.map | ||
export {}; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -1,80 +0,79 @@ | ||
import oneday from 'oneday' | ||
import oneday from 'oneday'; | ||
export default class Cachely { | ||
/** Construct our Cachely class, setting the configuration from the options */ | ||
constructor(opts) { | ||
this.refresh = false | ||
this.lastUpdated = null | ||
if (!opts || typeof opts.retrieve !== 'function') { | ||
throw new Error( | ||
'Cachely requires a retrieve method to be specified that returns a promise' | ||
) | ||
} | ||
this.duration = opts.duration || oneday | ||
this.log = opts.log || function () {} | ||
this.retrieve = opts.retrieve | ||
} | ||
/** Creates and returns new instance of the current class */ | ||
static create(opts) { | ||
return new this(opts) | ||
} | ||
/** Determines whether or not the cache is still valid, by returning its current status */ | ||
validate() { | ||
const nowTime = new Date().getTime() | ||
// have we manually invalidated the cache? | ||
if (this.refresh) { | ||
this.refresh = false | ||
return 'invalid' | ||
} | ||
// have we fetched the data yet? | ||
else if (this.lastUpdated && this.lastRequested) { | ||
// yes we have, so let's check if it is still valid | ||
// if the current time, minus the cache duration, is than the last time we requested the data, then our cache is invalid | ||
return new Date(nowTime - this.duration).getTime() < this.lastRequested | ||
? 'valid' | ||
: 'invalid' | ||
} | ||
// are we doing the first fetch? | ||
else if (this.lastRequested) { | ||
return 'updating' | ||
} | ||
// have we done no fetch yet? | ||
else { | ||
return 'empty' | ||
} | ||
} | ||
/** Invalidates the current cache, so that it is retrieved again. | ||
/** Construct our Cachely class, setting the configuration from the options */ | ||
constructor(opts) { | ||
this.refresh = false; | ||
this.lastUpdated = null; | ||
if (!opts || typeof opts.retrieve !== 'function') { | ||
throw new Error('Cachely requires a retrieve method to be specified that returns a promise'); | ||
} | ||
this.duration = opts.duration || oneday; | ||
this.log = opts.log || function () { }; | ||
this.retrieve = opts.retrieve; | ||
} | ||
/** Creates and returns new instance of the current class */ | ||
static create(opts) { | ||
return new this(opts); | ||
} | ||
/** Determines whether or not the cache is still valid, by returning its current status */ | ||
validate() { | ||
const nowTime = new Date().getTime(); | ||
// have we manually invalidated the cache? | ||
if (this.refresh) { | ||
this.refresh = false; | ||
return 'invalid'; | ||
} | ||
// have we fetched the data yet? | ||
else if (this.lastUpdated && this.lastRequested) { | ||
// yes we have, so let's check if it is still valid | ||
// if the current time, minus the cache duration, is than the last time we requested the data, then our cache is invalid | ||
return new Date(nowTime - this.duration).getTime() < this.lastRequested | ||
? 'valid' | ||
: 'invalid'; | ||
} | ||
// are we doing the first fetch? | ||
else if (this.lastRequested) { | ||
return 'updating'; | ||
} | ||
// have we done no fetch yet? | ||
else { | ||
return 'empty'; | ||
} | ||
} | ||
/** Invalidates the current cache, so that it is retrieved again. | ||
Only applies to future resolution requets, does not cancel or modify active retrieval requests. */ | ||
invalidate() { | ||
this.refresh = true | ||
return this | ||
} | ||
/** Resolve the cache, if it is valid use the cache's data, otherwise retrieve new data */ | ||
async resolve() { | ||
const cache = this.validate() | ||
switch (cache) { | ||
case 'valid': | ||
this.log('debug', 'Cachely has resolved cached data') | ||
return this.data | ||
case 'invalid': | ||
case 'empty': | ||
this.log('debug', 'Cachely must resolve new data') | ||
this.lastRequested = new Date().getTime() | ||
this.lastUpdated = null | ||
this.lastRetrieval = Promise.resolve(this.retrieve()) | ||
try { | ||
this.data = await this.lastRetrieval | ||
this.lastUpdated = new Date().getTime() | ||
} catch (err) { | ||
this.log('debug', 'Cachely failed to resolve new data') | ||
return Promise.reject(err) | ||
} | ||
this.log('debug', 'Cachely has resolved the new data') | ||
return this.data | ||
case 'updating': | ||
this.log('debug', 'Cachely is waiting for the new data to resolve') | ||
return this.lastRetrieval | ||
default: | ||
return Promise.reject(new Error('Unknown cache state')) | ||
} | ||
} | ||
invalidate() { | ||
this.refresh = true; | ||
return this; | ||
} | ||
/** Resolve the cache, if it is valid use the cache's data, otherwise retrieve new data */ | ||
async resolve() { | ||
const cache = this.validate(); | ||
switch (cache) { | ||
case 'valid': | ||
this.log('debug', 'Cachely has resolved cached data'); | ||
return this.data; | ||
case 'invalid': | ||
case 'empty': | ||
this.log('debug', 'Cachely must resolve new data'); | ||
this.lastRequested = new Date().getTime(); | ||
this.lastUpdated = null; | ||
this.lastRetrieval = Promise.resolve(this.retrieve()); | ||
try { | ||
this.data = await this.lastRetrieval; | ||
this.lastUpdated = new Date().getTime(); | ||
} | ||
catch (err) { | ||
this.log('debug', 'Cachely failed to resolve new data'); | ||
return Promise.reject(err); | ||
} | ||
this.log('debug', 'Cachely has resolved the new data'); | ||
return this.data; | ||
case 'updating': | ||
this.log('debug', 'Cachely is waiting for the new data to resolve'); | ||
return this.lastRetrieval; | ||
default: | ||
return Promise.reject(new Error('Unknown cache state')); | ||
} | ||
} | ||
} |
@@ -1,2 +0,2 @@ | ||
import oneday from 'https://unpkg.com/oneday@^4.13.0/edition-deno/index.ts' | ||
import oneday from 'https://unpkg.com/oneday@^4.14.0/edition-deno/index.ts' | ||
@@ -3,0 +3,0 @@ type Log = (logLevel: string, ...args: any[]) => any |
# History | ||
## v5.21.0 2021 July 28 | ||
- Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) | ||
## v5.20.0 2020 October 29 | ||
@@ -4,0 +8,0 @@ |
@@ -18,3 +18,3 @@ <!-- LICENSEFILE/ --> | ||
The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. | ||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. | ||
@@ -21,0 +21,0 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
103
package.json
{ | ||
"name": "cachely", | ||
"version": "5.20.0", | ||
"version": "5.21.0-next.1627420488.3a607600e5709517323bb186807900b161df3a49", | ||
"description": "A tiny wrapper that sits around your request function that caches its data for a specified duration, provides updates as requested rather than polling each interval", | ||
@@ -11,7 +11,3 @@ "homepage": "https://github.com/bevry/cachely", | ||
"caching", | ||
"deno", | ||
"deno-edition", | ||
"deno-entry", | ||
"denoland", | ||
"esnext", | ||
"es2019", | ||
"export-default", | ||
@@ -27,3 +23,3 @@ "fetching", | ||
"list": [ | ||
"travisci", | ||
"githubworkflow", | ||
"npmversion", | ||
@@ -45,2 +41,3 @@ "npmdownloads", | ||
"config": { | ||
"githubWorkflow": "bevry", | ||
"githubSponsorsUsername": "balupton", | ||
@@ -55,3 +52,2 @@ "buymeacoffeeUsername": "balupton", | ||
"wishlistURL": "https://bevry.me/wishlist", | ||
"travisTLD": "com", | ||
"githubUsername": "bevry", | ||
@@ -94,3 +90,3 @@ "githubRepository": "cachely", | ||
{ | ||
"description": "TypeScript compiled against ES2019 for web browsers with Import for modules", | ||
"description": "TypeScript compiled against ES2020 for web browsers with Import for modules", | ||
"directory": "edition-browsers", | ||
@@ -109,4 +105,4 @@ "entry": "index.js", | ||
{ | ||
"description": "TypeScript compiled against ESNext for Node.js 10 || 12 || 14 || 15 with Require for modules", | ||
"directory": "edition-esnext", | ||
"description": "TypeScript compiled against ES2019 for Node.js 10 || 12 || 14 with Require for modules", | ||
"directory": "edition-es2019", | ||
"entry": "index.js", | ||
@@ -116,7 +112,7 @@ "tags": [ | ||
"javascript", | ||
"esnext", | ||
"es2019", | ||
"require" | ||
], | ||
"engines": { | ||
"node": "10 || 12 || 14 || 15", | ||
"node": "10 || 12 || 14", | ||
"browsers": false | ||
@@ -126,4 +122,4 @@ } | ||
{ | ||
"description": "TypeScript compiled against ESNext for Node.js 12 || 14 || 15 with Import for modules", | ||
"directory": "edition-esnext-esm", | ||
"description": "TypeScript compiled against ES2019 for Node.js 12 || 14 with Import for modules", | ||
"directory": "edition-es2019-esm", | ||
"entry": "index.js", | ||
@@ -133,23 +129,9 @@ "tags": [ | ||
"javascript", | ||
"esnext", | ||
"es2019", | ||
"import" | ||
], | ||
"engines": { | ||
"node": "12 || 14 || 15", | ||
"node": "12 || 14", | ||
"browsers": false | ||
} | ||
}, | ||
{ | ||
"description": "TypeScript source code made to be compatible with Deno", | ||
"directory": "edition-deno", | ||
"entry": "index.ts", | ||
"tags": [ | ||
"typescript", | ||
"import", | ||
"deno" | ||
], | ||
"engines": { | ||
"deno": true, | ||
"browsers": true | ||
} | ||
} | ||
@@ -159,7 +141,7 @@ ], | ||
"type": "module", | ||
"main": "edition-esnext/index.js", | ||
"main": "edition-es2019/index.js", | ||
"exports": { | ||
"node": { | ||
"import": "./edition-esnext-esm/index.js", | ||
"require": "./edition-esnext/index.js" | ||
"import": "./edition-es2019-esm/index.js", | ||
"require": "./edition-es2019/index.js" | ||
}, | ||
@@ -170,35 +152,34 @@ "browser": { | ||
}, | ||
"deno": "edition-deno/index.ts", | ||
"browser": "edition-browsers/index.js", | ||
"module": "edition-browsers/index.js", | ||
"dependencies": { | ||
"oneday": "^4.13.0" | ||
"oneday": "^4.14.0" | ||
}, | ||
"devDependencies": { | ||
"@bevry/update-contributors": "^1.17.0", | ||
"@typescript-eslint/eslint-plugin": "^4.6.0", | ||
"@typescript-eslint/parser": "^4.6.0", | ||
"assert-helpers": "^8.1.0", | ||
"eslint": "^7.12.1", | ||
"eslint-config-bevry": "^3.22.0", | ||
"eslint-config-prettier": "^6.15.0", | ||
"eslint-plugin-prettier": "^3.1.4", | ||
"kava": "^5.12.0", | ||
"make-deno-edition": "^1.2.0", | ||
"prettier": "^2.1.2", | ||
"projectz": "^2.16.0", | ||
"surge": "^0.21.6", | ||
"typechecker": "^7.16.0", | ||
"typedoc": "^0.19.2", | ||
"typescript": "^4.0.5", | ||
"valid-directory": "^3.4.0", | ||
"valid-module": "^1.14.0" | ||
"@bevry/update-contributors": "^1.18.0", | ||
"@typescript-eslint/eslint-plugin": "^4.28.5", | ||
"@typescript-eslint/parser": "^4.28.5", | ||
"assert-helpers": "^8.2.0", | ||
"eslint": "^7.31.0", | ||
"eslint-config-bevry": "^3.23.0", | ||
"eslint-config-prettier": "^8.3.0", | ||
"eslint-plugin-prettier": "^3.4.0", | ||
"kava": "^5.13.0", | ||
"make-deno-edition": "^1.3.0", | ||
"prettier": "^2.3.2", | ||
"projectz": "^2.18.0", | ||
"surge": "^0.23.0", | ||
"typechecker": "^7.17.0", | ||
"typedoc": "^0.21.4", | ||
"typescript": "4.3.5", | ||
"valid-directory": "^3.7.0", | ||
"valid-module": "^1.15.0" | ||
}, | ||
"scripts": { | ||
"our:clean": "rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next", | ||
"our:compile": "npm run our:compile:deno && npm run our:compile:edition-browsers && npm run our:compile:edition-esnext && npm run our:compile:edition-esnext-esm && npm run our:compile:types", | ||
"our:compile": "npm run our:compile:deno && npm run our:compile:edition-browsers && npm run our:compile:edition-es2019 && npm run our:compile:edition-es2019-esm && npm run our:compile:types", | ||
"our:compile:deno": "make-deno-edition --attempt", | ||
"our:compile:edition-browsers": "tsc --module ESNext --target ES2019 --outDir ./edition-browsers --project tsconfig.json && ( test ! -d edition-browsers/source || ( mv edition-browsers/source edition-temp && rm -Rf edition-browsers && mv edition-temp edition-browsers ) )", | ||
"our:compile:edition-esnext": "tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) ) && echo '{\"type\": \"commonjs\"}' > edition-esnext/package.json", | ||
"our:compile:edition-esnext-esm": "tsc --module ESNext --target ESNext --outDir ./edition-esnext-esm --project tsconfig.json && ( test ! -d edition-esnext-esm/source || ( mv edition-esnext-esm/source edition-temp && rm -Rf edition-esnext-esm && mv edition-temp edition-esnext-esm ) ) && echo '{\"type\": \"module\"}' > edition-esnext-esm/package.json", | ||
"our:compile:edition-browsers": "tsc --module ESNext --target ES2020 --outDir ./edition-browsers --project tsconfig.json && ( test ! -d edition-browsers/source || ( mv edition-browsers/source edition-temp && rm -Rf edition-browsers && mv edition-temp edition-browsers ) )", | ||
"our:compile:edition-es2019": "tsc --module commonjs --target ES2019 --outDir ./edition-es2019 --project tsconfig.json && ( test ! -d edition-es2019/source || ( mv edition-es2019/source edition-temp && rm -Rf edition-es2019 && mv edition-temp edition-es2019 ) ) && echo '{\"type\": \"commonjs\"}' > edition-es2019/package.json", | ||
"our:compile:edition-es2019-esm": "tsc --module ESNext --target ES2019 --outDir ./edition-es2019-esm --project tsconfig.json && ( test ! -d edition-es2019-esm/source || ( mv edition-es2019-esm/source edition-temp && rm -Rf edition-es2019-esm && mv edition-temp edition-es2019-esm ) ) && echo '{\"type\": \"module\"}' > edition-es2019-esm/package.json", | ||
"our:compile:types": "tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )", | ||
@@ -209,3 +190,3 @@ "our:deploy": "echo no need for this project", | ||
"our:meta:docs": "npm run our:meta:docs:typedoc", | ||
"our:meta:docs:typedoc": "rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source", | ||
"our:meta:docs:typedoc": "rm -Rf ./docs && typedoc --exclude '**/+(*test*|node_modules)' --excludeExternals --out ./docs ./source", | ||
"our:meta:projectz": "projectz compile", | ||
@@ -216,3 +197,3 @@ "our:release": "npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push", | ||
"our:release:prepare": "npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta", | ||
"our:release:push": "git push origin master && git push origin --tags", | ||
"our:release:push": "git push origin && git push origin --tags", | ||
"our:release:tag": "export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"", | ||
@@ -227,3 +208,3 @@ "our:setup": "npm run our:setup:install", | ||
"our:verify:prettier": "prettier --write .", | ||
"test": "node ./edition-esnext/test.js" | ||
"test": "node ./edition-es2019/test.js" | ||
}, | ||
@@ -230,0 +211,0 @@ "eslintConfig": { |
@@ -10,3 +10,3 @@ <!-- TITLE/ --> | ||
<span class="badge-travisci"><a href="http://travis-ci.com/bevry/cachely" title="Check this project's build status on TravisCI"><img src="https://img.shields.io/travis/com/bevry/cachely/master.svg" alt="Travis CI Build Status" /></a></span> | ||
<span class="badge-githubworkflow"><a href="https://github.com/bevry/cachely/actions?query=workflow%3Abevry" title="View the status of this project's GitHub Workflow: bevry"><img src="https://github.com/bevry/cachely/workflows/bevry/badge.svg" alt="Status of the GitHub Workflow: bevry" /></a></span> | ||
<span class="badge-npmversion"><a href="https://npmjs.org/package/cachely" title="View this project on NPM"><img src="https://img.shields.io/npm/v/cachely.svg" alt="NPM version" /></a></span> | ||
@@ -152,8 +152,2 @@ <span class="badge-npmdownloads"><a href="https://npmjs.org/package/cachely" title="View this project on NPM"><img src="https://img.shields.io/npm/dm/cachely.svg" alt="NPM downloads" /></a></span> | ||
<a href="https://deno.land" title="Deno is a secure runtime for JavaScript and TypeScript, it is an alternative for Node.js"><h3>Deno</h3></a> | ||
``` typescript | ||
import pkg from 'https://unpkg.com/cachely@^5.20.0/edition-deno/index.ts' | ||
``` | ||
<a href="https://www.skypack.dev" title="Skypack is a JavaScript Delivery Network for modern web apps"><h3>Skypack</h3></a> | ||
@@ -163,3 +157,3 @@ | ||
<script type="module"> | ||
import pkg from '//cdn.skypack.dev/cachely@^5.20.0' | ||
import pkg from '//cdn.skypack.dev/cachely@^5.21.0' | ||
</script> | ||
@@ -172,3 +166,3 @@ ``` | ||
<script type="module"> | ||
import pkg from '//unpkg.com/cachely@^5.20.0' | ||
import pkg from '//unpkg.com/cachely@^5.21.0' | ||
</script> | ||
@@ -181,3 +175,3 @@ ``` | ||
<script type="module"> | ||
import pkg from '//dev.jspm.io/cachely@5.20.0' | ||
import pkg from '//dev.jspm.io/cachely@5.21.0' | ||
</script> | ||
@@ -191,7 +185,6 @@ ``` | ||
<ul><li><code>cachely/source/index.ts</code> is <a href="https://www.typescriptlang.org/" title="TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. ">TypeScript</a> source code with <a href="https://babeljs.io/docs/learn-es2015/#modules" title="ECMAScript Modules">Import</a> for modules</li> | ||
<li><code>cachely/edition-browsers/index.js</code> is <a href="https://www.typescriptlang.org/" title="TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. ">TypeScript</a> compiled against <a href="https://en.wikipedia.org/wiki/ECMAScript#10th_Edition_-_ECMAScript_2019" title="ECMAScript ES2019">ES2019</a> for web browsers with <a href="https://babeljs.io/docs/learn-es2015/#modules" title="ECMAScript Modules">Import</a> for modules</li> | ||
<li><code>cachely</code> aliases <code>cachely/edition-esnext/index.js</code></li> | ||
<li><code>cachely/edition-esnext/index.js</code> is <a href="https://www.typescriptlang.org/" title="TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. ">TypeScript</a> compiled against <a href="https://en.wikipedia.org/wiki/ECMAScript#ES.Next" title="ECMAScript Next">ESNext</a> for <a href="https://nodejs.org" title="Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine">Node.js</a> 10 || 12 || 14 || 15 with <a href="https://nodejs.org/dist/latest-v5.x/docs/api/modules.html" title="Node/CJS Modules">Require</a> for modules</li> | ||
<li><code>cachely/edition-esnext-esm/index.js</code> is <a href="https://www.typescriptlang.org/" title="TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. ">TypeScript</a> compiled against <a href="https://en.wikipedia.org/wiki/ECMAScript#ES.Next" title="ECMAScript Next">ESNext</a> for <a href="https://nodejs.org" title="Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine">Node.js</a> 12 || 14 || 15 with <a href="https://babeljs.io/docs/learn-es2015/#modules" title="ECMAScript Modules">Import</a> for modules</li> | ||
<li><code>cachely/edition-deno/index.ts</code> is <a href="https://www.typescriptlang.org/" title="TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. ">TypeScript</a> source code made to be compatible with <a href="https://deno.land" title="Deno is a secure runtime for JavaScript and TypeScript, it is an alternative to Node.js">Deno</a></li></ul> | ||
<li><code>cachely/edition-browsers/index.js</code> is <a href="https://www.typescriptlang.org/" title="TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. ">TypeScript</a> compiled against <a href="https://en.wikipedia.org/wiki/ECMAScript#11th_Edition_–_ECMAScript_2020" title="ECMAScript ES2020">ES2020</a> for web browsers with <a href="https://babeljs.io/docs/learn-es2015/#modules" title="ECMAScript Modules">Import</a> for modules</li> | ||
<li><code>cachely</code> aliases <code>cachely/edition-es2019/index.js</code></li> | ||
<li><code>cachely/edition-es2019/index.js</code> is <a href="https://www.typescriptlang.org/" title="TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. ">TypeScript</a> compiled against <a href="https://en.wikipedia.org/wiki/ECMAScript#10th_Edition_-_ECMAScript_2019" title="ECMAScript ES2019">ES2019</a> for <a href="https://nodejs.org" title="Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine">Node.js</a> 10 || 12 || 14 with <a href="https://nodejs.org/dist/latest-v5.x/docs/api/modules.html" title="Node/CJS Modules">Require</a> for modules</li> | ||
<li><code>cachely/edition-es2019-esm/index.js</code> is <a href="https://www.typescriptlang.org/" title="TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. ">TypeScript</a> compiled against <a href="https://en.wikipedia.org/wiki/ECMAScript#10th_Edition_-_ECMAScript_2019" title="ECMAScript ES2019">ES2019</a> for <a href="https://nodejs.org" title="Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine">Node.js</a> 12 || 14 with <a href="https://babeljs.io/docs/learn-es2015/#modules" title="ECMAScript Modules">Import</a> for modules</li></ul> | ||
@@ -198,0 +191,0 @@ <!-- /INSTALL --> |
@@ -9,4 +9,3 @@ { | ||
"strict": true, | ||
"target": "ESNext", | ||
"lib": ["ESNext"], | ||
"target": "ES2019", | ||
"module": "ESNext" | ||
@@ -13,0 +12,0 @@ }, |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
49554
14
483
1
254
1
Updatedoneday@^4.14.0