From a688d7bf1f9eeb5187843d4fdc393c81adda57e6 Mon Sep 17 00:00:00 2001 From: davetayls Date: Fri, 10 Apr 2015 12:12:41 +0100 Subject: [PATCH] added sanitiser https://github.com/theSmaw/Caja-HTML-Sanitizer --- sanitizer/sanitizer-tests.ts | 53 ++++++++++++++++++++++++++++++++++++ sanitizer/sanitizer.d.ts | 27 ++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 sanitizer/sanitizer-tests.ts create mode 100644 sanitizer/sanitizer.d.ts diff --git a/sanitizer/sanitizer-tests.ts b/sanitizer/sanitizer-tests.ts new file mode 100644 index 0000000000..6a4c8982d6 --- /dev/null +++ b/sanitizer/sanitizer-tests.ts @@ -0,0 +1,53 @@ +/// + +import sanitizer = require('sanitizer'); + +// example copied from the tests https://github.com/theSmaw/Caja-HTML-Sanitizer/blob/master/test/test-sanitizer.js#L346 +var events:any[] = []; +var addTextEvent = function(type:string, text:string, param:any) { + var n = events.length; + + if (events[n - 3] === type && events[n - 1] === param) { + events[n - 2] += text; + } else { + events.push(type, text, param); + } +}; + +sanitizer.makeSaxParser({ + startTag: function(name, attribs, param) { + events.push('startTag', name + '[' + attribs.join(';') + ']', param); + }, + + endTag: function(name, param) { + events.push('endTag', name, param); + }, + + pcdata: function(text, param) { + addTextEvent('pcdata', text, param); + }, + + cdata: function(text, param) { + addTextEvent('cdata', text, param); + }, + + rcdata: function(text, param) { + addTextEvent('rcdata', text, param); + }, + + comment: function(text, param) { + events.push('comment', text, param); + }, + + startDoc: function(param) { + events.push('startDoc', '', param); + }, + + endDoc: function(param) { + events.push('endDoc', '', param); + } +}); +sanitizer.escape(''); +sanitizer.sanitize(''); +sanitizer.normalizeRCData(''); +sanitizer.unescapeEntities(''); diff --git a/sanitizer/sanitizer.d.ts b/sanitizer/sanitizer.d.ts new file mode 100644 index 0000000000..16d9448c96 --- /dev/null +++ b/sanitizer/sanitizer.d.ts @@ -0,0 +1,27 @@ +// Type definitions for Sanitizer +// Project: https://github.com/theSmaw/Caja-HTML-Sanitizer +// Definitions by: Dave Taylor +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +declare module 'sanitizer' { + export interface ISaxHandler { + startTag(name:string, attribs:string[], param:any):void; + endTag(name:string, param:any):void; + pcdata(text:string, param:any):void; + cdata(text:string, param:any):void; + rcdata(text:string, param:any):void; + comment(text:string, param:any):void; + startDoc(param:any):void; + endDoc(param:any):void; + } + + export function escape(s:string):string; + + export function makeSaxParser(yourHandler:ISaxHandler):(...any:any[])=>any; + + export function normalizeRCData(s:string):string; + + export function sanitize(s:string):string; + + export function unescapeEntities(s:string):string; +}