diff --git a/amplifyjs/amplifyjs-tests.ts b/amplifyjs/amplifyjs-tests.ts
index c26955348..a104d4a7c 100644
--- a/amplifyjs/amplifyjs-tests.ts
+++ b/amplifyjs/amplifyjs-tests.ts
@@ -176,8 +176,7 @@ amplify.request("twitter-mentions", { user: "amplifyjs" });
//Example:
-amplify.request.decoders.appEnvelope =
-function (data, status, xhr, success, error) {
+var appEnvelopeDecoder: amplifyDecoder = function (data, status, xhr, success, error) {
if (data.status === "success") {
success(data.data);
} else if (data.status === "fail" || data.status === "error") {
@@ -187,6 +186,17 @@ function (data, status, xhr, success, error) {
}
};
+//a new decoder can be added to the amplifyDecoders interface
+interface amplifyDecoders {
+ appEnvelope: amplifyDecoder;
+}
+
+amplify.request.decoders.appEnvelope = appEnvelopeDecoder;
+
+//but you can also just add it via an index
+amplify.request.decoders['appEnvelopeStr'] = appEnvelopeDecoder;
+
+
amplify.request.define("decoderExample", "ajax", {
url: "/myAjaxUrl",
type: "POST",
diff --git a/amplifyjs/amplifyjs.d.ts b/amplifyjs/amplifyjs.d.ts
index c8de7260a..a918b7c73 100644
--- a/amplifyjs/amplifyjs.d.ts
+++ b/amplifyjs/amplifyjs.d.ts
@@ -1,3 +1,5 @@
+///
+
// Type definitions for AmplifyJs 1.1.0
// Project: http://amplifyjs.com/
// Definitions by: Jonas Eriksson
@@ -6,8 +8,28 @@
interface amplifyRequestSettings {
resourceId: string;
data?: any;
- success?: Function;
- error?: Function;
+ success?: (...args: any[]) => void;
+ error?: (...args: any[]) => void;
+}
+
+interface amplifyDecoder {
+ (
+ data?: any,
+ status?: string,
+ xhr?: JQueryXHR,
+ success?: (...args: any[]) => void,
+ error?: (...args: any[]) => void
+ ): void
+}
+
+interface amplifyDecoders {
+ [decoderName: string]: amplifyDecoder;
+ jsSend: amplifyDecoder;
+}
+
+interface amplifyAjaxSettings extends JQueryAjaxSettings {
+ cache?: any;
+ decoder?: any /* string or amplifyDecoder */;
}
interface amplifyRequest {
@@ -39,7 +61,7 @@ interface amplifyRequest {
* cache: See the cache section for more details.
* decoder: See the decoder section for more details.
*/
- define(resourceId: string, requestType: string, settings?: any): void;
+ define(resourceId: string, requestType: string, settings?: amplifyAjaxSettings): void;
/***
* Define a custom request.
@@ -50,9 +72,9 @@ interface amplifyRequest {
* success: Callback to invoke on success.
* error: Callback to invoke on error.
*/
- define(resourceId: string, resource: Function): void;
-
- decoders: any;
+ define(resourceId: string, resource: (settings: amplifyRequestSettings) => void): void;
+
+ decoders: amplifyDecoders;
cache: any;
}