Skip to content
This repository was archived by the owner on Dec 15, 2023. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7,493 changes: 6,850 additions & 643 deletions baselines/module-fs.d.ts

Large diffs are not rendered by default.

96 changes: 86 additions & 10 deletions baselines/module-yargs.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,34 +7,80 @@ declare namespace yargs {

const argv: {
$0: string;
r: string;
};

const parsed: boolean;
const parsed: {
aliases: {
help: any[];
version: any[];
};
argv: {
$0: string;
r: string;
};
configuration: {
"boolean-negation": boolean;
"camel-case-expansion": boolean;
"combine-arrays": boolean;
"dot-notation": boolean;
"duplicate-arguments-array": boolean;
"flatten-duplicate-arrays": boolean;
"greedy-arrays": boolean;
"halt-at-non-option": boolean;
"nargs-eats-options": boolean;
"negation-prefix": string;
"parse-numbers": boolean;
"populate--": boolean;
"set-placeholder-key": boolean;
"short-option-groups": boolean;
"strip-aliased": boolean;
"strip-dashed": boolean;
"unknown-options-as-args": boolean;
};
defaulted: {
};
error: any;
newAliases: {
};
};

function addHelpOpt(p0: any, p1: any): any;

function addShowHiddenOpt(p0: any, p1: any): any;

function alias(p0: any, p1: any): any;

function array(p0: any): any;

function check(p0: any): any;
function check(p0: any, p1: any): any;

function choices(p0: any, p1: any): any;

function command(p0: any, p1: any, p2: any, p3: any): any;
function coerce(p0: any, p1: any): any;

function command(p0: any, p1: any, p2: any, p3: any, p4: any): any;

function commandDir(p0: any, p1: any): any;

function completion(p0: any, p1: any, p2: any): any;

function config(p0: any, p1: any, p2: any): any;

function conflicts(p0: any, p1: any): any;

function count(p0: any): any;

function defaults(p0: any, p1: any, p2: any): any;

function demand(p0: any, p1: any, p2: any): any;

function demandCommand(p0: any, p1: any, p2: any, p3: any): any;

function demandOption(p0: any, p1: any): any;

function deprecateOption(p0: any, p1: any): any;

function describe(p0: any, p1: any): any;

function detectLocale(p0: any): any;
Expand All @@ -47,6 +93,8 @@ declare namespace yargs {

function example(p0: any, p1: any): any;

function exit(p0: any, p1: any): any;

function exitProcess(p0: any): any;

function fail(p0: any): any;
Expand All @@ -57,65 +105,93 @@ declare namespace yargs {

function getContext(): any;

function getDemanded(): any;
function getDemandedCommands(): any;

function getDemandedOptions(): any;

function getDeprecatedOptions(): any;

function getDetectLocale(): any;

function getExitProcess(): any;

function getGroups(): any;

function getHandlerFinishCommand(): any;

function getOptions(): any;

function getParserConfiguration(): any;

function getStrict(): any;

function getStrictCommands(): any;

function getUsageInstance(): any;

function getValidationInstance(): any;

function global(p0: any): any;
function global(p0: any, p1: any): any;

function group(p0: any, p1: any): any;

function help(p0: any, p1: any): any;

function hide(p0: any): any;

function implies(p0: any, p1: any): any;

function locale(p0: any): any;

function middleware(p0: any): any;

function nargs(p0: any, p1: any): any;

function normalize(p0: any): any;

function number(p0: any): any;

function onFinishCommand(p0: any): any;

function option(p0: any, p1: any): any;

function options(p0: any, p1: any): any;

function parse(p0: any, p1: any): any;
function parse(p0: any, p1: any, p2: any): any;

function parserConfiguration(p0: any): any;

function pkgConf(p0: any, p1: any): any;

function positional(p0: any, p1: any): any;

function recommendCommands(p0: any): any;

function require(p0: any, p1: any, p2: any): any;

function required(p0: any, p1: any, p2: any): any;

function requiresArg(p0: any): any;
function requiresArg(p0: any, p1: any): any;

function reset(p0: any): any;

function resetOptions(p0: any): any;

function showCompletionScript(p0: any): any;
function scriptName(p0: any): any;

function showCompletionScript(p0: any, p1: any): any;

function showHelp(p0: any): any;

function showHelpOnFail(p0: any, p1: any): any;

function showHidden(p0: any, p1: any): any;

function skipValidation(p0: any): any;

function strict(): any;
function strict(p0: any): any;

function strictCommands(p0: any): any;

function string(p0: any): any;

Expand All @@ -125,7 +201,7 @@ declare namespace yargs {

function updateStrings(p0: any): any;

function usage(p0: any, p1: any): any;
function usage(p0: any, p1: any, p2: any, p3: any): any;

function version(p0: any, p1: any, p2: any): any;

Expand Down
60 changes: 16 additions & 44 deletions docs/browser-bundle.js

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions lib/definitely-typed.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ import { homedir } from 'os';
import parseGitConfig = require('parse-git-config');
import { join as joinPaths } from "path";
import { format as formatUrl, parse as parseUrl } from 'url';
import { getDTName } from './names';
import { escapeModuleName } from './names';

export default function writeDefinitelyTypedPackage(
indexDtsContent: string, packageName: string, overwrite: boolean): void {
const dtName = getDTName(packageName);
const dtName = escapeModuleName(packageName);
const packageDir = joinPaths("types", dtName);

// Check for overwrite
Expand Down
9 changes: 4 additions & 5 deletions lib/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as dom from 'dts-dom';
import { create, reservedWords } from 'dts-dom';
import { getDTName } from './names';
import { escapeModuleName } from './names';
import * as ts from 'typescript';

const enum ValueTypes {
Expand All @@ -22,7 +22,7 @@ const builtins: { [name: string]: (new (...args: any[]) => any) | undefined } =

function forceAsIdentifier(s: string): string {
// TODO: Make this more comprehensive
return getDTName(s.replace(/-/g, '_'));
return escapeModuleName(s.replace(/-/g, '_'));
}

function getValueTypes(value: any): ValueTypes {
Expand Down Expand Up @@ -370,11 +370,10 @@ function inferParameterType(_fn: ts.FunctionExpression, _param: ts.ParameterDecl

function parseFunctionBody(fn: any): ts.FunctionExpression {
const setup = `const myFn = ${fn.toString()};`;
const srcFile = ts.createSourceFile('test.ts', setup, ts.ScriptTarget.Latest, true);
const srcFile = ts.createSourceFile('', setup, ts.ScriptTarget.Latest, true);
const statement = srcFile.statements[0] as ts.VariableStatement;
const decl = statement.declarationList.declarations[0];
const init = decl.initializer as ts.FunctionExpression;
return init;
return decl.initializer as ts.FunctionExpression;
}

function isNativeFunction(fn: any) {
Expand Down
2 changes: 1 addition & 1 deletion lib/names.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export function getDTName(s: string) {
export function escapeModuleName(s: string) {
if (s.indexOf('@') === 0 && s.indexOf('/') !== -1) {
// we have a scoped module, e.g. @bla/foo
// which should be converted to bla__foo
Expand Down
3 changes: 2 additions & 1 deletion lib/run.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import * as yargs from 'yargs';

import * as guess from './';
import writeDefinitelyTypedPackage from './definitely-typed';
import { escapeModuleName } from "./names";

const templatesDirectory = path.join(__dirname, "..", "..", "templates");

Expand Down Expand Up @@ -105,7 +106,7 @@ try {
console.log(result);
} else {
let filename =
typeof args.file === 'boolean' || args.file === undefined ? name + '.d.ts' : args.file;
typeof args.file === 'boolean' || args.file === undefined ? escapeModuleName(name) + '.d.ts' : args.file;
if (!filename.endsWith('.d.ts')) {
filename = filename + '.d.ts';
}
Expand Down
15 changes: 9 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,27 +10,30 @@
"dts-dom": "latest",
"parse-git-config": "^1.1.1",
"typescript": "^3.5.1",
"yargs": "^4.8.1"
"yargs": "^15.3.1"
},
"devDependencies": {
"@types/chai": "^4.2.11",
"@types/mocha": "latest",
"@types/node": "latest",
"@types/parse-git-config": "^1.1.0",
"@types/yargs": "latest",
"ecurve": "1.0.5",
"@types/yargs": "^15.0.4",
"chai": "^4.2.0",
"ecurve": "1.0.6",
"jquery": "latest",
"lodash": "latest",
"mocha": "^3.0.2",
"mocha": "^7.1.2",
"react": "latest",
"tslint": "^5.1.0",
"webpack": "^1.13.1"
"webpack": "^4.43.0",
"webpack-cli": "^3.3.11"
},
"keywords": [
"typescript"
],
"preferGlobal": true,
"scripts": {
"test": "mocha bin/tests/test.js",
"test": "ts-mocha tests/*.spec.ts",
"build": "tsc",
"build-browser": "tsc -p browser && webpack",
"lint": "tslint --project tsconfig.json --format stylish"
Expand Down
12 changes: 12 additions & 0 deletions tests/fileNames.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { escapeModuleName } from "../lib/names";
import { expect } from "chai";

const testModuleNames = ["@vue/devtools", "@test/legal_package_name", "also.legal", "still-legal"];
const expectedNames = ["vue__devtools", "test__legal_package_name", "also.legal", "still-legal"];

describe("Module names", () => {
it("Escapes scoped modules", () => {
const result = testModuleNames.map(escapeModuleName);
expect(result).to.deep.equal(expectedNames);
});
});
2 changes: 1 addition & 1 deletion tests/test.ts → tests/generator.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ const expressions: { [s: string]: any } = {
};

function checkDeclarationBaseline(name: string, content: string) {
const filename = path.join(__dirname, `../../baselines/${name}`);
const filename = path.join(__dirname, `../baselines/${name}`);
const existing = fs.existsSync(filename) ? fs.readFileSync(filename, 'utf-8') : '<none>';
if (existing !== content) {
fs.writeFileSync(filename, content, 'utf-8');
Expand Down
3 changes: 1 addition & 2 deletions tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"include": [
"lib",
"tests"
"lib"
],
"compilerOptions": {
"lib": [
Expand Down
30 changes: 12 additions & 18 deletions webpack.config.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,13 @@
const webpack = require('webpack');
const path = require('path');
const webpack = require("webpack");

module.exports = {
entry: './bin/browser/browser.js',
output: {
path: './docs',
filename: 'browser-bundle.js'
},
plugins: [
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false,
},
output: {
comments: false,
},
}),
]
};
module.exports = {
entry: "./bin/browser/browser.js",
output: {
path: path.join(__dirname, "docs"),
filename: "browser-bundle.js",
},
optimization: {
minimize: true,
},
};