Mike Gerwitz

Activist for User Freedom

aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/server/dapi/TokenedDataApi.ts4
-rw-r--r--src/types/misc.d.ts10
-rw-r--r--test/server/dapi/TokenedDataApiTest.ts14
3 files changed, 19 insertions, 9 deletions
diff --git a/src/server/dapi/TokenedDataApi.ts b/src/server/dapi/TokenedDataApi.ts
index 5059994..3e0c68c 100644
--- a/src/server/dapi/TokenedDataApi.ts
+++ b/src/server/dapi/TokenedDataApi.ts
@@ -79,7 +79,7 @@ export class TokenedDataApi implements DataApi
*/
request(
data: DataApiInput,
- callback: ( e: Error | null, data: DataApiResult | null ) => void,
+ callback: NodeCallback<DataApiResult>,
id: string
): this
{
@@ -144,7 +144,7 @@ export class TokenedDataApi implements DataApi
private _replyUnlessStale(
newtok: Token<TokenState.DONE>,
resp_data: DataApiResult,
- callback: ( e: Error | null, data: DataApiResult | null ) => void,
+ callback: NodeCallback<DataApiResult>,
id: string
): void
{
diff --git a/src/types/misc.d.ts b/src/types/misc.d.ts
index 6560f2b..83b11b5 100644
--- a/src/types/misc.d.ts
+++ b/src/types/misc.d.ts
@@ -44,3 +44,13 @@ type NominalType<K, T> = K & { __nominal_type__: T };
* Number of seconds since the Unix epoch (1970-01-01 UTC).
*/
type UnixTimestamp = NominalType<number, 'UnixTimestamp'>;
+
+
+/**
+ * Oldschool NodeJS callback
+ *
+ * We should migrate to promises over time. The purpose of this type is to
+ * reduce the boilerplate of these function definitions, and to clearly
+ * document that this pattern is something that used to be done frequently.
+ */
+type NodeCallback<T, R = void> = ( e: Error | null, result: T | null ) => R;
diff --git a/test/server/dapi/TokenedDataApiTest.ts b/test/server/dapi/TokenedDataApiTest.ts
index bd2cfc8..558f699 100644
--- a/test/server/dapi/TokenedDataApiTest.ts
+++ b/test/server/dapi/TokenedDataApiTest.ts
@@ -121,9 +121,9 @@ describe( 'TokenedDataApi', () =>
const mock_dapi = new class implements DataApi
{
request(
- given_data: DataApiInput,
- callback: ( e: Error|null, data: DataApiResult|null ) => void,
- given_id: string
+ given_data: DataApiInput,
+ callback: NodeCallback<DataApiResult>,
+ given_id: string,
): this
{
expect( given_data ).to.equal( expected_data );
@@ -141,7 +141,7 @@ describe( 'TokenedDataApi', () =>
return mock_tstore;
};
- const callback = ( e: Error|null, data: DataApiResult|null ) =>
+ const callback: NodeCallback<DataApiResult> = ( e, data ) =>
{
expect( tok_completed ).to.be.true;
@@ -197,8 +197,8 @@ describe( 'TokenedDataApi', () =>
const mock_dapi = new class implements DataApi
{
request(
- _: any,
- callback: ( e: Error|null, data: DataApiResult|null ) => void,
+ _: any,
+ callback: NodeCallback<DataApiResult>,
)
{
callback( expected_err, null );
@@ -206,7 +206,7 @@ describe( 'TokenedDataApi', () =>
}
};
- const callback = ( e: Error|null, data: DataApiResult|null ) =>
+ const callback: NodeCallback<DataApiResult> = ( e, data ) =>
{
expect( data ).to.equal( null );
expect( e ).to.equal( expected_err );