diff --git a/.npmignore b/.npmignore deleted file mode 100644 index f614ce4..0000000 --- a/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -benchmark/ -img/ -test/ -.travis.yml diff --git a/package-lock.json b/package-lock.json index efca6fb..049c234 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,22 +4,6 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "Base64": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz", - "integrity": "sha1-ujpCMHCOGGcFBl5mur3Uw1z2ACg=", - "dev": true - }, - "JSONStream": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", - "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", - "dev": true, - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, "abab": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz", @@ -83,13 +67,15 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true + "dev": true, + "requires": {} }, "align-text": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -457,6 +443,12 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, + "Base64": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz", + "integrity": "sha1-ujpCMHCOGGcFBl5mur3Uw1z2ACg=", + "dev": true + }, "base64-js": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", @@ -531,9 +523,9 @@ "integrity": "sha1-QZdxmyDG4KqglFHFER5T77b7wY0=", "dev": true, "requires": { - "JSONStream": "^1.0.3", "combine-source-map": "~0.6.1", "defined": "^1.0.0", + "JSONStream": "^1.0.3", "through2": "^1.0.0", "umd": "^3.0.0" } @@ -561,7 +553,6 @@ "integrity": "sha1-3L/veU9Uj1+EmCFIFPaXpcUMCJY=", "dev": true, "requires": { - "JSONStream": "^1.0.3", "assert": "~1.3.0", "browser-pack": "^5.0.0", "browser-resolve": "^1.7.1", @@ -586,6 +577,7 @@ "inherits": "~2.0.1", "insert-module-globals": "^6.4.1", "isarray": "0.0.1", + "JSONStream": "^1.0.3", "labeled-stream-splicer": "^1.0.0", "module-deps": "^3.7.11", "os-browserify": "~0.1.1", @@ -1694,13 +1686,15 @@ "version": "10.2.1", "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=", - "dev": true + "dev": true, + "requires": {} }, "eslint-config-standard-jsx": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.1.tgz", "integrity": "sha1-zU5GPQJo4tnnB/YfQvc/WzMzxkI=", - "dev": true + "dev": true, + "requires": {} }, "eslint-import-resolver-node": { "version": "0.2.3", @@ -1853,7 +1847,8 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=", - "dev": true + "dev": true, + "requires": {} }, "espree": { "version": "3.4.3", @@ -2461,12 +2456,6 @@ "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", "dev": true }, - "iMemoized": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/iMemoized/-/iMemoized-0.0.10.tgz", - "integrity": "sha1-HKdM+lT/WRg2lTPAKNWpJV8qhbE=", - "dev": true - }, "iconv-lite": { "version": "0.4.13", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", @@ -2485,6 +2474,12 @@ "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=", "dev": true }, + "iMemoized": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/iMemoized/-/iMemoized-0.0.10.tgz", + "integrity": "sha1-HKdM+lT/WRg2lTPAKNWpJV8qhbE=", + "dev": true + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -2549,10 +2544,10 @@ "integrity": "sha1-IGOOKaMPntHKLjqCX7wsulJG3fw=", "dev": true, "requires": { - "JSONStream": "^1.0.3", "combine-source-map": "~0.6.1", "concat-stream": "~1.4.1", "is-buffer": "^1.1.0", + "JSONStream": "^1.0.3", "lexical-scope": "^1.2.0", "process": "~0.11.0", "through2": "^1.0.0", @@ -3565,6 +3560,16 @@ "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", "dev": true }, + "JSONStream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", + "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, "jsprim": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", @@ -3731,7 +3736,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true + "dev": true, + "optional": true }, "loose-envify": { "version": "1.3.1", @@ -3894,13 +3900,13 @@ "integrity": "sha1-6nXK+RmQkNJbDVUStaysuW5/h/M=", "dev": true, "requires": { - "JSONStream": "^1.0.3", "browser-resolve": "^1.7.0", "concat-stream": "~1.4.5", "defined": "^1.0.0", "detective": "^4.0.0", "duplexer2": "0.0.2", "inherits": "^2.0.1", + "JSONStream": "^1.0.3", "parents": "^1.0.0", "readable-stream": "^1.1.13", "resolve": "^1.1.3", @@ -5084,6 +5090,12 @@ "through2": "^1.0.0" } }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, "string-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", @@ -5104,12 +5116,6 @@ "strip-ansi": "^3.0.0" } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", @@ -5334,6 +5340,12 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, + "typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true + }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", diff --git a/package.json b/package.json index 108f0aa..1f81f99 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "test": "jest", "test:all": "npm run lint && npm run test:typescript && npm run test", "test:coverage": "covert test/*.js", - "test:typescript": "cd ./typings/tests && npm install-test" + "test:typescript": "tsc -P typings" }, "files": [ "README.md", @@ -54,6 +54,7 @@ "ora": "^0.3.0", "ramda": "^0.22.1", "standard": "^10.0.2", + "typescript": "^4.9.5", "underscore": "^1.8.3" }, "jest": { diff --git a/typings/fast-memoize.d.ts b/typings/fast-memoize.d.ts index c782e59..72bfb1d 100644 --- a/typings/fast-memoize.d.ts +++ b/typings/fast-memoize.d.ts @@ -1,9 +1,5 @@ type Func = (...args: any[]) => any; -export interface Cache { - create: CacheCreateFunc -} - interface CacheCreateFunc { (): { get(key: K): V; @@ -12,25 +8,29 @@ interface CacheCreateFunc { } } -export type Serializer = (args: any[]) => string; +declare namespace memoize { + interface Cache { + create: CacheCreateFunc + } -export interface Options { - cache?: Cache>; - serializer?: Serializer; - strategy?: MemoizeFunc; -} + type Serializer = (args: any[]) => string; -export interface MemoizeFunc { - (fn: F, options?: Options): F; -} + interface Options { + cache?: Cache>; + serializer?: Serializer; + strategy?: MemoizeFunc; + } + + interface MemoizeFunc { + (fn: F, options?: Options): F; + } -interface Memoize extends MemoizeFunc { - strategies: { + const strategies: { variadic: MemoizeFunc; monadic: MemoizeFunc; - }; + } } -declare const memoize: Memoize; +declare function memoize(fn: F, options?: memoize.Options): F; -export default memoize; +export = memoize; diff --git a/typings/tests/fast-memoize.test.ts b/typings/fast-memoize.test.ts similarity index 78% rename from typings/tests/fast-memoize.test.ts rename to typings/fast-memoize.test.ts index db92749..39d51d5 100644 --- a/typings/tests/fast-memoize.test.ts +++ b/typings/fast-memoize.test.ts @@ -1,10 +1,10 @@ -import memoize, { Options, Cache, Serializer } from "fast-memoize"; +import memoize = require("fast-memoize"); function add(a: number, b: number): number { return a + b; } -const cache: Cache = { +const cache: memoize.Cache = { create: () => { const storage = new Map(); return { @@ -29,9 +29,9 @@ const cache: Cache = { }; -const serializer: Serializer = (args: any[]) => args.join("-"); +const serializer: memoize.Serializer = (args: any[]) => args.join("-"); -const options: Options = { +const options: memoize.Options = { cache, serializer, strategy: memoize.strategies.variadic diff --git a/typings/tests/.gitignore b/typings/tests/.gitignore deleted file mode 100644 index d1234f1..0000000 --- a/typings/tests/.gitignore +++ /dev/null @@ -1 +0,0 @@ -fast-memoize-*.tgz \ No newline at end of file diff --git a/typings/tests/package-lock.json b/typings/tests/package-lock.json deleted file mode 100644 index efdfea8..0000000 --- a/typings/tests/package-lock.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "fast-memoize-typescript-tests", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "typescript": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.1.tgz", - "integrity": "sha512-h6pM2f/GDchCFlldnriOhs1QHuwbnmj6/v7499eMHqPeW4V2G0elua2eIc2nu8v2NdHV0Gm+tzX83Hr6nUFjQA==" - } - } -} diff --git a/typings/tests/package.json b/typings/tests/package.json deleted file mode 100644 index cf989b0..0000000 --- a/typings/tests/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "fast-memoize-typescript-tests", - "version": "1.0.0", - "description": "Test publishing the typings of fast-memoize package", - "main": "fast-memoize.test.js", - "scripts": { - "preinstall": "rm -rf ./fast-memoize-*.tgz ./node_modules/", - "pack-parent-package-get-filename": "npm pack ../.. | grep \\.tgz", - "postinstall": "npm install --no-save `npm run -s pack-parent-package-get-filename`", - "test": "tsc --listFiles --project .", - "posttest": "echo 'TypeScript typings successfuly compiled!'" - }, - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/caiogondim/fast-memoize.js.git" - }, - "author": "Nick Ribal (https://about.me/nickribal)", - "license": "MIT", - "bugs": { - "url": "https://github.com/caiogondim/fast-memoize.js/issues" - }, - "homepage": "https://github.com/caiogondim/fast-memoize.js#readme", - "dependencies": { - "typescript": "^2.9.1" - } -} diff --git a/typings/tests/tsconfig.json b/typings/tsconfig.json similarity index 65% rename from typings/tests/tsconfig.json rename to typings/tsconfig.json index 83b9ac8..d9ed11e 100644 --- a/typings/tests/tsconfig.json +++ b/typings/tsconfig.json @@ -1,14 +1,16 @@ { "compilerOptions": { "target": "es6", - "module": "es2015", + "module": "commonjs", "noEmit": true, - "jsx": "react", "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, "noImplicitReturns": true, "noFallthroughCasesInSwitch": true, - "moduleResolution": "node" + "moduleResolution": "node", + "paths": { + "fast-memoize": ["./fast-memoize"] + } } }