diff --git a/notNeededPackages.json b/notNeededPackages.json index 8b23d3c726..e40bb2894e 100644 --- a/notNeededPackages.json +++ b/notNeededPackages.json @@ -3384,6 +3384,12 @@ "sourceRepoURL": "https://github.com/sindresorhus/rgb-hex", "asOfVersion": "3.0.0" }, + { + "libraryName": "riot", + "typingsPackageName": "riot", + "sourceRepoURL": "https://github.com/riot/riot", + "asOfVersion": "4.1.0" + }, { "libraryName": "rollup", "typingsPackageName": "rollup", diff --git a/types/riot/index.d.ts b/types/riot/index.d.ts deleted file mode 100644 index f143141b57..0000000000 --- a/types/riot/index.d.ts +++ /dev/null @@ -1,727 +0,0 @@ -// Type definitions for riot 3.6 -// Project: https://github.com/riot/riot, http://riot.js.org -// Definitions by: Boriss Nazarovs -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 - -/** - * Current version number as a string - */ -export const version: string; - -/** - * Riot settings - */ -export interface Settings { - /** - * Setting used to customize the start and end tokens of the expression - * @default { } - */ - brackets: string; - /** - * If set to false, riot will not create lighter tag instances for anonymous tags - * @default true - */ - skipAnonymousTags: boolean; - /** - * If set to false, DOM event handlers will not trigger update events - * @default true - */ - autoUpdate: boolean; - /** - * `riot.renderAsync` timeout in ms - * @default 1000 - */ - asyncRenderTimeout: number; -} - -export const settings: Settings; - -export interface TemplateError extends Error { - riotData: { - _riot_id: number; - tagName: string; - }; -} - -/** - * Riot template engine - */ -export interface Tmpl { - (expression: string, data?: any): any; - - version: string; - - /** - * Utility hook function to catch all the errors swallowed by the riot template engine - */ - errorHandler(error: TemplateError): void; -} - -/** - * Object that is used to inject and manage the css of every tag instance - */ -export interface StyleManager { - styleNode: HTMLStyleElement; - - /** - * Save a tag style to be later injected into DOM - * @param css - css string - * @param name - if it's passed the css will be mapped to a tagname - */ - add(css: string, name?: string): void; - - /** - * Inject all previously saved tag styles into DOM - */ - inject(): void; -} - -export interface DOMUtil { - /** - * Select multiple nodes in the DOM - * @param selector - DOM selector - * @param ctx - DOM node where the targets of our search will is located - * @returns DOM nodes found - */ - $$(selector: string, ctx?: Element): Element[]; - - /** - * Select a single node in the DOM - * @param selector - unique dom selector - * @param ctx - DOM node where the target of search will is located - * @returns DOM node found - */ - $(selector: string, ctx?: Element): Element | null; - - /** - * Create a document fragment - * @returns Document fragment - */ - createFrag(): DocumentFragment; - - /** - * Create a document text node - * @returns Text node - */ - createDOMPlaceholder(): Text; - - /** - * Check if a DOM node is an svg element - * @param element - node to check - * @returns True if element is an svg element - */ - isSvg(element: Element): element is SVGElement; - - /** - * Create a generic DOM node - * @param name - name of the DOM node - * @returns Created element - */ - mkEl(name: string): Element; - - /** - * Set the inner html of any DOM node SVGs included - * @param container - DOM node where html should be injected - * @param html - html to inject - */ - setInnerHTML(container: Element, html: string): void; - - /** - * Toggle the visibility of a DOM node - * @param element - DOM node to update visibility for - * @param show - If true element is shown - */ - toggleVisibility(element: Element, show?: boolean): void; - - /** - * Remove any DOM attribute from a node - * @param element - DOM node to update - * @param name - name of the attribute - */ - remAttr(element: Element, name: string): void; - - /** - * Get the value of any DOM attribute on a node - * @param element - DOM node - * @param name - name of the attribute - * @returns Attribute value - */ - getAttr(element: Element, name: string): string | null; - - /** - * Set any DOM attribute - * @param element - DOM node we want to update - * @param name - name of the property we want to set - * @param value - value of the property we want to set - */ - setAttr(element: Element, name: string, value: string): void; - - /** - * Convert a style object to a string - * @param style - style object to parse - * @returns Resulting css string - */ - styleObjectToString(style: any): string; - - /** - * Insert tag safely - * @param root - children container - * @param curr - node to insert - * @param next - node that should precede inserted node - */ - safeInsert(root: Node, curr: Node, next: Node): void; - - /** - * Run callback function for each attribute in html string - * @param html - html string we want to parse - * @param fn - callback function to apply on found attributes - */ - walkAttrs(html: string, fn: (attrName: string, attrValue: string) => void): void; - - /** - * Walk down recursively through all child nodes starting with provided dom node - * @param node - starting node where we will start the recursion - * @param fn - callback to transform the child node just found - * @param context - fn can optionally return an object, which is passed to children - */ - walkNodes(node: Node, fn: (node: Node, context: any) => any, context: any): void; -} - -export interface CheckUtil { - /** - * Check if provided value is name of boolean attribute - * @param value - name to check - * @returns True if value is name of boolean attribute - */ - isBoolAttr(value: string): boolean; - - /** - * Check if provided value is a function - * @param value - reference to check - * @returns True if provided value is a function - */ - isFunction(value: any): boolean; - - /** - * Check if provided value is an object (null excluded) - * @param value - reference to check - * @returns True if provided value is an object - */ - isObject(value: any): boolean; - - /** - * Check if provided value is undefined - * @param value - reference to check - * @returns True if provided value is undefined - */ - isUndefined(value: any): boolean; - - /** - * Check if provided value is a string - * @param value - reference to check - * @returns True if provided value is a string - */ - isString(value: any): value is string; - - /** - * Check if provided value is empty. Different from falsy, because 0 or false are not considered to be blank - * @param value - value to check - * @returns True if provided value is undefined, null or empty string - */ - isBlank(value: any): boolean; - - /** - * Check if provided value is an array - * @param value - reference to check - * @returns True if provided value is an array - */ - isArray(value: any): boolean; - - /** - * Check whether object's property could be overridden - * @param obj - source object - * @param key - object property - * @returns True if value for specified key can be overridden - */ - isWritable(obj: any, key: string): boolean; - - /** - * Check if provided string is a reserved name for Riot tag instances - * @param value - name to check - * @returns True if provided string is a reserved name - */ - isReservedName(value: string): boolean; -} - -export interface MiscUtil { - /** - * Specialized function for looping over array-like collections - * @param list - collection of items - * @param fn - callback applied to each item - */ - each(list: any, fn: (item: any, index: number) => void): void; - - /** - * Check whether an array contains an item - * @param arr - target array - * @param item - item to test - * @returns True if array contains item - */ - contains(arr: any[], item: any): boolean; - - /** - * Convert a string containing dashes to camel case - * @param str - input string - * @returns my-string -> myString - */ - toCamel(str: string): string; - - /** - * Check if string starts with specified value - * @param str - source string - * @param value - test string - * @returns True if string starts with provided value - */ - startsWith(str: string, value: string): boolean; - - /** - * Helper function to set an immutable property - * @param el - object where the new property will be set - * @param key - object key where the new property will be stored - * @param value - value of the new property - * @param options - set the property overriding the default options - * @returns The initial object - */ - defineProperty(el: any, key: string, value: any, options: any): any; - - /** - * Extend any object with other properties - * @param args - objects to merge - * @returns The resulting extended object - */ - extend(...args: any[]): any; -} - -export interface TagsUtil { - /** - * Detect the tag implementation by a DOM node - * @param element - DOM node we need to parse to get its tag implementation - * @returns Object containing the implementation of a custom tag (template and boot function) - */ - getTag(element: Element): any; - - /** - * Inherit properties from a target tag instance - * @param target - tag where we will inherit properties - * @param propsInSyncWithParent - array of properties to sync with the target - */ - inheritFrom(this: TagInstance, target: TagInstance, propsInSyncWithParent: string[]): void; - - /** - * Move the position of a custom tag in its parent tag - * @param tagName - key where the tag was stored - * @param newPos - index where the new tag will be stored - */ - moveChildTag(this: TagInstance, tagName: string, newPos: number): void; - - /** - * Create a new child tag including it correctly into its parent - * @param child - child tag implementation - * @param opts - tag options containing the DOM node where the tag will be mounted - * @param innerHTML - inner html of the child node - * @param parent - instance of the parent tag including the child custom tag - * @returns Instance of the new child tag just created - */ - initChildTag(child: any, opts: any, innerHTML: string, parent: TagInstance): TagInstance; - - /** - * Loop backward all the parents tree to detect the first custom parent tag - * @param tag - a tag instance - * @returns Instance of the first custom parent tag found - */ - getImmediateCustomParentTag(tag: TagInstance): TagInstance; - - /** - * Trigger the unmount method on all the expressions - * @param expressions - DOM expressions - */ - unmountAll(expressions: any[]): void; - - /** - * Get the tag name of any DOM node - * @param dom - DOM node we want to parse - * @param skipDataIs - hack to ignore the data-is attribute when attaching to parent - * @returns Name to identify this dom node in riot - */ - getTagName(dom: Element, skipDataIs: boolean): string; - - /** - * With this function we avoid that the internal Tag methods get overridden - * @param data - options we want to use to extend the tag instance - * @returns Clean object without containing the riot internal reserved words - */ - cleanUpData(data: any): any; - - /** - * Set the property of an object for a given key. If something already - * exists there, then it becomes an array containing both the old and new value. - * @param obj - object on which to set the property - * @param key - property name - * @param value - the value of the property to be set - * @param ensureArray - ensure that the property remains an array - * @param index - add the new item in a certain array position - */ - arrayishAdd(obj: any, key: string, value: any, ensureArray?: boolean, index?: number): void; - - /** - * Removes an item from an object at a given key. If the key points to an array, - * then the item is just removed from the array. - * @param obj - object on which to remove the property - * @param key - property name - * @param value - the value of the property to be removed - * @param ensureArray - ensure that the property remains an array - */ - arrayishRemove(obj: any, key: string, value: any, ensureArray?: boolean): void; - - /** - * Mount a tag creating new Tag instance - * @param root - dom node where the tag will be mounted - * @param tagName - name of the riot tag we want to mount - * @param opts - options to pass to the Tag instance - * @param ctx - optional context that will be used to extend an existing class ( used in riot.Tag ) - * @returns Created tag instance - */ - mountTo(root: Element, tagName: string, opts?: TagOpts, ctx?: any): TagInstance; - - /** - * Makes a tag virtual and replaces a reference in the dom - * @param tag - tag to make virtual - * @param ref - dom reference location - */ - makeReplaceVirtual(tag: TagInstance, ref: Node): void; - - /** - * Adds the elements for a virtual tag - * @param src - the node that will do the inserting or appending - * @param target - only if inserting, insert before this tag's first child - */ - makeVirtual(this: TagInstance, src: Node, target?: TagInstance): void; - - /** - * Move virtual tag and all child nodes - * @param src - the node that will do the inserting - * @param target - insert before this tag's first child - */ - moveVirtual(this: TagInstance, src: Node, target: TagInstance): void; - - /** - * Get selectors for tags - * @param tags - tag names to select - * @returns Selector - */ - selectTags(tags: string[]): string; -} - -export interface Util { - /** - * Reference to the internal riot template engine - */ - tmpl: Tmpl; - - /** - * Internal riot tags cache - */ - vdom: TagInstance[]; - - /** - * Object used to append and create custom tags css - */ - styleManager: StyleManager; - - /** - * Series of utility functions to query and update DOM nodes - */ - dom: DOMUtil; - - /** - * Series of helper functions needed for type checking - */ - check: CheckUtil; - - /** - * Generic helper functions - */ - misc: MiscUtil; - - /** - * Methods for managing all the riot tags instances - */ - tags: TagsUtil; -} - -export const util: Util; - -export type ObservableCallback = (...args: any[]) => any; - -export interface Observable { - /** - * Register callback for specified events. - * Callback is executed each time event is triggered - * @param event Event name or wildcard '*' that matches all events - * @param callback Callback function - */ - on(event: string, callback: ObservableCallback): this; - - /** - * Register callback for specified events. - * Callback is executed at most once. - * @param event Event name. - * @param callback Callback function - */ - one(event: string, callback: ObservableCallback): this; - - /** - * For specified event remove specified callback or all registered callbacks if callback is not passed in - * @param event Event name or wildcard '*' that matches all events - * @param callback Callback function to remove - */ - off(event: string, callback?: ObservableCallback): this; - - /** - * Execute all callback functions registered for specified list of events - * @param event Event name - * @param args Arguments provided to callbacks - */ - trigger(event: string, ...args: any[]): this; -} - -/** - * Adds Observer support for the given object or - * if the argument is empty a new observable instance is created and returned. - * @param el Object to become observable - */ -export function observable(el?: any): Observable; - -/** - * Mount custom tags with specified tag name. Returns an array of mounted tag instances. - * @param selector Tag selector. - * It can be tag name, css selector or special '*' selector that matches all tags on the page. - * @param opts Optional object passed for the tags to consume. - */ -export function mount(selector: string, opts?: TagOpts): TagInstance[]; - -/** - * Mount a custom tag on DOM nodes matching provided selector or on provided DOM node. - * @param selector CSS selector - * @param tagName Custom tag name - * @param opts Optional object passed for the tag to consume. - * @returns An array of mounted tag instances. - */ -export function mount(selector: string | Element, tagName: string, opts?: TagOpts): TagInstance[]; - -/** - * Unregister a tag previously created via compiler or via `riot.tag()` - * @param tagName - name of the tag to unregister - */ -export function unregister(tagName: string): void; - -/** - * Render a tag to html. This method is available only on server-side. - * @param tagName Custom tag name - * @param opts Optional object passed for the tag to consume. - */ -export function render(tagName: string, opts?: TagOpts): string; - -/** - * Require and compile riot tag in runtime. This method is available only on server-side. - * @param tagPath path to tag file - * @param opts riot-compiler options - * @returns Tag name - */ -export function require(tagPath: string, opts?: any): string; - -/** - * Asynchronously render tag to html. This method is available only on server-side. - * @param tagName name of the tag - * @param opts Tag opts - * @returns Promise that is resolved with resulting html - */ -export function renderAsync(tagName: string, opts?: TagOpts): Promise; - -/** - * Update all the mounted tags and their expressions on the page. - * Returns an array of tag instances that are mounted on the page. - */ -export function update(): TagInstance[]; - -/** - * Register a global mixin and automatically add it to all tag instances. - * @param mixinObject Mixin object - */ -export function mixin(mixinObject: TagMixin): void; - -/** - * Register a shared mixin, globally available to be used in any tag using `TagInstance.mixin(mixinName)` - * @param mixinName Name of the mixin - * @param mixinObject Mixin object - */ -export function mixin(mixinName: string, mixinObject: TagMixin): void; - -/** - * Create a new custom tag “manually” without the compiler. Returns name of the tag. - * @param tagName The tag name - * @param html The layout with expressions - * @param css The style of the tag - * @param attrs String of attributes for the tag - * @param constructor The initialization function being called before - * the tag expressions are calculated and before the tag is mounted - */ -export function tag(tagName: string, html: string, css?: string, attrs?: string, constructor?: (this: T, opts?: TagOpts) => void): string; - -/** - * Create wrapper tag without template - * @param tagName The tag name - * @param html Should be set to false - * @param constructor The initialization function being called before - * the tag expressions are calculated and before the tag is mounted - * @returns Tag name - */ -export function tag(tagName: string, html: boolean, constructor: (this: T, opts?: TagOpts) => void): string; - -export interface TagOpts { - [key: string]: any; -} - -export interface TagRefs { - [key: string]: TagInstance | Element; -} - -export interface NestedTags { - [key: string]: TagInstance | TagInstance[]; -} - -export interface TagInterface extends Observable { - /** - * Is tag instance mounted - */ - isMounted?: boolean; - /** - * Tag instance options - */ - opts: TagOpts; - - /** - * the parent tag if any - */ - parent?: TagInstance; - - /** - * root DOM node - */ - root: Element; - - /** - * References to tags or DOM elements - */ - refs: TagRefs; - - /** - * nested custom tags - */ - tags: NestedTags; - - /** - * Updates all the expressions on the current tag instance as well as on all the children. - * @param data Context data - */ - update(data?: any): void; - - /** - * Extend tag with functionality available on shared mixin registered with `riot.mixin(mixinName, mixinObject)` - * or extend tag functionality with functionality available on provided mixin object. - * @param mixin Name of shared mixin or mixin object - */ - mixin(mixin: string | TagMixin): void; - - /** - * Mount the tag - */ - mount(): void; - - /** - * Detach the tag and its children from the page. - * @param keepTheParent If `true` unmounting tag doesn't remove the parent tag - */ - unmount(keepTheParent?: boolean): void; -} - -export interface TagInstance extends TagInterface { - [key: string]: any; -} - -/** - * This class can be extended to create custom tag. - */ -export abstract class Tag implements TagInterface { - opts: TagOpts; - root: Element; - refs: TagRefs; - tags: NestedTags; - /** - * Tag constructor - * @param element DOM element to mount tag on - * @param opts Tag opts - */ - constructor(element: Element, opts?: TagOpts); - - update(data?: any): void; - - mixin(mixinName: string | TagMixin): void; - - mount(): void; - - unmount(keepTheParent?: boolean): void; - - on(event: string, callback: ObservableCallback): this; - - one(event: string, callback: ObservableCallback): this; - - off(event: string, callback?: ObservableCallback): this; - - trigger(event: string, ...args: any[]): this; -} - -/** - * Mixin object for extending tag functionality. - * When it gets mixed in it has access to all tag properties. - * It should not override any built in tag properties - */ -export interface TagMixin { - /** - * Special method which can initialize the mixin when it's loaded to the tag. - * This method is not accessible from the tag its mixed in - */ - init?(this: TagInterface): void; -} - -/** - * Compile all tags defined with