UNPKG

nativescript-toolbox-sw

Version:

Fork of nativescript-toolbox - A NativeScript module that is a composition of useful classes, tools and helpers.

872 lines (871 loc) 24.3 kB
import ApiClient = require('./apiclient'); import Application = require('application'); import Batch = require('./batch'); import BitmapFactory = require('./bitmap-factory'); import Enumerable = require('./enumerable'); import Moment = require('./moment'); import { ObservableArray } from 'data/observable-array'; import { VirtualArray } from 'data/virtual-array'; import XmlObjects = require('./xmlobjects'); /** * Stores the application name. */ export declare var AppName: string; /** * List of device orientations. */ export declare enum DeviceOrientation { /** * Landscape */ Landscape = 2, /** * Portrait */ Portrait = 1, } /** * A clipboard instance. */ export interface IClipboard { /** * Returns an object / value that is stored as JSON string in the clipboard. * * @param {Function} callback The callback with the result. * @param {T} [tag] The custom object / value for the callback. */ getObject<O>(callback: (result: IGetClipboardResult<O>, tag?: any) => void, tag?: any): any; /** * Returns a text. * * @param {Function} callback The callback with the result. * @param {T} [tag] The custom object / value for the callback. */ getText<T>(callback: (result: IGetClipboardResult<string>, tag?: T) => void, tag?: T): any; /** * Sets a value / object as JSON serialized string. * * @param {O} obj The object to set. * @param {Function} [callback] The optional callback with the result. * @param {T} [tag] The custom object / value for the callback. */ setObject<O, T>(obj: O, callback?: (result: ISetClipboardResult<O>, tag?: T) => void, tag?: T): any; /** * Sets a text. * * @param {String} txt The text to set. * @param {Function} [callback] The optional callback with the result. * @param {T} [tag] The custom object / value for the callback. */ setText<T>(txt: string, callback?: (result: ISetClipboardResult<string>, tag?: T) => void, tag?: T): any; } /** * The result of closing */ export interface ICloseDatabaseResult { /** * The error (if occured). */ error?: any; } /** * A cell. */ export interface ICell { /** * The zero based index. */ index: number; /** * The underlying row. */ row?: IRow; /** * The value. */ value: any; } /** * Config data for executing an SQL statement. */ export interface IExecuteSqlConfig { /** * The argument for the statement. */ args: any[] | ObservableArray<any> | VirtualArray<any> | Enumerable.IEnumerable<any>; /** * The optional callback. */ callback?: (result: IExecuteSqlResult) => void; /** * The statement to execute. */ sql: string; } /** * The result of a SQL execution. */ export interface IExecuteSqlResult { /** * The last inserted ID (if no error). */ id?: any; /** * The error (if occured). */ error?: any; /** * Contains the result set (if defined). */ result?: Enumerable.IEnumerable<IRow>; } /** * The result of getting a value from the clipboard. */ export interface IGetClipboardResult<T> extends IResult { /** * The value (if no error) */ value?: T; } /** * Configuration for 'invokeForConnectivity()' function. */ export interface IInvokeForConnectivityConfig<T> { /** * Is invoked on 'mobile' state. */ mobile?: (result: IInvokeForConnectivityResult<T>, tag?: T) => void; /** * Is invoked on 'mobile' state. */ none?: (result: IInvokeForConnectivityResult<T>, tag?: T) => void; /** * Is invoked on 'mobile' state. */ wifi?: (result: IInvokeForConnectivityResult<T>, tag?: T) => void; /** * Is invoked on 'mobile' state. */ unknown?: (result: IInvokeForConnectivityResult<T>, tag?: T) => void; } /** * Result for a callback of 'invokeForConnectivity()' function call. */ export interface IInvokeForConnectivityResult<T> extends IResult { /** * The custom object for the callback. */ tag?: T; /** * The type */ type?: number; } /** * Configuration for 'invokeForOrientation()' function. */ export interface IInvokeForOrientationConfig<T> { /** * The callback that is invoked if device is in landscape mode. */ landscape?: (orientation: DeviceOrientation, tag?: T) => any; /** * The callback that is invoked if device is in portrait mode. */ portrait?: (orientation: DeviceOrientation, tag?: T) => any; /** * The custom objects for the callbacks. */ tag?: T; /** * The callback that is invoked if device is in unknown mode. */ unknown?: (orientation: DeviceOrientation, tag?: T) => any; } /** * Configuration for 'invokeForPlatform()' function. */ export interface IInvokeForPlatformConfig<T> { /** * Callback that is invoked on Android. */ android?: (platform: IPlatformData, tag?: T) => any; /** * Callback that is invoked on iOS. */ ios?: (platform: IPlatformData, tag?: T) => any; /** * The custom objects for the callbacks. */ tag?: T; } /** * Config data for opening a database. */ export interface IOpenDatabaseConfig { /** * The callback for the result. */ callback: (result: IOpenDatabaseResult) => void; /** * The name of the database to open. */ name: string; /** * Open readonly or not. Default: (false) */ readOnly?: boolean; } /** * The result of opening a database. */ export interface IOpenDatabaseResult { /** * Gets the connection if succeeded. */ db?: ISQLite; /** * Gets the error (if occurred.) */ error?: any; /** * Gets the name of the data the tries to be open. */ name: string; } /** * Stores platform data. */ export interface IPlatformData { /** * Gets the underlying application object. */ app: Application.AndroidApplication | Application.iOSApplication; /** * Gets if the app runs on Android or not. */ android: boolean; /** * The application context. */ context: any; /** * Gets if the app runs on iOS or not. */ ios: boolean; /** * Gets the type of the platform */ type: Platform; /** * The native view. */ view: any; } /** * A general callback result. */ export interface IResult { /** * The result code. */ code: number; /** * The error information (if occurred). */ error?: any; } /** * A row. */ export interface IRow { /** * The cells of the row. */ cells?: ICell[]; /** * The zero based index. */ index: number; } /** * The result of setting a value in the clipboard. */ export interface ISetClipboardResult<T> extends IResult { /** * The value that has been tried to be stored. */ value: T; } /** * Result object for the callback of 'setStatusBarVisibility()' function. */ export interface ISetStatusBarVisibilityResult<T> extends IResult { /** * The actual visibility (if defined) */ isVisible?: boolean; /** * The custom submitted object. */ tag?: T; } /** * A SQLite connection. */ export interface ISQLite { /** * Closes the connection. * * @param {Function} [callback] The optional callback. */ close(callback?: (result: ICloseDatabaseResult) => void): any; /** * Gets the underlying SQLite object. */ conn: any; /** * Executes an SQL statement. */ execute(cfg: IExecuteSqlConfig): any; /** * Gets if the connection is open or not. */ isOpen: boolean; /** * Gets the name of the opened database. */ name: string; /** * Executes an SQL statement with a result. */ selectAll(cfg: IExecuteSqlConfig): any; } /** * YAML decode options. */ export interface IYamlDecodeOptions { /** * String to be used as a file path in error/warning messages. */ filename?: string; /** * Compatibility with JSON.parse behaviour. * If true, then duplicate keys in a mapping will override values rather than throwing an error. */ json?: boolean; /** * Function to call on warning messages. * Loader will throw on warnings if this function is not provided. */ onWarning?: (error: any) => void; /** * Specifies a schema to use. */ schema?: string; } /** * YAML encode options. */ export interface IYamlEncodeOptions { /** * Specifies level of nesting, when to switch from block to flow style for collections. * -1 means block style everwhere */ flowLevel?: number; /** * Indentation width to use (in spaces). */ indent?: number; /** * Set max line width. */ lineWidth?: number; /** * If true don't try to be compatible with older yaml versions. * Currently: don't quote "yes", "no" and so on, as required for YAML 1.1 */ noCompatMode?: boolean; /** * If true, don't convert duplicate objects into references. */ noRefs?: boolean; /** * Specifies a schema to use. */ schema?: string; /** * Do not throw on invalid types (like function in the safe schema) and skip pairs and single values with such types. */ skipInvalid?: boolean; /** * If true, sort keys when dumping YAML. If a function, use the function to sort the keys. */ sortKeys?: boolean; /** * "tag" => "style" map. Each tag may have own set of styles. */ styles?: any; } /** * List of known Markdown dialects */ export declare enum MarkdownDialect { /** * s. http://daringfireball.net/projects/markdown/syntax */ Gruber = 1, /** * s. http://maruku.rubyforge.org/maruku.html */ Maruku = 2, } /** * List of known platforms. */ export declare enum Platform { /** * Android */ Android = 1, /** * iOS */ iOS = 2, } /** * List of known target formats. */ export declare enum TargetFormat { /** * HTML */ Html = 1, /** * JSON */ Json = 2, } /** * Allows the device to go to sleep mode. * * @param {Function} [callback] The custom result callback. * @param {T} [tag] The custom object for the callback to use. */ export declare function allowToSleep<T>(callback?: (result: IResult, tag?: T) => void, tag?: T): void; /** * Returns a value as bitmap object. * * @param any v The input value. * @param {Boolean} [throwException] Throw exception if 'v' is invalid or return (false). * * @throws Input value is invalid. * * @return {IBitmap} The output value or (false) if input value is invalid. */ export declare function asBitmap(v: any, throwException?: boolean): BitmapFactory.IBitmap; /** * Returns a value as sequence. * * @param any v The input value. * @param {Boolean} [throwException] Throws an exception if input value is no valid value. * * @throws Invalid value. * * @return any The value as sequence or (false) if input value is no valid object. */ export declare function asEnumerable(v: any, throwException?: boolean): Enumerable.IEnumerable<any>; /** * Creates a new bitmap. * * @param {Number} width The width of the new image. * @param {Number} [height] The optional height of the new image. If not defined, the width is taken as value. * @param {ICreateBitmapOptions} [opts] Additional options for creating the bitmap. * * @return {IBitmap} The new bitmap. */ export declare function createBitmap(width: number, height?: number, opts?: BitmapFactory.ICreateBitmapOptions): BitmapFactory.IBitmap; /** * Decrypts a value / an object with AES. * * @param {String} v The value to decrypt. * * @return {T} The decrypted value. */ export declare function decrypt<T>(v: string, key: string): T; /** * Encrypts a value / an object with AES. * * @param any v The value to encrypt. * * @return {String} The encrypted value. */ export declare function encrypt(v: any, key: string): string; /** * Formats a string. * * @function format * * @param {String} formatStr The format string. * @param ...any args One or more argument for the format string. * * @return {String} The formatted string. */ export declare function format(formatStr: string, ...args: any[]): string; /** * Formats a string. * * @function formatArray * * @param {String} formatStr The format string. * @param {Array} args The list of arguments for the format string. * * @return {String} The formatted string. */ export declare function formatArray(formatStr: string, args: any[]): string; /** * Converts Markdown code. * * @param {String} md The Markdown. * @param {TargetFormat} [format] The custom output format. * @param {MarkdownDialect} [dialect] The dialect to use. * * @return {any} The converted data. */ export declare function fromMarkdown(md: string, format?: string | TargetFormat, dialect?: string | MarkdownDialect): any; /** * Alias for 'parseXml()' */ export declare function fromXml(xml: string, processNamespaces?: boolean, angularSyntax?: boolean): XmlObjects.XDocument; /** * Alias for 'parseYaml()' */ export declare function fromYaml<T>(y: any, opts?: IYamlDecodeOptions): T; /** * Tries to return the application context of the current app. * For Android this is an 'android.content.Context' object. * In iOS this is the app delegate. * * @return any The application context (if available.) */ export declare function getApplicationContext(): any; /** * Returns an object that handles the clipboard of the device. * * @return {IClipboard} The clipboard. */ export declare function getClipboard(): IClipboard; /** * Returns the native view of the app. * For Android this is an activity. * For iOS this the the root view controller. * * @return any The view object. */ export declare function getNativeView(): any; /** * Gets the current orientation of the device. * * @return {UIEnums.DeviceOrientation} The orientation (if defined). */ export declare function getOrientation(): DeviceOrientation; /** * Returns information of the current platform. * * @return {IPlatformData} The platform information. */ export declare function getPlatform(): IPlatformData; /** * Tries to return a value / object that is stored in the application settings. * * @param {string} key The name of the key (case insensitive). * @param {T} defValue The default value. * * @return {T} The value or the default value if not found. */ export declare function getValue<T>(key: string, defValue?: T): T; /** * Alias for 'uuid()' function. */ export declare function guid(separator?: string): string; /** * Generic hash function. * * @param {any} v The value to hash. * @param {string} [algo] The name of the algorithm to use (default: 'sha256'). * * @return {string} The hash. */ export declare function hash(v: any, algo?: string): string; /** * Checks if a value / object is stored in the application settings. * * @param {string} key The name of the key (case insensitive). * * @return {Boolean} Is stored or not. */ export declare function hasValue(key: string): boolean; /** * Short hand function for 'setStatusBarVisibility()'. * * @param {Function} [callback] The custom result callback to invoke. * @param {T} [tag] The custom value for the result callback. */ export declare function hideStatusBar<T>(callback?: (result: ISetStatusBarVisibilityResult<T>, tag?: T) => void, tag?: T): void; /** * Invokes logic for a specific connectivity type. * * @param {IInvokeForConnectivityConfig} cfg The configuration. * @param {T} [tag] The custom value for callback to invoke. * * @return {any} The result of the invoked callback. */ export declare function invokeForConnectivity<T>(cfg: IInvokeForConnectivityConfig<T>, tag?: T): void; /** * Invokes a callback for specific orientation mode. * * @param {IInvokeForOrientationConfig} cfg The configuration. * * @return {any} The result of a callback. */ export declare function invokeForOrientation<T>(cfg: IInvokeForOrientationConfig<T>): any; /** * Invokes an action for a specific platform. * * @param {IInvokeForPlatformContext} cfg The config data. * * @return any The result of the invoked callback. */ export declare function invokeForPlatform<T>(cfg: IInvokeForPlatformConfig<T>): any; /** * Checks if the device is in debug mode or not. * * @return {Boolean} Device runs in debug mode or not. */ export declare function isDebug(): boolean; /** * Checks if a value is a sequence. * * @param any v The value to check. * * @return {Boolean} Is sequence or not. */ export declare function isEnumerable(v: any): boolean; /** * Keeps the device awake. * * @param {Function} [callback] The custom result callback. * @param {T} [tag] The custom object for the callback. */ export declare function keepAwake<T>(callback?: (result: IResult, tag?: T) => void, tag?: T): void; /** * Converts Markdown code to parsable JSON object. * * @oaram {String} md The Markdown code. * @param {MarkdownDialect} [dialect] The custom dialect to use. * * @return {Object} The Markdown as object. */ export declare function markdownToJson(md: string, dialect?: string | MarkdownDialect): any; /** * Converts Markdown code to simple HTML. * * @oaram {String} md The Markdown code. * @param {MarkdownDialect} [dialect] The custom dialect to use. * * @return {String} The Markdown as HTML code. */ export declare function markdownToHtml(md: string, dialect?: string | MarkdownDialect): string; /** * Returns the MD5 hash of a value. * * @param any v The value to hash. * * @return {String} The hash. */ export declare function md5(v: any): string; /** * Creates a new batch. * * @return {IBatchOperation} The first operation of the created batch. */ export declare function newBatch(firstAction: (ctx: Batch.IBatchOperationContext) => void): Batch.IBatchOperation; /** * Creates a new client. * * @param any config The configuration data / base URL for the client. * * @return {IApiClient} The new client. */ export declare function newClient(config: ApiClient.IApiClientConfig | string): ApiClient.IApiClient; /** * Gets the current time. * * @return {Moment} The current time. */ export declare function now(): Moment.Moment; /** * Opens a database connection. * * @param {String} dbName The name of the database to open. * @param {Function} callback The callback with the result data. */ export declare function openDatabase(cfg: IOpenDatabaseConfig): void; /** * Opens a URL on the device. * * @param {String} url The URL to open. * * @return {Boolean} Operation was successful or not. */ export declare function openUrl(url: string): boolean; /** * Opens the WiFi settings on the device. * * @return {Boolean} Operation was successful or not. */ export declare function openWifiSettings(): boolean; /** * Parses a XML string. * * @param {String} xml The string to parse. * @param {Boolean} [processNamespaces] Process namespaces or not. * @param {Boolean} [angularSyntax] Handle Angular syntax or not. * * @return {XDocument} The new document. * * @throws Parse error. */ export declare function parseXml(xml: string, processNamespaces?: boolean, angularSyntax?: boolean): XmlObjects.XDocument; /** * Parses YAML data to an object. * * @param any y The YAML data. * @param {IYamlDecodeOptions} [opts] The custom options to use. * * @return {T} The YAML data as object. * * @throws Parse error. */ export declare function parseYaml<T>(y: any, opts?: IYamlDecodeOptions): T; /** * Removes a value. * * @param {string} key The name of the key (case insensitive). * * @return {Boolean} Value was removed or not. */ export declare function removeValue(key: string): boolean; /** * Runs an action on the UI thread. * * @param {Function} action The action to invoke. * @param {T} [state] The optional state object for the action. * @param {Function} onError The custom action that is invoked on error. * * @return {Boolean} Operation was successful or not. */ export declare function runOnUI<T>(action: (state: T) => void, state?: T, onError?: (err: any, state: T) => void): boolean; /** * Changes the visibility of the device's status bar. * * @param {Boolean} isVisible Status bar should be visible (true) or not (false) * @param {Function} [callback] The optional callback to call. * @param {T} [tag] The custom object for the callback. */ export declare function setStatusBarVisibility<T>(isVisible: boolean, callback?: (result: ISetStatusBarVisibilityResult<T>) => void, tag?: T): void; /** * Stores a value / object in the application settings. * * @param {T} v The value / object to store. * @param {string} key The name of the key (case insensitive). * * @return {Boolean} Operation was successfull or not. */ export declare function setValue<T>(v: T, key: string): boolean; /** * Returns the SHA-1 hash of a value. * * @param any v The value to hash. * * @return {String} The hash. */ export declare function sha1(v: any): string; /** * Returns the SHA-256 hash of a value. * * @param any v The value to hash. * * @return {String} The hash. */ export declare function sha256(v: any): string; /** * Returns the SHA-3 hash of a value. * * @param any v The value to hash. * * @return {String} The hash. */ export declare function sha3(v: any): string; /** * Returns the SHA-384 hash of a value. * * @param any v The value to hash. * * @return {String} The hash. */ export declare function sha384(v: any): string; /** * Returns the SHA-512 hash of a value. * * @param any v The value to hash. * * @return {String} The hash. */ export declare function sha512(v: any): string; /** * Short hand function for 'setStatusBarVisibility()'. * * @param {Function} [callback] The custom result callback to invoke. * @param {T} [tag] The custom value for the result callback. */ export declare function showStatusBar<T>(callback?: (result: ISetStatusBarVisibilityResult<T>, tag?: T) => void, tag?: T): void; /** * Starts monitoring for connectivity (changes). * * @param {IInvokeForConnectivityConfig} cfg The configuration. * @param {T} [tag] The custom value for callback to invoke. */ export declare function startMonitoringForConnectivity<T>(cfg: IInvokeForConnectivityConfig<T>, tag?: T): void; /** * Stops monitoring for connectivity. */ export declare function stopMonitoringForConnectivity(): void; /** * Converts an object / a value to YAML. * * @param any v The value to convert. * @param {IYamlEncodeOptions} [opts] The custom options to use. * * @return {String} The YAML data. */ export declare function toYaml(v: any, opts?: IYamlEncodeOptions): string; /** * Creates a new unique ID / GUID. * * @param {string} [separator] The custom separator to use. * * s. http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript */ export declare function uuid(separator?: string): string; /** * Prefix for value keys. */ export declare var ValueKeyPrefix: string; /** * Vibrates the device. * * @param {number} [msec] The custom number of milliseconds. Default: 500 */ export declare function vibrate(msec?: number): any;