diff --git a/xmpp-jid/index.d.ts b/xmpp-jid/index.d.ts new file mode 100644 index 0000000000..678e306abc --- /dev/null +++ b/xmpp-jid/index.d.ts @@ -0,0 +1,13 @@ +// Type definitions for @xmpp/jid 0.0 +// Project: github.com/node-xmpp/node-xmpp/ +// Definitions by: PJakcson +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.1 +import {JID} from './lib/JID'; + +export declare function createJID(local: string, domain: string, resource: string): JID; + +export {JID} from './lib/JID'; + +export declare function equal(a: JID, b: JID): boolean; +export declare function is(a: any): boolean; diff --git a/xmpp-jid/lib/JID.d.ts b/xmpp-jid/lib/JID.d.ts new file mode 100644 index 0000000000..a1d2558b30 --- /dev/null +++ b/xmpp-jid/lib/JID.d.ts @@ -0,0 +1,46 @@ +/** + * Created by marcneumann on 17.02.17. + */ + +export declare class JID { + local: string; + domain: string; + resource: string; + + constructor(local: string, domain?: string, resource?: string); + + parseJID(jid: string): void; + + toString(unescape?: any): string; + + /** + * Convenience method to distinguish users + **/ + bare(): JID; + + /** + * Comparison function + **/ + equals(other: JID): boolean; + + /** + * http://xmpp.org/rfcs/rfc6122.html#addressing-localpart + **/ + setLocal(local: string, escape?: any): void; + + getLocal(unescape?: any): string; + + /** + * http://xmpp.org/rfcs/rfc6122.html#addressing-domain + */ + setDomain(value: string): void; + + getDomain(): string; + + /** + * http://xmpp.org/rfcs/rfc6122.html#addressing-resourcepart + */ + setResource(value: string): void; + + getResource(): string; +} diff --git a/xmpp-jid/tsconfig.json b/xmpp-jid/tsconfig.json new file mode 100644 index 0000000000..f4d02187a2 --- /dev/null +++ b/xmpp-jid/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "xmpp-jid-tests.ts" + ] +} \ No newline at end of file diff --git a/xmpp-jid/tslint.json b/xmpp-jid/tslint.json new file mode 100644 index 0000000000..ec365f164b --- /dev/null +++ b/xmpp-jid/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "../tslint.json" +} diff --git a/xmpp-jid/xmpp-jid-tests.ts b/xmpp-jid/xmpp-jid-tests.ts new file mode 100644 index 0000000000..6b33b2c349 --- /dev/null +++ b/xmpp-jid/xmpp-jid-tests.ts @@ -0,0 +1,40 @@ +import {JID} from './index'; + +/* + * All return an instance of JID.JID, the new operator is optional. + */ +let addr = new JID('alice@wonderland.net/rabbithole'); // OK +addr = new JID('alice', 'wonderland.net', 'rabbithole'); // BEST; see section on escaping below + +/* + * local + */ +addr.local = 'alice'; +addr.local; // alice +// same as +addr.setLocal('alice'); +addr.getLocal(); // alice + +/* + * domain + */ +addr.domain = 'wonderland.net'; +addr.domain; // wonderland.net +// same as +addr.setDomain('wonderland.net'); +addr.getDomain(); // wonderland.net + +/* + * resource + */ +addr.resource = 'rabbithole'; +addr.resource; // rabbithole +// same as +addr.setResource('rabbithole'); +addr.getResource(); // rabbithole + +addr.toString(); // alice@wonderland.net/rabbithole +addr.bare(); // returns a JID without resource + +let some_jid = new JID('is', 'a', 'test'); +addr.equals(some_jid); // returns true if the two JIDs are equal, false otherwise