diff --git a/jquery.nouislider/jquery.nouislider-tests.ts b/jquery.nouislider/jquery.nouislider-tests.ts
new file mode 100644
index 00000000000000..fe143f6af8b07e
--- /dev/null
+++ b/jquery.nouislider/jquery.nouislider-tests.ts
@@ -0,0 +1,75 @@
+///
+///
+
+//basic
+var basicSlider = $("
").noUiSlider({
+ start: 80,
+ range: {
+ 'min': 0,
+ 'max': 10000
+ }
+});
+
+//all options
+var allOptions = $("").noUiSlider({
+ start: [ 20, 80 ],
+ step: 10,
+ margin: 20,
+ connect: true,
+ direction: 'rtl',
+ orientation: 'vertical',
+
+ // Configure tapping, or make the selected range dragable.
+ behaviour: 'tap-drag',
+
+ // Full number format support.
+ format: wNumb({
+ mark: ',',
+ decimals: 1
+ }),
+
+ // Support for non-linear ranges by adding intervals.
+ range: {
+ 'min': 0,
+ 'max': 100
+ }
+});
+
+
+//PIPS
+allOptions.noUiSlider_pips({
+ mode: 'steps',
+ density: 3,
+ filter: function(){return 1},
+ format: wNumb({
+ decimals: 2,
+ prefix: '$'
+ })
+});
+
+
+basicSlider.noUiSlider_pips({
+ mode: 'values',
+ values: [50, 552, 4651, 4952, 5000, 7080, 9000],
+ density: 4,
+ stepped: true
+});
+
+//functions
+
+allOptions.val();
+
+// Set one value
+basicSlider.val(10);
+basicSlider.val([150]);
+
+// Set the upper handle,
+// don't change the lower one.
+allOptions.val([null, 14]);
+
+// Set both slider handles
+allOptions.val([13.2, 15.7]);
+
+
+//link
+allOptions.Link('lower').to($(''));
diff --git a/jquery.nouislider/jquery.nouislider.d.ts b/jquery.nouislider/jquery.nouislider.d.ts
new file mode 100644
index 00000000000000..5b1700b234ff22
--- /dev/null
+++ b/jquery.nouislider/jquery.nouislider.d.ts
@@ -0,0 +1,150 @@
+// Type definitions for nouislider v7.0.10
+// Project: https://github.com/leongersen/noUiSlider
+// Definitions by: Corey Jepperson
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+///
+///
+
+
+interface noUiSliderInstance extends JQuery{
+ /**
+ * For one-handle sliders, calling .val() will return the value.
+ * For two-handle sliders, an array[value, value] will be returned.
+ */
+ val(): number | number[];
+ /**
+ * noUiSlider will keep your values within the slider range, which saves you a bunch of validation.
+ * If you have set the slider to use one handle, simply set it on the slider using the .val() method.
+ * If you have two handles, pass an array. One-handled sliders will also accept arrays.
+ * Within an array, you can set a position to null if you want to leave a handle unchanged.
+ */
+ val(value: any): JQuery; //can't enforce number as it breaks extend
+ /**
+ * noUiSlider has full support for libLink, which will let you write values to input elements very easily.
+ * libLink will update the slider if you change an input as well!
+ */
+ Link(target: string, method?: any, format?:any): any;
+}
+
+
+
+interface noUiSliderOptions {
+ /**
+ * The start option sets the number of handles and their start positions, relative to range.
+ */
+ start: number | number[] | number[][];
+ /**
+ * The connect setting can be used to control the bar between the handles,
+ * or the edges of the slider. Use "lower" to connect to the lower side,
+ * or "upper" to connect to the upper side. Setting true sets the bar between the handles.
+ */
+ range: Object;
+ /**
+ * noUiSlider offers several ways to handle user interaction.
+ * The range can be set to drag, and handles can move to taps.
+ * All these effects are optional, and can be enable by adding their keyword to the behaviour option.
+ * This option accepts a "-" separated list of "drag", "tap", "fixed", "snap" or "none".
+ */
+ connect?: string | boolean;
+ /**
+ * When using two handles, the minimum distance between the handles can be set using the margin option.
+ * The margin value is relative to the value set in 'range'.
+ * This option is only available on standard linear sliders.
+ */
+ margin?: number;
+ /**
+ * The limit option is the oposite of the margin option,
+ * limiting the maximum distance between two handles.
+ * As with the margin option, the limit option can only be used on linear sliders.
+ */
+ limit?: number;
+ /**
+ * By default, the slider slides fluently.
+ * In order to make the handles jump between intervals, you can use this option.
+ * The step option is relative to the values provided to range.
+ */
+ step?: number;
+ /**
+ * The orientation setting can be used to set the slider to "vertical" or "horizontal".
+ * Set dimensions! Vertical sliders don't assume a default height, so you'll need to set one.
+ * You can use any unit you want, including % or px.
+ */
+ orientation?: string;
+ /**
+ * By default the sliders are top-to-bottom and left-to-right,
+ * but you can change this using the direction option,
+ * which decides where the upper side of the slider is.
+ */
+ direction?: string;
+ /**
+ * Set the animate option to false to prevent the slider from animating to a new value with when calling .val().
+ */
+ animate?: boolean;
+ /**
+ * All values on the slider are part of a range. The range has a minimum and maximum value.
+ *
+ behaviour?: string;
+ /**
+ * To format the slider output, noUiSlider offers a format option.
+ * Simply specify to and from functions to encode and decode the values.
+ * See manual formatting to the right for usage information.
+ * By default, noUiSlider will format output with 2 decimals.
+ * Manual formatting can be very tedious, so noUiSlider has support for the wNumb formatting library.
+ * wNumb offers a wide range of options and provides number validation.
+ */
+ format?: Object | ((...args:any[]) => any);
+
+}
+
+interface noUiSliderPipsOptions {
+ /**
+ * The range mode uses the slider range to determine where the pips should be. A pip is generated for every percentage specified.
+ *
+ * Like range, the steps mode uses the slider range. In steps mode, a pip is generated for every step.
+ * The filter option can be used to filter the generated pips.
+ * The filter function must return 0 (no value), 1 (large value) or 2 (small value).
+ *
+ * In positions mode, pips are generated at percentage-based positions on the slider. Optionally, the stepped option can be set to true to match the pips to the slider steps.
+ *
+ * The count mode can be used to generate a fixed number of pips. As with positions mode, the stepped option can be used.
+ *
+ * The values mode is similar to positions, but it accepts values instead of percentages. The stepped option can be used for this mode.
+ *
+ */
+ mode: string;
+ /**
+ * Range Mode: percentage for range mode
+ * Step Mode: step number for steps
+ * Positions Mode: percentage-based positions on the slider
+ * Count Mode: positions between pips
+ */
+ density?: number;
+ /**
+ * Step Mode: The filter option can be used to filter the generated pips.
+ * The filter function must return 0 (no value), 1 (large value) or 2 (small value).
+ */
+ filter?: (...args:any[]) => number;
+ /**
+ * format for step mode
+ * see noUiSlider format
+ */
+ format?: Object;
+ /**
+ *
+ * values for positions and values mode
+ * number pips for count mode
+ */
+ values?: number | number[];
+ /**
+ * stepped option for positions, values and count mode
+ */
+ stepped?: boolean;
+
+
+}
+
+
+interface JQuery {
+ noUiSlider(options?: noUiSliderOptions): noUiSliderInstance;
+ noUiSlider_pips(options?: noUiSliderPipsOptions): noUiSliderInstance;
+}
\ No newline at end of file
diff --git a/wnumb/wnumb-tests.ts b/wnumb/wnumb-tests.ts
new file mode 100644
index 00000000000000..d8b3b526940f71
--- /dev/null
+++ b/wnumb/wnumb-tests.ts
@@ -0,0 +1,42 @@
+///
+
+
+var moneyFormat = wNumb({
+ mark: '.',
+ thousand: ',',
+ prefix: '$ ',
+ postfix: ' p.p.'
+});
+
+moneyFormat.to( 301980.62 );
+
+moneyFormat.from( '$ 301,980.62 p.p.' );
+
+var Format = wNumb({
+ prefix: '$ ',
+ decimals: 3,
+ thousand: ','
+});
+
+Format = wNumb({
+ thousand: '.',
+ encoder: function( a ){
+ return a * 1E7;
+ },
+ decoder: function( a ){
+ return a / 1E7;
+ }
+});
+
+Format = wNumb({
+ prefix: '$',
+ postfix: ',-',
+ thousand: ','
+});
+
+
+Format = wNumb({
+ prefix: '$',
+ negativeBefore: '[NEGATIVE] '
+});
+
diff --git a/wnumb/wnumb.d.ts b/wnumb/wnumb.d.ts
new file mode 100644
index 00000000000000..d3645768c83f60
--- /dev/null
+++ b/wnumb/wnumb.d.ts
@@ -0,0 +1,86 @@
+// Type definitions for nouislider v1.0.0
+// Project: https://github.com/leongersen/wnumb
+// Definitions by: Corey Jepperson
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+declare var wNumb: wNumb;
+
+interface wNumbOptions {
+ /**
+ * decimals The number of decimals to include in the result. Limited to 7.
+ */
+ decimals?: number;
+ /**
+ * The decimal separator.
+ * Defaults to '.' if thousand isn't already set to '.'.
+ */
+ mark?: string;
+ /**
+ * Separator for large numbers. For example: ' ' would result in a formatted number of 1 000 000.
+ */
+ thousand?: string;
+ /**
+ * A string to prepend to the number. Use cases include prefixing with money symbols such as '$' or '€'.
+ */
+ prefix?: string;
+ /**
+ * A number to append to a number. For example: ',-'.
+ */
+ postfix?: string;
+ /**
+ * The prefix for negative values. Defaults to '-' if negativeBefore isn't set.
+ */
+ negative?: string;
+ /**
+ * The prefix for a negative number. Inserted before prefix.
+ */
+ negativeBefore?: string;
+ /**This is a powerful option to manually modify the slider output.
+ *
+ *For example, to show a number in another currency:
+ * function( value ){
+ * return value * 1.32;
+ * }
+ */
+ encoder?: (value: number) => number;
+ /**
+ * Reverse the operations set in encoder.
+ * Use this option to undo modifications made while encoding the value.
+ * function( value ){
+ * return value / 1.32;
+ * }
+ */
+ decoder?: (value: number) => number;
+ /**
+ * Similar to encoder, but applied after all other formatting options are applied.
+ */
+ edit?: (value: number) => number;
+ /**
+ * Similar to decoder and the reverse for edit.
+ * Applied before all other formatting options are applied.
+ */
+ undo?: (value: number) => number;
+}
+
+
+interface wNumb {
+ /**
+ * Create a wNumb
+ *
+ * @param options - the options
+ */
+ (options?: wNumbOptions): wNumbInstance;
+}
+
+interface wNumbInstance {
+
+
+
+ /**
+ * format to string
+ */
+ to(val: number): string;
+ /**
+ * get number from formatted string
+ */
+ from(val: string): number;
+}
\ No newline at end of file