From 91c87ee5cd20b204c105e1abd55ea10e1eff3b80 Mon Sep 17 00:00:00 2001 From: cgeek <cem.moreau@gmail.com> Date: Wed, 9 Aug 2017 14:47:03 +0200 Subject: [PATCH] [fix] #1037 TypeScript `--declaration` --- .gitignore | 11 +++- .npmignore | 34 ++++++++++ app/lib/common-libs/crypto/keyring.ts | 2 +- app/lib/indexer.ts | 2 +- app/modules/bma/lib/bma.ts | 11 ++-- .../bma/lib/controllers/AbstractController.ts | 18 +++--- app/modules/crawler/lib/sync.ts | 6 +- app/modules/prover/index.ts | 5 +- app/service/IdentityService.ts | 26 ++++---- server.ts | 62 +++++++++++-------- test/integration/tools/toolbox.ts | 26 +++++--- tsconfig.json | 1 + 12 files changed, 135 insertions(+), 69 deletions(-) create mode 100644 .npmignore diff --git a/.gitignore b/.gitignore index e33419e42..dfc3e2077 100644 --- a/.gitignore +++ b/.gitignore @@ -33,11 +33,20 @@ coverage/ # TS migration test/blockchain/*.js* +test/blockchain/*.d.ts test/blockchain/lib/*.js* +test/blockchain/lib/*.d.ts /index.js* +/index.d.ts /server.js* +/server.d.ts app/**/*.js* +app/**/*.d.ts test/integration/membership_chainability.js* +test/integration/membership_chainability.d.ts test/integration/tools/toolbox.js* +test/integration/tools/toolbox.d.ts test/integration/documents-currency.js* -test/fast/modules/crawler/block_pulling.js* \ No newline at end of file +test/integration/documents-currency.d.ts +test/fast/modules/crawler/block_pulling.js* +test/fast/modules/crawler/block_pulling.d.ts diff --git a/.npmignore b/.npmignore new file mode 100644 index 000000000..05cac4f53 --- /dev/null +++ b/.npmignore @@ -0,0 +1,34 @@ +*.sublime* +node_modules/ +*.html +npm-debug.log +bin/jpgp*.jar +.idea/ +naclb/build +naclb/node_modules +gui/nw + +# Vim swap files +*~ +*.swp +*.swo + +# Vagrant +.vagrant/ +vagrant/*.log +vagrant/duniter + +# Releases +*.deb +*.tar.gz +*.log +*.exe + +# vscode +.vscode + +# istanbul +.nyc_output +coverage/ + +# TS => JS: OK! diff --git a/app/lib/common-libs/crypto/keyring.ts b/app/lib/common-libs/crypto/keyring.ts index 24cb7a1a1..1427a7e55 100644 --- a/app/lib/common-libs/crypto/keyring.ts +++ b/app/lib/common-libs/crypto/keyring.ts @@ -7,7 +7,7 @@ const naclBinding = require('naclb'); const crypto_sign_BYTES = 64; -class Key { +export class Key { constructor(readonly pub:string, readonly sec:string) { } diff --git a/app/lib/indexer.ts b/app/lib/indexer.ts index 7f667b325..2ceced445 100644 --- a/app/lib/indexer.ts +++ b/app/lib/indexer.ts @@ -108,7 +108,7 @@ export interface SindexEntry extends IndexEntry { isTimeLocked?: boolean, } -interface Ranger { +export interface Ranger { (n:number, m:number, prop?:string): Promise<DBHead[]> } diff --git a/app/modules/bma/lib/bma.ts b/app/modules/bma/lib/bma.ts index 07277734d..d3a2967c7 100644 --- a/app/modules/bma/lib/bma.ts +++ b/app/modules/bma/lib/bma.ts @@ -1,6 +1,6 @@ import {Server} from "../../../../server" -import {Network, NetworkInterface} from "./network" -import * as dtos from "./dtos" +import {BmaApi, Network, NetworkInterface} from "./network" +import {block2HttpBlock, HttpPeer} from "./dtos" import {BMALimitation} from "./limiter" import {BlockchainBinding} from "./controllers/blockchain" import {NodeBinding} from "./controllers/node" @@ -8,15 +8,14 @@ import {NetworkBinding} from "./controllers/network" import {WOTBinding} from "./controllers/wot" import {TransactionBinding} from "./controllers/transactions" import {UDBinding} from "./controllers/uds" -import {block2HttpBlock, HttpBlock, HttpPeer, HttpTransactionOfBlock} from "./dtos"; -import {PeerDTO} from "../../../lib/dto/PeerDTO"; -import {BlockDTO} from "../../../lib/dto/BlockDTO"; +import {PeerDTO} from "../../../lib/dto/PeerDTO" +import {BlockDTO} from "../../../lib/dto/BlockDTO" const co = require('co'); const es = require('event-stream'); const WebSocketServer = require('ws').Server; -export const bma = function(server:Server, interfaces:NetworkInterface[], httpLogs:boolean, logger:any) { +export const bma = function(server:Server, interfaces:NetworkInterface[], httpLogs:boolean, logger:any): Promise<BmaApi> { if (!interfaces) { interfaces = []; diff --git a/app/modules/bma/lib/controllers/AbstractController.ts b/app/modules/bma/lib/controllers/AbstractController.ts index 048a292eb..8ebcb3f40 100644 --- a/app/modules/bma/lib/controllers/AbstractController.ts +++ b/app/modules/bma/lib/controllers/AbstractController.ts @@ -1,13 +1,17 @@ -import {Server} from "../../../../../server"; -import {dos2unix} from "../../../../lib/common-libs/dos2unix"; -import {CommonConstants} from "../../../../lib/common-libs/constants"; +import {Server} from "../../../../../server" +import {dos2unix} from "../../../../lib/common-libs/dos2unix" +import {CommonConstants} from "../../../../lib/common-libs/constants" +import {BlockchainService} from "../../../../service/BlockchainService" +import {IdentityService} from "../../../../service/IdentityService" +import {PeeringService} from "../../../../service/PeeringService" +import {ConfDTO} from "../../../../lib/dto/ConfDTO" export abstract class AbstractController { constructor(protected server:Server) { } - get conf() { + get conf(): ConfDTO { return this.server.conf } @@ -15,15 +19,15 @@ export abstract class AbstractController { return this.server.logger } - get BlockchainService() { + get BlockchainService(): BlockchainService { return this.server.BlockchainService } - get IdentityService() { + get IdentityService(): IdentityService { return this.server.IdentityService } - get PeeringService() { + get PeeringService(): PeeringService { return this.server.PeeringService } diff --git a/app/modules/crawler/lib/sync.ts b/app/modules/crawler/lib/sync.ts index 046006982..25e889952 100644 --- a/app/modules/crawler/lib/sync.ts +++ b/app/modules/crawler/lib/sync.ts @@ -14,6 +14,8 @@ import {BlockchainService} from "../../../service/BlockchainService" import {rawer} from "../../../lib/common-libs/index" import {dos2unix} from "../../../lib/common-libs/dos2unix" import {hashf} from "../../../lib/common" +import {ConfDTO} from "../../../lib/dto/ConfDTO" +import {PeeringService} from "../../../service/PeeringService" const util = require('util'); const _ = require('underscore'); @@ -65,7 +67,7 @@ export class Synchroniser extends stream.Duplex { } } - get conf() { + get conf(): ConfDTO { return this.server.conf } @@ -73,7 +75,7 @@ export class Synchroniser extends stream.Duplex { return this.server.logger } - get PeeringService() { + get PeeringService(): PeeringService { return this.server.PeeringService } diff --git a/app/modules/prover/index.ts b/app/modules/prover/index.ts index 509c61aa5..094888333 100644 --- a/app/modules/prover/index.ts +++ b/app/modules/prover/index.ts @@ -6,7 +6,8 @@ import {Prover} from "./lib/prover" import {Contacter} from "../crawler/lib/contacter" import {parsers} from "../../lib/common-libs/parsers/index" import {PeerDTO} from "../../lib/dto/PeerDTO" -import {Server} from "../../../server"; +import {Server} from "../../../server" +import {BlockDTO} from "../../lib/dto/BlockDTO" const async = require('async'); @@ -112,7 +113,7 @@ export const ProverDependency = { throw 'Difficulty is required.'; } const generator = new BlockGenerator(server); - return generateAndSend(program, difficulty, server, () => generator.manualRoot); + return generateAndSend(program, difficulty, server, () => (): Promise<BlockDTO> => generator.manualRoot()) } }] } diff --git a/app/service/IdentityService.ts b/app/service/IdentityService.ts index f4922af46..81288451d 100644 --- a/app/service/IdentityService.ts +++ b/app/service/IdentityService.ts @@ -1,15 +1,15 @@ -import {GlobalFifoPromise} from "./GlobalFifoPromise"; -import {FileDAL} from "../lib/dal/fileDAL"; -import {ConfDTO} from "../lib/dto/ConfDTO"; -import {DBIdentity} from "../lib/dal/sqliteDAL/IdentityDAL"; -import {GLOBAL_RULES_FUNCTIONS, GLOBAL_RULES_HELPERS} from "../lib/rules/global_rules"; -import {BlockDTO} from "../lib/dto/BlockDTO"; -import {RevocationDTO} from "../lib/dto/RevocationDTO"; -import {BasicIdentity, IdentityDTO} from "../lib/dto/IdentityDTO"; -import {CertificationDTO} from "../lib/dto/CertificationDTO"; -import {DBCert} from "../lib/dal/sqliteDAL/CertDAL"; -import {verify} from "../lib/common-libs/crypto/keyring"; -import {FIFOService} from "./FIFOService"; +import {GlobalFifoPromise} from "./GlobalFifoPromise" +import {FileDAL} from "../lib/dal/fileDAL" +import {ConfDTO} from "../lib/dto/ConfDTO" +import {DBIdentity, ExistingDBIdentity} from "../lib/dal/sqliteDAL/IdentityDAL" +import {GLOBAL_RULES_FUNCTIONS, GLOBAL_RULES_HELPERS} from "../lib/rules/global_rules" +import {BlockDTO} from "../lib/dto/BlockDTO" +import {RevocationDTO} from "../lib/dto/RevocationDTO" +import {BasicIdentity, IdentityDTO} from "../lib/dto/IdentityDTO" +import {CertificationDTO} from "../lib/dto/CertificationDTO" +import {DBCert} from "../lib/dal/sqliteDAL/CertDAL" +import {verify} from "../lib/common-libs/crypto/keyring" +import {FIFOService} from "./FIFOService" "use strict"; const constants = require('../lib/constants'); @@ -36,7 +36,7 @@ export class IdentityService extends FIFOService { return this.dal.searchJustIdentities(search) } - async findMember(search:string) { + async findMember(search:string): Promise<ExistingDBIdentity> { let idty = null; if (search.match(constants.PUBLIC_KEY)) { idty = await this.dal.getWrittenIdtyByPubkey(search); diff --git a/server.ts b/server.ts index e6e35e10c..f707d0211 100644 --- a/server.ts +++ b/server.ts @@ -1,21 +1,29 @@ -import {IdentityService} from "./app/service/IdentityService"; -import {MembershipService} from "./app/service/MembershipService"; -import {PeeringService} from "./app/service/PeeringService"; -import {BlockchainService} from "./app/service/BlockchainService"; -import {TransactionService} from "./app/service/TransactionsService"; -import {ConfDTO, NetworkConfDTO} from "./app/lib/dto/ConfDTO"; -import {FileDAL} from "./app/lib/dal/fileDAL"; -import {DuniterBlockchain} from "./app/lib/blockchain/DuniterBlockchain"; -import {SQLBlockchain} from "./app/lib/blockchain/SqlBlockchain"; -import * as stream from "stream"; -import {KeyGen, randomKey} from "./app/lib/common-libs/crypto/keyring"; -import {parsers} from "./app/lib/common-libs/parsers/index"; -import {Cloneable} from "./app/lib/dto/Cloneable"; -import {DuniterDocument, duniterDocument2str} from "./app/lib/common-libs/constants"; -import {CrawlerConstants} from "./app/modules/crawler/lib/constants"; -import {GlobalFifoPromise} from "./app/service/GlobalFifoPromise"; - -interface HookableServer { +import {IdentityService} from "./app/service/IdentityService" +import {MembershipService} from "./app/service/MembershipService" +import {PeeringService} from "./app/service/PeeringService" +import {BlockchainService} from "./app/service/BlockchainService" +import {TransactionService} from "./app/service/TransactionsService" +import {ConfDTO, NetworkConfDTO} from "./app/lib/dto/ConfDTO" +import {FileDAL} from "./app/lib/dal/fileDAL" +import {DuniterBlockchain} from "./app/lib/blockchain/DuniterBlockchain" +import {SQLBlockchain} from "./app/lib/blockchain/SqlBlockchain" +import * as stream from "stream" +import {KeyGen, randomKey} from "./app/lib/common-libs/crypto/keyring" +import {parsers} from "./app/lib/common-libs/parsers/index" +import {Cloneable} from "./app/lib/dto/Cloneable" +import {DuniterDocument, duniterDocument2str} from "./app/lib/common-libs/constants" +import {CrawlerConstants} from "./app/modules/crawler/lib/constants" +import {GlobalFifoPromise} from "./app/service/GlobalFifoPromise" +import {BlockchainContext} from "./app/lib/computation/BlockchainContext" +import {BlockDTO} from "./app/lib/dto/BlockDTO" +import {DBIdentity} from "./app/lib/dal/sqliteDAL/IdentityDAL" +import {CertificationDTO} from "./app/lib/dto/CertificationDTO" +import {MembershipDTO} from "./app/lib/dto/MembershipDTO" +import {RevocationDTO} from "./app/lib/dto/RevocationDTO" +import {TransactionDTO} from "./app/lib/dto/TransactionDTO" +import {PeerDTO} from "./app/lib/dto/PeerDTO" + +export interface HookableServer { getMainEndpoint: (...args:any[]) => Promise<any> generatorGetJoinData: (...args:any[]) => Promise<any> generatorComputeNewCerts: (...args:any[]) => Promise<any> @@ -108,7 +116,7 @@ export class Server extends stream.Duplex implements HookableServer { } } - getBcContext() { + getBcContext(): BlockchainContext { return this.BlockchainService.getContext() } @@ -179,7 +187,7 @@ export class Server extends stream.Duplex implements HookableServer { return this; } - async writeRawBlock(raw:string) { + async writeRawBlock(raw:string): Promise<BlockDTO> { const obj = parsers.parseBlock.syncWrite(raw, logger) return await this.writeBlock(obj) } @@ -190,12 +198,12 @@ export class Server extends stream.Duplex implements HookableServer { return res } - async writeRawIdentity(raw:string) { + async writeRawIdentity(raw:string): Promise<DBIdentity> { const obj = parsers.parseIdentity.syncWrite(raw, logger) return await this.writeIdentity(obj) } - async writeIdentity(obj:any, notify = true) { + async writeIdentity(obj:any, notify = true): Promise<DBIdentity> { const res = await this.IdentityService.submitIdentity(obj) if (notify) { this.emitDocument(res, DuniterDocument.ENTITY_IDENTITY) @@ -203,7 +211,7 @@ export class Server extends stream.Duplex implements HookableServer { return res } - async writeRawCertification(raw:string) { + async writeRawCertification(raw:string): Promise<CertificationDTO> { const obj = parsers.parseCertification.syncWrite(raw, logger) return await this.writeCertification(obj) } @@ -216,7 +224,7 @@ export class Server extends stream.Duplex implements HookableServer { return res } - async writeRawMembership(raw:string) { + async writeRawMembership(raw:string): Promise<MembershipDTO> { const obj = parsers.parseMembership.syncWrite(raw, logger) return await this.writeMembership(obj) } @@ -229,7 +237,7 @@ export class Server extends stream.Duplex implements HookableServer { return res } - async writeRawRevocation(raw:string) { + async writeRawRevocation(raw:string): Promise<RevocationDTO> { const obj = parsers.parseRevocation.syncWrite(raw, logger) return await this.writeRevocation(obj) } @@ -240,7 +248,7 @@ export class Server extends stream.Duplex implements HookableServer { return res } - async writeRawTransaction(raw:string) { + async writeRawTransaction(raw:string): Promise<TransactionDTO> { const obj = parsers.parseTransaction.syncWrite(raw, logger) return await this.writeTransaction(obj) } @@ -251,7 +259,7 @@ export class Server extends stream.Duplex implements HookableServer { return res } - async writeRawPeer(raw:string) { + async writeRawPeer(raw:string): Promise<PeerDTO> { const obj = parsers.parsePeer.syncWrite(raw, logger) return await this.writePeer(obj) } diff --git a/test/integration/tools/toolbox.ts b/test/integration/tools/toolbox.ts index 5d04dcbc6..d26842937 100644 --- a/test/integration/tools/toolbox.ts +++ b/test/integration/tools/toolbox.ts @@ -6,7 +6,15 @@ import * as stream from "stream" import {RevocationDTO} from "../../../app/lib/dto/RevocationDTO" import {IdentityDTO} from "../../../app/lib/dto/IdentityDTO" import {PeerDTO} from "../../../app/lib/dto/PeerDTO" -import {Network} from "../../../app/modules/bma/lib/network"; +import {Network} from "../../../app/modules/bma/lib/network" +import {DBIdentity} from "../../../app/lib/dal/sqliteDAL/IdentityDAL" +import {CertificationDTO} from "../../../app/lib/dto/CertificationDTO" +import {BlockchainService} from "../../../app/service/BlockchainService" +import {PeeringService} from "../../../app/service/PeeringService" +import {ConfDTO} from "../../../app/lib/dto/ConfDTO" +import {FileDAL} from "../../../app/lib/dal/fileDAL" +import {MembershipDTO} from "../../../app/lib/dto/MembershipDTO" +import {TransactionDTO} from "../../../app/lib/dto/TransactionDTO" const _ = require('underscore'); const rp = require('request-promise'); @@ -220,19 +228,19 @@ export class TestingServer { server.getMainEndpoint = require('../../../app/modules/bma').BmaDependency.duniter.methods.getMainEndpoint } - get BlockchainService() { + get BlockchainService(): BlockchainService { return this.server.BlockchainService } - get PeeringService() { + get PeeringService(): PeeringService { return this.server.PeeringService } - get conf() { + get conf(): ConfDTO { return this.server.conf } - get dal() { + get dal(): FileDAL { return this.server.dal } @@ -264,15 +272,15 @@ export class TestingServer { return this.server.writeBlock(obj) } - async writeIdentity(obj:any) { + async writeIdentity(obj:any): Promise<DBIdentity> { return this.server.writeIdentity(obj) } - async writeCertification(obj:any) { + async writeCertification(obj:any): Promise<CertificationDTO> { return this.server.writeCertification(obj) } - async writeMembership(obj:any) { + async writeMembership(obj:any): Promise<MembershipDTO> { return this.server.writeMembership(obj) } @@ -280,7 +288,7 @@ export class TestingServer { return this.server.writeRevocation(obj) } - async writeTransaction(obj:any) { + async writeTransaction(obj:any): Promise<TransactionDTO> { return this.server.writeTransaction(obj) } diff --git a/tsconfig.json b/tsconfig.json index 171c2148e..330af57db 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,6 +2,7 @@ "compilerOptions": { "sourceMap": true, "target": "es6", + "declaration": true, "moduleResolution": "node", "module": "commonjs", "strictNullChecks": true, -- GitLab