Move monorepo_scripts into src dir removing the need for a separate globals.d.ts and tsconfig files
This commit is contained in:
		
							
								
								
									
										12
									
								
								packages/0x.js/monorepo_scripts/globals.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								packages/0x.js/monorepo_scripts/globals.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -1,12 +0,0 @@
 | 
				
			|||||||
declare module 'async-child-process';
 | 
					 | 
				
			||||||
declare module 'publish-release';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// semver-sort declarations
 | 
					 | 
				
			||||||
declare module 'semver-sort' {
 | 
					 | 
				
			||||||
    const desc: (versions: string[]) => string[];
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
declare module '*.json' {
 | 
					 | 
				
			||||||
    const value: any;
 | 
					 | 
				
			||||||
    export default value;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -14,7 +14,7 @@
 | 
				
			|||||||
    "scripts": {
 | 
					    "scripts": {
 | 
				
			||||||
        "build:watch": "tsc -w",
 | 
					        "build:watch": "tsc -w",
 | 
				
			||||||
        "prebuild": "run-s clean generate_contract_wrappers",
 | 
					        "prebuild": "run-s clean generate_contract_wrappers",
 | 
				
			||||||
        "build": "run-p build:scripts build:umd:prod build:commonjs; exit 0;",
 | 
					        "build": "run-p build:umd:prod build:commonjs; exit 0;",
 | 
				
			||||||
        "docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --json $JSON_FILE_PATH $PROJECT_FILES",
 | 
					        "docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --json $JSON_FILE_PATH $PROJECT_FILES",
 | 
				
			||||||
        "upload_docs_json": "aws s3 cp generated_docs/index.json $S3_URL --profile 0xproject --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers --content-type application/json",
 | 
					        "upload_docs_json": "aws s3 cp generated_docs/index.json $S3_URL --profile 0xproject --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers --content-type application/json",
 | 
				
			||||||
        "generate_contract_wrappers": "node ../abi-gen/lib/index.js --abis 'src/artifacts/@(Exchange|Token|TokenTransferProxy|EtherToken|TokenRegistry|DummyToken).json' --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output src/contract_wrappers/generated --backend ethers && prettier --write 'src/contract_wrappers/generated/**.ts'",
 | 
					        "generate_contract_wrappers": "node ../abi-gen/lib/index.js --abis 'src/artifacts/@(Exchange|Token|TokenTransferProxy|EtherToken|TokenRegistry|DummyToken).json' --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output src/contract_wrappers/generated --backend ethers && prettier --write 'src/contract_wrappers/generated/**.ts'",
 | 
				
			||||||
@@ -26,8 +26,7 @@
 | 
				
			|||||||
        "update_contracts": "for i in ${npm_package_config_artifacts}; do copyfiles -u 4 ../contracts/build/contracts/$i.json ../0x.js/src/artifacts; done;",
 | 
					        "update_contracts": "for i in ${npm_package_config_artifacts}; do copyfiles -u 4 ../contracts/build/contracts/$i.json ../0x.js/src/artifacts; done;",
 | 
				
			||||||
        "clean": "shx rm -rf _bundles lib test_temp",
 | 
					        "clean": "shx rm -rf _bundles lib test_temp",
 | 
				
			||||||
        "build:umd:prod": "NODE_ENV=production webpack",
 | 
					        "build:umd:prod": "NODE_ENV=production webpack",
 | 
				
			||||||
        "build:commonjs": "tsc && copyfiles -u 2 './src/artifacts/**/*.json' ./lib/src/artifacts;",
 | 
					        "build:commonjs": "tsc && copyfiles -u 2 './src/artifacts/**/*.json' ./lib/src/artifacts && copyfiles -u 3 './lib/src/monorepo_scripts/**/*' ./scripts",
 | 
				
			||||||
        "build:scripts": "tsc --p ./tsconfig_monorepo.json",
 | 
					 | 
				
			||||||
        "test:commonjs": "run-s build:commonjs run_mocha",
 | 
					        "test:commonjs": "run-s build:commonjs run_mocha",
 | 
				
			||||||
        "run_mocha": "mocha lib/test/**/*_test.js --timeout 10000 --bail --exit"
 | 
					        "run_mocha": "mocha lib/test/**/*_test.js --timeout 10000 --bail --exit"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,47 +0,0 @@
 | 
				
			|||||||
const execAsync = require('async-child-process').execAsync;
 | 
					 | 
				
			||||||
const postpublish_utils = require('../../../scripts/postpublish_utils');
 | 
					 | 
				
			||||||
const packageJSON = require('../package.json');
 | 
					 | 
				
			||||||
const tsConfig = require('../tsconfig.json');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const cwd = __dirname + '/..';
 | 
					 | 
				
			||||||
const subPackageName = packageJSON.name;
 | 
					 | 
				
			||||||
// Include any external packages that are part of the 0x.js public interface
 | 
					 | 
				
			||||||
// to this array so that TypeDoc picks it up and adds it to the Docs JSON
 | 
					 | 
				
			||||||
// So far, we only have @0xproject/types as part of 0x.js's public interface.
 | 
					 | 
				
			||||||
const fileIncludes = [...tsConfig.include, '../types/src/index.ts'];
 | 
					 | 
				
			||||||
const fileIncludesAdjusted = postpublish_utils.adjustFileIncludePaths(fileIncludes, __dirname);
 | 
					 | 
				
			||||||
const projectFiles = fileIncludesAdjusted.join(' ');
 | 
					 | 
				
			||||||
const S3BucketPath = 's3://0xjs-docs-jsons/';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
let tag;
 | 
					 | 
				
			||||||
let version;
 | 
					 | 
				
			||||||
postpublish_utils
 | 
					 | 
				
			||||||
    .getLatestTagAndVersionAsync(subPackageName)
 | 
					 | 
				
			||||||
    .then(function(result) {
 | 
					 | 
				
			||||||
        tag = result.tag;
 | 
					 | 
				
			||||||
        version = result.version;
 | 
					 | 
				
			||||||
        const releaseName = postpublish_utils.getReleaseName(subPackageName, version);
 | 
					 | 
				
			||||||
        const assets = [__dirname + '/../_bundles/index.js', __dirname + '/../_bundles/index.min.js'];
 | 
					 | 
				
			||||||
        return postpublish_utils.publishReleaseNotesAsync(tag, releaseName, assets);
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
    .then(function(release) {
 | 
					 | 
				
			||||||
        console.log('POSTPUBLISH: Release successful, generating docs...');
 | 
					 | 
				
			||||||
        const jsonFilePath = __dirname + '/../' + postpublish_utils.generatedDocsDirectoryName + '/index.json';
 | 
					 | 
				
			||||||
        return execAsync('JSON_FILE_PATH=' + jsonFilePath + ' PROJECT_FILES="' + projectFiles + '" yarn docs:json', {
 | 
					 | 
				
			||||||
            cwd,
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
    .then(function(result) {
 | 
					 | 
				
			||||||
        if (result.stderr !== '') {
 | 
					 | 
				
			||||||
            throw new Error(result.stderr);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        const fileName = 'v' + version + '.json';
 | 
					 | 
				
			||||||
        console.log('POSTPUBLISH: Doc generation successful, uploading docs... as ', fileName);
 | 
					 | 
				
			||||||
        const s3Url = S3BucketPath + fileName;
 | 
					 | 
				
			||||||
        return execAsync('S3_URL=' + s3Url + ' yarn upload_docs_json', {
 | 
					 | 
				
			||||||
            cwd,
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
    .catch(function(err) {
 | 
					 | 
				
			||||||
        throw err;
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
@@ -1,31 +0,0 @@
 | 
				
			|||||||
const execAsync = require('async-child-process').execAsync;
 | 
					 | 
				
			||||||
const postpublish_utils = require('../../../scripts/postpublish_utils');
 | 
					 | 
				
			||||||
const tsConfig = require('../tsconfig.json');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const cwd = __dirname + '/..';
 | 
					 | 
				
			||||||
const S3BucketPath = 's3://staging-0xjs-docs-jsons/';
 | 
					 | 
				
			||||||
// Include any external packages that are part of the 0x.js public interface
 | 
					 | 
				
			||||||
// to this array so that TypeDoc picks it up and adds it to the Docs JSON
 | 
					 | 
				
			||||||
// So far, we only have @0xproject/types as part of 0x.js's public interface.
 | 
					 | 
				
			||||||
const fileIncludes = [...tsConfig.include, '../types/src/index.ts'];
 | 
					 | 
				
			||||||
const fileIncludesAdjusted = postpublish_utils.adjustFileIncludePaths(fileIncludes, __dirname);
 | 
					 | 
				
			||||||
const projectFiles = fileIncludesAdjusted.join(' ');
 | 
					 | 
				
			||||||
const jsonFilePath = __dirname + '/../' + postpublish_utils.generatedDocsDirectoryName + '/index.json';
 | 
					 | 
				
			||||||
const version = process.env.DOCS_VERSION;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
execAsync('JSON_FILE_PATH=' + jsonFilePath + ' PROJECT_FILES="' + projectFiles + '" yarn docs:json', {
 | 
					 | 
				
			||||||
    cwd,
 | 
					 | 
				
			||||||
})
 | 
					 | 
				
			||||||
    .then(function(result) {
 | 
					 | 
				
			||||||
        if (result.stderr !== '') {
 | 
					 | 
				
			||||||
            throw new Error(result.stderr);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        const fileName = 'v' + version + '.json';
 | 
					 | 
				
			||||||
        const s3Url = S3BucketPath + fileName;
 | 
					 | 
				
			||||||
        return execAsync('S3_URL=' + s3Url + ' yarn upload_docs_json', {
 | 
					 | 
				
			||||||
            cwd,
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
    .catch(function(err) {
 | 
					 | 
				
			||||||
        console.log(err);
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
							
								
								
									
										7
									
								
								packages/0x.js/src/globals.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								packages/0x.js/src/globals.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -4,6 +4,13 @@ declare module 'dirty-chai';
 | 
				
			|||||||
declare module 'request-promise-native';
 | 
					declare module 'request-promise-native';
 | 
				
			||||||
declare module 'web3-provider-engine';
 | 
					declare module 'web3-provider-engine';
 | 
				
			||||||
declare module 'web3-provider-engine/subproviders/rpc';
 | 
					declare module 'web3-provider-engine/subproviders/rpc';
 | 
				
			||||||
 | 
					declare module 'async-child-process';
 | 
				
			||||||
 | 
					declare module 'publish-release';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// semver-sort declarations
 | 
				
			||||||
 | 
					declare module 'semver-sort' {
 | 
				
			||||||
 | 
					    const desc: (versions: string[]) => string[];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// HACK: In order to merge the bignumber declaration added by chai-bignumber to the chai Assertion
 | 
					// HACK: In order to merge the bignumber declaration added by chai-bignumber to the chai Assertion
 | 
				
			||||||
// interface we must use `namespace` as the Chai definitelyTyped definition does. Since we otherwise
 | 
					// interface we must use `namespace` as the Chai definitelyTyped definition does. Since we otherwise
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
    "extends": "../../tsconfig",
 | 
					 | 
				
			||||||
    "compilerOptions": {
 | 
					 | 
				
			||||||
        "outDir": "scripts",
 | 
					 | 
				
			||||||
        "noImplicitThis": false,
 | 
					 | 
				
			||||||
        "rootDir": "./monorepo_scripts"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "include": ["./monorepo_scripts/**/*", "../../node_modules/web3-typescript-typings/index.d.ts"]
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,86 +0,0 @@
 | 
				
			|||||||
const _ = require('lodash');
 | 
					 | 
				
			||||||
const execAsync = require('async-child-process').execAsync;
 | 
					 | 
				
			||||||
const semverSort = require('semver-sort');
 | 
					 | 
				
			||||||
const publishRelease = require('publish-release');
 | 
					 | 
				
			||||||
const promisify = require('@0xproject/utils').promisify;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const publishReleaseAsync = promisify(publishRelease);
 | 
					 | 
				
			||||||
const githubPersonalAccessToken = process.env.GITHUB_PERSONAL_ACCESS_TOKEN_0X_JS;
 | 
					 | 
				
			||||||
const generatedDocsDirectoryName = 'generated_docs';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
module.exports = {
 | 
					 | 
				
			||||||
    getLatestTagAndVersionAsync: function(subPackageName) {
 | 
					 | 
				
			||||||
        const subPackagePrefix = subPackageName + '@';
 | 
					 | 
				
			||||||
        const gitTagsCommand = 'git tag -l "' + subPackagePrefix + '*"';
 | 
					 | 
				
			||||||
        return execAsync(gitTagsCommand).then(function(result) {
 | 
					 | 
				
			||||||
            if (result.stderr !== '') {
 | 
					 | 
				
			||||||
                throw new Error(result.stderr);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            const tags = result.stdout.trim().split('\n');
 | 
					 | 
				
			||||||
            const versions = tags.map(function(tag) {
 | 
					 | 
				
			||||||
                return tag.slice(subPackagePrefix.length);
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
            const sortedVersions = semverSort.desc(versions);
 | 
					 | 
				
			||||||
            const latestVersion = sortedVersions[0];
 | 
					 | 
				
			||||||
            const latestTag = subPackagePrefix + latestVersion;
 | 
					 | 
				
			||||||
            return {
 | 
					 | 
				
			||||||
                tag: latestTag,
 | 
					 | 
				
			||||||
                version: latestVersion,
 | 
					 | 
				
			||||||
            };
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    publishReleaseNotesAsync: function(tag, releaseName, assets) {
 | 
					 | 
				
			||||||
        console.log('POSTPUBLISH: Releasing ', releaseName, '...');
 | 
					 | 
				
			||||||
        return publishReleaseAsync({
 | 
					 | 
				
			||||||
            token: githubPersonalAccessToken,
 | 
					 | 
				
			||||||
            owner: '0xProject',
 | 
					 | 
				
			||||||
            repo: '0x.js',
 | 
					 | 
				
			||||||
            tag: tag,
 | 
					 | 
				
			||||||
            name: releaseName,
 | 
					 | 
				
			||||||
            notes: 'N/A',
 | 
					 | 
				
			||||||
            draft: false,
 | 
					 | 
				
			||||||
            prerelease: false,
 | 
					 | 
				
			||||||
            reuseRelease: true,
 | 
					 | 
				
			||||||
            reuseDraftOnly: false,
 | 
					 | 
				
			||||||
            assets: assets,
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    getReleaseName(subPackageName, version) {
 | 
					 | 
				
			||||||
        const releaseName = subPackageName + ' v' + version;
 | 
					 | 
				
			||||||
        return releaseName;
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    standardPostPublishAsync: function(subPackageName) {
 | 
					 | 
				
			||||||
        return this.getLatestTagAndVersionAsync(subPackageName)
 | 
					 | 
				
			||||||
            .then(
 | 
					 | 
				
			||||||
                function(result) {
 | 
					 | 
				
			||||||
                    const releaseName = this.getReleaseName(subPackageName, result.version);
 | 
					 | 
				
			||||||
                    const assets = [];
 | 
					 | 
				
			||||||
                    return this.publishReleaseNotesAsync(result.tag, releaseName, assets);
 | 
					 | 
				
			||||||
                }.bind(this)
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
            .catch(function(err) {
 | 
					 | 
				
			||||||
                throw err;
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    adjustFileIncludePaths: function(fileIncludes, cwd) {
 | 
					 | 
				
			||||||
        const fileIncludesAdjusted = _.map(fileIncludes, fileInclude => {
 | 
					 | 
				
			||||||
            let path;
 | 
					 | 
				
			||||||
            if (_.startsWith(fileInclude, '../')) {
 | 
					 | 
				
			||||||
                path = cwd + '/../' + fileInclude;
 | 
					 | 
				
			||||||
            } else if (_.startsWith(fileInclude, './')) {
 | 
					 | 
				
			||||||
                path = cwd + '/../' + fileInclude.substr(2);
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                path = cwd + '/' + fileInclude;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            // HACK: tsconfig.json needs wildcard directory endings as `/**/*`
 | 
					 | 
				
			||||||
            // but TypeDoc needs it as `/**` in order to pick up files at the root
 | 
					 | 
				
			||||||
            if (_.endsWith(path, '/**/*')) {
 | 
					 | 
				
			||||||
                path = path.slice(0, -2);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            return path;
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
        return fileIncludesAdjusted;
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    generatedDocsDirectoryName,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user