diff --git a/AceGitLinkPlugin.js b/AceGitLinkPlugin.js deleted file mode 100644 index 8a8d2b41..00000000 --- a/AceGitLinkPlugin.js +++ /dev/null @@ -1,263 +0,0 @@ -var ConverterComponent = require("typedoc/dist/lib/converter/components").ConverterComponent; -var Converter = require("typedoc/dist/lib/converter").Converter; -var fs = require("fs"); -var modelTypes = require("typedoc/dist/lib/models/types"); -var modelReflections = require("typedoc/dist/lib/models/reflections/index"); - -class AceGitLinkPlugin extends ConverterComponent { - initialize() { - this.listenTo(this.owner, Converter.EVENT_BEGIN, this.onBegin); - this.logs = ''; - } - - onBegin() { - // read options parameter - var options = this.application.options; - var urlPrefix = options.getValue('acegitlink'); - if (urlPrefix) { - this.urlPrefix = urlPrefix; - } - try { - // register handler - this.listenTo(this.owner, Converter.EVENT_RESOLVE_BEGIN, this.onBeginResolve); - this.listenTo(this.owner, Converter.EVENT_RESOLVE_END, this.onEndResolve); - } - catch (e) { - console.error('typedoc-plugin-sourcefile-url: ' + e.message); - } - } - - onBeginResolve(context) { - var project = context.project; - for (var key in project.reflections) { - var reflection = project.reflections[key]; - if (reflection.kind === 4096 && reflection.parent && reflection.parent.kind === 2048 && reflection.parent.parent && reflection.parent.parent.kind === 128) { - if (!reflection.comment) { - // removeReflection(project, reflection.parent); - this.logs = this.logs + "Warning: ignoring method without comment: " + reflection.name + ". Class: " + reflection.parent.parent.name + "\r\n"; - } - } - } - }; - - onEndResolve(context) { - var _this = this; - var project = context.project; - if (_this.urlPrefix) { - var data = fs.readFileSync("generated/classes.json", "utf8"); - var classes = JSON.parse(data.toString()); - for (var key in project.reflections) { - var reflection = project.reflections[key]; - if (reflection.sources) { - reflection.sources.forEach(function (source) { - if (source.file) { - var obj = getSourceUrlFromFile(classes, reflection); - if (obj) { - if (obj.log) { - source.url = _this.urlPrefix + obj.source + "#L" + obj.line; - source.fileName = obj.source; - source.line = obj.line; - _this.logs = _this.logs + obj.log; - } else { - source.url = _this.urlPrefix + obj.source + "#L" + obj.line; - source.fileName = obj.source; - source.line = obj.line; - } - } else { - if (reflection.inheritedFrom || reflection.implementationOf) { - let condition = (reflection.inheritedFrom) ? "inheritedFrom" : "implementationOf"; - var objInh = getSourceUrlFromFile(classes, reflection[condition].reflection); - if (objInh) { - source.url = _this.urlPrefix + objInh.source + "#L" + objInh.line; - source.fileName = objInh.source; - source.line = objInh.line; - } - } else { - source.fileName = undefined; - source.line = ''; - } - } - } - }); - } - } - fs.writeFileSync("generated/documentation.log", this.logs + _this.logs); - } - }; - -} - -function getSourceUrlFromFile(aceObjects, reflection) { - var pattern = /\/(src.*)/i; - - if (reflection.kindString === "Interface" || reflection.kindString === "Class") { - var source = aceObjects[reflection.name]; - if (source && source.sourceName) { - if (source.described) { - return { - "source": (source.sourceName.match(pattern)) ? source.sourceName.match(pattern)[1] : source.sourceName, - "line": source.line - }; - } else { - return { - "source": (source.sourceName.match(pattern)) ? source.sourceName.match(pattern)[1] : source.sourceName, - "line": source.line, - log: "No described class in classes.json: " + reflection.name + "\r\n" - }; - } - - } - } else if (reflection.kindString === "Call signature" && reflection.parent && reflection.parent.kindString === "Method" && (reflection.parent.parent.kindString === "Interface" || reflection.parent.parent.kindString === "Class")) { - if (aceObjects[reflection.parent.parent.name]) { - var parentSource = aceObjects[reflection.parent.parent.name][reflection.name]; - if (parentSource && parentSource.sourceName) { - if (parentSource.described) { - return { - "source": (parentSource.sourceName.match(pattern)) ? parentSource.sourceName.match(pattern)[1] : parentSource.sourceName, - "line": parentSource.line - }; - } else { - if (!reflection.inheritedFrom && !reflection.implementationOf) { - return { - "source": (parentSource.sourceName.match(pattern)) ? parentSource.sourceName.match(pattern)[1] : parentSource.sourceName, - "line": parentSource.line, - log: "No described method in classes.json: " + reflection.name + ". Class:" + reflection.parent.parent.name + "\r\n" - }; - } - } - } - } - } else if (reflection.kindString === "Event" && reflection.parent && reflection.parent.kindString === "Event" && (reflection.parent.parent.kindString === "Interface" || reflection.parent.parent.kindString === "Class")) { - if (aceObjects[reflection.parent.parent.name]) { - if (reflection.parameters && reflection.parameters.length > 0 && reflection.parameters[0].name === "name") { - var eventName = reflection.parameters[0].type.value + '_event'; - var parentSource = aceObjects[reflection.parent.parent.name][eventName]; - if (parentSource && parentSource.sourceName) { - if (parentSource.described) { - return { - "source": (parentSource.sourceName.match(pattern)) ? parentSource.sourceName.match(pattern)[1] : parentSource.sourceName, - "line": parentSource.line - }; - } else { - if (!reflection.inheritedFrom && !reflection.implementationOf) { - return { - "source": (parentSource.sourceName.match(pattern)) ? parentSource.sourceName.match(pattern)[1] : parentSource.sourceName, - "line": parentSource.line, - log: "No described event in classes.json: " + eventName + ". Class:" + reflection.parent.parent.name + "\r\n" - }; - } - } - } - } - } - } else if (reflection.kindString === "Constructor signature" && reflection.parent && reflection.parent.kindString === "Constructor" && (reflection.parent.parent.kindString === "Interface" || reflection.parent.parent.kindString === "Class")) { - if (aceObjects[reflection.parent.parent.name]) { - var parentSource = aceObjects[reflection.parent.parent.name]["construct"]; - if (parentSource && parentSource.sourceName) { - if (parentSource.described) { - return { - "source": (parentSource.sourceName.match(pattern)) ? parentSource.sourceName.match(pattern)[1] : parentSource.sourceName, - "line": parentSource.line - }; - } else { - if (!reflection.inheritedFrom && !reflection.implementationOf) { - return { - "source": (parentSource.sourceName.match(pattern)) ? parentSource.sourceName.match(pattern)[1] : parentSource.sourceName, - "line": parentSource.line, - log: "No constructor in classes.json: " + reflection.name + ". Class:" + reflection.parent.parent.name + "\r\n" - }; - } - } - } - } - } else if (reflection.kindString === "Property" && reflection.parent && (reflection.parent.kindString === "Interface" || reflection.parent.kindString === "Class")) { - if (aceObjects[reflection.parent.name]) { - var parentSource = aceObjects[reflection.parent.name][reflection.name + "_prop"]; - if (parentSource && parentSource.sourceName) { - if (parentSource.described) { - return { - "source": (parentSource.sourceName.match(pattern)) ? parentSource.sourceName.match(pattern)[1] : parentSource.sourceName, - "line": parentSource.line - }; - } else { - if (!reflection.inheritedFrom && !reflection.implementationOf) { - return { - "source": (parentSource.sourceName.match(pattern)) ? parentSource.sourceName.match(pattern)[1] : parentSource.sourceName, - "line": parentSource.line, - log: "No described property in classes.json: " + reflection.name + ". Class:" + reflection.parent.name + "\r\n" - }; - } - } - } - } - } - -} - -function removeReflection(project, reflection) { - reflection.traverse(function (child) { - return removeReflection(project, child); - }); - var parent = reflection.parent; - parent.traverse(function (child, property) { - if (child === reflection) { - switch (property) { - case modelReflections.TraverseProperty.Children: - if (parent.children) { - var index = parent.children.indexOf(reflection); - if (index !== -1) { - parent.children.splice(index, 1); - } - } - break; - case modelReflections.TraverseProperty.GetSignature: - delete parent.getSignature; - break; - case modelReflections.TraverseProperty.IndexSignature: - delete parent.indexSignature; - break; - case modelReflections.TraverseProperty.Parameters: - if (reflection.parent.parameters) { - var index = reflection.parent.parameters.indexOf(reflection); - if (index !== -1) { - reflection.parent.parameters.splice(index, 1); - } - } - break; - case modelReflections.TraverseProperty.SetSignature: - delete parent.setSignature; - break; - case modelReflections.TraverseProperty.Signatures: - if (parent.signatures) { - var index = parent.signatures.indexOf(reflection); - if (index !== -1) { - parent.signatures.splice(index, 1); - } - } - break; - case modelReflections.TraverseProperty.TypeLiteral: - parent.type = new modelTypes.IntrinsicType('Object'); - break; - case modelReflections.TraverseProperty.TypeParameter: - if (parent.typeParameters) { - var index = parent.typeParameters.indexOf(reflection); - if (index !== -1) { - parent.typeParameters.splice(index, 1); - } - } - break; - } - } - }); - var id = reflection.id; - delete project.reflections[id]; - for (var key in project.symbolMapping) { - if (project.symbolMapping.hasOwnProperty(key) && project.symbolMapping[key] === id) { - delete project.symbolMapping[key]; - } - } -}; - -AceGitLinkPlugin.prototype.componentName = "acegitlink"; - -exports.AceGitLinkPlugin = AceGitLinkPlugin; \ No newline at end of file diff --git a/BorrowsTagPlugin.js b/BorrowsTagPlugin.js deleted file mode 100644 index 6693f79c..00000000 --- a/BorrowsTagPlugin.js +++ /dev/null @@ -1,46 +0,0 @@ -var Components = require("typedoc/dist/lib/output/components").ContextAwareRendererComponent; -var Events = require("typedoc/dist/lib/output/events"); -var Path = require("path"); - -class BorrowsTagPlugin extends Components { - initialize() { - this.listenTo(this.owner, Events.RendererEvent.BEGIN, this.onBeginRendererEvent); - this.logs = ''; - } - - onBeginRendererEvent(context) { - var _this = this; - var project = context.project; - for (var key in project.reflections) { - var reflection = project.reflections[key]; - if (reflection.comment && reflection.comment.tags && reflection.comment.tags.length > 0) { - reflection.comment.tags.forEach(function (tag) { - if (tag.tagName == "borrows") { - var commentReflection = project.findReflectionByName(tag.text.replace(/\n+/, '')); - if (commentReflection) { - var comment = (commentReflection.comment || (commentReflection.signatures && commentReflection.signatures.length > 0 && commentReflection.signatures[0].comment)); - if (comment) { - if (commentReflection.url) { - if (_this.urlPrefix.test(commentReflection.url)) { - tag.text = '' + tag.text + ''; - } - else { - const relative = Path.relative(Path.dirname("globals.html"), Path.dirname(commentReflection.url)); - tag.text = '' + tag.text + ''; - } - } - reflection.comment.copyFrom(comment); - reflection.comment.tags.push(tag); - } - } - } - }); - } - } - } - -} - -BorrowsTagPlugin.prototype.componentName = "borrowstag"; - -exports.BorrowsTagPlugin = BorrowsTagPlugin; \ No newline at end of file diff --git a/README.md b/README.md index 6edcc226..36fa2768 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,6 @@ # Ace documentation generator -requires node >= 8 - -```bash -node generateAnnotations.js AceDirName/ace/src -``` - -Creates `classes.json` file in directory `generated`. -There will be warnings in `generated\annotations.log` for duplicated classes\methods implementations from different files. - -Apply `classes.json` file to declaration with command - -```bash -node generateNewDts.js ace.d.ts -``` - -There will be some information in `generated\declarations.log` that you could use for improving declaration file. (Missing events, methods, constructors) - -The final step will generate output documentation with TypeDoc. -You will need to change `generator-options.json` with your settings. +requires node >= 16 Important! Set `ACE_VERSION` variable which is used with `gitLink` parameter to constuct Ace release link - for example: `https://github.com/ajaxorg/ace/tree/v1.4.2/` @@ -28,14 +10,3 @@ node generateDoc.js doc ``` First parameter - output directory for documentation - -Also log file will be created in `generated` dir with name `documentation.log` - - - -```bash -export ACE_VERSION="v$(node -p 'require("ace/package.json").version')" -node generateAnnotations.js ace/src -node generateNewDts.js ace.d.ts -node generateDoc.js doc -``` \ No newline at end of file diff --git a/ace.d.ts b/ace.d.ts deleted file mode 100644 index 7b2f47c9..00000000 --- a/ace.d.ts +++ /dev/null @@ -1,1255 +0,0 @@ -export namespace Ace { - export type NewLineMode = 'auto' | 'unix' | 'windows'; - - export class Anchor implements EventEmitter { - getPosition(): Position; - getDocument(): Document; - setPosition(row: number, column: number, noClip?: boolean): void; - detach(): void; - attach(doc: Document): void; - - addEventListener(name: string, callback: Function, capturing?: boolean): void; - - off(name: string, callback: Function): void; - - on(name: string, callback: Function, capturing?: boolean): void; - - once(name: string, callback: Function): void; - - removeDefaultHandler(name: string, callback: Function): void; - - removeEventListener(name: string, callback: Function): void; - - removeListener(name: string, callback: Function): void; - - setDefaultHandler(name: string, callback: Function): void; - - _emit(eventName: any, e: any): any; - - _signal(eventName: any, e: any): void; - - removeAllListeners(name?: string): void; - - } - - export class Document implements EventEmitter { - setValue(text: string): void; - getValue(): string; - createAnchor(row: number, column: number): Anchor; - getNewLineCharacter(): string; - setNewLineMode(newLineMode: NewLineMode): void; - getNewLineMode(): NewLineMode; - isNewLine(text: string): boolean; - getLine(row: number): string; - getLines(firstRow: number, lastRow: number): string[]; - getAllLines(): string[]; - getLength(): number; - getTextRange(range: Range): string; - getLinesForRange(range: Range): string[]; - insert(position: Position, text: string): Position; - insert(position: {row: number, column: number}, text: string): Position; - insertInLine(position: Position, text: string): Position; - insertNewLine(position: Point): Point; - clippedPos(row: number, column: number): Point; - clonePos(pos: Point): Point; - pos(row: number, column: number): Point; - insertFullLines(row: number, lines: string[]): void; - insertMergedLines(position: Position, lines: string[]): Point; - remove(range: Range): Position; - removeInLine(row: number, startColumn: number, endColumn: number): Position; - removeFullLines(firstRow: number, lastRow: number): string[]; - removeNewLine(row: number): void; - replace(range: Range, text: string): Position; - applyDeltas(deltas: Delta[]): void; - revertDeltas(deltas: Delta[]): void; - applyDelta(delta: Delta, doNotValidate?: boolean): void; - revertDelta(delta: Delta): void; - indexToPosition(index: number, startRow: number): Position; - positionToIndex(pos: Position, startRow?: number): number; - - addEventListener(name: string, callback: Function, capturing?: boolean): void; - - off(name: string, callback: Function): void; - - on(name: string, callback: Function, capturing?: boolean): void; - - once(name: string, callback: Function): void; - - removeDefaultHandler(name: string, callback: Function): void; - - removeEventListener(name: string, callback: Function): void; - - removeListener(name: string, callback: Function): void; - - setDefaultHandler(name: string, callback: Function): void; - - _emit(eventName: any, e: any): any; - - _signal(eventName: any, e: any): void; - - removeAllListeners(name?: string): void; - - } - - export class FoldLine { - folds: Fold[]; - range: Range; - start: Point; - end: Point; - - shiftRow(shift: number): void; - addFold(fold: Fold): void; - containsRow(row: number): boolean; - walk(callback: Function, endRow?: number, endColumn?: number): void; - getNextFoldTo(row: number, column: number): null | { fold: Fold, kind: string }; - addRemoveChars(row: number, column: number, len: number): void; - split(row: number, column: number): FoldLine; - merge(foldLineNext: FoldLine): void; - idxToPosition(idx: number): Point; - } - - export class Fold { - range: Range; - start: Point; - end: Point; - foldLine?: FoldLine; - sameRow: boolean; - subFolds: Fold[]; - - setFoldLine(foldLine: FoldLine): void; - clone(): Fold; - addSubFold(fold: Fold): Fold; - restoreRange(range: Range): void; - } - - interface Folding { - getFoldAt(row: number, column: number, side: number): Fold; - getFoldsInRange(range: Range): Fold[]; - getFoldsInRangeList(ranges: Range[]): Fold[]; - getAllFolds(): Fold[]; - getFoldStringAt(row: number, - column: number, - trim?: number, - foldLine?: FoldLine): string | null; - getFoldLine(docRow: number, startFoldLine?: FoldLine): FoldLine | null; - getNextFoldLine(docRow: number, startFoldLine?: FoldLine): FoldLine | null; - getFoldedRowCount(first: number, last: number): number; - addFold(placeholder: string | Fold, range?: Range): Fold; - addFolds(folds: Fold[]): void; - removeFold(fold: Fold): void; - removeFolds(folds: Fold[]): void; - expandFold(fold: Fold): void; - expandFolds(folds: Fold[]): void; - unfold(location: null | number | Point | Range, - expandInner?: boolean): Fold[] | undefined; - isRowFolded(docRow: number, startFoldRow?: FoldLine): boolean; - getFoldRowEnd(docRow: number, startFoldRow?: FoldLine): number; - getFoldRowStart(docRow: number, startFoldRow?: FoldLine): number; - getFoldDisplayLine(foldLine: FoldLine, - endRow: number | null, - endColumn: number | null, - startRow: number | null, - startColumn: number | null): string; - getDisplayLine(row: number, - endColumn: number | null, - startRow: number | null, - startColumn: number | null): string; - toggleFold(tryToUnfold?: boolean): void; - getCommentFoldRange(row: number, - column: number, - dir: number): Range | undefined; - foldAll(startRow?: number, endRow?: number, depth?: number): void; - setFoldStyle(style: string): void; - getParentFoldRangeData(row: number, ignoreCurrent?: boolean): { - range?: Range, - firstRange: Range - }; - toggleFoldWidget(toggleParent?: boolean): void; - updateFoldWidgets(delta: Delta): void; - } - - export class Range { - start: Point; - end: Point; - - isEqual(range: Range): boolean; - toString(): string; - contains(row: number, column: number): boolean; - compareRange(range: Range): number; - comparePoint(p: Point): number; - containsRange(range: Range): boolean; - intersects(range: Range): boolean; - isEnd(row: number, column: number): boolean; - isStart(row: number, column: number): boolean; - setStart(row: number, column: number): void; - setEnd(row: number, column: number): void; - inside(row: number, column: number): boolean; - insideStart(row: number, column: number): boolean; - insideEnd(row: number, column: number): boolean; - compare(row: number, column: number): number; - compareStart(row: number, column: number): number; - compareEnd(row: number, column: number): number; - compareInside(row: number, column: number): number; - clipRows(firstRow: number, lastRow: number): Range; - extend(row: number, column: number): Range; - isEmpty(): boolean; - isMultiLine(): boolean; - clone(): Range; - collapseRows(): Range; - toScreenRange(session: EditSession): Range; - moveBy(row: number, column: number): void; - } - - export interface EditSessionOptions { - wrap: "off" | "free" | "printmargin" | boolean | number; - wrapMethod: 'code' | 'text' | 'auto'; - indentedSoftWrap: boolean; - firstLineNumber: number; - useWorker: boolean; - useSoftTabs: boolean; - tabSize: number; - navigateWithinSoftTabs: boolean; - foldStyle: 'markbegin' | 'markbeginend' | 'manual'; - overwrite: boolean; - newLineMode: NewLineMode; - mode: string; - } - - export interface VirtualRendererOptions { - animatedScroll: boolean; - showInvisibles: boolean; - showPrintMargin: boolean; - printMarginColumn: number; - printMargin: boolean | number; - showGutter: boolean; - fadeFoldWidgets: boolean; - showFoldWidgets: boolean; - showLineNumbers: boolean; - displayIndentGuides: boolean; - highlightIndentGuides: boolean; - highlightGutterLine: boolean; - hScrollBarAlwaysVisible: boolean; - vScrollBarAlwaysVisible: boolean; - fontSize: number; - fontFamily: string; - maxLines: number; - minLines: number; - scrollPastEnd: boolean; - fixedWidthGutter: boolean; - customScrollbar: boolean; - theme: string; - hasCssTransforms: boolean; - maxPixelHeight: number; - useSvgGutterIcons: boolean; - } - - export interface MouseHandlerOptions { - scrollSpeed: number; - dragDelay: number; - dragEnabled: boolean; - focusTimeout: number; - tooltipFollowsMouse: boolean; - } - - export interface EditorOptions extends EditSessionOptions, - MouseHandlerOptions, - VirtualRendererOptions { - selectionStyle: string; - highlightActiveLine: boolean; - highlightSelectedWord: boolean; - readOnly: boolean; - copyWithEmptySelection: boolean; - cursorStyle: 'ace' | 'slim' | 'smooth' | 'wide'; - mergeUndoDeltas: true | false | 'always'; - behavioursEnabled: boolean; - wrapBehavioursEnabled: boolean; - enableAutoIndent: boolean; - enableBasicAutocompletion: boolean | Completer[], - enableLiveAutocompletion: boolean | Completer[], - enableSnippets: boolean, - autoScrollEditorIntoView: boolean; - keyboardHandler: string | null; - placeholder: string; - value: string; - session: EditSession; - relativeLineNumbers: boolean; - } - - export interface SearchOptions { - needle: string | RegExp; - preventScroll: boolean; - backwards: boolean; - start: Range; - skipCurrent: boolean; - range: Range; - preserveCase: boolean; - regExp: boolean; - wholeWord: boolean; - caseSensitive: boolean; - wrap: boolean; - } - - export interface EventEmitter { - once(name: string, callback: Function): void; - setDefaultHandler(name: string, callback: Function): void; - removeDefaultHandler(name: string, callback: Function): void; - on(name: string, callback: Function, capturing?: boolean): void; - addEventListener(name: string, callback: Function, capturing?: boolean): void; - off(name: string, callback: Function): void; - removeListener(name: string, callback: Function): void; - removeEventListener(name: string, callback: Function): void; - _emit(eventName: any, e: any): any; - _signal(eventName: any, e: any): void; - removeAllListeners(name?: string): void; - } - - export interface Point { - row: number; - column: number; - } - - export interface Delta { - action: 'insert' | 'remove'; - start: Point; - end: Point; - lines: string[]; - } - - export interface Annotation { - row?: number; - column?: number; - text: string; - type: string; - } - - export interface MarkerGroupItem { - range: Range; - className: string; - } - - export class MarkerGroup { - constructor(session: EditSession); - setMarkers(markers: MarkerGroupItem[]): void; - getMarkerAtPosition(pos: Position): MarkerGroupItem; - } - - export interface Command { - name?: string; - bindKey?: string | { mac?: string, win?: string }; - readOnly?: boolean; - exec: (editor: Editor, args?: any) => void; - } - - export type CommandLike = Command | ((editor: Editor) => void); - - export class KeyboardHandler { - handleKeyboard: Function; - } - - export class MarkerLike { - range?: Range; - type: string; - renderer?: MarkerRenderer; - clazz: string; - inFront: boolean; - id: number; - update?: (html: string[], - // TODO maybe define Marker class - marker: any, - session: EditSession, - config: any) => void; - } - - export type MarkerRenderer = (html: string[], - range: Range, - left: number, - top: number, - config: any) => void; - - export interface Token { - type: string; - value: string; - index?: number; - start?: number; - } - - interface BaseCompletion { - score?: number; - meta?: string; - caption?: string; - docHTML?: string; - docText?: string; - completerId?: string; - } - - export interface SnippetCompletion extends BaseCompletion { - snippet: string; - } - - export interface ValueCompletion extends BaseCompletion { - value: string; - } - - export type Completion = SnippetCompletion | ValueCompletion - - export interface Tokenizer { - removeCapturingGroups(src: string): string; - createSplitterRegexp(src: string, flag?: string): RegExp; - getLineTokens(line: string, startState: string | string[]): Token[]; - } - - class TokenIterator { - getCurrentToken(): Token; - getCurrentTokenColumn(): number; - getCurrentTokenRow(): number; - getCurrentTokenPosition(): Point; - getCurrentTokenRange(): Range; - stepBackward(): Token; - stepForward(): Token; - } - - export class SyntaxMode { - getTokenizer(): Tokenizer; - toggleCommentLines(state: any, - session: EditSession, - startRow: number, - endRow: number): void; - toggleBlockComment(state: any, - session: EditSession, - range: Range, - cursor: Point): void; - getNextLineIndent(state: any, line: string, tab: string): string; - checkOutdent(state: any, line: string, input: string): boolean; - autoOutdent(state: any, doc: Document, row: number): void; - // TODO implement WorkerClient types - createWorker(session: EditSession): any; - createModeDelegates(mapping: { [key: string]: string }): void; - transformAction(state: string, - action: string, - editor: Editor, - session: EditSession, - text: string): any; - getKeywords(append?: boolean): Array; - getCompletions(state: string, - session: EditSession, - pos: Point, - prefix: string): Completion[]; - } - - export class Config { - get(key: string): any; - set(key: string, value: any): void; - all(): { [key: string]: any }; - moduleUrl(name: string, component?: string): string; - setModuleUrl(name: string, subst: string): string; - setLoader(cb: Function): void; - setModuleLoader(name: string, onLoad: Function): void; - loadModule(moduleName: string | [string, string], - onLoad?: (module: any) => void): void; - init(packaged: any): any; - defineOptions(obj: any, path: string, options: { [key: string]: any }): Config; - resetOptions(obj: any): void; - setDefaultValue(path: string, name: string, value: any): void; - setDefaultValues(path: string, optionHash: { [key: string]: any }): void; - } - - export interface OptionsProvider { - setOptions(optList: { [key: string]: any }): void; - getOptions(optionNames?: string[] | { [key: string]: any }): { [key: string]: any }; - setOption(name: string, value: any): void; - getOption(name: string): any; - } - - export class UndoManager { - addSession(session: EditSession): void; - add(delta: Delta, allowMerge: boolean, session: EditSession): void; - addSelection(selection: string, rev?: number): void; - startNewGroup(): void; - markIgnored(from: number, to?: number): void; - getSelection(rev: number, after?: boolean): { value: string, rev: number }; - getRevision(): number; - getDeltas(from: number, to?: number): Delta[]; - undo(session: EditSession, dontSelect?: boolean): void; - redo(session: EditSession, dontSelect?: boolean): void; - reset(): void; - canUndo(): boolean; - canRedo(): boolean; - bookmark(rev?: number): void; - isAtBookmark(): boolean; - hasUndo(): boolean; - hasRedo(): boolean; - isClean(): boolean; - markClean(rev?: number): void; - } - - export interface Position { - row: number, - column: number - } - - export class EditSession implements EventEmitter, OptionsProvider { - selection: Selection; - - // TODO: define BackgroundTokenizer - - on(name: 'changeFold', - callback: (obj: { data: Fold, action: string }) => void): Function; - on(name: 'changeScrollLeft', callback: (scrollLeft: number) => void): Function; - on(name: 'changeScrollTop', callback: (scrollTop: number) => void): Function; - on(name: 'tokenizerUpdate', - callback: (obj: { data: { first: number, last: number } }) => void): Function; - on(name: 'change', callback: () => void): Function; - - - setOption(name: T, value: EditSessionOptions[T]): void; - getOption(name: T): EditSessionOptions[T]; - - readonly doc: Document; - - setDocument(doc: Document): void; - getDocument(): Document; - resetCaches(): void; - setValue(text: string): void; - getValue(): string; - getSelection(): Selection; - getState(row: number): string; - getTokens(row: number): Token[]; - getTokenAt(row: number, column: number): Token | null; - setUndoManager(undoManager: UndoManager): void; - markUndoGroup(): void; - getUndoManager(): UndoManager; - getTabString(): string; - setUseSoftTabs(val: boolean): void; - getUseSoftTabs(): boolean; - setTabSize(tabSize: number): void; - getTabSize(): number; - isTabStop(position: Position): boolean; - setNavigateWithinSoftTabs(navigateWithinSoftTabs: boolean): void; - getNavigateWithinSoftTabs(): boolean; - setOverwrite(overwrite: boolean): void; - getOverwrite(): boolean; - toggleOverwrite(): void; - addGutterDecoration(row: number, className: string): void; - removeGutterDecoration(row: number, className: string): void; - getBreakpoints(): string[]; - setBreakpoints(rows: number[]): void; - clearBreakpoints(): void; - setBreakpoint(row: number, className: string): void; - clearBreakpoint(row: number): void; - addMarker(range: Range, - className: string, - type: "fullLine" | "screenLine" | "text" | MarkerRenderer, - inFront?: boolean): number; - addDynamicMarker(marker: MarkerLike, inFront: boolean): MarkerLike; - removeMarker(markerId: number): void; - getMarkers(inFront?: boolean): { [id: number]: MarkerLike }; - highlight(re: RegExp): void; - highlightLines(startRow: number, - endRow: number, - className: string, - inFront?: boolean): Range; - setAnnotations(annotations: Annotation[]): void; - getAnnotations(): Annotation[]; - clearAnnotations(): void; - getWordRange(row: number, column: number): Range; - getAWordRange(row: number, column: number): Range; - setNewLineMode(newLineMode: NewLineMode): void; - getNewLineMode(): NewLineMode; - setUseWorker(useWorker: boolean): void; - getUseWorker(): boolean; - setMode(mode: string | SyntaxMode, callback?: () => void): void; - getMode(): SyntaxMode; - setScrollTop(scrollTop: number): void; - getScrollTop(): number; - setScrollLeft(scrollLeft: number): void; - getScrollLeft(): number; - getScreenWidth(): number; - getLineWidgetMaxWidth(): number; - getLine(row: number): string; - getLines(firstRow: number, lastRow: number): string[]; - getLength(): number; - getTextRange(range: Range): string; - insert(position: Position, text: string): void; - remove(range: Range): void; - removeFullLines(firstRow: number, lastRow: number): void; - undoChanges(deltas: Delta[], dontSelect?: boolean): void; - redoChanges(deltas: Delta[], dontSelect?: boolean): void; - setUndoSelect(enable: boolean): void; - replace(range: Range, text: string): void; - moveText(fromRange: Range, toPosition: Position, copy?: boolean): void; - indentRows(startRow: number, endRow: number, indentString: string): void; - outdentRows(range: Range): void; - moveLinesUp(firstRow: number, lastRow: number): void; - moveLinesDown(firstRow: number, lastRow: number): void; - duplicateLines(firstRow: number, lastRow: number): void; - setUseWrapMode(useWrapMode: boolean): void; - getUseWrapMode(): boolean; - setWrapLimitRange(min: number, max: number): void; - adjustWrapLimit(desiredLimit: number): boolean; - getWrapLimit(): number; - setWrapLimit(limit: number): void; - getWrapLimitRange(): { min: number, max: number }; - getRowLineCount(row: number): number; - getRowWrapIndent(screenRow: number): number; - getScreenLastRowColumn(screenRow: number): number; - getDocumentLastRowColumn(docRow: number, docColumn: number): number; - getdocumentLastRowColumnPosition(docRow: number, docColumn: number): Position; - getRowSplitData(row: number): string | undefined; - getScreenTabSize(screenColumn: number): number; - screenToDocumentRow(screenRow: number, screenColumn: number): number; - screenToDocumentColumn(screenRow: number, screenColumn: number): number; - screenToDocumentPosition(screenRow: number, - screenColumn: number, - offsetX?: number): Position; - documentToScreenPosition(docRow: number, docColumn: number): Position; - documentToScreenPosition(position: Position): Position; - documentToScreenColumn(row: number, docColumn: number): number; - documentToScreenRow(docRow: number, docColumn: number): number; - getScreenLength(): number; - destroy(): void; - - addEventListener(name: string, callback: Function, capturing?: boolean): void; - - getOptions(optionNames?: string[] | { [p: string]: any }): { [p: string]: any }; - - off(name: string, callback: Function): void; - - once(name: string, callback: Function): void; - - removeDefaultHandler(name: string, callback: Function): void; - - removeEventListener(name: string, callback: Function): void; - - removeListener(name: string, callback: Function): void; - - setDefaultHandler(name: string, callback: Function): void; - - setOptions(optList: { [p: string]: any }): void; - - _emit(eventName: any, e: any): any; - - _signal(eventName: any, e: any): void; - - removeAllListeners(name?: string): void; - - } - - export class KeyBinding { - setDefaultHandler(handler: KeyboardHandler): void; - setKeyboardHandler(handler: KeyboardHandler): void; - addKeyboardHandler(handler: KeyboardHandler, pos?: number): void; - removeKeyboardHandler(handler: KeyboardHandler): boolean; - getKeyboardHandler(): KeyboardHandler; - getStatusText(): string; - onCommandKey(e: any, hashId: number, keyCode: number): boolean; - onTextInput(text: string): boolean; - } - - interface CommandMap { - [name: string]: Command; - } - - type execEventHandler = (obj: { - editor: Editor, - command: Command, - args: any[] - }) => void; - - export interface CommandManager extends EventEmitter { - byName: CommandMap, - commands: CommandMap, - on(name: 'exec', callback: execEventHandler): Function; - on(name: 'afterExec', callback: execEventHandler): Function; - once(name: string, callback: Function): void; - setDefaultHandler(name: string, callback: Function): void; - removeDefaultHandler(name: string, callback: Function): void; - on(name: string, callback: Function, capturing?: boolean): void; - addEventListener(name: string, callback: Function, capturing?: boolean): void; - off(name: string, callback: Function): void; - removeListener(name: string, callback: Function): void; - removeEventListener(name: string, callback: Function): void; - - exec(command: string, editor: Editor, args: any): boolean; - toggleRecording(editor: Editor): void; - replay(editor: Editor): void; - addCommand(command: Command): void; - addCommands(command: Command[]): void; - removeCommand(command: Command | string, keepCommand?: boolean): void; - removeCommands(command: Command[]): void; - bindKey(key: string | { mac?: string, win?: string}, - command: CommandLike, - position?: number): void; - bindKeys(keys: {[s: string]: Function}): void; - parseKeys(keyPart: string): {key: string, hashId: number}; - findKeyCommand(hashId: number, keyString: string): string | undefined; - handleKeyboard(data: {}, hashId: number, keyString: string, keyCode: string | number): void | {command: string}; - getStatusText(editor: Editor, data: {}): string; - } - - export class VirtualRenderer implements OptionsProvider, EventEmitter { - readonly container: HTMLElement; - readonly scroller: HTMLElement; - readonly content: HTMLElement; - readonly characterWidth: number; - readonly lineHeight: number; - readonly scrollLeft: number; - readonly scrollTop: number; - readonly $padding: number; - - setOption(name: T, value: VirtualRendererOptions[T]): void; - getOption(name: T): VirtualRendererOptions[T]; - - setSession(session: EditSession): void; - updateLines(firstRow: number, lastRow: number, force?: boolean): void; - updateText(): void; - updateFull(force?: boolean): void; - updateFontSize(): void; - adjustWrapLimit(): boolean; - setAnimatedScroll(shouldAnimate: boolean): void; - getAnimatedScroll(): boolean; - setShowInvisibles(showInvisibles: boolean): void; - getShowInvisibles(): boolean; - setDisplayIndentGuides(display: boolean): void; - getDisplayIndentGuides(): boolean; - setShowPrintMargin(showPrintMargin: boolean): void; - getShowPrintMargin(): boolean; - setPrintMarginColumn(showPrintMargin: boolean): void; - getPrintMarginColumn(): boolean; - setShowGutter(show: boolean): void; - getShowGutter(): boolean; - setFadeFoldWidgets(show: boolean): void; - getFadeFoldWidgets(): boolean; - setHighlightGutterLine(shouldHighlight: boolean): void; - getHighlightGutterLine(): boolean; - getContainerElement(): HTMLElement; - getMouseEventTarget(): HTMLElement; - getTextAreaContainer(): HTMLElement; - getFirstVisibleRow(): number; - getFirstFullyVisibleRow(): number; - getLastFullyVisibleRow(): number; - getLastVisibleRow(): number; - setPadding(padding: number): void; - setScrollMargin(top: number, - bottom: number, - left: number, - right: number): void; - setHScrollBarAlwaysVisible(alwaysVisible: boolean): void; - getHScrollBarAlwaysVisible(): boolean; - setVScrollBarAlwaysVisible(alwaysVisible: boolean): void; - getVScrollBarAlwaysVisible(): boolean; - freeze(): void; - unfreeze(): void; - updateFrontMarkers(): void; - updateBackMarkers(): void; - updateBreakpoints(): void; - setAnnotations(annotations: Annotation[]): void; - updateCursor(): void; - hideCursor(): void; - showCursor(): void; - scrollSelectionIntoView(anchor: Position, - lead: Position, - offset?: number): void; - scrollCursorIntoView(cursor: Position, offset?: number): void; - getScrollTop(): number; - getScrollLeft(): number; - getScrollTopRow(): number; - getScrollBottomRow(): number; - scrollToRow(row: number): void; - alignCursor(cursor: Position | number, alignment: number): number; - scrollToLine(line: number, - center: boolean, - animate: boolean, - callback: () => void): void; - animateScrolling(fromValue: number, callback: () => void): void; - scrollToY(scrollTop: number): void; - scrollToX(scrollLeft: number): void; - scrollTo(x: number, y: number): void; - scrollBy(deltaX: number, deltaY: number): void; - isScrollableBy(deltaX: number, deltaY: number): boolean; - textToScreenCoordinates(row: number, column: number): { pageX: number, pageY: number}; - pixelToScreenCoordinates(x: number, y: number): {row: number, column: number, side: 1|-1, offsetX: number}; - visualizeFocus(): void; - visualizeBlur(): void; - showComposition(position: number): void; - setCompositionText(text: string): void; - hideComposition(): void; - setGhostText(text: string, position: Point): void; - removeGhostText(): void; - setTheme(theme: string, callback?: () => void): void; - getTheme(): string; - setStyle(style: string, include?: boolean): void; - unsetStyle(style: string): void; - setCursorStyle(style: string): void; - setMouseCursor(cursorStyle: string): void; - attachToShadowRoot(): void; - destroy(): void; - - addEventListener(name: string, callback: Function, capturing?: boolean): void; - - getOptions(optionNames?: string[] | { [p: string]: any }): { [p: string]: any }; - - off(name: string, callback: Function): void; - - on(name: string, callback: Function, capturing?: boolean): void; - - once(name: string, callback: Function): void; - - removeDefaultHandler(name: string, callback: Function): void; - - removeEventListener(name: string, callback: Function): void; - - removeListener(name: string, callback: Function): void; - - setDefaultHandler(name: string, callback: Function): void; - - setOptions(optList: { [p: string]: any }): void; - - _emit(eventName: any, e: any): any; - - _signal(eventName: any, e: any): void; - - removeAllListeners(name?: string): void; - - } - - - export class Selection implements EventEmitter { - moveCursorWordLeft(): void; - moveCursorWordRight(): void; - fromOrientedRange(range: Range): void; - setSelectionRange(match: any): void; - getAllRanges(): Range[]; - addRange(range: Range): void; - isEmpty(): boolean; - isMultiLine(): boolean; - setCursor(row: number, column: number): void; - setAnchor(row: number, column: number): void; - getAnchor(): Position; - getCursor(): Position; - isBackwards(): boolean; - getRange(): Range; - clearSelection(): void; - selectAll(): void; - setRange(range: Range, reverse?: boolean): void; - selectTo(row: number, column: number): void; - selectToPosition(pos: any): void; - selectUp(): void; - selectDown(): void; - selectRight(): void; - selectLeft(): void; - selectLineStart(): void; - selectLineEnd(): void; - selectFileEnd(): void; - selectFileStart(): void; - selectWordRight(): void; - selectWordLeft(): void; - getWordRange(): void; - selectWord(): void; - selectAWord(): void; - selectLine(): void; - moveCursorUp(): void; - moveCursorDown(): void; - moveCursorLeft(): void; - moveCursorRight(): void; - moveCursorLineStart(): void; - moveCursorLineEnd(): void; - moveCursorFileEnd(): void; - moveCursorFileStart(): void; - moveCursorLongWordRight(): void; - moveCursorLongWordLeft(): void; - moveCursorBy(rows: number, chars: number): void; - moveCursorToPosition(position: any): void; - moveCursorTo(row: number, column: number, keepDesiredColumn?: boolean): void; - moveCursorToScreen(row: number, column: number, keepDesiredColumn: boolean): void; - - toJSON(): SavedSelection | SavedSelection[]; - fromJSON(selection: SavedSelection | SavedSelection[]): void; - - addEventListener(name: string, callback: Function, capturing?: boolean): void; - - off(name: string, callback: Function): void; - - on(name: string, callback: Function, capturing?: boolean): void; - - once(name: string, callback: Function): void; - - removeDefaultHandler(name: string, callback: Function): void; - - removeEventListener(name: string, callback: Function): void; - - removeListener(name: string, callback: Function): void; - - setDefaultHandler(name: string, callback: Function): void; - - _emit(eventName: any, e: any): any; - - _signal(eventName: any, e: any): void; - - removeAllListeners(name?: string): void; - - } - interface SavedSelection { - start: Point; - end: Point; - isBackwards: boolean; - } - - export interface TextInput { - resetSelection(): void; - } - - export class Editor implements OptionsProvider, EventEmitter { - once(name: string, callback: Function): void; - setDefaultHandler(name: string, callback: Function): void; - removeDefaultHandler(name: string, callback: Function): void; - addEventListener(name: string, callback: Function, capturing?: boolean): void; - off(name: string, callback: Function): void; - removeListener(name: string, callback: Function): void; - removeEventListener(name: string, callback: Function): void; - _emit(eventName: any, e: any); - _signal(eventName: any, e: any): void; - removeAllListeners(name?: string): void; - setOptions(optList: { [key: string]: any; }): void; - getOptions(optionNames?: string[] | { [key: string]: any; }): { [key: string]: any; }; - container: HTMLElement; - renderer: VirtualRenderer; - id: string; - commands: CommandManager; - keyBinding: KeyBinding; - session: EditSession; - selection: Selection; - textInput: TextInput; - - on(name: 'blur', callback: (e: Event) => void): void; - on(name: 'input', callback: () => void): void; - on(name: 'change', callback: (delta: Delta) => void): void; - on(name: 'changeSelectionStyle', callback: (obj: { data: string }) => void): void; - on(name: 'changeSession', - callback: (obj: { session: EditSession, oldSession: EditSession }) => void): void; - on(name: 'copy', callback: (obj: { text: string }) => void): void; - on(name: 'focus', callback: (e: Event) => void): void; - on(name: 'paste', callback: (obj: { text: string }) => void): void; - on(name: 'mousemove', callback: (e: any) => void): void; - on(name: 'mouseup', callback: (e: any) => void): void; - on(name: 'mousewheel', callback: (e: any) => void): void; - on(name: 'click', callback: (e: any) => void): void; - - onPaste(text: string, event: any): void; - - setOption(name: T, value: EditorOptions[T]): void; - getOption(name: T): EditorOptions[T]; - - setKeyboardHandler(keyboardHandler: string, callback?: () => void): void; - setKeyboardHandler(keyboardHandler: KeyboardHandler|null): void; - getKeyboardHandler(): string; - setSession(session: EditSession): void; - getSession(): EditSession; - setValue(val: string, cursorPos?: number): string; - getValue(): string; - getSelection(): Selection; - resize(force?: boolean): void; - setTheme(theme: string, callback?: () => void): void; - getTheme(): string; - setStyle(style: string): void; - unsetStyle(style: string): void; - getFontSize(): string; - setFontSize(size: number): void; - focus(): void; - isFocused(): boolean; - blur(): void; - getSelectedText(): string; - getCopyText(): string; - execCommand(command: string | string[], args?: any): boolean; - insert(text: string, pasted?: boolean): void; - setOverwrite(overwrite: boolean): void; - getOverwrite(): boolean; - toggleOverwrite(): void; - setScrollSpeed(speed: number): void; - getScrollSpeed(): number; - setDragDelay(dragDelay: number): void; - getDragDelay(): number; - setSelectionStyle(val: string): void; - getSelectionStyle(): string; - setHighlightActiveLine(shouldHighlight: boolean): void; - getHighlightActiveLine(): boolean; - setHighlightGutterLine(shouldHighlight: boolean): void; - getHighlightGutterLine(): boolean; - setHighlightSelectedWord(shouldHighlight: boolean): void; - getHighlightSelectedWord(): boolean; - setAnimatedScroll(shouldAnimate: boolean): void; - getAnimatedScroll(): boolean; - setShowInvisibles(showInvisibles: boolean): void; - getShowInvisibles(): boolean; - setDisplayIndentGuides(display: boolean): void; - getDisplayIndentGuides(): boolean; - setShowPrintMargin(showPrintMargin: boolean): void; - getShowPrintMargin(): boolean; - setPrintMarginColumn(showPrintMargin: number): void; - getPrintMarginColumn(): number; - setReadOnly(readOnly: boolean): void; - getReadOnly(): boolean; - setBehavioursEnabled(enabled: boolean): void; - getBehavioursEnabled(): boolean; - setWrapBehavioursEnabled(enabled: boolean): void; - getWrapBehavioursEnabled(): boolean; - setShowFoldWidgets(show: boolean): void; - getShowFoldWidgets(): boolean; - setFadeFoldWidgets(fade: boolean): void; - getFadeFoldWidgets(): boolean; - remove(dir?: 'left' | 'right'): void; - removeWordRight(): void; - removeWordLeft(): void; - removeLineToEnd(): void; - splitLine(): void; - setGhostText(text: string, position: Point): void; - removeGhostText(): void; - transposeLetters(): void; - toLowerCase(): void; - toUpperCase(): void; - indent(): void; - blockIndent(): void; - blockOutdent(): void; - sortLines(): void; - toggleCommentLines(): void; - toggleBlockComment(): void; - modifyNumber(amount: number): void; - removeLines(): void; - duplicateSelection(): void; - moveLinesDown(): void; - moveLinesUp(): void; - moveText(range: Range, toPosition: Point, copy?: boolean): Range; - copyLinesUp(): void; - copyLinesDown(): void; - getFirstVisibleRow(): number; - getLastVisibleRow(): number; - isRowVisible(row: number): boolean; - isRowFullyVisible(row: number): boolean; - selectPageDown(): void; - selectPageUp(): void; - gotoPageDown(): void; - gotoPageUp(): void; - scrollPageDown(): void; - scrollPageUp(): void; - scrollToRow(row: number): void; - scrollToLine(line: number, center: boolean, animate: boolean, callback: () => void): void; - centerSelection(): void; - getCursorPosition(): Point; - getCursorPositionScreen(): Point; - getSelectionRange(): Range; - selectAll(): void; - clearSelection(): void; - moveCursorTo(row: number, column: number): void; - moveCursorToPosition(pos: Point): void; - jumpToMatching(select: boolean, expand: boolean): void; - gotoLine(lineNumber: number, column: number, animate: boolean): void; - navigateTo(row: number, column: number): void; - navigateUp(times?: number): void; - navigateDown(times?: number): void; - navigateLeft(times?: number): void; - navigateRight(times?: number): void; - navigateLineStart(): void; - navigateLineEnd(): void; - navigateFileEnd(): void; - navigateFileStart(): void; - navigateWordRight(): void; - navigateWordLeft(): void; - replace(replacement: string, options?: Partial): number; - replaceAll(replacement: string, options?: Partial): number; - getLastSearchOptions(): Partial; - find(needle: string | RegExp, options?: Partial, animate?: boolean): Ace.Range | undefined; - findNext(options?: Partial, animate?: boolean): void; - findPrevious(options?: Partial, animate?: boolean): void; - findAll(needle: string | RegExp, options?: Partial, additive?: boolean): number; - undo(): void; - redo(): void; - destroy(): void; - setAutoScrollEditorIntoView(enable: boolean): void; - completers: Completer[]; - } - - type CompleterCallback = (error: any, completions: Completion[]) => void; - - interface Completer { - identifierRegexps?: Array, - getCompletions(editor: Editor, - session: EditSession, - position: Point, - prefix: string, - callback: CompleterCallback): void; - getDocTooltip?(item: Completion): undefined | string | Completion; - id?: string; - } - - export class AceInline { - show(editor: Editor, completion: Completion, prefix: string): void; - - isOpen(): void; - - hide(): void; - - destroy(): void; - } - - interface CompletionOptions { - matches?: Completion[]; - } - - type CompletionProviderOptions = { - exactMatch?: boolean; - ignoreCaption?: boolean; - } - - type CompletionRecord = { - all: Completion[]; - filtered: Completion[]; - filterText: string; - } | CompletionProviderOptions - - type GatherCompletionRecord = { - prefix: string; - matches: Completion[]; - finished: boolean; - } - - type CompletionCallbackFunction = (err: Error | undefined, data: GatherCompletionRecord) => void; - type CompletionProviderCallback = (err: Error | undefined, completions: CompletionRecord, finished: boolean) => void; - - export class CompletionProvider { - insertByIndex(editor: Editor, index: number, options: CompletionProviderOptions): boolean; - - insertMatch(editor: Editor, data: Completion, options: CompletionProviderOptions): boolean; - - completions: CompletionRecord; - - gatherCompletions(editor: Editor, callback: CompletionCallbackFunction): boolean; - - provideCompletions(editor: Editor, options: CompletionProviderOptions, callback: CompletionProviderCallback): void; - - detach(): void; - } - - export class Autocomplete { - constructor(); - - autoInsert?: boolean; - autoSelect?: boolean; - exactMatch?: boolean; - inlineEnabled?: boolean; - - getPopup(): AcePopup; - - showPopup(editor: Editor, options: CompletionOptions): void; - - detach(): void; - - destroy(): void; - } - - type AcePopupNavigation = "up" | "down" | "start" | "end"; - - export class AcePopup { - constructor(parentNode: HTMLElement); - - setData(list: Completion[], filterText: string): void; - - getData(row: number): Completion; - - getRow(): number; - getRow(line: number): void; - - hide(): void; - - show(pos: Point, lineHeight: number, topdownOnly: boolean): void; - - tryShow(pos: Point, lineHeight: number, anchor: "top" | "bottom" | undefined, forceShow?: boolean): boolean; - - goTo(where: AcePopupNavigation): void; - } -} - - -export const version: string; -export const config: Ace.Config; -export function require(name: string): any; -export function edit(el: Element | string, options?: Partial): Ace.Editor; -export function createEditSession(text: Ace.Document | string, mode: Ace.SyntaxMode): Ace.EditSession; - -export const VirtualRenderer: { - new(container: HTMLElement, theme?: string): Ace.VirtualRenderer; -}; -export const EditSession: { - new(text: string | Document, mode?: Ace.SyntaxMode): Ace.EditSession; -}; -export const UndoManager: { - new(): Ace.UndoManager; -}; -export const Range: { - new(startRow: number, startColumn: number, endRow: number, endColumn: number): Ace.Range; - fromPoints(start: Ace.Point, end: Ace.Point): Ace.Range; - comparePoints(p1: Ace.Point, p2: Ace.Point): number; -}; - - -type InlineAutocompleteAction = "prev" | "next" | "first" | "last"; - -type TooltipCommandEnabledFunction = (editor: Ace.Editor) => boolean; - -interface TooltipCommand extends Ace.Command { - enabled: TooltipCommandEnabledFunction | boolean, - position?: number; -} - -export class InlineAutocomplete { - constructor(); - - getInlineRenderer(): Ace.AceInline; - - getInlineTooltip(): CommandBarTooltip; - - getCompletionProvider(): Ace.CompletionProvider; - - show(editor: Ace.Editor): void; - - isOpen(): boolean; - - detach(): void; - - destroy(): void; - - goTo(action: InlineAutocompleteAction): void; - - tooltipEnabled: boolean; - commands: Record - - getIndex(): number; - - setIndex(value: number): void; - - getLength(): number; - - getData(index?: number): Ace.Completion | undefined; - - updateCompletions(options: Ace.CompletionOptions): void; -} - -export class CommandBarTooltip { - constructor(parentElement: HTMLElement); - - registerCommand(id: string, command: TooltipCommand): void; - - attach(editor: Ace.Editor): void; - - updatePosition(): void; - - update(): void; - - isShown(): boolean; - - getAlwaysShow(): boolean; - - setAlwaysShow(alwaysShow: boolean): void; - - detach(): void; - - destroy(): void; -} diff --git a/annotator.js b/annotator.js deleted file mode 100644 index 6efa6290..00000000 --- a/annotator.js +++ /dev/null @@ -1,62 +0,0 @@ -var Annotator = function (name, line, jsDoc) { - this.name = name; - this.line = line; - this.jsDoc = jsDoc; - //this.parent = parent; -}; -(function () { - Annotator.prototype.toString = function () { - return this.name; - }; - - Annotator.prototype.get = function (name, line, jsDoc) { - if (!(name instanceof Annotator)) { - return this[name] || (this[name] = new Annotator(name, line, jsDoc)); - } else { - return name; - } - }; - Annotator.prototype.find = function (states) { - var s = this; - while (s && !states[s.name]) { - s = s.parent; - } - return states[s ? s.name : "start"]; - }; - - Annotator.prototype.concat = function (name) { - if ((name instanceof Annotator)) { - var len = name.length; - for (var i = 0; i < len; i++) { - for (p in name[i]) { - if (name[i].hasOwnProperty(p)) { - ret[p] = name[i][p]; - } - } - } - return name; - } - - }; - - Annotator.prototype.replace = function (a, b) { - return this.name.replace(a, b); - }; - Annotator.prototype.indexOf = function (a, b) { - return this.name.indexOf(a, b); - }; - Annotator.prototype.hasParent = function (states) { - var s = this; - while (s && states !== s.name) { - s = s.parent; - } - return s ? 1 : -1; - }; - Annotator.prototype.count = function () { - var s = 1; - for (var i in this.children) s += this.children[i].count(); - return s; - }; -}).call(Annotator.prototype); - -exports.Annotator = Annotator; \ No newline at end of file diff --git a/ast.js b/ast.js deleted file mode 100644 index bbe8b24c..00000000 --- a/ast.js +++ /dev/null @@ -1,39 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var ts = require("typescript"); -function generateDocumentation(fileNames, options) { - var program = ts.createProgram(fileNames, options); - // Get the checker, we will use it to find more about classes - var checker = program.getTypeChecker(); - var indent = 0; - for (var _i = 0, _a = program.getSourceFiles(); _i < _a.length; _i++) { - var sourceFile = _a[_i]; - //if (!sourceFile.isDeclarationFile) { - ts.forEachChild(sourceFile, print); - //} - } - - function print(node) { - var symbol = checker.getSymbolAtLocation(node.name); - if (symbol) { - var type = ' - ' + checker.typeToString(checker.getTypeOfSymbolAtLocation(symbol, symbol.valueDeclaration)); - } - else { - var type = ''; - } - if (node.text) - var token = ': ' + node.text; - else - var token = ''; - - var jsDoc = ''; - let currentLine = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart()).line + 1; - console.log(new Array(indent + 1).join(' ') + ts.SyntaxKind[node.kind] + '(' + node.kind + ')' + token + type + ': ' + currentLine); - indent++; - ts.forEachChild(node, print); - indent--; - } - } -generateDocumentation(process.argv.slice(2), { - target: ts.ScriptTarget.ES5, module: ts.ModuleKind.CommonJS, allowJs: true, declaration: true, lib: [], types: [] -}); diff --git a/generateAnnotations.js b/generateAnnotations.js deleted file mode 100644 index be9ae098..00000000 --- a/generateAnnotations.js +++ /dev/null @@ -1,623 +0,0 @@ -"use strict"; -var ts = require("typescript"); -var fs = require("fs"); -const EOL = '\n'; -var propObjects = {}; -var options = JSON.parse(fs.readFileSync("generator-options.json", "utf8").toString()); - -var excludeClasses = options["exclude"]["classes"]; -var excludeMethods = options["exclude"]["methods"]; - -function createCompilerHost(options) { - return { - getSourceFile: getSourceFile, - getDefaultLibFileName: function () { - return ts.getDefaultLibFileName(options) - }, - writeFile: function (fileName, content) { - return ts.sys.writeFile(fileName, content); - }, - getCurrentDirectory: function () { - return ts.sys.getCurrentDirectory(); - }, - getDirectories: function (path) { - return ts.sys.getDirectories(path); - }, - getCanonicalFileName: function (fileName) { - return ts.sys.useCaseSensitiveFileNames ? fileName : fileName.toLowerCase(); - }, - getNewLine: function () { - return ts.sys.newLine; - }, - useCaseSensitiveFileNames: function () { - return ts.sys.useCaseSensitiveFileNames; - }, - fileExists: fileExists, - readFile: readFile, - directoryExists: function (path) { - return ts.sys.directoryExists(path); - } - }; - - function fileExists(fileName) { - return ts.sys.fileExists(fileName); - } - - function readFile(fileName) { - return ts.sys.readFile(fileName); - } - - function getSourceFile(fileName, languageVersion, onError) { - var sourceText = ts.sys.readFile(fileName); - return sourceText !== undefined ? ts.createSourceFile( - fileName, sourceText, languageVersion, false, ts.ScriptKind.TS) : undefined; - } -} - -function checkValidName(name) { - let firstLetter = name[0].toLocaleUpperCase(); - return name.toLocaleUpperCase() != name && firstLetter == name[0] && firstLetter != '_' && firstLetter != '$' - && !excludeClasses.includes(name); -} - -var logs = ''; - -/** Generate documentation for all classes in a set of .js files */ -function generateAnnotations(path, options, output = {}) { - add(path[0]); - - function add(path) { - try { - var stat = fs.statSync(path); - } catch (e) { - return; - } - if (stat.isFile() && /\.js$/.test(path)) { - var fileArr = []; - fileArr.push(path); - if (/test/.test(path) || /vim.js$/.test(path)) return; - if (/src\/mode\/(?!behaviour|folding|text.js|text_highlight_rules.js)/.test(path)) return; - if (/\.(css|snippets)\.js$/.test(path)) return; - - var docs = generateDocumentation(fileArr, options); - //prefer Classes with jsDoc - for (var a in docs) { - if (output[a] && output[a].jsDoc && Array(output[a].jsDoc) && output[a].jsDoc.length > 0) { - delete docs[a].jsDoc; - delete docs[a].sourceName; - delete docs[a].line; - delete docs[a].construct; - } - } - output = mergeGeneratedObjects(output, docs); - - console.log(path + " finished" + EOL); - } - else if (stat.isDirectory()) { - var files = fs.readdirSync(path).sort(); - files.forEach(function (name) { - if (/\s/.test(name)) return; - add(path + "/" + name); - }); - } - } - - var dir = "generated"; - if (!fs.existsSync(dir)) { - fs.mkdirSync(dir); - } - - fs.writeFileSync(dir + "/classes.json", JSON.stringify(output, undefined, 4)); - fs.writeFileSync(dir + "/annotations.log", logs); -} - -function mergeGeneratedObjects() { - for (var i = 1; i < arguments.length; i++) for (var a in arguments[i]) { - if (!arguments[0][a]) { - arguments[0][a] = {}; - } - for (var b in arguments[i][a]) { - arguments[0][a][b] = arguments[i][a][b]; - } - } - - return arguments[0]; -} - -function generateDocumentation(fileNames, options, identifiers = []) { - // Build a program using the set of root file names in fileNames - var host = createCompilerHost(options); - var program = ts.createProgram(fileNames, options, host); - // Get the checker, we will use it to find more about classes - var checker = program.getTypeChecker(); - var output = {}; - - // Visit every sourceFile in the program - for (var _i = 0, _a = program.getSourceFiles(); _i < _a.length; _i++) { - var sourceFile = _a[_i]; - if (!sourceFile.isDeclarationFile) { - // Walk the tree to search for classes - ts.forEachChild(sourceFile, visit); - ts.createPrinter() - } - } - - return output; - - /** visit nodes finding classes with methods/events/constructors*/ - function visit(node) { - var docs = []; - if (ts.isPropertyAssignment(node) && node.parent && ts.isObjectLiteralExpression(node.parent) - && node.parent.parent && ts.isCallExpression(node.parent.parent)) { - findNames(node.parent.parent); - if (identifiers.indexOf('defineOptions') !== -1) { - var symbol = checker.getSymbolAtLocation(node.name); - if (symbol) { - let type = checker.getTypeOfSymbolAtLocation(symbol, symbol.valueDeclaration); - var typeString = checker.typeToString(type); - if (typeString !== "string") { - let currentLine = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart()).line + 1; - identifiers.splice(identifiers.indexOf('require'), 1); - identifiers.splice(identifiers.indexOf('config'), 1); - identifiers.splice(identifiers.indexOf('defineOptions'), 1); - let className = identifiers[0] + 'Options'; - let propertyName = findName(node).escapedText + '_prop'; - let params = {"return": "any"}; - //TODO: maybe there is a method to get normal type without initialValue check - for (let i = 0; i < type.properties.length; i++) { - if (type.properties[i].escapedName == 'initialValue') { - params["return"] = checker.typeToString(type.properties[i].type); - } - } - - if (node.jsDoc) { - let jsDoc = []; - for (var k = 0; k < node.jsDoc.length; k++) { - let jsDocText = node.jsDoc[k].getFullText(); - jsDoc.push(jsDocText); - } - docs = jsDoc; - } - if (!output[className]) { - output[className] = {}; - } - if (!output[className].hasOwnProperty(propertyName)) { - output[className][propertyName] = { - line: currentLine, - jsDoc: docs, - sourceName: fileNames[0], - params: params - } - } - else { - logs = logs + "Duplicate property '" + propertyName + "' determinator. Class: " + className - + ". Filename: " + fileNames[0] + ":" + currentLine + ". First implementation: " - + output[className][propertyName].sourceName + ":" - + output[className][propertyName].line + EOL; - } - } - } - identifiers.length = 0; - } - } - else if (ts.isVariableStatement(node) || ts.isFunctionDeclaration(node) || ts.isClassDeclaration(node)) { - let className = findName(node).escapedText; - if (checkValidName(className) === true) { - findNames(node); - if (identifiers.indexOf('require') == -1) { - let currentLine = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart()).line + 1; - - let allDocs = getAllJsDocs(node, currentLine); - let construct = allDocs.construct; - let events = allDocs.events; - docs = allDocs.docs; - - getPropertiesOfClass(node); - - output[className] = { - line: currentLine, - jsDoc: docs, - sourceName: fileNames[0], - construct: construct - }; - - if (Object.keys(events).length !== 0 && events.constructor === Object) { - output[className] = mergeGeneratedObjects(output[className], events); - } - if (Object.keys(propObjects).length !== 0 && propObjects.constructor === Object) { - output[className] = mergeGeneratedObjects(output[className], propObjects); - } - - } - } - } else if (ts.isMethodDeclaration(node) || ts.isConstructorDeclaration(node)) { - let methodName; - if (ts.isConstructorDeclaration(node)) { - methodName = "construct" - } else { - methodName = node.name.escapedText; - } - let currentLine = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart()).line + 1; - let className = node.parent.name.escapedText; - if (className && checkValidName(className) === true) { - let params = getParametersFromNode(node); - let allDocs = getAllJsDocs(node, currentLine, params); - let events = allDocs.events; - docs = allDocs.docs; - - if (!output[className]) { - output[className] = {}; - } - if (!output[className].hasOwnProperty(methodName) || methodName == "construct") { - output[className][methodName] = { - line: currentLine, - jsDoc: docs, - sourceName: fileNames[0], - params: params - } - } - else { - logs = logs + "Duplicate function '" + methodName + "' determinator. Class: " + className - + ". Filename: " + fileNames[0] + ":" + currentLine + ". First implementation: " - + output[className][methodName].sourceName + ":" + output[className][methodName].line - + EOL; - } - - if (Object.keys(events).length !== 0 && events.constructor === Object) { - output[className] = mergeGeneratedObjects(output[className], events); - } - } - } - else if (ts.isFunctionExpression(node) && node.parent && node.parent.parent && ts.isBinaryExpression( - node.parent) && (ts.isExpressionStatement(node.parent.parent) || ts.isBinaryExpression( - node.parent.parent))) { - let functionName = findName(node.parent).escapedText; - let secondFunctionName; - let currentLine = ts.getLineAndCharacterOfPosition(sourceFile, node.parent.parent.getStart()).line + 1; - let expStatNode; - if (ts.isBinaryExpression(node.parent.parent)) { - expStatNode = node.parent.parent.parent; - secondFunctionName = findName(expStatNode).escapedText; - } - else { - expStatNode = node.parent.parent; - } - - - let findNode = expStatNode; - do { - findNode = findNode.parent; - } while (findNode && !ts.isSourceFile(findNode) && !ts.isCallExpression(findNode) - && !ts.isFunctionDeclaration(findNode)); - - if (findNode && !ts.isSourceFile(findNode) && findName(findNode).escapedText !== "define") { - findNames(findNode); - identifiers.splice(identifiers.indexOf('call'), 1); - while (identifiers.indexOf('prototype') !== -1) { - identifiers.splice(identifiers.indexOf('prototype'), 1); - } - - let params = getParametersFromNode(node); - let allDocs = getAllJsDocs(expStatNode, currentLine, params); - let events = allDocs.events; - docs = allDocs.docs; - - var className; - if (ts.isFunctionDeclaration(findNode)) { - className = identifiers[0]; - } - else { - className = identifiers[identifiers.length - 1]; - } - - if (className && checkValidName(className) === true) { - if (!output[className]) { - output[className] = {}; - } - if (!output[className].hasOwnProperty(functionName)) { - output[className][functionName] = { - line: currentLine, - jsDoc: docs, - sourceName: fileNames[0], - params: params - } - } - else { - logs = logs + "Duplicate function '" + functionName + "' determinator. Class: " + className - + ". Filename: " + fileNames[0] + ":" + currentLine + ". First implementation: " - + output[className][functionName].sourceName + ":" + output[className][functionName].line - + EOL; - } - if (secondFunctionName) { - if (!output[className].hasOwnProperty(secondFunctionName) - || output[className][secondFunctionName] == undefined) { - output[className][secondFunctionName] = { - line: currentLine, - jsDoc: docs, - sourceName: fileNames[0], - params: params - } - } - else { - logs = logs + "Duplicate function '" + secondFunctionName + "' determinator. Class: " - + className + ". Filename: " + fileNames[0] + ":" + currentLine - + ". First implementation: " + output[className][secondFunctionName].sourceName + ":" - + output[className][secondFunctionName].line + EOL; - } - } - - if (Object.keys(events).length !== 0 && events.constructor === Object) { - output[className] = mergeGeneratedObjects(output[className], events); - } - } - identifiers.length = 0; - } - } - else if (ts.isPropertyAccessExpression(node) && node.parent && node.parent.parent && ts.isBinaryExpression( - node.parent) && ts.isExpressionStatement(node.parent.parent)) { - let currentLine = ts.getLineAndCharacterOfPosition(sourceFile, node.parent.parent.getStart()).line + 1; - - ts.forEachChild(node, findNames); - if (identifiers.length == 2 || identifiers.length == 3) { - if (identifiers.indexOf('prototype') !== -1) identifiers.splice(identifiers.indexOf('prototype'), 1); - let className = identifiers[0]; - let functionName = identifiers[identifiers.length - 1]; - if (checkValidName(className) === true && functionName != 'prototype' && (ts.isFunctionExpression( - node.parent.right) || (ts.isBinaryExpression(node.parent.right) && ts.isFunctionExpression( - node.parent.right.right)))) { - let functionNode; - if (ts.isFunctionExpression(node.parent.right)) { - functionNode = node.parent.right; - } - else { - functionNode = node.parent.right.right; - } - - let params = getParametersFromNode(functionNode); - let allDocs = getAllJsDocs(node.parent.parent, currentLine, params); - let events = allDocs.events; - docs = allDocs.docs; - - if (!output[className]) { - output[className] = {}; - } - - if (!output[className].hasOwnProperty(functionName)) { - output[className][functionName] = { - line: currentLine, - jsDoc: docs, - sourceName: fileNames[0], - params: params - } - } - else { - logs = logs + "Duplicate function '" + functionName + "' determinator. Class: " + className - + ". Filename: " + fileNames[0] + ":" + currentLine + ". First implementation: " - + output[className][functionName].sourceName + ":" + output[className][functionName].line - + EOL; - } - - identifiers.length = 0; - if (Object.keys(events).length !== 0 && events.constructor === Object) { - output[className] = mergeGeneratedObjects(output[className], events); - } - } - } - } - propObjects = {}; - ts.forEachChild(node, visit); - identifiers.length = 0; - - } - - /** - * - * @param node - * @param {number} currentLine - * @param [params] - * @return {{docs: *[], construct: {}, events: {}}} - */ - function getAllJsDocs(node, currentLine, params) { - let docs = []; - let construct; - let events = {}; - if (node.jsDoc) { - let jsDoc = []; - for (var k = 0; k < node.jsDoc.length; k++) { - let jsDocText = node.jsDoc[k].getFullText(); - if (/@constructor/.test(jsDocText)) { - let params = getParametersFromJsDoc(node.jsDoc[k]); - construct = { - line: currentLine, - jsDoc: [jsDocText], - sourceName: fileNames[0], - params: params - } - } - else if (/@event/.test(jsDocText)) { - let eventName = jsDocText.match(/@event ([\w]*)/)[1] + "_event"; - let eventLine = ts.getLineAndCharacterOfPosition( - sourceFile, node.jsDoc[k].getStart()).line + 1; - let params = getParametersFromJsDoc(node.jsDoc[k]); - events[eventName] = { - line: eventLine, - jsDoc: [jsDocText], - sourceName: fileNames[0], - params: params - } - } - else { - jsDoc.push(jsDocText); - if (params && Object.keys(params).length > 0) { - for (let prop in params) { - if (params[prop] == 'any' || params[prop] == '{}') { - let paramTypeFromJsDoc = getParameterTypeFromJsDoc(node.jsDoc[k], prop); - if (paramTypeFromJsDoc) { - params[prop] = paramTypeFromJsDoc; - } - } - } - - } - } - } - docs = jsDoc; - } - var comment = transformCommentToJsDoc(node); - if (comment) { - docs.push(comment); - } - return { - events, - docs, - construct - }; - } - - function getPropertiesOfClass(node) { - if (ts.isIdentifier(node) && node.parent && node.parent.expression && node.parent.expression.kind === 100 - && ts.isPropertyAccessExpression(node.parent) && node.parent.parent && ts.isBinaryExpression( - node.parent.parent) && ts.isExpressionStatement(node.parent.parent.parent)) { - let currentLine = ts.getLineAndCharacterOfPosition(sourceFile, node.parent.parent.parent.getStart()).line - + 1; - let params = {"return": "any"}; - let type = checker.typeToString( - checker.getBaseTypeOfLiteralType(checker.getTypeAtLocation(node.parent.parent))); - let name = node.escapedText + "_prop"; - if (type) { - params["return"] = type; - } - let docs = []; - if (node.parent.parent.parent.jsDoc) { - let jsDoc = []; - for (var k = 0; k < node.parent.parent.parent.jsDoc.length; k++) { - let jsDocText = node.parent.parent.parent.jsDoc[k].getFullText(); - jsDoc.push(jsDocText); - } - docs = jsDoc; - } - propObjects[name] = { - line: currentLine, - jsDoc: docs, - sourceName: fileNames[0], - params: params - } - } - else { - ts.forEachChild(node, getPropertiesOfClass); - } - } - - function transformCommentToJsDoc(node) { - - let party = ts.getLeadingCommentRanges(sourceFile.getFullText(), node.getFullStart()); - if (party) { - var al = sourceFile.getFullText().substring(party[0].pos, party[0].end); - if (al && !/^\/\*\*/g.test(al) && !/Copyright/g.test(al)) { - var comment; - if (/^\/\*/g.test(al)) { - comment = al.replace(/^[/][*]/g, '/**'); - comment = comment.replace(/[*][/]$/g, '**/'); - } - else if (/^[/][/]/g.test(al)) { - comment = al.replace(/^[/][/]/g, '/**'); - comment = comment + '**/'; - } - return comment; - } - } - } - - function getParametersFromNode(node) { - if (!node.parameters) return ; - let signature = checker.getSignatureFromDeclaration(node); - let returnType = checker.getReturnTypeOfSignature(signature); - let params = { - return: !ts.isConstructorDeclaration(node) ? checker.typeToString(returnType) : undefined - }; - if (node.parameters && node.parameters.length > 0) { - for (let i = 0; i < node.parameters.length; i++) { - params[node.parameters[i].name.escapedText] = checker.typeToString( - checker.getTypeAtLocation(node.parameters[i])); - } - } - return params; - } - - function getParameterTypeFromJsDoc(jsDocNode, paramName) { - if (jsDocNode.tags && jsDocNode.tags.length > 0) { - for (var i = 0; i < jsDocNode.tags.length; i++) { - if ((jsDocNode.tags[i].tagName.escapedText === 'param' && jsDocNode.tags[i].name.escapedText - === paramName) || ((jsDocNode.tags[i].tagName.escapedText === 'return' - || jsDocNode.tags[i].tagName.escapedText === 'returns') && paramName === 'return')) { - if (jsDocNode.tags[i].typeExpression) { - let optional = ""; - if (jsDocNode.tags[i].isBracketed === true) { - optional = "?"; - } - - var paramType = jsDocNode.tags[i].typeExpression.getFullText(); - paramType = paramType.substring(1, paramType.length - 1) + optional; - return (paramType === "Array") ? "any[]" : paramType; - } - } - } - } - } - - function getParametersFromJsDoc(jsDocNode) { - let params = {}; - if (jsDocNode.tags && jsDocNode.tags.length > 0) { - for (var i = 0; i < jsDocNode.tags.length; i++) { - if ((jsDocNode.tags[i].tagName.escapedText === 'param') || (jsDocNode.tags[i].tagName.escapedText - === 'return' || jsDocNode.tags[i].tagName.escapedText === 'returns')) { - if (jsDocNode.tags[i].typeExpression) { - let name = ''; - if (jsDocNode.tags[i].name) { - name = jsDocNode.tags[i].name.escapedText; - } - else { - name = "return"; - } - let optional = ""; - if (jsDocNode.tags[i].isBracketed === true) { - optional = "?"; - } - var paramType = jsDocNode.tags[i].typeExpression.getFullText(); - params[name] = paramType.substring(1, paramType.length - 1) + optional; - } - } - } - } - return params; - } - - function findName(node) { - if (ts.isIdentifier(node)) { - return node; - } - else { - var result = ts.forEachChild(node, findName); - if (result) return result; - } - - } - - function findNames(node) { - if (ts.isIdentifier(node)) { - identifiers.push(node.escapedText); - } - else { - ts.forEachChild(node, findNames); - } - } - -} - -generateAnnotations(process.argv.slice(2), { - target: ts.ScriptTarget.ES5, - module: ts.ModuleKind.CommonJS, - allowJs: true, - lib: [], - types: [] -}); diff --git a/generateDoc.js b/generateDoc.js index 7aced577..a4a208fe 100644 --- a/generateDoc.js +++ b/generateDoc.js @@ -1,31 +1,15 @@ -var acegitlink = require("./AceGitLinkPlugin").AceGitLinkPlugin; -var borrowsTag = require("./BorrowsTagPlugin").BorrowsTagPlugin; var typedoc = require('typedoc'); -const fs = require("fs"); -var options = JSON.parse(fs.readFileSync("generator-options.json", "utf8").toString()); -var settings = { - "name": options["title"], - "readme": options["readme"], - "entryPoints": options["entryPoints"] -}; +async function main() { + const app = await typedoc.Application.bootstrapWithPlugins(); + var gitLink = "https://github.com/ajaxorg/ace/tree/" + process.env.ACE_VERSION + "/{path}#{line}"; + app.options.setValue("sourceLinkTemplate", gitLink); -var app = new typedoc.Application(); -app.bootstrap(settings); -app.options.setCompilerOptions(options["entryPoints"], { - "module": "commonjs", - "target": "es5", - "sourceMap": false, - "ignoreCompilerErrors": true -}) -app.options.addDeclaration({name: 'acegitlink'}); -app.converter.addComponent('acegitlink', acegitlink); -app.renderer.addComponent('borrowstag', borrowsTag); -var gitLink = options["gitLink"]; -if (gitLink.charAt(gitLink.length - 1) !== '/') gitLink += '/'; -gitLink += process.env.ACE_VERSION + "/"; + const projectReflection = await app.convert(); -app.options.setValue("acegitlink", gitLink); -var projectReflection = app.convert(); + if (projectReflection) { + await app.generateDocs(projectReflection, process.argv[2] || "doc"); + } +} -app.generateDocs(projectReflection, process.argv[2]); \ No newline at end of file +main(); diff --git a/generateNewDts.js b/generateNewDts.js deleted file mode 100644 index 4a32e016..00000000 --- a/generateNewDts.js +++ /dev/null @@ -1,477 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", {value: true}); -var ts = require("typescript"); -var fs = require("fs"); -const EOL = '\n'; -var logs = ''; -var edits = []; -var foundClassName = ''; -var dir = "generated"; -if (!fs.existsSync(dir)) { - fs.mkdirSync(dir); -} - -function createLanguageServiceHost(options) { - return { - files: {}, - addFile(fileName, text) { - this.files[fileName] = ts.ScriptSnapshot.fromString(text); - }, - "getCompilationSettings": function () { - return ts.getDefaultCompilerOptions(); - }, - "getScriptFileNames": function () { - return Object.keys(this.files); - }, - "getScriptVersion": function (_fileName) { - return "0"; - }, - "getScriptSnapshot": function (fileName) { - return this.files[fileName]; - }, - "getCurrentDirectory": function () { - return process.cwd(); - }, - "getDefaultLibFileName": function () { - return ts.getDefaultLibFilePath(options); - } - }; - -} - -function createDefaultFormatCodeSettings() { - return { - baseIndentSize: 0, - indentSize: 4, - tabSize: 4, - indentStyle: ts.IndentStyle.Smart, - newLineCharacter: EOL, - convertTabsToSpaces: true, - insertSpaceAfterCommaDelimiter: true, - insertSpaceAfterSemicolonInForStatements: true, - insertSpaceBeforeAndAfterBinaryOperators: true, - insertSpaceAfterConstructor: false, - insertSpaceAfterKeywordsInControlFlowStatements: true, - insertSpaceAfterFunctionKeywordForAnonymousFunctions: false, - insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: false, - insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: false, - insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces: true, - insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: false, - insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces: false, - insertSpaceAfterTypeAssertion: false, - insertSpaceBeforeFunctionParenthesis: false, - placeOpenBraceOnNewLineForFunctions: false, - placeOpenBraceOnNewLineForControlBlocks: false, - insertSpaceBeforeTypeAnnotation: false - }; -} - -function formatDts(filename, text, options) { - var host = createLanguageServiceHost(options); - host.addFile(filename, text); - const languageService = ts.createLanguageService(host); - let formatEdits = languageService.getFormattingEditsForDocument(filename, createDefaultFormatCodeSettings()); - formatEdits - .sort((a, b) => a.span.start - b.span.start) - .reverse() - .forEach(edit => { - const head = text.slice(0, edit.span.start); - const tail = text.slice(edit.span.start + edit.span.length); - text = `${head}${edit.newText}${tail}`; - }); - return text; -} - -function generateDocumentation(fileNames, options) { - - function print(node) { - if (node.parent && (ts.isInterfaceDeclaration(node.parent) || ts.isClassDeclaration(node.parent)) - && ts.isIdentifier(node) && !node.parent.jsDoc) { - let foundClass = findClassName(node.escapedText); - foundClassName = node.escapedText; - if (foundClass) { - edits.push({ - pos: node.parent.pos, - text: EOL + jsDocPrettify(foundClass) - }); - } - else { - let currentLine = ts.getLineAndCharacterOfPosition(sourceFile, node.parent.getStart()).line + 1; - classes[foundClassName] = { - line: currentLine, - jsDoc: [], - sourceName: fileNames[0].match(/ace\.d\.ts/)[0], - described: true - }; - } - } - else { - if (ts.isConstructorDeclaration(node)) { - let foundConstructor = findConstructorName(); - if (foundConstructor) { - edits.push({ - pos: node.pos, - text: EOL + jsDocPrettify(foundConstructor) - }); - } - else { - let currentLine = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart()).line + 1; - classes[foundClassName]["construct"] = { - line: currentLine, - jsDoc: [], - sourceName: fileNames[0].match(/ace\.d\.ts/)[0], - described: true - }; - } - } - else { - if (node.parent && (ts.isMethodSignature(node.parent) || ts.isMethodDeclaration(node.parent)) - && ts.isParameter(node) && node.type && node.type.literal) { - let foundEvent = eventResolver(node.type.literal.text); - if (foundEvent) { - edits.push({ - pos: node.parent.pos, - text: EOL + jsDocPrettify(foundEvent) - }); - } - else { - let currentLine = ts.getLineAndCharacterOfPosition(sourceFile, node.parent.getStart()).line + 1; - classes[foundClassName][node.type.literal.text + "_event"] = { - line: currentLine, - jsDoc: [], - sourceName: fileNames[0].match(/ace\.d\.ts/)[0], - described: true - }; - } - } - else { - if (node.parent && (ts.isMethodSignature(node.parent) || ts.isMethodDeclaration(node.parent)) - && ts.isIdentifier(node)) { - let foundMethod = methodResolver(node.escapedText); - if (foundMethod) { - edits.push({ - pos: node.parent.pos, - text: EOL + jsDocPrettify(foundMethod) - }); - } - else { - let currentLine = ts.getLineAndCharacterOfPosition(sourceFile, node.parent.getStart()).line - + 1; - classes[foundClassName][node.escapedText] = { - line: currentLine, - jsDoc: [], - sourceName: fileNames[0].match(/ace\.d\.ts/)[0], - described: true - }; - } - } - else { - if (node.parent && node.parent.parent && (ts.isInterfaceDeclaration(node.parent.parent) - || ts.isClassDeclaration(node.parent.parent)) && (ts.isPropertySignature(node.parent) - || ts.isPropertyDeclaration(node.parent)) && ts.isIdentifier(node)) { - let foundProperty = propertyResolver(node.escapedText); - if (foundProperty) { - edits.push({ - pos: node.parent.pos, - text: EOL + jsDocPrettify(foundProperty) - }); - } - else { - if (foundClassName) { - let currentLine = ts.getLineAndCharacterOfPosition( - sourceFile, node.parent.getStart()).line + 1; - classes[foundClassName][node.escapedText + "_prop"] = { - line: currentLine, - jsDoc: [], - sourceName: fileNames[0].match(/ace\.d\.ts/)[0], - described: true - }; - } - } - } - } - } - } - } - ts.forEachChild(node, print); - } - - function methodResolver(methodName) { - if (classes[foundClassName] && classes[foundClassName][methodName]) { - classes[foundClassName][methodName].described = true; - return classes[foundClassName][methodName]; - } - } - - function eventResolver(eventName) { - if (classes[foundClassName] && classes[foundClassName][eventName + "_event"]) { - classes[foundClassName][eventName + "_event"].described = true; - return classes[foundClassName][eventName + "_event"]; - } - } - - function propertyResolver(propName) { - if (classes[foundClassName] && classes[foundClassName][propName + "_prop"]) { - classes[foundClassName][propName + "_prop"].described = true; - return classes[foundClassName][propName + "_prop"]; - } - } - - function findClassName(identifierName) { - for (var className in classes) { - if (className == identifierName) { - classes[identifierName].described = true; - return classes[className]; - } - } - } - - function findConstructorName() { - if (classes[foundClassName] && classes[foundClassName]["construct"]) { - classes[foundClassName]["construct"].described = true; - return classes[foundClassName]["construct"]; - } - } - - var program = ts.createProgram(fileNames, options); - var checker = program.getTypeChecker(); - - for (var _i = 0, _a = program.getSourceFiles(); _i < _a.length; _i++) { - var sourceFile = _a[_i]; - ts.forEachChild(sourceFile, print); - } -} - -function jsDocPrettify(aceObject) { - let jsDoc = ''; - if (aceObject && aceObject.jsDoc) { - for (var k = 0; k < aceObject.jsDoc.length; k++) { - jsDoc = jsDoc + aceObject.jsDoc[k] + EOL; - } - } - jsDoc = jsDoc.replace(/\s{2,}/g, EOL + ' '); - return jsDoc; -} - -function implicitlyCreateClasses(content, withJsDoc) { - for (var className in classes) { - if (!classes[className].described) { - let regExp = new RegExp('namespace Ace\\s*{\\s*' + EOL, 'g'); - let match = regExp.exec(content); - if (regExp.lastIndex != 0) { - let jsDoc = ''; - if (withJsDoc) { - jsDoc = jsDocPrettify(classes[className]); - } - edits.push({ - pos: regExp.lastIndex, - text: jsDoc + "export class " + className + " {" + EOL + "}" + EOL + EOL - }); - } - - logs = logs + "No such class name '" + className + "' in declaration file. Implicitly created." + EOL; - } - } -} - -function implictlyCreateLowLevelDeclarations(content, withJsDoc) { - for (var className in classes) { - for (var method in classes[className]) { - let regExp, match; - //this would ignore all internal methods started with $ - if (method !== 'jsDoc' && !/^\$/.test(method) && classes[className][method] === Object( - classes[className][method])) { - if (!classes[className][method].described) { - switch (true) { - case /_prop/.test(method): - let propName = method.match(/([\w$]*)_prop/)[1]; - regExp = new RegExp('(class|interface) ' + className + ' [^{]*', 'gm'); - match = regExp.exec(content); - if (regExp.lastIndex != 0) { - let type; - if (classes[className][method].params) { - type = classes[className][method].params["return"]; - } - else { - type = "any"; - } - let jsDoc = ''; - if (withJsDoc) { - jsDoc = jsDocPrettify(classes[className][method]); - } - edits.push({ - pos: regExp.lastIndex + 2, - text: jsDoc + "" + propName + ": " + type + ";" + EOL - }); - } - logs = logs + "No such property name '" + propName + "' in declaration file. Class: " - + className + ". Implicitly created." + EOL; - break; - case /_event/.test(method): - let eventName = method.match(/([\w$]*)_event/)[1]; - regExp = new RegExp('(class|interface) ' + className + ' [^{]*', 'gm'); - match = regExp.exec(content); - if (regExp.lastIndex != 0) { - let allParams = []; - if (classes[className][method].params) { - for (let prop in classes[className][method].params) { - allParams.push(prop + ": " + classes[className][method].params[prop]); - } - } - let callbackExpr; - if (allParams.length > 0) { - callbackExpr = ", callback: (" + allParams.join(', ') + ") => void"; - } - else { - callbackExpr = ""; - } - let jsDoc = ''; - if (withJsDoc) { - jsDoc = jsDocPrettify(classes[className][method]); - } - edits.push({ - pos: regExp.lastIndex + 2, - text: jsDoc + "on(name: '" + eventName + "'" + callbackExpr + "): void" + ";" + EOL - }); - } - logs = logs + "No such event name '" + eventName + "' in declaration file. Class: " - + className + ". Implicitly created." + EOL; - break; - case (method === "construct"): - regExp = new RegExp('(class|interface) ' + className + ' [^{]*', 'gm'); - match = regExp.exec(content); - if (regExp.lastIndex != 0) { - let allParams = []; - let returnType = ''; - if (classes[className][method].params) { - for (let prop in classes[className][method].params) { - let paramType; - let questionMark; - if (classes[className][method].params[prop][classes[className][method].params[prop].length - - 1] == "?") { - paramType = classes[className][method].params[prop].substring( - 0, classes[className][method].params[prop].length - 1); - questionMark = '?'; - } - else { - paramType = classes[className][method].params[prop]; - questionMark = ''; - } - if (prop == 'return') { - returnType = questionMark + ": " + paramType; - } - else { - allParams.push(prop + questionMark + ": " + paramType); - } - } - } - let jsDoc = ''; - if (withJsDoc) { - jsDoc = jsDocPrettify(classes[className][method]); - } - edits.push({ - pos: regExp.lastIndex + 2, - text: jsDoc + "constructor(" + allParams.join(', ') + ")" + returnType + ";" + EOL - }); - } - logs = logs + "No constructor in declaration file. Class: " + className - + ". Implicitly created." + EOL; - break; - default: - regExp = new RegExp('(class|interface) ' + className + ' [^{]*', 'gm'); - match = regExp.exec(content); - if (regExp.lastIndex != 0) { - let allParams = []; - let returnType = ''; - if (classes[className][method].params) { - for (let prop in classes[className][method].params) { - let paramType; - let questionMark; - if (classes[className][method].params[prop][classes[className][method].params[prop].length - - 1] == "?") { - paramType = classes[className][method].params[prop].substring( - 0, classes[className][method].params[prop].length - 1); - questionMark = '?'; - } - else { - paramType = classes[className][method].params[prop]; - questionMark = ''; - } - if (prop == 'return') { - returnType = questionMark + ": " + paramType; - } - else { - allParams.push(prop + questionMark + ": " + paramType); - } - } - } - let jsDoc = ''; - if (withJsDoc) { - jsDoc = jsDocPrettify(classes[className][method]); - } - edits.push({ - pos: regExp.lastIndex + 2, - text: jsDoc + method + "(" + allParams.join(', ') + ")" + returnType + ";" + EOL - }); - } - - logs = logs + "No such method name '" + method + "' in declaration file. Class: " - + className + ". Implicitly created." + EOL; - break; - } - } - } - } - } - fs.writeFileSync(dir + "/declarations.log", logs); -} - -function applyEditsToFile(filename, format) { - var start = fs.readFileSync(filename, "utf8"); - var end = ""; - edits - .sort((a, b) => b.pos - a.pos) - .forEach(edit => { - end = edit.text + start.slice(edit.pos) + end; - start = start.slice(0, edit.pos); - }); - end = start + end; - if (format) { - end = formatDts(filename, end, options); - } - fs.writeFileSync(filename, end); - return end; -} - -fs.copyFileSync(process.argv[2], dir + "/ace.d.ts"); -var data = fs.readFileSync(dir + "/classes.json", "utf8"); -var classes = JSON.parse(data.toString()); -var options = { - target: ts.ScriptTarget.ES5, - module: ts.ModuleKind.CommonJS, - allowJs: true, - declaration: true, - lib: [], - "types": [] -}; -generateDocumentation([dir + "/ace.d.ts"], options, false); - -fs.writeFileSync(dir + "/classes.json", JSON.stringify(classes, undefined, 4)); - -var content = applyEditsToFile(dir + "/ace.d.ts"); -edits = []; -implicitlyCreateClasses(content, true); -content = applyEditsToFile(dir + "/ace.d.ts"); -edits = []; -implictlyCreateLowLevelDeclarations(content, true); -applyEditsToFile(dir + "/ace.d.ts", true); - -fs.copyFileSync(process.argv[2], dir + "/ace-without-comments.d.ts"); -edits = []; -content = fs.readFileSync(dir + "/ace-without-comments.d.ts", "utf8"); -implicitlyCreateClasses(content); -content = applyEditsToFile(dir + "/ace-without-comments.d.ts"); -edits = []; -implictlyCreateLowLevelDeclarations(content); -applyEditsToFile(dir + "/ace-without-comments.d.ts", true); diff --git a/generator-options.json b/generator-options.json deleted file mode 100644 index b37b6b08..00000000 --- a/generator-options.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "title": "Ace API Reference", - "readme": "assets/ace_readme.md", - "entryPoints": [ - "generated/ace.d.ts" - ], - "gitLink": "https://github.com/ajaxorg/ace/tree/", - "exclude": { - "classes": [ - "Array", - "Element", - "Type", - "AceEmmetEditor", - "ApexMode", - "PhpMode", - "VisualforceMode", - "PhpCompletions", - "UnicodeTBL00", - "UnicodeTBL20", - "HtmlBehaviour", - "HtmlCompletions", - "ArabicAlefBetIntervalsBegine", - "ArabicAlefBetIntervalsEnd", - "DjangoHighlightRules", - "DjangoHtmlHighlightRules", - "EjsHighlightRules", - "CssBehaviour", - "CssCompletions", - "CstyleBehaviour", - "RazorCompletions", - "LiquidBehaviour", - "XmlBehaviour", - "XQueryBehaviour", - "Attr", - "ClassList", - "Node", - "Object", - "SnippetGroupHighlightRules", - "SnippetHighlightRules", - "Split", - "Style", - "Tag", - "TestGenerator", - "TextNode" - ], - "methods": [] - } -} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 49baa1f9..03feda03 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,91 +8,31 @@ "name": "docgenerator-for-ace", "version": "1.0.0", "dependencies": { - "typedoc": "0.21.10", - "typescript": "^4.4.4" + "typedoc": "^0.25.3" } }, + "node_modules/ansi-sequence-parser": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", + "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==" + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, "node_modules/jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" }, "node_modules/lunr": { "version": "2.3.9", @@ -100,9 +40,9 @@ "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" }, "node_modules/marked": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.18.tgz", - "integrity": "sha512-wbLDJ7Zh0sqA0Vdg6aqlbT+yPxqLblpAZh1mK2+AO2twQkPywvvqQNfEPVwSSRjZ7dZcdeVBIAgiO7MMp3Dszw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", "bin": { "marked": "bin/marked.js" }, @@ -111,213 +51,97 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "engines": { - "node": ">=0.4.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/shiki": { - "version": "0.9.15", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.9.15.tgz", - "integrity": "sha512-/Y0z9IzhJ8nD9nbceORCqu6NgT9X6I8Fk8c3SICHI5NbZRLdZYFaB233gwct9sU0vvSypyaL/qaKvzyQGJBZSw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.5.tgz", + "integrity": "sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw==", "dependencies": { - "jsonc-parser": "^3.0.0", - "vscode-oniguruma": "^1.6.1", - "vscode-textmate": "5.2.0" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" } }, "node_modules/typedoc": { - "version": "0.21.10", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.21.10.tgz", - "integrity": "sha512-Y0wYIehkjkPfsp3pv86fp3WPHUcOf8pnQUDLwG1PqSccUSqdsv7Pz1Gd5WrTJvXQB2wO1mKlZ8qW8qMiopKyjA==", + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.3.tgz", + "integrity": "sha512-Ow8Bo7uY1Lwy7GTmphRIMEo6IOZ+yYUyrc8n5KXIZg1svpqhZSWgni2ZrDhe+wLosFS8yswowUzljTAV/3jmWw==", "dependencies": { - "glob": "^7.1.7", - "handlebars": "^4.7.7", "lunr": "^2.3.9", - "marked": "^4.0.10", - "minimatch": "^3.0.0", - "progress": "^2.0.3", - "shiki": "^0.9.8", - "typedoc-default-themes": "^0.12.10" + "marked": "^4.3.0", + "minimatch": "^9.0.3", + "shiki": "^0.14.1" }, "bin": { "typedoc": "bin/typedoc" }, "engines": { - "node": ">= 12.10.0" + "node": ">= 16" }, "peerDependencies": { - "typescript": "4.0.x || 4.1.x || 4.2.x || 4.3.x || 4.4.x" - } - }, - "node_modules/typedoc-default-themes": { - "version": "0.12.10", - "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.12.10.tgz", - "integrity": "sha512-fIS001cAYHkyQPidWXmHuhs8usjP5XVJjWB8oZGqkTowZaz3v7g3KDZeeqE82FBrmkAnIBOY3jgy7lnPnqATbA==", - "engines": { - "node": ">= 8" + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x" } }, "node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uglify-js": { - "version": "3.16.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.3.tgz", - "integrity": "sha512-uVbFqx9vvLhQg0iBaau9Z75AxWJ8tqM9AV890dIZCLApF4rTcyHwmAvLeEdYRs+BzYWu8Iw81F79ah0EfTXbaw==", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" + "node": ">=14.17" } }, "node_modules/vscode-oniguruma": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.2.tgz", - "integrity": "sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==" + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==" }, "node_modules/vscode-textmate": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", - "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==" - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==" } }, "dependencies": { + "ansi-sequence-parser": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", + "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==" + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "requires": { - "once": "^1.3.0", - "wrappy": "1" + "balanced-match": "^1.0.0" } }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, "jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" }, "lunr": { "version": "2.3.9", @@ -325,111 +149,55 @@ "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" }, "marked": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.18.tgz", - "integrity": "sha512-wbLDJ7Zh0sqA0Vdg6aqlbT+yPxqLblpAZh1mK2+AO2twQkPywvvqQNfEPVwSSRjZ7dZcdeVBIAgiO7MMp3Dszw==" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==" }, "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "requires": { - "wrappy": "1" + "brace-expansion": "^2.0.1" } }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - }, "shiki": { - "version": "0.9.15", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.9.15.tgz", - "integrity": "sha512-/Y0z9IzhJ8nD9nbceORCqu6NgT9X6I8Fk8c3SICHI5NbZRLdZYFaB233gwct9sU0vvSypyaL/qaKvzyQGJBZSw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.5.tgz", + "integrity": "sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw==", "requires": { - "jsonc-parser": "^3.0.0", - "vscode-oniguruma": "^1.6.1", - "vscode-textmate": "5.2.0" + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, "typedoc": { - "version": "0.21.10", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.21.10.tgz", - "integrity": "sha512-Y0wYIehkjkPfsp3pv86fp3WPHUcOf8pnQUDLwG1PqSccUSqdsv7Pz1Gd5WrTJvXQB2wO1mKlZ8qW8qMiopKyjA==", + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.3.tgz", + "integrity": "sha512-Ow8Bo7uY1Lwy7GTmphRIMEo6IOZ+yYUyrc8n5KXIZg1svpqhZSWgni2ZrDhe+wLosFS8yswowUzljTAV/3jmWw==", "requires": { - "glob": "^7.1.7", - "handlebars": "^4.7.7", "lunr": "^2.3.9", - "marked": "^4.0.10", - "minimatch": "^3.0.0", - "progress": "^2.0.3", - "shiki": "^0.9.8", - "typedoc-default-themes": "^0.12.10" + "marked": "^4.3.0", + "minimatch": "^9.0.3", + "shiki": "^0.14.1" } }, - "typedoc-default-themes": { - "version": "0.12.10", - "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.12.10.tgz", - "integrity": "sha512-fIS001cAYHkyQPidWXmHuhs8usjP5XVJjWB8oZGqkTowZaz3v7g3KDZeeqE82FBrmkAnIBOY3jgy7lnPnqATbA==" - }, "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==" - }, - "uglify-js": { - "version": "3.16.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.3.tgz", - "integrity": "sha512-uVbFqx9vvLhQg0iBaau9Z75AxWJ8tqM9AV890dIZCLApF4rTcyHwmAvLeEdYRs+BzYWu8Iw81F79ah0EfTXbaw==", - "optional": true + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "peer": true }, "vscode-oniguruma": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.2.tgz", - "integrity": "sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==" + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==" }, "vscode-textmate": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", - "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==" - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==" } } } diff --git a/package.json b/package.json index add1b2d1..46fbc632 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,6 @@ "name": "docgenerator-for-ace", "version": "1.0.0", "dependencies": { - "typedoc": "0.21.10", - "typescript": "^4.4.4" + "typedoc": "^0.25.3" } } diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..732fec51 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,54 @@ +{ + "compilerOptions": { + "strict": false, + "noImplicitAny": false, + "skipLibCheck": true, + "module": "commonjs", + "target": "es2019", + "allowJs": true, + "checkJs": true, + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "generated" + }, + "exclude": [ + "node_modules", + "../src/test/**/*", + "../src/**/*_test.js", + "../src/keyboard/vim.js", + "../src/keyboard/emacs.js", + "../src/keyboard/sublime.js", + "../src/keyboard/vscode.js", + "../src/mode/**/*", + "../ace-internal.d.ts", + "../src/snippets/**/*", + "../src/theme/**/*" + ], + "include": [ + "../src/**/*", + "../ace.d.ts" + ], + "typedocOptions": { + "name": "Ace API Reference", + "readme": "assets/ace_readme.md", + "excludeReferences": true, + "sourceLinkExternal": true, + "entryPoints": [ + "../src/**/*", + "../ace.d.ts" + ], + "exclude": [ + "node_modules", + "../src/test/**/*", + "../src/**/*_test.js", + "../src/keyboard/vim.js", + "../src/keyboard/emacs.js", + "../src/keyboard/sublime.js", + "../src/keyboard/vscode.js", + "../src/mode/**/*", + "../ace-internal.d.ts", + "../src/snippets/**/*", + "../src/theme/**/*" + ] + } +}