From 48d9c7f2dc3f7584d296b018dd24e77cace8ffa8 Mon Sep 17 00:00:00 2001 From: reppners Date: Sat, 31 Jan 2015 16:25:15 +0100 Subject: [PATCH 01/11] + node-byline typings + test --- node-byline/node-byline-tests.ts | 47 ++++++++++++++++++++++++++++++++ node-byline/node-byline.d.ts | 38 ++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 node-byline/node-byline-tests.ts create mode 100644 node-byline/node-byline.d.ts diff --git a/node-byline/node-byline-tests.ts b/node-byline/node-byline-tests.ts new file mode 100644 index 000000000..10d92ec98 --- /dev/null +++ b/node-byline/node-byline-tests.ts @@ -0,0 +1,47 @@ +/** + * Created by stefansteinhart on 31.01.15. + */ + +/// + +import fs = require( 'fs' ); +import byline = require( 'byline' ); + +//TODO can this be typed in an ambient way? +//var stream = byline( fs.createReadStream( 'sample.txt', {encoding: 'utf8'} ) ); + +var stream = byline.createStream( fs.createReadStream( 'sample.txt', {encoding: 'utf8'} ) ); + +stream.on('data', function(line:string) { + console.log(line); +}); + +stream = byline.createStream(stream); + +stream.on('data', function(line:string) { + console.log(line); +}); + +var input = fs.createReadStream('sample.txt'); +stream.pipe(fs.createWriteStream('nolines.txt')); + +var lineStream = byline.createStream(); +input.pipe(lineStream); + +var output = fs.createWriteStream('test.txt'); +lineStream.pipe(output); + +stream.on('readable', function() { + var line:string; + while (null !== (line = stream.read())) { + console.log(line); + } +}); + +var LineStream = require('byline').LineStream; + +var output = fs.createWriteStream('nolines.txt'); + +var lineStream:byline.LineStream = new LineStream(); +input.pipe(lineStream); +lineStream.pipe(output); \ No newline at end of file diff --git a/node-byline/node-byline.d.ts b/node-byline/node-byline.d.ts new file mode 100644 index 000000000..b12a40e8a --- /dev/null +++ b/node-byline/node-byline.d.ts @@ -0,0 +1,38 @@ +// Type definitions for node-byline 4.2.1 +// Project: https://github.com/jahewson/node-byline +// Definitions by: Stefan Steinhart +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module "byline" { + import stream = require("stream"); + + export interface LineStreamOptions extends stream.TransformOptions { + keepEmptyLines: boolean; + } + + export interface LineStream extends stream.Transform { + } + + export interface LineStreamCreatable extends LineStream { + new (options?:LineStreamOptions):LineStream + } + + //TODO is it possible to declare static factory functions without name (directly on the module) + // + // JS: + // // convinience API + // module.exports = function(readStream, options) { + // return module.exports.createStream(readStream, options); + // }; + // + // TS: + // ():LineStream; // same as createStream():LineStream + // (stream:stream.Stream, options?:LineStreamOptions):LineStream; // same as createStream(stream, options?):LineStream + + export function createStream():LineStream; + export function createStream(stream:NodeJS.ReadableStream, options?:LineStreamOptions):LineStream; + + export var LineStream:LineStreamCreatable; +} \ No newline at end of file From cbafb391f12065326cef3550d76e42e02abddaee Mon Sep 17 00:00:00 2001 From: reppners Date: Sat, 31 Jan 2015 16:52:47 +0100 Subject: [PATCH 02/11] + node_mdns typings + test --- node_mdns/node_mdns-tests.ts | 84 ++++++++++ node_mdns/node_mdns.d.ts | 295 +++++++++++++++++++++++++++++++++++ 2 files changed, 379 insertions(+) create mode 100644 node_mdns/node_mdns-tests.ts create mode 100755 node_mdns/node_mdns.d.ts diff --git a/node_mdns/node_mdns-tests.ts b/node_mdns/node_mdns-tests.ts new file mode 100644 index 000000000..9c7e13e33 --- /dev/null +++ b/node_mdns/node_mdns-tests.ts @@ -0,0 +1,84 @@ +/** + * Created by stefansteinhart on 30.01.15. + */ + +/// + +var mdns = require('mdns') + +var ad:MDNS.Advertisement = mdns.createAdvertisement(mdns.tcp('http'), 4321); + +ad.start(); + +var browser = mdns.createBrowser(mdns.tcp('http')); + +browser.on('serviceUp', function(service:MDNS.Service) { + console.log("service up: ", service); +}); +browser.on('serviceDown', function(service:MDNS.Service) { + console.log("service down: ", service); +}); + +browser.start(); + +var r0 = mdns.tcp('http') // string form: _http._tcp + , r1 = mdns.udp('osc', 'api-v1') // string form: _osc._udp,_api-v1 + , r2 = new mdns.ServiceType('http', 'tcp') // string form: _http._tcp + , r3 = mdns.makeServiceType('https', 'tcp') // string form: _https._tcp + ; + +var txt_record = { + name: 'bacon' + , chunky: true + , strips: 5 +}; +var ad:MDNS.Advertisement = mdns.createAdvertisement(mdns.tcp('http'), 4321, {txtRecord: txt_record}); + +var sequence = [ + mdns.rst.DNSServiceResolve() + , mdns.rst.DNSServiceGetAddrInfo({families: [4] }) +]; + +var browser = mdns.createBrowser(mdns.tcp('http'), {resolverSequence: sequence}); + +interface HammerTimeService extends MDNS.Service { + hammerTime:Date; +} + +function MCHammer(options:any) { + options = options || {}; + return function MCHammer(service:HammerTimeService, next:()=>void) { + console.log('STOP!'); + setTimeout(function() { + console.log('hammertime...'); + service.hammerTime = new Date(); + next(); + }, options.delay || 1000); + } +} + +var browser = mdns.createBrowser( mdns.tcp('http') + , { networkInterface: mdns.loopbackInterface()}); + +var ad:MDNS.Advertisement; + +function createAdvertisement() { + try { + ad = mdns.createAdvertisement(mdns.tcp('http'), 1337); + ad.on('error', handleError); + ad.start(); + } catch (ex) { + handleError(ex); + } +} + +function handleError(error:MDNS.DnsSdError) { + switch (error.errorCode) { + case mdns.kDNSServiceErr_Unknown: + console.warn(error); + setTimeout(createAdvertisement, 5000); + break; + default: + throw error; + } +} \ No newline at end of file diff --git a/node_mdns/node_mdns.d.ts b/node_mdns/node_mdns.d.ts new file mode 100755 index 000000000..06941a104 --- /dev/null +++ b/node_mdns/node_mdns.d.ts @@ -0,0 +1,295 @@ +// Type definitions for node_mdns +// Project: https://github.com/agnat/node_mdns +// Definitions by: Stefan Steinhart +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +// interface for extending with custom resolvers +interface MDNSResolverSequenceTasks { + +} + +declare module MDNS { + + // --- Error --- + + interface DnsSdError extends Error { + errorCode?:number; + } + + // --- Ads --- + + interface AdvertisementOptions { + name?:string; + interfaceIndex?:number; + networkInterface?:string; + txtRecord?:any; + host?:any; + domain?:any; + flags?:any; + context?:any; + } + + interface AdvertisementCreatable { + new(serviceType:ServiceType, port:number, options?:AdvertisementOptions, callback?:(error:DnsSdError, service:Service)=>void):Advertisement; + } + + interface Advertisement extends NodeJS.EventEmitter { + start():void; + stop():void; + } + + // --- Browser --- + + interface BrowserOptions { + resolverSequence?:Array<(service:Service, next:()=>void)=>boolean>; + interfaceIndex?:number; + networkInterface?:string; + domain?:any; + context?:any; + flags?:any; + } + + interface Browser extends NodeJS.EventEmitter { + start():any; + stop():any; + } + + interface BrowserStatic { + new(serviceType:ServiceType, options?:BrowserOptions):Browser; + defaultResolverSequence:Array<(service:Service, next:()=>void)=>boolean> + } + + // --- Services --- + + interface Service { + addresses:Array; + flags:number; + fullname:string; + host:string; + interfaceIndex: number; + name?:string; + networkInterface:string; + port:number; + replyDomain:string; + type:ServiceType; + } + + interface ServiceType { + new(serviceTypeIdentifier:string):ServiceType; + new(name:string, protocol:string, ...subtypes:string[]):ServiceType; + new(serviceTypeIdentifier:Array):ServiceType; + new(serviceTypeIdentifier:{name:string; protocol:string; subtypes?:Array}):ServiceType; + new(serviceType:ServiceType):ServiceType; + + fullyQualified:boolean; + name:string; + protocol:string; + subtypes:Array; + + toString():string; + fromString(serviceTypeIdentifier:string):ServiceType; + + toArray():Array; + fromArray(serviceTypeIdentifier:Array):ServiceType; + + fromJSON(serviceTypeIdentifier:{name:string; protocol:string; subtypes?:Array}):ServiceType; + fromJSON(serviceType:ServiceType):ServiceType; + } + + interface DefaultResolverSequenceTasks extends MDNSResolverSequenceTasks { + DNSServiceResolve(options?:{flags:any}):(service:Service, next:()=>void)=>boolean; + DNSServiceGetAddrInfo(options?:any):(service:Service, next:()=>void)=>boolean; + getaddrinfo(options?:any):(service:Service, next:()=>void)=>boolean; + makeAddressesUnique():(service:Service, next:()=>void)=>boolean; + filterAddresses(fn:(address:string, index?:number, addresses?:Array)=>boolean):void; + logService():void; + } + + // --- Statics & Classes --- + + var Advertisement:AdvertisementCreatable; + var Browser:BrowserStatic; + var ServiceType:ServiceType; + var rst:DefaultResolverSequenceTasks; + + // static functions + + function tcp(name:string, ...subtypes:string[]):ServiceType; + + function udp(name:string, ...subtypes:string[]):ServiceType; + + function makeServiceType(name:string, protocol:string, ...subtypes:string[]):ServiceType; + + function makeServiceType(serviceTypeIdentifier:string):ServiceType; + + function makeServiceType(serviceTypeIdentifier:Array):ServiceType; + + function makeServiceType(serviceTypeIdentifier:{name:string; protocol:string; subtypes?:Array}):ServiceType; + + function makeServiceType(serviceType:ServiceType):ServiceType; + + function createBrowser(serviceType:ServiceType, options?:BrowserOptions):Browser; + + function createAdvertisement(serviceType:ServiceType, port:number, options?:AdvertisementOptions, callback?:(error:DnsSdError, service:Service)=>void):Advertisement; + + function resolve(service:Service, sequence?:Array<(service:Service, next:()=>void)=>boolean>, callback?:(error:DnsSdError, service:Service)=>void):void; + + function browseThemAll(options:BrowserOptions):Browser; + + function loopbackInterface():any; + + // constants + + var isAvahi:boolean; + + // -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- + + //Constants from dns_sd.h (C-Code of Bonjour -> see https://developer.apple.com/library/mac/documentation/Networking/Reference/DNSServiceDiscovery_CRef/Reference/reference.html) + + var _DNS_SD_H:number; + + var kDNSServiceMaxDomainName:string; + var kDNSServiceMaxServiceName:number; + var kDNSServiceOutputFlags:any; + var kDNSServiceProperty_DaemonVersion:number; + + var kDNSServiceClass_IN:number; + + var kDNSServiceErr_NoError:number; + var kDNSServiceErr_Unknown:number; + var kDNSServiceErr_NoSuchName:number; + var kDNSServiceErr_NoMemory:number; + var kDNSServiceErr_BadParam:number; + var kDNSServiceErr_BadReference:number; + var kDNSServiceErr_BadState:number; + var kDNSServiceErr_BadFlags:number; + var kDNSServiceErr_Unsupported:number; + var kDNSServiceErr_NotInitialized:number; + var kDNSServiceErr_AlreadyRegistered:number; + var kDNSServiceErr_NameConflict:number; + var kDNSServiceErr_Invalid:number; + var kDNSServiceErr_Firewall:number; + var kDNSServiceErr_Incompatible:number; + var kDNSServiceErr_BadInterfaceIndex:number; + var kDNSServiceErr_Refused:number; + var kDNSServiceErr_NoSuchRecord:number; + var kDNSServiceErr_NoAuth:number; + var kDNSServiceErr_NoSuchKey:number; + var kDNSServiceErr_NATTraversal:number; + var kDNSServiceErr_DoubleNAT:number; + var kDNSServiceErr_BadTime:number; + var kDNSServiceErr_BadSig:number; + var kDNSServiceErr_BadKey:number; + var kDNSServiceErr_Transient:number; + var kDNSServiceErr_ServiceNotRunning:number; + var kDNSServiceErr_NATPortMappingUnsupported:number; + var kDNSServiceErr_NATPortMappingDisabled:number; + var kDNSServiceErr_NoRouter:number; + var kDNSServiceErr_PollingMode:number; + var kDNSServiceErr_Timeout:number; + + var kDNSServiceType_A:number; + var kDNSServiceType_NS:number; + var kDNSServiceType_MD:number; + var kDNSServiceType_MF:number; + var kDNSServiceType_CNAME:number; + var kDNSServiceType_SOA:number; + var kDNSServiceType_MB:number; + var kDNSServiceType_MG:number; + var kDNSServiceType_MR:number; + var kDNSServiceType_NULL:number; + var kDNSServiceType_WKS:number; + var kDNSServiceType_PTR:number; + var kDNSServiceType_HINFO:number; + var kDNSServiceType_MINFO:number; + var kDNSServiceType_MX:number; + var kDNSServiceType_TXT:number; + var kDNSServiceType_RP:number; + var kDNSServiceType_AFSDB:number; + var kDNSServiceType_X25:number; + var kDNSServiceType_ISDN:number; + var kDNSServiceType_RT:number; + var kDNSServiceType_NSAP:number; + var kDNSServiceType_NSAP_PTR:number; + var kDNSServiceType_SIG:number; + var kDNSServiceType_KEY:number; + var kDNSServiceType_PX:number; + var kDNSServiceType_GPOS:number; + var kDNSServiceType_AAAA:number; + var kDNSServiceType_LOC:number; + var kDNSServiceType_NXT:number; + var kDNSServiceType_EID:number; + var kDNSServiceType_NIMLOC:number; + var kDNSServiceType_SRV:number; + var kDNSServiceType_ATMA:number; + var kDNSServiceType_NAPTR:number; + var kDNSServiceType_KX:number; + var kDNSServiceType_CERT:number; + var kDNSServiceType_A6:number; + var kDNSServiceType_DNAME:number; + var kDNSServiceType_SINK:number; + var kDNSServiceType_OPT:number; + var kDNSServiceType_APL:number; + var kDNSServiceType_DS:number; + var kDNSServiceType_SSHFP:number; + var kDNSServiceType_IPSECKEY:number; + var kDNSServiceType_RRSIG:number; + var kDNSServiceType_NSEC:number; + var kDNSServiceType_DNSKEY:number; + var kDNSServiceType_DHCID:number; + var kDNSServiceType_NSEC3:number; + var kDNSServiceType_NSEC3PARAM:number; + var kDNSServiceType_HIP:number; + var kDNSServiceType_SPF:number; + var kDNSServiceType_UINFO:number; + var kDNSServiceType_UID:number; + var kDNSServiceType_GID:number; + var kDNSServiceType_UNSPEC:number; + var kDNSServiceType_TKEY:number; + var kDNSServiceType_TSIG:number; + var kDNSServiceType_IXFR:number; + var kDNSServiceType_AXFR:number; + var kDNSServiceType_MAILB:number; + var kDNSServiceType_MAILA:number; + var kDNSServiceType_ANY:number; + + var kDNSServiceFlagsMoreComing:number; + var kDNSServiceFlagsAdd:number; + var kDNSServiceFlagsDefault:number; + var kDNSServiceFlagsNoAutoRename:number; + var kDNSServiceFlagsShared:number; + var kDNSServiceFlagsUnique:number; + var kDNSServiceFlagsBrowseDomains:number; + var kDNSServiceFlagsRegistrationDomains:number; + var kDNSServiceFlagsLongLivedQuery:number; + var kDNSServiceFlagsAllowRemoteQuery:number; + var kDNSServiceFlagsForceMulticast:number; + var kDNSServiceFlagsKnownUnique:number; + var kDNSServiceFlagsReturnIntermediates:number; + var kDNSServiceFlagsNonBrowsable:number; + var kDNSServiceFlagsShareConnection:number; + var kDNSServiceFlagsSuppressUnusable:number; + var kDNSServiceFlagsWakeOnResolve:number; + var kDNSServiceFlagsBackgroundTrafficClass:number; + var kDNSServiceFlagsIncludeAWDL:number; + var kDNSServiceFlagsValidate:number; + var kDNSServiceFlagsSecure:number; + var kDNSServiceFlagsInsecure:number; + var kDNSServiceFlagsBogus:number; + var kDNSServiceFlagsIndeterminate:number; + var kDNSServiceFlagsUnicastResponse:number; + var kDNSServiceFlagsValidateOptional:number; + var kDNSServiceFlagsWakeOnlyService:number; + + var kDNSServiceProtocol_IPv4:number; + var kDNSServiceProtocol_IPv6:number; + var kDNSServiceProtocol_UDP:number; + var kDNSServiceProtocol_TCP:number; +} + +declare module "mdns" { + + export = MDNS; +} \ No newline at end of file From 8785bc9d4df0f60f1e13f5dbe37e804e76cbd165 Mon Sep 17 00:00:00 2001 From: reppners Date: Wed, 4 Feb 2015 20:53:22 +0100 Subject: [PATCH 03/11] + rename to byline --- node-byline/node-byline-tests.ts => byline/byline-tests.ts | 2 +- node-byline/node-byline.d.ts => byline/byline.d.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename node-byline/node-byline-tests.ts => byline/byline-tests.ts (96%) rename node-byline/node-byline.d.ts => byline/byline.d.ts (96%) diff --git a/node-byline/node-byline-tests.ts b/byline/byline-tests.ts similarity index 96% rename from node-byline/node-byline-tests.ts rename to byline/byline-tests.ts index 10d92ec98..42de3d5d9 100644 --- a/node-byline/node-byline-tests.ts +++ b/byline/byline-tests.ts @@ -2,7 +2,7 @@ * Created by stefansteinhart on 31.01.15. */ -/// +/// import fs = require( 'fs' ); import byline = require( 'byline' ); diff --git a/node-byline/node-byline.d.ts b/byline/byline.d.ts similarity index 96% rename from node-byline/node-byline.d.ts rename to byline/byline.d.ts index b12a40e8a..6dac6ad50 100644 --- a/node-byline/node-byline.d.ts +++ b/byline/byline.d.ts @@ -1,4 +1,4 @@ -// Type definitions for node-byline 4.2.1 +// Type definitions for byline 4.2.1 // Project: https://github.com/jahewson/node-byline // Definitions by: Stefan Steinhart // Definitions: https://github.com/borisyankov/DefinitelyTyped From 93d6dd7a355f7943a9426a85234a706f3910251a Mon Sep 17 00:00:00 2001 From: reppners Date: Wed, 4 Feb 2015 20:58:25 +0100 Subject: [PATCH 04/11] + moved interface into module since typescript allows module extension + renamed to mdns --- node_mdns/node_mdns-tests.ts => mdns/mdns-tests.ts | 2 +- node_mdns/node_mdns.d.ts => mdns/mdns.d.ts | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) rename node_mdns/node_mdns-tests.ts => mdns/mdns-tests.ts (98%) rename node_mdns/node_mdns.d.ts => mdns/mdns.d.ts (99%) diff --git a/node_mdns/node_mdns-tests.ts b/mdns/mdns-tests.ts similarity index 98% rename from node_mdns/node_mdns-tests.ts rename to mdns/mdns-tests.ts index 9c7e13e33..20a336025 100644 --- a/node_mdns/node_mdns-tests.ts +++ b/mdns/mdns-tests.ts @@ -2,7 +2,7 @@ * Created by stefansteinhart on 30.01.15. */ -/// +/// var mdns = require('mdns') diff --git a/node_mdns/node_mdns.d.ts b/mdns/mdns.d.ts similarity index 99% rename from node_mdns/node_mdns.d.ts rename to mdns/mdns.d.ts index 06941a104..032d7c5af 100755 --- a/node_mdns/node_mdns.d.ts +++ b/mdns/mdns.d.ts @@ -5,11 +5,6 @@ /// -// interface for extending with custom resolvers -interface MDNSResolverSequenceTasks { - -} - declare module MDNS { // --- Error --- @@ -98,6 +93,11 @@ declare module MDNS { fromJSON(serviceType:ServiceType):ServiceType; } + // interface for extending with custom resolvers + interface MDNSResolverSequenceTasks { + + } + interface DefaultResolverSequenceTasks extends MDNSResolverSequenceTasks { DNSServiceResolve(options?:{flags:any}):(service:Service, next:()=>void)=>boolean; DNSServiceGetAddrInfo(options?:any):(service:Service, next:()=>void)=>boolean; From d34679d3629e4ea3e192676957e96f33296c3791 Mon Sep 17 00:00:00 2001 From: Louis-Philippe Perras Date: Wed, 4 Feb 2015 18:08:11 -0500 Subject: [PATCH 05/11] Allowed JQuery object to the element Validator. --- jquery.validation/jquery.validation.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jquery.validation/jquery.validation.d.ts b/jquery.validation/jquery.validation.d.ts index f8b6ca70c..118b19ef6 100644 --- a/jquery.validation/jquery.validation.d.ts +++ b/jquery.validation/jquery.validation.d.ts @@ -186,7 +186,7 @@ interface Validator * * @param element An element to validate, must be inside the validated form. eg "#myselect" */ - element(element: string): boolean; + element(element: string|JQuery): boolean; /** * Validates the form, returns true if it is valid, false otherwise. */ From e8a6d12dc7d0321d5a2b44b655d3f3aa7c7b2391 Mon Sep 17 00:00:00 2001 From: Louis-Philippe Perras Date: Wed, 4 Feb 2015 18:09:38 -0500 Subject: [PATCH 06/11] Updated the tests test JQuery param. Added a new test to validate that the element union now accepts JQuery object. --- jquery.validation/jquery.validation-tests.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/jquery.validation/jquery.validation-tests.ts b/jquery.validation/jquery.validation-tests.ts index fcc22d296..5a6a10770 100644 --- a/jquery.validation/jquery.validation-tests.ts +++ b/jquery.validation/jquery.validation-tests.ts @@ -187,6 +187,7 @@ function test_methods() { }); $("#myform").validate().form(); $("#myform").validate().element("#myselect"); + $("#myform").validate().element($("#myselect")); var validator = $("#myform").validate(); validator.resetForm(); validator.showErrors({ "firstname": "I know that your firstname is Pete, Pete!" }); From 684b09492d8d14e57bb3e855da3654ecb401a606 Mon Sep 17 00:00:00 2001 From: Ilya Mochalov Date: Thu, 5 Feb 2015 07:21:44 +0500 Subject: [PATCH 07/11] Added the Connection.id property to sockjs-node definitions --- sockjs-node/sockjs-node.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/sockjs-node/sockjs-node.d.ts b/sockjs-node/sockjs-node.d.ts index e054fe2eb..c3c32507e 100644 --- a/sockjs-node/sockjs-node.d.ts +++ b/sockjs-node/sockjs-node.d.ts @@ -45,6 +45,7 @@ declare module "sockjs" { prefix: string; protocol: string; readyState: number; + id: string; close(code?: string, reason?: string): boolean; destroy(): void; From f087c3c0edb66463974920e47753e3b1b01d6475 Mon Sep 17 00:00:00 2001 From: Han Lin Yap Date: Thu, 5 Feb 2015 09:32:02 +0100 Subject: [PATCH 08/11] Add Ractive definition as Ghost module --- ractive/ractive-tests.ts | 26 +++ ractive/ractive.d.ts | 408 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 434 insertions(+) create mode 100644 ractive/ractive-tests.ts create mode 100644 ractive/ractive.d.ts diff --git a/ractive/ractive-tests.ts b/ractive/ractive-tests.ts new file mode 100644 index 000000000..e206d2e26 --- /dev/null +++ b/ractive/ractive-tests.ts @@ -0,0 +1,26 @@ +/// + +function test_transition() { + var plugin: Ractive.TransitionPlugin = (t: Ractive.Transition, params: Object) => { + // Some stuffs... + }; + + Ractive.transitions['myTransition'] = plugin; +} + +Ractive.defaults = { + template: '', + debug: true +} + +var options: Ractive.NewOptions = { + template: '', +}; + +var r: Ractive.Ractive = new Ractive(options); + +r.add('keypath', 1); + +var re: Ractive.Static = Ractive.extend(options); +var component: Ractive.Static = re.extend(options); +new component(options); \ No newline at end of file diff --git a/ractive/ractive.d.ts b/ractive/ractive.d.ts new file mode 100644 index 000000000..523794c2a --- /dev/null +++ b/ractive/ractive.d.ts @@ -0,0 +1,408 @@ +// Type definitions for Ractive 0.7.0 edge Tue Feb 03 2015 03:53:28 GMT+0000 (UTC) - commit f22ab8ad0a640591b1c263f57e21d1565cb26bf5 +// Project: http://ractivejs.org +// Definitions by: Han Lin Yap +// Definitions: https://github.com/codler/Ractive-TypeScript-Definition +// Version: 0.7.0-1+2015-02-05 + +declare module Ractive { + export interface Node extends HTMLElement { + _ractive: any; + } + + // It's functionally identical to the ES6 promise (as currently spec'd) except that Promise.race and Promise.cast are not currently implemented. + export interface Promise extends Object { + // TODO: Implement interface or wait until typescript include native Promise definition. + } + + export interface AnimationPromise extends Promise { + stop(): void; // TODO: void? + } + + export interface AdaptorPlugin extends Object { + // TODO: + } + + export interface ComponentPlugin extends Static { + // TODO: + } + + export interface DecoratorPlugin { + (node: HTMLElement, ...args: any[]): { + // TODO: undocumented GH-429 + update?: (...args: any[]) => void; + teardown: () => void; + } + } + + export interface EventPlugin extends Function { + // TODO: + } + + export interface TransitionPlugin { + (t: Transition, params: Object): void; + } + + export interface AdaptorPlugins { + [key: string]: AdaptorPlugin; + } + + export interface ComponentPlugins { + [key: string]: ComponentPlugin; + } + + export interface DecoratorPlugins { + [key: string]: DecoratorPlugin; + } + + export interface EventPlugins { + [key: string]: EventPlugin; + } + + export interface TransitionPlugins { + [key: string]: TransitionPlugin; + } + + export interface Event { + context: any; + // TODO: unclear in documantation + index: Object; + keypath: string; + node: HTMLElement; + original: Event; + } + + // Return value in ractive.observe and ractive.on + export interface Observe { + cancel(): void; + } + + // Comes as first parameter in RactiveTransitionPlugin + export interface Transition { + isIntro: boolean; + name: string; + node: HTMLElement; + + animateStyle(prop: string, value: any, options: TransitionAnimateOptions, complete: Function): void; + animateStyle(props: Object, options: TransitionAnimateOptions, complete: Function): void; + // Default false + complete(noReset?: boolean): void; + getStyle(prop: string): string; + getStyle(props: string[]): Object; + processParams(params: any, defaults?: Object): Object; + resetStyle(): void; + setStyle(prop: string, value: any): Transition; + setStyle(props: Object): Transition; + } + + export interface TransitionAnimateOptions { + // TODO: Do it have default value? + duration: number; + // Any valid CSS timing function + // Default 'linear' + easing?: string; + // TODO: Do it have default value? + delay: number; + } + + export interface AnimateOptions { + duration?: number; + easing?: string | Function; + // TODO: number as type correct? + step?: (t: number, value: number) => void; // TODO: void? + // TODO: number as type correct? + complate?: (t: number, value: number) => void; // TODO: void? + } + + export interface ObserveOptions { + // Default Ractive + context?: any; + // Default false + defer?: boolean; + // Default true + init?: boolean; + } + + // Used in Ractive.parse options + export interface ParseOptions { + preserveWhitespace: boolean; + sanitize: any; + } + + // Used in Initialisation options + export interface SanitizeOptions { + elements: string[]; + // TODO: Undocumented what default value is, but probably false + eventAttributes?: boolean; + } + + export interface NewOptions { + /* + * @type List of mixed string or Adaptor + */ + adapt?: any[]; + + adaptors?: AdaptorPlugins; + + /** + * Default false + * @type boolean or any type that option `el` accepts (HTMLElement or String or jQuery-like collection) + */ + append?: any; + + complete?: Function; + components?: ComponentPlugins; + computed?: Object; + // Since 0.5.5 + // TODO: unclear in documantation + css?: string; + + /** + * TODO: Question - When is data Array or String? + * + * @type Object, Array, String or Function + */ + // TODO: undocumented type Function + data?: any; + + decorators?: DecoratorPlugins; + /** + * @type [open, close] + */ + delimiters?: string[]; + + easing?: string | Function; + + /** + * @type HTMLElement or String or jQuery-like collection + */ + el?: any; + // TODO: undocumented in Initialisation options page + events?: EventPlugins; + + // TODO: In next release + // TODO: undocumented GH-429 + // interpolate + + // Since 0.5.5 + // TODO: unclear in documantation + interpolators?: { [key: string]: any; }; + + // Since 0.6.0 + onconstruct?: (options: NewOptions) => void; // TODO: void? + // Since 0.6.0 + onchange?: (options: NewOptions) => void; // TODO: void? + + /** + * any is same type as template + */ + partials?: { [key: string]: any; }; + /** + * Default false + * @type Boolean or RactiveSanitizeOptions + */ + sanitize?: any; + /** + * Default ['[[', ']]'] + * @type [open, close] + */ + staticDelimiters?: string[]; + /** + * Default ['[[[', ']]]'] + * @type [open, close] + */ + staticTripleDelimiters?: string[]; + /** + * @type String or (if preparsing "Ractive.parse") Array or Object + */ + template?: any; + transitions?: TransitionPlugins; + /** + * @type [open, close] + */ + tripleDelimiters?: string[]; + + // Default false + lazy?: boolean; + // Default false + magic?: boolean; + // Default true + modifyArrays?: boolean; + // Since 0.5.5 + // TODO: unclear in documentation + // Default false + noCSSTransform?: boolean; + // Default false + noIntro?: boolean; + // Default false + preserveWhitespace?: boolean; + // Since 0.5.5 + // Default true + stripComments?: boolean; + // Default true + twoway?: boolean; + + } + + export interface ExtendOptions extends NewOptions { + /** + * @deprecated + */ + beforeInit?: (options: ExtendOptions) => void; + /** + * @deprecated + */ + init?: (options: ExtendOptions) => void; + + // TODO: undocumented arguments + onconstruct?: (options: ExtendOptions) => void; // TODO: void? + onrender?: () => void; // TODO: void? + // Default false, inherit from Ractive.defaults + isolated?: boolean; + } + + // See ractive change log "All configuration options, except plugin registries, can be specified on Ractive.defaults and Component.defaults" + export interface DefaultsOptions extends ExtendOptions { + // TODO: not correctly documented + // Default false + debug?: boolean; + } + + /** + * Static members of Ractive + */ + export interface Static { + new (options: NewOptions): Ractive; + + extend(options: ExtendOptions): Static; + + parse(template: string, options?: ParseOptions): any; + + // TODO: undocumented + adaptors: AdaptorPlugins; + + // TODO: undocumented + components: ComponentPlugins; + + defaults: DefaultsOptions; + + // TODO: undocumented + decorators: DecoratorPlugins; + + easing: { [key: string]: (x: number) => number; }; + + // TODO: undocumented + events: EventPlugins; + + // TODO: missing static properties documentation + partials: { [key: string]: any; }; + + // Undocumented method + Promise: Promise; + + // TODO: missing static properties documentation + transitions: TransitionPlugins; + } + + /** + * The Ractive instance members + */ + export interface Ractive { + add(keypath: string, number?: number): Promise; + + animate(keypath: string, value: any, options?: AnimateOptions): AnimationPromise; + + animate(map: Object, options?: AnimateOptions): AnimationPromise; + + detach(): DocumentFragment; + + find(selector: string): HTMLElement; + + // live default false + findAll(selector: string, options?: { live: boolean }): HTMLElement[]; + + // live default false + findAllComponents(name: string, options?: { live: boolean }): Ractive[]; + // TODO: maybe exist, in that case it is undocumented + // findAllComponents(): Ractive[] + + findComponent(name?: string): Ractive; + + fire(eventName: string, ...args: any[]): void; // TODO: void? + + get(keypath: string): any; + get(): Object; // TODO: undocumented. or do it return function if ractive.data defined as function? + + // TODO: target - Node or String or jQuery (see Valid selectors) + // TODO: anchor - Node or String or jQuery + insert(target: any, anchor?: any): void; // TODO: void? + + merge(keypath: string, value: any[], options?: { compare: boolean | string | Function }): Promise; + + // callback context Ractive + observe(keypath: string, callback: (newValue: any, oldValue: any, keypath: string) => void, options?: ObserveOptions): Observe; + observe(map: Object, options?: ObserveOptions): Observe; + + // TODO: check handler type + off(eventName?: string, handler?: () => void): Ractive; + + // handler context Ractive + on(eventName: string, handler: (event?: Event, ...args: any[]) => void): Observe; + // TODO: undocumented + on(map: { [eventName: string]: (event?: Event, ...args: any[]) => void }): Observe; + + // Since 0.5.5 + pop(keypath: string): Promise; + + // Since 0.5.5 + push(keypath: string, value: any): Promise; + + // TODO: target - Node or String or jQuery (see Valid selectors) + render(target: any): void; // TODO: void? + + reset(data?: Object): Promise; + + // Since 0.5.5 + // TODO: undocumented, mentioned in ractive change log + resetTemplate(): void; // TODO: void? + + set(keypath: string, value: any): Promise; + set(map: Object): Promise; + + // Since 0.5.5 + shift(keypath: string): Promise; + + // Since 0.5.5 + splice(keypath: string, index: number, removeCount: number, ...add: any[]): Promise; + + subtract(keypath: string, number?: number): Promise; + + teardown(): Promise; + + toggle(keypath: string): Promise; + + toHTML(): string; + + // Since 0.5.5 + unshift(keypath: string, value: any): Promise; + + update(keypath?: string): Promise; + + /** + * Update out of sync two-way bindings + * @param keypath A string + * @param cascade A boolean with default false + */ + updateModel(keypath?: string, cascade?: boolean): Promise; + + // Properties + + nodes: Object; + partials: Object; + transitions: Object; + } +} + +declare module "ractive" { + export = Ractive; +} +declare var Ractive: Ractive.Static; From 69f00df49947f9b7757bf329d99814466b81f5f3 Mon Sep 17 00:00:00 2001 From: Han Lin Yap Date: Thu, 5 Feb 2015 09:43:10 +0100 Subject: [PATCH 09/11] Fix header --- ractive/ractive.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ractive/ractive.d.ts b/ractive/ractive.d.ts index 523794c2a..97ceda993 100644 --- a/ractive/ractive.d.ts +++ b/ractive/ractive.d.ts @@ -1,4 +1,4 @@ -// Type definitions for Ractive 0.7.0 edge Tue Feb 03 2015 03:53:28 GMT+0000 (UTC) - commit f22ab8ad0a640591b1c263f57e21d1565cb26bf5 +// Type definitions for Ractive 0.7.0 edge f22ab8ad0a640591b1c263f57e21d1565cb26bf5 // Project: http://ractivejs.org // Definitions by: Han Lin Yap // Definitions: https://github.com/codler/Ractive-TypeScript-Definition From aaf7d88e112d0f3b4767cbfc58ecc165c4ad421d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B6rn=20Hansson?= Date: Thu, 5 Feb 2015 10:22:46 +0100 Subject: [PATCH 10/11] KoLiteCommandOptions.execute must be a function Before this it caused the options-object to be of any object (function, number, array etc). --- kolite/kolite.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kolite/kolite.d.ts b/kolite/kolite.d.ts index 6310fcad4..c9535411b 100644 --- a/kolite/kolite.d.ts +++ b/kolite/kolite.d.ts @@ -63,13 +63,13 @@ interface KoliteAsyncCommand extends KoliteCommand { } interface KoLiteCommandOptions { - execute?: any; + execute(...args: any[]): any; canExecute?: (isExecuting: boolean) => any; } interface KnockoutStatic { command(options: KoLiteCommandOptions): KoliteCommand; - asyncCommand(optons: KoLiteCommandOptions): KoliteAsyncCommand; + asyncCommand(options: KoLiteCommandOptions): KoliteAsyncCommand; } interface KnockoutUtils { From 42c8a3b74c05f6887ce21dd63c6234e424f9f8fe Mon Sep 17 00:00:00 2001 From: vvakame Date: Thu, 5 Feb 2015 22:16:36 +0900 Subject: [PATCH 11/11] update CONTRIBUTORS.md --- CONTRIBUTORS.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 23fbf41c5..224e8a84e 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -85,6 +85,7 @@ This document generated by [dt-contributors-generator](https://github.com/vvakam * [:link:](bl/bl.d.ts) [BufferList](https://github.com/rvagg/bl) by [Bart van der Schoor](https://github.com/Bartvds) * [:link:](bufferstream/bufferstream.d.ts) [bufferstream](https://github.com/dodo/node-bufferstream) by [Bart van der Schoor](https://github.com/Bartvds) * [:link:](business-rules-engine/business-rules-engine.d.ts) [business-rules-engine](https://github.com/rsamec/form) by [Roman Samec](https://github.com/rsamec) +* [:link:](byline/byline.d.ts) [byline](https://github.com/jahewson/node-byline) by [Stefan Steinhart](https://github.com/reppners) * [:link:](camljs/camljs.d.ts) [camljs](http://camljs.codeplex.com) by [Andrey Markeev](http://markeev.com) * [:link:](canvasjs/canvasjs.d.ts) [CanvasJS](http://canvasjs.com) by [Mark Overholt](https://github.com/mover5) * [:link:](casperjs/casperjs.d.ts) [CasperJS](http://casperjs.org) by [Jed Mao](https://github.com/jedmao) @@ -293,7 +294,7 @@ This document generated by [dt-contributors-generator](https://github.com/vvakam * [:link:](ix.js/ix.d.ts) [IxJS 1.0.6 / ix.js](https://github.com/Reactive-Extensions/IxJS) by [Igor Oleinikov](https://github.com/Igorbek) * [:link:](ix.js/l2o.d.ts) [IxJS 1.0.6 / l2o.js](https://github.com/Reactive-Extensions/IxJS) by [Igor Oleinikov](https://github.com/Igorbek) * [:link:](jake/jake.d.ts) [jake](https://github.com/mde/jake) by [Kon](http://phyzkit.net) -* [:link:](jasmine/jasmine.d.ts) [Jasmine](http://pivotal.github.com/jasmine) by [Boris Yankov](https://github.com/borisyankov), [Theodore Brown](https://github.com/theodorejb), [David Pärsson](https://github.com/davidparsson) +* [:link:](jasmine/jasmine.d.ts) [Jasmine](http://jasmine.github.io) by [Boris Yankov](https://github.com/borisyankov), [Theodore Brown](https://github.com/theodorejb), [David Pärsson](https://github.com/davidparsson) * [:link:](jasmine-data_driven_tests/jasmine-data_driven_tests.d.ts) [Jasmine Data Driven Tests](https://github.com/gburghardt/jasmine-data_driven_tests) by [Anthony MacKinnon](https://github.com/AnthonyMacKinnon) * [:link:](jasmine-fixture/jasmine-fixture.d.ts) [Jasmine-fixture](https://github.com/searls/jasmine-fixture) by [Craig Brett](https://github.com/craigbrett17) * [:link:](jasmine-jquery/jasmine-jquery.d.ts) [Jasmine-JQuery](https://github.com/velesin/jasmine-jquery) by [Gregor Stamac](https://github.com/gstamac) @@ -516,6 +517,7 @@ This document generated by [dt-contributors-generator](https://github.com/vvakam * [:link:](xml2js/xml2js.d.ts) [node-xml2js](https://github.com/Leonidas-from-XIV/node-xml2js) by [Michel Salib](https://github.com/michelsalib), [Jason McNeil](https://github.com/jasonrm) * [:link:](node/node.d.ts) [Node.js](http://nodejs.org) by [Microsoft TypeScript](http://typescriptlang.org), [DefinitelyTyped](https://github.com/borisyankov/DefinitelyTyped) * [:link:](restify/restify.d.ts) [node.js REST framework](https://github.com/mcavage/node-restify) by [Bret Little](https://github.com/blittle) +* [:link:](mdns/mdns.d.ts) [node_mdns](https://github.com/agnat/node_mdns) by [Stefan Steinhart](https://github.com/reppners) * [:link:](node_redis/node_redis.d.ts) [node_redis](https://github.com/mranney/node_redis) by [Boris Yankov](https://github.com/borisyankov) * [:link:](each/each.d.ts) [NodeEach](http://www.adaltas.com/projects/node-each) by [Michael Zabka](https://github.com/misak113) * [:link:](nodemailer/nodemailer.d.ts) [Nodemailer](https://github.com/andris9/Nodemailer) by [Vincent Bortone](https://github.com/vbortone) @@ -579,6 +581,7 @@ This document generated by [dt-contributors-generator](https://github.com/vvakam * [:link:](qajax/qajax.d.ts) [Qajax](https://github.com/gre/qajax) by [Boltmade](https://github.com/Boltmade) * [:link:](qunit/qunit.d.ts) [QUnit](http://qunitjs.com) by [Diullei Gomes](https://github.com/diullei) * [:link:](rabbit.js/rabbit.js.d.ts) [rabbit.js](https://github.com/squaremo/rabbit.js) by [Wonshik Kim](https://github.com/wokim) +* [:link:](ractive/ractive.d.ts) [Ractive 0.7.0 edge f22ab8ad0a640591b1c263f57e21d1565cb26bf5](http://ractivejs.org) by [Han Lin Yap](http://yap.nu) * [:link:](raphael/raphael.d.ts) [Raphael](http://raphaeljs.com) by [CheCoxshall](https://github.com/CheCoxshall) * [:link:](ravenjs/ravenjs.d.ts) [Raven.js](https://github.com/getsentry/raven-js) by [Santi Albo](https://github.com/santialbo) * [:link:](react/react.d.ts) [React](http://facebook.github.io/react) by [Asana](https://asana.com)