aurelia / validatejs

Enables expressive validation using decorators and/or a fluent API.
MIT License
22 stars 23 forks source link

feat(dts): export typescript definitions #32

Closed JeroenVinke closed 8 years ago

JeroenVinke commented 8 years ago

closes https://github.com/aurelia/validatejs/issues/8

I had to make a few changes in order to get the d.ts to generate:

  1. use @inject instead of static inject (https://github.com/aurelia/validatejs/pull/32/commits/b1dcb6eb3f116716d750c11d2bf69a541ebbfad0#diff-fa04c34385d93f388685f83022383370R3) fixed this error:

    SyntaxError: D:/Development/validatejs/dist/aurelia-validatejs.js: The keyword static' is reserved (236:2)
     234 |
     235 | // export class ValidateBindingBehavior {
    > 236 |   static inject = [ValidationRenderer];
         |   ^
     237 |   constructor(renderer) {
     238 |     this.renderer = renderer;
     239 |   }
       at Parser.pp.raise (D:\Development\validatejs\node_modules\gulp-babel\node_odules\babylon\lib\parser\location.js:22:13)
       at Parser.pp.parseIdentifier (D:\Development\validatejs\node_modules\gulp-bbel\node_modules\babylon\lib\parser
    
    \expression.js:1046:12)
       at Parser.pp.parseExprAtom (D:\Development\validatejs\node_modules\gulp-babl\node_modules\babylon\lib\parser
    
    \expression.js:413:21)
       at Parser.pp.parseExprSubscripts (D:\Development\validatejs\node_modules\gup-babel\node_modules\babylon\lib\parser
    
    \expression.js:272:19)
       at Parser.pp.parseMaybeUnary (D:\Development\validatejs\node_modules\gulp-bbel\node_modules\babylon\lib\parser
    
    \expression.js:252:19)
       at Parser.pp.parseExprOps (D:\Development\validatejs\node_modules\gulp-babe\node_modules\babylon\lib\parser
    
    \expression.js:183:19)
       at Parser.pp.parseMaybeConditional (D:\Development\validatejs\node_modules\ulp-babel\node_modules\babylon\lib\parser
    
    \expression.js:165:19)
       at Parser.pp.parseMaybeAssign (D:\Development\validatejs\node_modules\gulp-abel\node_modules\babylon\lib\parser
    
    \expression.js:128:19)
       at Parser.pp.parseExpression (D:\Development\validatejs\node_modules\gulp-bbel\node_modules\babylon\lib\parser
    
    \expression.js:92:19)
       at Parser.pp.parseStatement (D:\Development\validatejs\node_modules\gulp-bael\node_modules\babylon\lib\parser
    
    \statement.js:163:19)
       at Parser.parseStatement (D:\Development\validatejs\node_modules\gulp-babelnode_modules\babylon\lib\plugins\flow.js:30:22)
       at Parser.pp.parseBlockBody (D:\Development\validatejs\node_modules\gulp-bael\node_modules\babylon\lib\parser
    
    \statement.js:529:21)
       at Parser.pp.parseTopLevel (D:\Development\validatejs\node_modules\gulp-babl\node_modules\babylon\lib\parser\statement.js:36:8)
       at Parser.parse (D:\Development\validatejs\node_modules\gulp-babel\node_modles\babylon\lib\parser\index.js:129:19)
       at parse (D:\Development\validatejs\node_modules\gulp-babel\node_modules\baylon\lib\index.js:47:47)
       at File.parse (D:\Development\validatejs\node_modules\gulp-babel\node_moduls\babel-core\lib\transformation\file\index.js:540:58)
  2. import validationMetadataKey from a single location (https://github.com/aurelia/validatejs/pull/32/commits/b1dcb6eb3f116716d750c11d2bf69a541ebbfad0#diff-bc76beef7b3925bf795ee775519e75cdR1 and https://github.com/aurelia/validatejs/pull/32/commits/b1dcb6eb3f116716d750c11d2bf69a541ebbfad0#diff-dd24c6ebcf47fc528d32109610336526R4)

    TypeError: D:/Development/validatejs/dist/aurelia-validatejs.js: Duplicate declaration "validationMetadataKey"
     55 | }
     56 |
    > 57 | export const validationMetadataKey = 'aurelia:validation';
        |              ^
     58 |
     59 | function getRandomId() {
     60 |   let rand = Math.floor(Math.random() * (99999 - 10000 + 1)) + 10000;
       at File.buildCodeFrameError (D:\Development\validatejs\node_modules\gulp-babel\node_modules\babel-core\lib\transformation\file
    
    \index.js:467:15)
       at Scope.checkBlockScopedCollisions (D:\Development\validatejs\node_modules\babel-traverse\lib\scope\index.js:490:27)
       at Scope.registerBinding (D:\Development\validatejs\node_modules\babel-traverse\lib\scope\index.js:679:16)
       at Scope.registerDeclaration (D:\Development\validatejs\node_modules\babel-traverse\lib\scope\index.js:578:14)
       at Object.BlockScoped (D:\Development\validatejs\node_modules\babel-traverse\lib\scope\index.js:217:28)
       at Object.newFn (D:\Development\validatejs\node_modules\babel-traverse\lib\visitors.js:343:17)
       at NodePath._call (D:\Development\validatejs\node_modules\babel-traverse\lib\path\context.js:78:18)
       at NodePath.call (D:\Development\validatejs\node_modules\babel-traverse\lib\path\context.js:45:14)
       at NodePath.visit (D:\Development\validatejs\node_modules\babel-traverse\lib\path\context.js:108:12)
       at TraversalContext.visitQueue (D:\Development\validatejs\node_modules\babel-traverse\lib\context.js:174:16)
       at TraversalContext.visitSingle (D:\Development\validatejs\node_modules\babel-traverse\lib\context.js:124:19)
       at TraversalContext.visit (D:\Development\validatejs\node_modules\babel-traverse\lib\context.js:219:19)
       at Function.traverse.node (D:\Development\validatejs\node_modules\babel-traverse\lib\index.js:171:17)
       at NodePath.visit (D:\Development\validatejs\node_modules\babel-traverse\lib\path\context.js:118:43)
       at TraversalContext.visitQueue (D:\Development\validatejs\node_modules\babel-traverse\lib\context.js:174:16)
       at TraversalContext.visitMultiple (D:\Development\validatejs\node_modules\babel-traverse\lib\context.js:119:17)
  3. The error below is caused because the babel-dts-generator doesn't support all those export/import statements in index.js. As the index.js doesn't contain many types (yet), I decided to exclude this from the build-index task (here).

    TypeError: D:/Development/validatejs/dist/aurelia-validatejs.js: Duplicate declaration "ValidationReporter"
     74 | }
     75 |
    > 76 | export class ValidationReporter {
        |              ^
     77 |   callback;
     78 |   __callbacks__ = {};
     79 |   subscribe(callback) {
       at File.buildCodeFrameError (D:\Development\validatejs\node_modules\gulp-babel\node_modules\babel-core\lib\transformation\file
    
    \index.js:467:15)
       at Scope.checkBlockScopedCollisions (D:\Development\validatejs\node_modules\babel-traverse\lib\scope\index.js:490:27)
       at Scope.registerBinding (D:\Development\validatejs\node_modules\babel-traverse\lib\scope\index.js:679:16)
       at Scope.registerDeclaration (D:\Development\validatejs\node_modules\babel-traverse\lib\scope\index.js:581:12)
       at Object.BlockScoped (D:\Development\validatejs\node_modules\babel-traverse\lib\scope\index.js:217:28)
       at Object.newFn (D:\Development\validatejs\node_modules\babel-traverse\lib\visitors.js:343:17)
       at NodePath._call (D:\Development\validatejs\node_modules\babel-traverse\lib\path\context.js:78:18)
       at NodePath.call (D:\Development\validatejs\node_modules\babel-traverse\lib\path\context.js:45:14)
       at NodePath.visit (D:\Development\validatejs\node_modules\babel-traverse\lib\path\context.js:108:12)
       at TraversalContext.visitQueue (D:\Development\validatejs\node_modules\babel-traverse\lib\context.js:174:16)
       at TraversalContext.visitSingle (D:\Development\validatejs\node_modules\babel-traverse\lib\context.js:124:19)
       at TraversalContext.visit (D:\Development\validatejs\node_modules\babel-traverse\lib\context.js:219:19)
       at Function.traverse.node (D:\Development\validatejs\node_modules\babel-traverse\lib\index.js:171:17)
       at NodePath.visit (D:\Development\validatejs\node_modules\babel-traverse\lib\path\context.js:118:43)
       at TraversalContext.visitQueue (D:\Development\validatejs\node_modules\babel-traverse\lib\context.js:174:16)
       at TraversalContext.visitMultiple (D:\Development\validatejs\node_modules\babel-traverse\lib\context.js:119:17)

this is the resulting d.ts file

plwalters commented 8 years ago

You are the man! Thanks a ton @JeroenVinke going to review this and get it in ASAP.