diff --git a/offline-js/offline-js-tests.ts b/offline-js/offline-js-tests.ts new file mode 100644 index 0000000000..d43f091fa6 --- /dev/null +++ b/offline-js/offline-js-tests.ts @@ -0,0 +1,40 @@ +// Test file for offline-js. +/// + +Offline.options = { + checkOnLoad: false, + interceptRequests: true, + checks: { + xhr: { url: '/connection-test' }, + image: { url: 'my-image.gif' }, + active: 'image' + }, + reconnect: { + initialDelay: 3, + delay: 60 + }, + requests: true, + game: false +}; + +Offline.check(); + +Offline.state; + +var handler = () => { }, + context = {}; + +Offline.on("up", handler, context); +Offline.on("down", handler, context); +Offline.on("confirmed-up", handler, context); +Offline.on("confirmed-down", handler, context); +Offline.on("checking", handler, context); +Offline.on("reconnect:started", handler, context); +Offline.on("reconnect:stopped", handler, context); +Offline.on("reconnect:tick", handler, context); +Offline.on("reconnect:connecting", handler, context); +Offline.on("reconnect:failure", handler, context); +Offline.on("requests:flush", handler, context); +Offline.on("requests:hold", handler, context); + +Offline.off("up", handler); diff --git a/offline-js/offline-js.d.ts b/offline-js/offline-js.d.ts new file mode 100644 index 0000000000..f52b47e0cf --- /dev/null +++ b/offline-js/offline-js.d.ts @@ -0,0 +1,64 @@ +// Type definitions for Offline 0.7.14 +// Project: https://github.com/HubSpot/offline +// Definitions by: Chris Wrench +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +declare var Offline: { + options: OfflineOptions; + check: () => void; + state: string; + + on(event: "up", handler: (e: Event) => any, context?: any): void; + on(event: "down", handler: (e: Event) => any, context?: any): void; + on(event: "confirmed-up", handler: (e: Event) => any, context?: any): void; + on(event: "confirmed-down", handler: (e: Event) => any, context?: any): void; + on(event: "checking", handler: (e: Event) => any, context?: any): void; + on(event: "reconnect:started", handler: (e: Event) => any, context?: any): void; + on(event: "reconnect:stopped", handler: (e: Event) => any, context?: any): void; + on(event: "reconnect:tick", handler: (e: Event) => any, context?: any): void; + on(event: "reconnect:connecting", handler: (e: Event) => any, context?: any): void; + on(event: "reconnect:failure", handler: (e: Event) => any, context?: any): void; + on(event: "requests:flush", handler: (e: Event) => any, context?: any): void; + on(event: "requests:hold", handler: (e: Event) => any, context?: any): void; + on(event: string, handler: (e: Event) => any, context?: any): void; + + off(event: "up", handler?: (e: Event) => any): void; + off(event: "down", handler?: (e: Event) => any): void; + off(event: "confirmed-up", handler?: (e: Event) => any): void; + off(event: "confirmed-down", handler?: (e: Event) => any): void; + off(event: "checking", handler?: (e: Event) => any): void; + off(event: "reconnect:started", handler?: (e: Event) => any): void; + off(event: "reconnect:stopped", handler?: (e: Event) => any): void; + off(event: "reconnect:tick", handler?: (e: Event) => any): void; + off(event: "reconnect:connecting", handler?: (e: Event) => any): void; + off(event: "reconnect:failure", handler?: (e: Event) => any): void; + off(event: "requests:flush", handler?: (e: Event) => any): void; + off(event: "requests:hold", handler?: (e: Event) => any): void; + off(event: string, handler?: (e: Event) => any): void; +}; + +interface OfflineOptions { + // TODO Should these types be `boolean|Function`? + // The project documentation is not clear here. + checkOnLoad?: boolean; + interceptRequests?: boolean; + requests?: boolean; + game?: boolean; + checks?: OfflineChecks; + reconnect: { + initialDelay: number; + delay: number; + }; +} + +interface OfflineChecks { + // TODO "xhr" and "image" probably have different options. + // However, this is not stated in the project documentation. + xhr?: OfflineCheck; + image?: OfflineCheck; + active?: string; +} + +interface OfflineCheck { + url: string; +}