diff --git a/dummy.ts b/dummy.ts
deleted file mode 100644
index 1ba957f..0000000
--- a/dummy.ts
+++ /dev/null
@@ -1 +0,0 @@
-/** temporary file to prevent ts build from failing beacuse it can't find files **/
diff --git a/src/server/daemon/controller.js b/src/server/daemon/controller.js
index 680fde7..c24277c 100644
--- a/src/server/daemon/controller.js
+++ b/src/server/daemon/controller.js
@@ -241,7 +241,7 @@ function _initExportService( db, callback )
ExportService
.use( TokenedService(
'c1import',
- TokenDao( collection ),
+ new TokenDao( collection ),
function tokgen()
{
var shasum = crypto.createHash( 'sha1' );
diff --git a/src/server/service/TokenDao.js b/src/server/service/TokenDao.ts
similarity index 59%
rename from src/server/service/TokenDao.js
rename to src/server/service/TokenDao.ts
index 09de75e..e16255e 100644
--- a/src/server/service/TokenDao.js
+++ b/src/server/service/TokenDao.ts
@@ -19,7 +19,20 @@
* along with this program. If not, see .
*/
-var Class = require( 'easejs' ).Class;
+/**
+ * Token status types
+ */
+type TokenType = 'ACTIVE' | 'DONE' | 'ACCEPTED' | 'DEAD';
+
+
+/**
+ * Token information
+ */
+interface TokenData
+{
+ id: string,
+ status: string,
+}
/**
@@ -27,23 +40,23 @@ var Class = require( 'easejs' ).Class;
*
* Note that this is tightly coupled with MongoDB.
*/
-module.exports = Class( 'TokenDao',
+export = class TokenDao
{
/**
- * @type {MongoCollection} mongo database collection
+ * Mongo database collection
*/
- 'private _collection': null,
+ private _collection?: MongoCollection;
/**
* Initialize connection
*
- * @param {MongoCollection} collection token Mongo collection
+ * @param token Mongo collection
*/
- 'public __construct': function( collection )
+ constructor( collection: MongoCollection )
{
this._collection = collection;
- },
+ }
/**
@@ -52,24 +65,30 @@ module.exports = Class( 'TokenDao',
* The token entry is entered in the token log, and then the current
* entry is updated to reflect the changes. The operation is atomic.
*
- * @param {number} quote_id unique quote identifier
- * @param {string} ns token namespace
- * @param {string} token token value
- * @param {string} data token data, if any
- * @param {string} status arbitrary token type
+ * @param quote_id unique quote identifier
+ * @param ns token namespace
+ * @param token token value
+ * @param data token data, if any
+ * @param status arbitrary token type
+ * @param callback with error or null (success)
*
- * @param {function(*)} callback with error or null (success)
- *
- * @return {TokenDao} self
+ * @return self
*/
- 'public updateToken': function( quote_id, ns, token, type, data, callback )
+ updateToken(
+ quote_id: number,
+ ns: string,
+ token: string,
+ type: TokenType,
+ data: string,
+ callback: ( err: Error|null ) => void,
+ ): this
{
- var token_data = {},
- token_log = {},
- root = this._genRoot( ns ) + '.',
- current_ts = Math.floor( ( new Date() ).getTime() / 1000 );
+ const token_data: any = {};
+ const token_log: any = {};
+ const root = this._genRoot( ns ) + '.';
+ const current_ts = Math.floor( ( new Date() ).getTime() / 1000 );
- var token_entry = {
+ const token_entry: any = {
type: type,
timestamp: current_ts,
};
@@ -93,14 +112,14 @@ module.exports = Class( 'TokenDao',
},
{ upsert: true },
- function ( err, docs )
+ function ( err: Error|null )
{
callback( err || null );
}
);
return this;
- },
+ }
/**
@@ -110,20 +129,22 @@ module.exports = Class( 'TokenDao',
* If a TOKEN_ID is provided, only that token will be queried; otherwise,
* the most recently created token will be the subject of the query.
*
- * @param {number} quote_id quote identifier
- * @param {string} ns token namespace
- * @param {string} token_id token identifier (unique to NS)
+ * @param quote_id quote identifier
+ * @param ns token namespace
+ * @param token_id token identifier (unique to NS)
+ * @param callback
*
- * @param {function(?Error,{{id: string, status: string}})} callback
- *
- * @return {TokenDao} self
+ * @return self
*/
- 'public getToken': function( quote_id, ns, token_id, callback )
+ getToken(
+ quote_id: number,
+ ns: string,
+ token_id: string,
+ callback: ( err: Error|null, data: TokenData|null ) => void,
+ )
{
- var _self = this;
-
- var root = this._genRoot( ns ) + '.',
- fields = {};
+ const root = this._genRoot( ns ) + '.';
+ const fields: any = {};
fields[ root + 'last' ] = 1;
fields[ root + 'lastStatus' ] = 1;
@@ -137,7 +158,7 @@ module.exports = Class( 'TokenDao',
this._collection.findOne(
{ id: +quote_id },
{ fields: fields },
- function( err, data )
+ ( err: Error|null, data: any ) =>
{
if ( err )
{
@@ -151,31 +172,32 @@ module.exports = Class( 'TokenDao',
return;
}
- var exports = data.exports || {},
- ns_data = exports[ ns ] || {};
+ const exports = data.exports || {};
+ const ns_data = exports[ ns ] || {};
callback(
null,
( token_id )
- ? _self._getRequestedToken( token_id, ns_data )
- : _self._getLatestToken( ns_data )
+ ? this._getRequestedToken( token_id, ns_data )
+ : this._getLatestToken( ns_data )
);
}
);
return this;
- },
+ }
/**
* Retrieve latest token data, or `null` if none
*
- * @param {{last: string, lastStatus: string}} ns_data namespace data
+ * @param ns_data namespace data
*
- * @return {?{{id: string, status: string}}} data of latest token in
- * namespace
+ * @return data of latest token in namespace
*/
- 'private _getLatestToken': function( ns_data )
+ private _getLatestToken(
+ ns_data: {last: string, lastStatus: string}
+ ): TokenData|null
{
var last = ns_data.last;
@@ -188,22 +210,20 @@ module.exports = Class( 'TokenDao',
id: last,
status: ns_data.lastStatus,
};
- },
+ }
/**
* Retrieve latest token data, or `null` if none
*
- * @param {string} token_id token identifier for namespace associated
- * with NS_DATA
+ * @param token_id token identifier for namespace associated with NS_DATA
+ * @param ns_data namespace data
*
- * @param {{last: string, lastStatus: string}} ns_data namespace data
- *
- * @return {?{{id: string, status: string}}} data of requested token
+ * @return data of requested token
*/
- 'private _getRequestedToken': function( token_id, ns_data )
+ private _getRequestedToken( token_id: string, ns_data: any ): TokenData|null
{
- var reqtok = ns_data[ token_id ];
+ const reqtok = ns_data[ token_id ];
if ( !reqtok )
{
@@ -214,20 +234,20 @@ module.exports = Class( 'TokenDao',
id: token_id,
status: reqtok.status,
};
- },
+ }
/**
* Determine token root for the given namespace
*
- * @param {string} ns token namespace
+ * @param ns token namespace
*
- * @return {string} token root for namespace NS
+ * @return token root for namespace NS
*/
- 'private _genRoot': function( ns )
+ private _genRoot( ns: string ): string
{
// XXX: injectable
return 'exports.' + ns;
- },
-} );
+ }
+};
diff --git a/src/types/mongodb.d.ts b/src/types/mongodb.d.ts
new file mode 100644
index 0000000..b125eeb
--- /dev/null
+++ b/src/types/mongodb.d.ts
@@ -0,0 +1,25 @@
+/**
+ * Type definitions for mongodb library
+ *
+ * Copyright (C) 2010-2019 R-T Specialty, LLC.
+ *
+ * This file is part of the Liza Data Collection Framework.
+ *
+ * liza is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+declare module "mongodb";
+
+/** TODO **/
+type MongoCollection = any;