diff --git a/package.json b/package.json index 15d30b84..dd946b71 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,12 @@ { "name": "coffee-lex", "description": "Stupid lexer for CoffeeScript.", - "main": "dist/coffee-lex.js", - "module": "dist/coffee-lex.mjs", + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", "scripts": { "prebuild": "rm -rf dist/", - "build": "rollup -c && cp src/coffee-lex.js.flow dist/", + "build": "./script/build", "lint": "tslint --config tslint.json --project tsconfig.json --type-check", "lint-fix": "tslint --config tslint.json --project tsconfig.json --type-check --fix", "pretest": "npm run lint", @@ -37,9 +38,6 @@ "@types/node": "^6.0.51", "decaffeinate-coffeescript": "^1.10.0-patch5", "mocha": "^3.2.0", - "reify": "^0.4.4", - "rollup": "^0.37.0", - "rollup-plugin-typescript": "^0.8.1", "semantic-release": "^6.3.2", "ts-node": "^1.7.2", "tslint": "^4.0.2", diff --git a/rollup.config.js b/rollup.config.js deleted file mode 100644 index 05c4fbd8..00000000 --- a/rollup.config.js +++ /dev/null @@ -1,21 +0,0 @@ -import ts from 'rollup-plugin-typescript'; -import * as TypeScript from 'typescript'; - -var pkg = require('./package.json'); - -export default { - entry: 'src/index.ts', - plugins: [ts({ typescript: TypeScript })], - exports: 'named', - targets: [ - { - format: 'es', - dest: pkg.module - }, - { - format: 'umd', - moduleName: 'coffeelex', - dest: pkg.main - } - ] -}; diff --git a/script/build b/script/build new file mode 100755 index 00000000..f404ea98 --- /dev/null +++ b/script/build @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +set -e + +DIST="${DIST:-dist}" +TSC="${TSC:-node_modules/.bin/tsc}" + +# Build ES module version. +"${TSC}" --project . --outDir "${DIST}" --module ES6 +for js in $(find "${DIST}" -name '*.js'); do + mv "${js}" "$(dirname "${js}")/$(basename "${js}" .js).mjs" +done + +# Build CommonJS version. +"${TSC}" --project . --outDir "${DIST}" --module commonjs + +# Restructure. +rm -rf dist/test +mv dist/src/* dist/ +rmdir dist/src diff --git a/src/coffee-lex.js.flow b/src/coffee-lex.js.flow deleted file mode 100644 index 8ecd6953..00000000 --- a/src/coffee-lex.js.flow +++ /dev/null @@ -1,211 +0,0 @@ -/* @flow */ - -declare type SourceTokenListIndexRange = [SourceTokenListIndex, SourceTokenListIndex]; - -declare class SourceType { - name: string; - constructor(name: string): void; - toString(): string; -} - -declare class SourceToken { - type: SourceType; - start: number; - end: number; - constructor(type: SourceType, start: number, end: number): void; -} - -declare class SourceTokenListIndex { - constructor(sourceTokenList: SourceTokenList, index:number): void; - advance(offset: number): ?SourceTokenListIndex; - next(): ?SourceTokenListIndex; - previous(): ?SourceTokenListIndex; - isBefore(other: SourceTokenListIndex): boolean; - isAfter(other: SourceTokenListIndex): boolean; - compare(other: SourceTokenListIndex): number; - distance(other: SourceTokenListIndex): number; -} - -declare class SourceTokenList { - length: number; - startIndex: SourceTokenListIndex; - endIndex: SourceTokenListIndex; - constructor(tokens: Array): void; - forEach(iterator: (token: SourceToken, index: SourceTokenListIndex, list: SourceTokenList) => void): void; - map(mapper: (token: SourceToken, index: SourceTokenListIndex, list: SourceTokenList) => T): Array; - filter(predicate: (token: SourceToken, index: SourceTokenListIndex, list: SourceTokenList) => boolean): SourceTokenList; - slice(start: SourceTokenListIndex, end: SourceTokenListIndex): SourceTokenList; - tokenAtIndex(index: SourceTokenListIndex): ?SourceToken; - rangeOfInterpolatedStringTokensContainingTokenIndex(index: SourceTokenListIndex): ?SourceTokenListIndexRange; - rangeOfMatchingTokensContainingTokenIndex(startType: SourceType, endType: SourceType, index: SourceTokenListIndex): ?SourceTokenListIndexRange; - indexOfTokenContainingSourceIndex(index: number): ?SourceTokenListIndex; - indexOfTokenStartingAtSourceIndex(index: number): ?SourceTokenListIndex; - indexOfTokenEndingAtSourceIndex(index: number): ?SourceTokenListIndex; - indexOfTokenMatchingPredicate(predicate: (token: SourceToken) => boolean, start?: ?SourceTokenListIndex): ?SourceTokenListIndex; - lastIndexOfTokenMatchingPredicate(predicate: (token: SourceToken) => boolean, start?: ?SourceTokenListIndex): ?SourceTokenListIndex; - toArray(): Array; -} - -declare class SourceLocation { - type: SourceType; - index: number; - constructor(type: SourceType, index: number): void; -} - -declare function lex(source: string): SourceTokenList; -declare function consumeStream(lexer: () => SourceLocation): Array; - - -declare var AT: SourceType; -declare var BOOL: SourceType; -declare var BREAK: SourceType; -declare var CATCH: SourceType; -declare var CALL_END: SourceType; -declare var CALL_START: SourceType; -declare var CLASS: SourceType; -declare var COLON: SourceType; -declare var COMMA: SourceType; -declare var COMMENT: SourceType; -declare var CONTINUATION: SourceType; -declare var CONTINUE: SourceType; -declare var DELETE: SourceType; -declare var DO: SourceType; -declare var DOT: SourceType; -declare var DSTRING_END: SourceType; -declare var DSTRING_START: SourceType; -declare var ELSE: SourceType; -declare var EOF: SourceType; -declare var EXISTENCE: SourceType; -declare var FINALLY: SourceType; -declare var FOR: SourceType; -declare var FUNCTION: SourceType; -declare var HERECOMMENT: SourceType; -declare var HEREGEXP_END: SourceType; -declare var HEREGEXP_START: SourceType; -declare var IF: SourceType; -declare var INTERPOLATION_START: SourceType; -declare var INTERPOLATION_END: SourceType; -declare var JS: SourceType; -declare var LBRACE: SourceType; -declare var LBRACKET: SourceType; -declare var LOOP: SourceType; -declare var LPAREN: SourceType; -declare var NEWLINE: SourceType; -declare var NORMAL: SourceType; -declare var NULL: SourceType; -declare var NUMBER: SourceType; -declare var OPERATOR: SourceType; -declare var OWN: SourceType; -declare var PROTO: SourceType; -declare var RANGE: SourceType; -declare var REGEXP: SourceType; -declare var RBRACE: SourceType; -declare var RBRACKET: SourceType; -declare var RELATION: SourceType; -declare var RETURN: SourceType; -declare var RPAREN: SourceType; -declare var SEMICOLON: SourceType; -declare var SPACE: SourceType; -declare var SUPER: SourceType; -declare var SWITCH: SourceType; -declare var SSTRING_END: SourceType; -declare var SSTRING_START: SourceType; -declare var STRING_CONTENT: SourceType; -declare var STRING_LINE_SEPARATOR: SourceType; -declare var STRING_PADDING: SourceType; -declare var TDSTRING_END: SourceType; -declare var TDSTRING_START: SourceType; -declare var THEN: SourceType; -declare var THIS: SourceType; -declare var TRY: SourceType; -declare var TSSTRING_END: SourceType; -declare var TSSTRING_START: SourceType; -declare var UNDEFINED: SourceType; -declare var UNKNOWN: SourceType; -declare var WHEN: SourceType; -declare var WHILE: SourceType; -declare var IDENTIFIER: SourceType; -declare var YIELD: SourceType; -declare var YIELDFROM: SourceType; - - -export { - lex as default, - consumeStream, - SourceLocation, - SourceToken, - SourceTokenList, - SourceTokenListIndex, - SourceType, - AT, - BOOL, - BREAK, - CATCH, - CALL_END, - CALL_START, - CLASS, - COLON, - COMMA, - COMMENT, - CONTINUATION, - CONTINUE, - DELETE, - DO, - DOT, - DSTRING_END, - DSTRING_START, - ELSE, - EOF, - EXISTENCE, - FINALLY, - FOR, - FUNCTION, - HERECOMMENT, - HEREGEXP_END, - HEREGEXP_START, - IF, - INTERPOLATION_START, - INTERPOLATION_END, - JS, - LBRACE, - LBRACKET, - LOOP, - LPAREN, - NEWLINE, - NORMAL, - NULL, - NUMBER, - OPERATOR, - OWN, - PROTO, - RANGE, - REGEXP, - RBRACE, - RBRACKET, - RELATION, - RETURN, - RPAREN, - SEMICOLON, - SPACE, - SUPER, - SWITCH, - SSTRING_END, - SSTRING_START, - STRING_CONTENT, - STRING_LINE_SEPARATOR, - STRING_PADDING, - TDSTRING_END, - TDSTRING_START, - TSSTRING_END, - TSSTRING_START, - THEN, - THIS, - TRY, - UNDEFINED, - UNKNOWN, - WHEN, - WHILE, - IDENTIFIER, - YIELD, - YIELDFROM, -}; diff --git a/tsconfig.json b/tsconfig.json index a5e1abf1..e6a5c0b9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,6 +8,11 @@ "experimentalDecorators": true, "noUnusedParameters": true, "noUnusedLocals": true, - "noEmit": true - } + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "exclude": [ + "node_modules", + "dist/**/*" + ] } \ No newline at end of file