diff --git a/types/legal-eagle/index.d.ts b/types/legal-eagle/index.d.ts new file mode 100644 index 0000000000..36603efdee --- /dev/null +++ b/types/legal-eagle/index.d.ts @@ -0,0 +1,28 @@ +// Type definitions for legal-eagle 0.15 +// Project: https://github.com/atom/legal-eagle +// Definitions by: Jed Fox +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +declare function legalEagle( + options: legalEagle.Options, + cb: (err: Error | null, licenseSummary: legalEagle.LicenseLookup) => void +): void; + +declare namespace legalEagle { + interface Options { + path: string; + overrides?: LicenseLookup; + omitPermissive?: boolean; + } + interface LicenseLookup { + [id: string]: Entry; + } + interface Entry { + license: string; + source: string; + repository: string; + sourceText: string; + } +} + +export = legalEagle; diff --git a/types/legal-eagle/legal-eagle-tests.ts b/types/legal-eagle/legal-eagle-tests.ts new file mode 100644 index 0000000000..59622c4254 --- /dev/null +++ b/types/legal-eagle/legal-eagle-tests.ts @@ -0,0 +1,44 @@ +/// + +import legalEagle = require('legal-eagle'); + +// from the package's README +legalEagle({path: process.cwd()}, (err, summary) => { + if (err != null) { + console.error(err); + return; + } + console.log(summary); +}); + +// from GitHub desktop +declare var appRoot: string; +legalEagle( + { + path: appRoot, + overrides: { + 'foo@1.2.3': { + repository: 'git+ssh://git@github.com/foo/bar', + license: '...', + source: '...', + sourceText: '...', + } + }, + omitPermissive: true + }, (err, summary) => { + if (err) { + console.error(err); + return; + } + + if (Object.keys(summary).length > 0) { + let licensesMessage = ''; + for (const key in summary) { + const license = summary[key]; + licensesMessage += `${key} (${license.repository}): ${license.license}\n`; + } + + throw new Error(licensesMessage); + } + } +); diff --git a/types/legal-eagle/tsconfig.json b/types/legal-eagle/tsconfig.json new file mode 100644 index 0000000000..380eaaed72 --- /dev/null +++ b/types/legal-eagle/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "legal-eagle-tests.ts" + ] +} diff --git a/types/legal-eagle/tslint.json b/types/legal-eagle/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/legal-eagle/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }