diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 0000000..f270a83 --- /dev/null +++ b/index.d.ts @@ -0,0 +1,2778 @@ +declare module '@mathieuc/tradingview/main' { + const _exports: { + getTA(screener: Screener, id: string): Promise; + searchMarket(search: string, filter?: "index" | "crypto" | "stock" | "futures" | "forex" | "cfd" | "economic"): Promise<{ + /** + * Market full symbol + */ + id: string; + /** + * Market exchange name + */ + exchange: string; + /** + * Market exchange full name + */ + fullExchange: string; + /** + * Market screener + */ + screener: any; + /** + * Market symbol + */ + symbol: string; + /** + * Market name + */ + description: string; + /** + * Market type + */ + type: string; + /** + * Get market technical analysis + */ + getTA: () => Promise; + }[]>; + searchIndicator(search?: string): Promise<{ + /** + * Script ID + */ + id: string; + /** + * Script version + */ + version: string; + /** + * Script complete name + */ + name: string; + /** + * Author user ID + */ + author: { + id: number; + username: string; + }; + /** + * Image ID https://tradingview.com/i/${image} + */ + image: string; + /** + * Script source (if available) + */ + source: string; + /** + * Script type (study / strategy) + */ + type: "study" | "strategy"; + /** + * Script access type + */ + access: "private" | "other" | "closed_source" | "open_source" | "invite_only"; + /** + * Get the full indicator informations + */ + get: () => Promise; + }[]>; + getIndicator(id: string, version?: string): Promise; + loginUser(username: string, password: string, remember?: boolean, UA?: string): Promise<{ + /** + * User ID + */ + id: number; + /** + * User username + */ + username: string; + /** + * User first name + */ + firstName: string; + /** + * User last name + */ + lastName: string; + /** + * User reputation + */ + reputation: number; + /** + * Number of following accounts + */ + following: number; + /** + * Number of followers + */ + followers: number; + /** + * User's notifications + */ + notifications: { + /** + * User notifications + */ + user: number; + /** + * Notification from following accounts + */ + following: number; + }; + /** + * User session + */ + session: string; + /** + * User session hash + */ + sessionHash: string; + /** + * User session signature + */ + signature: string; + /** + * User private channel + */ + privateChannel: string; + /** + * User auth token + */ + authToken: string; + /** + * Account creation date + */ + joinDate: Date; + }>; + getUser(session: string, signature?: string, location?: string): Promise<{ + /** + * User ID + */ + id: number; + /** + * User username + */ + username: string; + /** + * User first name + */ + firstName: string; + /** + * User last name + */ + lastName: string; + /** + * User reputation + */ + reputation: number; + /** + * Number of following accounts + */ + following: number; + /** + * Number of followers + */ + followers: number; + /** + * User's notifications + */ + notifications: { + /** + * User notifications + */ + user: number; + /** + * Notification from following accounts + */ + following: number; + }; + /** + * User session + */ + session: string; + /** + * User session hash + */ + sessionHash: string; + /** + * User session signature + */ + signature: string; + /** + * User private channel + */ + privateChannel: string; + /** + * User auth token + */ + authToken: string; + /** + * Account creation date + */ + joinDate: Date; + }>; + getPrivateIndicators(session: string, signature?: string): Promise<{ + /** + * Script ID + */ + id: string; + /** + * Script version + */ + version: string; + /** + * Script complete name + */ + name: string; + /** + * Author user ID + */ + author: { + id: number; + username: string; + }; + /** + * Image ID https://tradingview.com/i/${image} + */ + image: string; + /** + * Script source (if available) + */ + source: string; + /** + * Script type (study / strategy) + */ + type: "study" | "strategy"; + /** + * Script access type + */ + access: "private" | "other" | "closed_source" | "open_source" | "invite_only"; + /** + * Get the full indicator informations + */ + get: () => Promise; + }[]>; + getChartToken(layout: string, credentials?: { + /** + * User ID + */ + id: number; + /** + * User session ('sessionid' cookie) + */ + session: string; + /** + * User session signature ('sessionid_sign' cookie) + */ + signature?: string; + }): Promise; + getDrawings(layout: string, symbol?: string, credentials?: { + /** + * User ID + */ + id: number; + /** + * User session ('sessionid' cookie) + */ + session: string; + /** + * User session signature ('sessionid_sign' cookie) + */ + signature?: string; + }, chartID?: number): Promise<{ + /** + * Drawing ID (Like: 'XXXXXX') + */ + id: string; + /** + * Layout market symbol (Like: 'BINANCE:BUCEUR') + */ + symbol: string; + /** + * Owner user ID (Like: 'XXXXXX') + */ + ownerSource: string; + /** + * Drawing last update timestamp + */ + serverUpdateTime: string; + /** + * Currency ID (Like: 'EUR') + */ + currencyId: string; + /** + * Unit ID + */ + unitId: any; + /** + * Drawing type + */ + type: string; + /** + * List of drawing points + */ + points: { + /** + * Point X time position + */ + time_t: number; + /** + * Point Y price position + */ + price: number; + /** + * Point offset + */ + offset: number; + }[]; + /** + * Drawing Z order + */ + zorder: number; + /** + * Drawing link key + */ + linkKey: string; + /** + * Drawing state + */ + state: any; + }[]>; + Client: typeof Client; + BuiltInIndicator: typeof BuiltInIndicator; + PineIndicator: typeof PineIndicator; + PinePermManager: typeof PinePermManager; + }; + export = _exports; + import miscRequests = require("./src/miscRequests"); + import PineIndicator = require("./src/classes/PineIndicator"); + import Client = require("./src/client"); + import BuiltInIndicator = require("./src/classes/BuiltInIndicator"); + import PinePermManager = require("./src/classes/PinePermManager"); + export { Client, BuiltInIndicator, PineIndicator, PinePermManager }; + //# sourceMappingURL=main.d.ts.map +} +declare module '@mathieuc/tradingview/main.d.ts' { + {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../../Documents/coding/TradingView-API/main.js"],"names":[],"mappings":""} +} +declare module '@mathieuc/tradingview/src/chart/graphicParser' { + function _exports(rawGraphic?: any, indexes?: any): GraphicData; + export = _exports; + export type SizeValue = 'auto' | 'huge' | 'large' | 'normal' | 'small' | 'tiny'; + export type VAlignValue = 'top' | 'center' | 'bottom'; + export type HAlignValue = 'left' | 'center' | 'right'; + export type TextWrapValue = 'none' | 'auto'; + export type TablePositionValue = 'top_left' | 'top_center' | 'top_right' | 'middle_left' | 'middle_center' | 'middle_right' | 'bottom_left' | 'bottom_center' | 'bottom_right'; + export type GraphicLabel = { + /** + * Drawing ID + */ + id: number; + /** + * Label x position + */ + x: number; + /** + * Label y position + */ + y: number; + /** + * yLoc mode + */ + yLoc: "price" | "abovebar" | "belowbar"; + /** + * Label text + */ + text: string; + /** + * Label style + */ + style: "none" | "square" | "circle" | "xcross" | "cross" | "triangleup" | "triangledown" | "flag" | "arrowup" | "arrowdown" | "label_up" | "label_down" | "label_left" | "label_right" | "label_lower_left" | "label_lower_right" | "label_upper_left" | "label_upper_right" | "label_center" | "diamond"; + color: number; + textColor: number; + /** + * Label size + */ + size: SizeValue; + /** + * Text horizontal align + */ + textAlign: HAlignValue; + /** + * Tooltip text + */ + toolTip: string; + }; + export type GraphicLine = { + /** + * Drawing ID + */ + id: number; + /** + * First x position + */ + x1: number; + /** + * First y position + */ + y1: number; + /** + * Second x position + */ + x2: number; + /** + * Second y position + */ + y2: number; + /** + * Horizontal extend + */ + extend: "both" | "none" | "left" | "right"; + /** + * Line style + */ + style: "solid" | "dotted" | "dashed" | "arrow_left" | "arrow_right" | "arrow_both"; + /** + * Line color + */ + color: number; + /** + * Line width + */ + width: number; + }; + export type GraphicBox = { + /** + * Drawing ID + */ + id: number; + /** + * First x position + */ + x1: number; + /** + * First y position + */ + y1: number; + /** + * Second x position + */ + x2: number; + /** + * Second y position + */ + y2: number; + /** + * Box color + */ + color: number; + /** + * Background color + */ + bgColor: number; + /** + * Horizontal extend + */ + extend: "both" | "none" | "left" | "right"; + /** + * Box style + */ + style: "solid" | "dotted" | "dashed"; + /** + * Box width + */ + width: number; + /** + * Text + */ + text: string; + /** + * Text size + */ + textSize: SizeValue; + /** + * Text color + */ + textColor: number; + /** + * Text vertical align + */ + textVAlign: VAlignValue; + /** + * Text horizontal align + */ + textHAlign: HAlignValue; + /** + * Text wrap + */ + textWrap: TextWrapValue; + }; + export type TableCell = { + /** + * Drawing ID + */ + id: number; + /** + * Cell text + */ + text: string; + /** + * Cell width + */ + width: number; + /** + * Cell height + */ + height: number; + /** + * Text color + */ + textColor: number; + /** + * Text horizontal align + */ + textHAlign: HAlignValue; + /** + * Text Vertical align + */ + textVAlign: VAlignValue; + /** + * Text size + */ + textSize: SizeValue; + /** + * Background color + */ + bgColor: number; + }; + export type GraphicTable = { + /** + * Drawing ID + */ + id: number; + /** + * Table position + */ + position: TablePositionValue; + /** + * Number of rows + */ + rows: number; + /** + * Number of columns + */ + columns: number; + /** + * Background color + */ + bgColor: number; + /** + * Frame color + */ + frameColor: number; + /** + * Frame width + */ + frameWidth: number; + /** + * Border color + */ + borderColor: number; + /** + * Border width + */ + borderWidth: number; + /** + * Table cells matrix + */ + cells: () => TableCell[][]; + }; + export type GraphicHorizline = { + /** + * Drawing ID + */ + id: number; + /** + * Y position of the line + */ + level: number; + /** + * Start index of the line (`chart.periods[line.startIndex]`) + */ + startIndex: number; + /** + * End index of the line (`chart.periods[line.endIndex]`) + */ + endIndex: number; + /** + * Is the line extended to the right + */ + extendRight: boolean; + /** + * Is the line extended to the left + */ + extendLeft: boolean; + }; + export type GraphicPoint = { + /** + * X position of the point + */ + index: number; + /** + * Y position of the point + */ + level: number; + }; + export type GraphicPolygon = { + /** + * Drawing ID + */ + id: number; + /** + * List of polygon points + */ + points: GraphicPoint[]; + }; + export type GraphicHorizHist = { + /** + * Drawing ID + */ + id: number; + /** + * Low Y position + */ + priceLow: number; + /** + * High Y position + */ + priceHigh: number; + /** + * First X position + */ + firstBarTime: number; + /** + * Last X position + */ + lastBarTime: number; + /** + * List of values + */ + rate: number[]; + }; + /** + * List of drawings indexed by type + */ + export type GraphicData = { + /** + * List of labels drawings + */ + labels: GraphicLabel[]; + /** + * List of lines drawings + */ + lines: GraphicLine[]; + /** + * List of boxes drawings + */ + boxes: GraphicBox[]; + /** + * List of tables drawings + */ + tables: GraphicTable[]; + /** + * List of polygons drawings + */ + polygons: GraphicPolygon[]; + /** + * List of horizontal histograms drawings + */ + horizHists: GraphicHorizHist[]; + /** + * List of horizontal lines drawings + */ + horizLines: GraphicHorizline[]; + }; + //# sourceMappingURL=graphicParser.d.ts.map +} +declare module '@mathieuc/tradingview/src/chart/graphicParser.d.ts' { + {"version":3,"file":"graphicParser.d.ts","sourceRoot":"","sources":["../../../../../../../Documents/coding/TradingView-API/src/chart/graphicParser.js"],"names":[],"mappings":"AA8MiB,4DAFJ,WAAW,CAuGvB;;wBA7OY,MAAM,GAAG,MAAM,GAAG,OAAO,GACjC,QAAQ,GAAG,OAAO,GAAG,MAAM;0BAElB,KAAK,GAAG,QAAQ,GAAG,QAAQ;0BAC3B,MAAM,GAAG,QAAQ,GAAG,OAAO;4BAC3B,MAAM,GAAG,MAAM;iCAEhB,UAAU,GAAG,YAAY,GAAG,WAAW,GAC/C,aAAa,GAAG,eAAe,GAAG,cAAc,GAChD,aAAa,GAAG,eAAe,GAAG,cAAc;;;;;QAM3C,MAAM;;;;OACN,MAAM;;;;OACN,MAAM;;;;;;;;UAEN,MAAM;;;;;WAEN,MAAM;eACN,MAAM;;;;UACN,SAAS;;;;eACT,WAAW;;;;aACX,MAAM;;;;;;QAKN,MAAM;;;;QACN,MAAM;;;;QACN,MAAM;;;;QACN,MAAM;;;;QACN,MAAM;;;;;;;;;;;;WAGN,MAAM;;;;WACN,MAAM;;;;;;QAKN,MAAM;;;;QACN,MAAM;;;;QACN,MAAM;;;;QACN,MAAM;;;;QACN,MAAM;;;;WACN,MAAM;;;;aACN,MAAM;;;;;;;;;;;;WAGN,MAAM;;;;UACN,MAAM;;;;cACN,SAAS;;;;eACT,MAAM;;;;gBACN,WAAW;;;;gBACX,WAAW;;;;cACX,aAAa;;;;;;QAKb,MAAM;;;;UACN,MAAM;;;;WACN,MAAM;;;;YACN,MAAM;;;;eACN,MAAM;;;;gBACN,WAAW;;;;gBACX,WAAW;;;;cACX,SAAS;;;;aACT,MAAM;;;;;;QAKN,MAAM;;;;cACN,kBAAkB;;;;UAClB,MAAM;;;;aACN,MAAM;;;;aACN,MAAM;;;;gBACN,MAAM;;;;gBACN,MAAM;;;;iBACN,MAAM;;;;iBACN,MAAM;;;;WACN,MAAM,SAAS,EAAE,EAAE;;;;;;QAKnB,MAAM;;;;WACN,MAAM;;;;gBACN,MAAM;;;;cACN,MAAM;;;;iBACN,OAAO;;;;gBACP,OAAO;;;;;;WAKP,MAAM;;;;WACN,MAAM;;;;;;QAKN,MAAM;;;;YACN,YAAY,EAAE;;;;;;QAKd,MAAM;;;;cACN,MAAM;;;;eACN,MAAM;;;;kBACN,MAAM;;;;iBACN,MAAM;;;;UACN,MAAM,EAAE;;;;;;;;;YAKR,YAAY,EAAE;;;;WACd,WAAW,EAAE;;;;WACb,UAAU,EAAE;;;;YACZ,YAAY,EAAE;;;;cACd,cAAc,EAAE;;;;gBAChB,gBAAgB,EAAE;;;;gBAClB,gBAAgB,EAAE"} +} +declare module '@mathieuc/tradingview/src/chart/session' { + function _exports(client: import('@mathieuc/tradingview/src/client').ClientBridge): { + new (): { + "__#6@#chartSessionID": string; + "__#6@#replaySessionID": string; + "__#6@#replayMode": boolean; + /** @type {Object} */ + "__#6@#replayOKCB": { + [x: string]: () => any; + }; + /** Parent client */ + "__#6@#client": import("@mathieuc/tradingview/src/client").ClientBridge; + /** @type {StudyListeners} */ + "__#6@#studyListeners": StudyListeners; + /** + * Table of periods values indexed by timestamp + * @type {Object} + */ + "__#6@#periods": { + [x: number]: PricePeriod[]; + }; + /** @return {PricePeriod[]} List of periods values */ + readonly periods: PricePeriod[]; + /** + * Current market infos + * @type {MarketInfos} + */ + "__#6@#infos": MarketInfos; + /** @return {MarketInfos} Current market infos */ + readonly infos: MarketInfos; + "__#6@#callbacks": { + seriesLoaded: any[]; + symbolLoaded: any[]; + update: any[]; + replayLoaded: any[]; + replayPoint: any[]; + replayResolution: any[]; + replayEnd: any[]; + event: any[]; + error: any[]; + }; + /** + * @param {ChartEvent} ev Client event + * @param {...{}} data Packet data + */ + "__#6@#handleEvent"(ev: ChartEvent, ...data: {}[]): void; + "__#6@#handleError"(...msgs: any[]): void; + "__#6@#seriesCreated": boolean; + "__#6@#currentSeries": number; + /** + * @param {import('@mathieuc/tradingview/src/types').TimeFrame} timeframe Chart period timeframe + * @param {number} [range] Number of loaded periods/candles (Default: 100) + * @param {number} [reference] Reference candle timestamp (Default is now) + */ + setSeries(timeframe?: import('@mathieuc/tradingview/src/types').TimeFrame, range?: number, reference?: number): void; + /** + * Set the chart market + * @param {string} symbol Market symbol + * @param {Object} [options] Chart options + * @param {import('@mathieuc/tradingview/src/types').TimeFrame} [options.timeframe] Chart period timeframe + * @param {number} [options.range] Number of loaded periods/candles (Default: 100) + * @param {number} [options.to] Last candle timestamp (Default is now) + * @param {'splits' | 'dividends'} [options.adjustment] Market adjustment + * @param {'regular' | 'extended'} [options.session] Chart session + * @param {'EUR' | 'USD' | string} [options.currency] Chart currency + * @param {ChartType} [options.type] Chart custom type + * @param {ChartInputs} [options.inputs] Chart custom inputs + * @param {number} [options.replay] Replay mode starting point (Timestamp) + */ + setMarket(symbol: string, options?: { + timeframe?: import('@mathieuc/tradingview/src/types').TimeFrame; + range?: number; + to?: number; + adjustment?: 'splits' | 'dividends'; + session?: 'regular' | 'extended'; + currency?: 'EUR' | 'USD' | string; + type?: ChartType; + inputs?: ChartInputs; + replay?: number; + }): void; + /** + * Set the chart timezone + * @param {import('@mathieuc/tradingview/src/types').Timezone} timezone New timezone + */ + setTimezone(timezone: import('@mathieuc/tradingview/src/types').Timezone): void; + /** + * Fetch x additional previous periods/candles values + * @param {number} number Number of additional periods/candles you want to fetch + */ + fetchMore(number?: number): void; + /** + * Fetch x additional previous periods/candles values + * @param {number} number Number of additional periods/candles you want to fetch + * @returns {Promise} Raise when the data has been fetched + */ + replayStep(number?: number): Promise; + /** + * Start fetching a new period/candle every x ms + * @param {number} interval Number of additional periods/candles you want to fetch + * @returns {Promise} Raise when the replay mode starts + */ + replayStart(interval?: number): Promise; + /** + * Stop fetching a new period/candle every x ms + * @returns {Promise} Raise when the replay mode stops + */ + replayStop(): Promise; + /** + * When a symbol is loaded + * @param {() => void} cb + * @event + */ + onSymbolLoaded(cb: () => void): void; + /** + * When a chart update happens + * @param {(changes: ('$prices' | string)[]) => void} cb + * @event + */ + onUpdate(cb: (changes: ('$prices' | string)[]) => void): void; + /** + * When the replay session is ready + * @param {() => void} cb + * @event + */ + onReplayLoaded(cb: () => void): void; + /** + * When the replay session has new resolution + * @param {( + * timeframe: import('@mathieuc/tradingview/src/types').TimeFrame, + * index: number, + * ) => void} cb + * @event + */ + onReplayResolution(cb: (timeframe: import('@mathieuc/tradingview/src/types').TimeFrame, index: number) => void): void; + /** + * When the replay session ends + * @param {() => void} cb + * @event + */ + onReplayEnd(cb: () => void): void; + /** + * When the replay session cursor has moved + * @param {(index: number) => void} cb + * @event + */ + onReplayPoint(cb: (index: number) => void): void; + /** + * When chart error happens + * @param {(...any) => void} cb Callback + * @event + */ + onError(cb: (...any: any[]) => void): void; + /** @type {ChartSessionBridge} */ + "__#6@#chartSession": ChartSessionBridge; + Study: { + new (indicator: import("@mathieuc/tradingview/src/classes/PineIndicator") | import("../classes/BuiltInIndicator")): { + "__#5@#studID": string; + "__#5@#studyListeners": { + [x: string]: Function[]; + }; + "__#5@#periods": { + [x: number]: {}[]; + }; + readonly periods: {}[]; + "__#5@#indexes": number[]; + "__#5@#graphic": { + [x: string]: { + [x: number]: {}; + }; + }; + readonly graphic: import("@mathieuc/tradingview/src/chart/graphicParser").GraphicData; + "__#5@#strategyReport": studyConstructor.StrategyReport; + readonly strategyReport: studyConstructor.StrategyReport; + "__#5@#callbacks": { + studyCompleted: any[]; + update: any[]; + event: any[]; + error: any[]; + }; + "__#5@#handleEvent"(ev: ChartEvent, ...data: {}[]): void; + "__#5@#handleError"(...msgs: any[]): void; + instance: import("@mathieuc/tradingview/src/classes/PineIndicator") | import("../classes/BuiltInIndicator"); + setIndicator(indicator: import("@mathieuc/tradingview/src/classes/PineIndicator") | import("../classes/BuiltInIndicator")): void; + onReady(cb: () => void): void; /** + * Fetch x additional previous periods/candles values + * @param {number} number Number of additional periods/candles you want to fetch + */ + onUpdate(cb: (changes: ("plots" | "report.currency" | "report.settings" | "report.perf" | "report.trades" | "report.history" | "graphic")[]) => void): void; + onError(cb: (...any: any[]) => void): void; + remove(): void; + }; + }; + /** Delete the chart session */ + delete(): void; + }; + }; + export = _exports; + /** + * Custom chart type + */ + export type ChartType = 'HeikinAshi' | 'Renko' | 'LineBreak' | 'Kagi' | 'PointAndFigure' | 'Range'; + /** + * Custom chart type + */ + export type ChartInputs = { + /** + * Renko/Kagi/PointAndFigure ATR length + */ + atrLength?: number; + /** + * Renko/LineBreak/Kagi source + */ + source?: 'open' | 'high' | 'low' | 'close' | 'hl2' | 'hlc3' | 'ohlc4'; + /** + * Renko/Kagi/PointAndFigure style + */ + style?: 'ATR' | string; + /** + * Renko/PointAndFigure box size + */ + boxSize?: number; + /** + * Kagi/PointAndFigure reversal amount + */ + reversalAmount?: number; + /** + * Renko/PointAndFigure sources + */ + sources?: 'Close'; + /** + * Renko wicks + */ + wicks?: boolean; + /** + * LineBreak Line break + */ + lb?: number; + /** + * PointAndFigure oneStepBackBuilding + */ + oneStepBackBuilding?: boolean; + /** + * Range phantom bars + */ + phantomBars?: boolean; + /** + * Range range + */ + range?: number; + }; + export type StudyListeners = { + [x: string]: Function[]; + }; + export type ChartSessionBridge = { + sessionID: string; + studyListeners: StudyListeners; + indexes: { + [x: number]: number; + }; + send: import('@mathieuc/tradingview/src/client').SendPacket; + }; + export type ChartEvent = 'seriesLoaded' | 'symbolLoaded' | 'update' | 'error'; + export type PricePeriod = { + /** + * Period timestamp + */ + time: number; + /** + * Period open value + */ + open: number; + /** + * Period close value + */ + close: number; + /** + * Period max value + */ + max: number; + /** + * Period min value + */ + min: number; + /** + * Period volume value + */ + volume: number; + }; + export type Subsession = { + /** + * Subsession ID (ex: 'regular') + */ + id: string; + /** + * Subsession description (ex: 'Regular') + */ + description: string; + /** + * If private + */ + private: boolean; + /** + * Session (ex: '24x7') + */ + session: string; + /** + * Session correction + */ + "session-correction": string; + /** + * Session display (ex: '24x7') + */ + "session-display": string; + }; + export type MarketInfos = { + /** + * Used series (ex: 'ser_1') + */ + series_id: string; + /** + * Base currency (ex: 'BTC') + */ + base_currency: string; + /** + * Base currency ID (ex: 'XTVCBTC') + */ + base_currency_id: string; + /** + * Market short name (ex: 'BTCEUR') + */ + name: string; + /** + * Market full name (ex: 'COINBASE:BTCEUR') + */ + full_name: string; + /** + * Market pro name (ex: 'COINBASE:BTCEUR') + */ + pro_name: string; + /** + * Market symbol description (ex: 'BTC/EUR') + */ + description: string; + /** + * Market symbol short description (ex: 'BTC/EUR') + */ + short_description: string; + /** + * Market exchange (ex: 'COINBASE') + */ + exchange: string; + /** + * Market exchange (ex: 'COINBASE') + */ + listed_exchange: string; + /** + * Values provider ID (ex: 'coinbase') + */ + provider_id: string; + /** + * Used currency ID (ex: 'EUR') + */ + currency_id: string; + /** + * Used currency code (ex: 'EUR') + */ + currency_code: string; + /** + * Variable tick size + */ + variable_tick_size: string; + /** + * Price scale + */ + pricescale: number; + /** + * Point value + */ + pointvalue: number; + /** + * Session (ex: '24x7') + */ + session: string; + /** + * Session display (ex: '24x7') + */ + session_display: string; + /** + * Market type (ex: 'crypto') + */ + type: string; + /** + * If intraday values are available + */ + has_intraday: boolean; + /** + * If market is fractional + */ + fractional: boolean; + /** + * If the market is curently tradable + */ + is_tradable: boolean; + /** + * Minimum move value + */ + minmov: number; + /** + * Minimum move value 2 + */ + minmove2: number; + /** + * Used timezone + */ + timezone: string; + /** + * If the replay mode is available + */ + is_replayable: boolean; + /** + * If the adjustment mode is enabled + */ + has_adjustment: boolean; + /** + * Has extended hours + */ + has_extended_hours: boolean; + /** + * Bar source + */ + bar_source: string; + /** + * Bar transform + */ + bar_transform: string; + /** + * Bar fill gaps + */ + bar_fillgaps: boolean; + /** + * Allowed adjustment (ex: 'none') + */ + allowed_adjustment: string; + /** + * Subsession ID (ex: 'regular') + */ + subsession_id: string; + /** + * Pro permission (ex: '') + */ + pro_perm: string; + /** + * Base name (ex: ['COINBASE:BTCEUR']) + */ + base_name: []; + /** + * Legs (ex: ['COINBASE:BTCEUR']) + */ + legs: []; + /** + * Sub sessions + */ + subsessions: Subsession[]; + /** + * Typespecs (ex: []) + */ + typespecs: []; + /** + * Resolutions (ex: []) + */ + resolutions: []; + /** + * Aliases (ex: []) + */ + aliases: []; + /** + * Alternatives (ex: []) + */ + alternatives: []; + }; + import studyConstructor = require("./study"); + //# sourceMappingURL=session.d.ts.map +} +declare module '@mathieuc/tradingview/src/chart/session.d.ts' { + {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../../../../Documents/coding/TradingView-API/src/chart/session.js"],"names":[],"mappings":"AAoHiB,kCAFN,OAAO,WAAW,EAAE,YAAY;;;;;QASzC,sCAAsC;;gBAApB,MAAM,GAAE,SAAE;;QAG5B,oBAAoB;;QAGpB,6BAA6B;gCAAlB,cAAc;QAGzB;;;WAGG;;gBADc,MAAM,GAAE,WAAW,EAAE;;QAItC,qDAAqD;;QAKrD;;;WAGG;uBADO,WAAW;QAIrB,iDAAiD;;;;;;;;;;;;;QAmBjD;;;WAGG;gCAFQ,UAAU,WACP,EAAE;;;;QAgIhB;;;;WAIG;8BAHQ,OAAO,UAAU,EAAE,SAAS,UAC5B,MAAM,cACN,MAAM;QAwBjB;;;;;;;;;;;;;WAaG;0BAXQ,MAAM;YAEiC,SAAS,GAAhD,OAAO,UAAU,EAAE,SAAS;YACX,KAAK,GAAtB,MAAM;YACW,EAAE,GAAnB,MAAM;YAC2B,UAAU,GAA3C,QAAQ,GAAG,WAAW;YACW,OAAO,GAAxC,SAAS,GAAG,UAAU;YACW,QAAQ,GAAzC,KAAK,GAAG,KAAK,GAAG,MAAM;YACF,IAAI,GAAxB,SAAS;YACa,MAAM,GAA5B,WAAW;YACM,MAAM,GAAvB,MAAM;;QAyDjB;;;WAGG;8BADQ,OAAO,UAAU,EAAE,QAAQ;QAOtC;;;WAGG;2BADQ,MAAM;QAMjB;;;;WAIG;4BAFQ,MAAM;QAgBjB;;;;WAIG;+BAFQ,MAAM;QAgBjB;;;WAGG;;QAcH;;;;WAIG;2BAFQ,MAAM,IAAI;QAOrB;;;;WAIG;+BAFkB,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI;QAOpD;;;;WAIG;2BAFQ,MAAM,IAAI;QAOrB;;;;;;;WAOG;2CAJa,OAAO,UAAU,EAAE,SAAS,SAChC,MAAM,KACV,IAAI;QAOZ;;;;WAIG;wBAFQ,MAAM,IAAI;QAOrB;;;;WAIG;kCAFgB,MAAM,KAAK,IAAI;QAOlC;;;;WAIG;uCAFoB,IAAI;QAO3B,iCAAiC;8BAAtB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CA/H7B;;;mBAGG;;;;;;QAsIH,+BAA+B;;;EAOhC;;;;;wBA9hBY,YAAY,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,gBAAgB,GACvE,OAAO;;;;;;;;gBAcH,MAAM;;;;aACN,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAC7C,MAAM,GAAG,OAAO;;;;YACZ,KAAK,GAAG,MAAM;;;;cACd,MAAM;;;;qBACN,MAAM;;;;cACN,OAAO;;;;YACP,OAAO;;;;SACP,MAAM;;;;0BACN,OAAO;;;;kBACP,OAAO;;;;YACP,MAAM;;;QAGK,MAAM,GAAE,UAAU;;;eAI7B,MAAM;oBACN,cAAc;;YACP,MAAM,GAAE,MAAM;;UACrB,OAAO,WAAW,EAAE,UAAU;;yBAI3B,cAAc,GAAG,cAAc,GAAG,QAAQ,GAAG,OAAO;;;;;UAKvD,MAAM;;;;UACN,MAAM;;;;WACN,MAAM;;;;SACN,MAAM;;;;SACN,MAAM;;;;YACN,MAAM;;;;;;QAKN,MAAM;;;;iBACN,MAAM;;;;aACN,OAAO;;;;aACP,MAAM;;;;0BACN,MAAM;;;;uBACN,MAAM;;;;;;eAKN,MAAM;;;;mBACN,MAAM;;;;sBACN,MAAM;;;;UACN,MAAM;;;;eACN,MAAM;;;;cACN,MAAM;;;;iBACN,MAAM;;;;uBACN,MAAM;;;;cACN,MAAM;;;;qBACN,MAAM;;;;iBACN,MAAM;;;;iBACN,MAAM;;;;mBACN,MAAM;;;;wBACN,MAAM;;;;gBACN,MAAM;;;;gBACN,MAAM;;;;aACN,MAAM;;;;qBACN,MAAM;;;;UACN,MAAM;;;;kBACN,OAAO;;;;gBACP,OAAO;;;;iBACP,OAAO;;;;YACP,MAAM;;;;cACN,MAAM;;;;cACN,MAAM;;;;mBACN,OAAO;;;;oBACP,OAAO;;;;wBACP,OAAO;;;;gBACP,MAAM;;;;mBACN,MAAM;;;;kBACN,OAAO;;;;wBACP,MAAM;;;;mBACN,MAAM;;;;cACN,MAAM;;;;eACN,EAAE;;;;UACF,EAAE;;;;iBACF,UAAU,EAAE;;;;eACZ,EAAE;;;;iBACF,EAAE;;;;aACF,EAAE;;;;kBACF,EAAE"} +} +declare module '@mathieuc/tradingview/src/chart/study' { + function _exports(chartSession: import('@mathieuc/tradingview/src/chart/session').ChartSessionBridge): { + new (indicator: PineIndicator | BuiltInIndicator): { + "__#5@#studID": string; + "__#5@#studyListeners": { + [x: string]: Function[]; + }; + /** + * Table of periods values indexed by timestamp + * @type {Object} + */ + "__#5@#periods": { + [x: number]: {}[]; + }; + /** @return {{}[]} List of periods values */ + readonly periods: {}[]; + /** + * List of graphic xPos indexes + * @type {number[]} + */ + "__#5@#indexes": number[]; + /** + * Table of graphic drawings indexed by type and ID + * @type {Object>} + */ + "__#5@#graphic": { + [x: string]: { + [x: number]: {}; + }; + }; + /** + * Table of graphic drawings indexed by type + * @return {import('@mathieuc/tradingview/src/chart/graphicParser').GraphicData} + */ + readonly graphic: graphicParser.GraphicData; + /** @type {StrategyReport} */ + "__#5@#strategyReport": StrategyReport; + /** @return {StrategyReport} Get the strategy report if available */ + readonly strategyReport: StrategyReport; + "__#5@#callbacks": { + studyCompleted: any[]; + update: any[]; + event: any[]; + error: any[]; + }; + /** + * @param {ChartEvent} ev Client event + * @param {...{}} data Packet data + */ + "__#5@#handleEvent"(ev: ChartEvent, ...data: {}[]): void; + "__#5@#handleError"(...msgs: any[]): void; + /** @type {PineIndicator | BuiltInIndicator} Indicator instance */ + instance: PineIndicator | BuiltInIndicator; + /** + * @param {PineIndicator | BuiltInIndicator} indicator Indicator instance + */ + setIndicator(indicator: PineIndicator | BuiltInIndicator): void; + /** + * When the indicator is ready + * @param {() => void} cb + * @event + */ + onReady(cb: () => void): void; + /** + * @typedef {'plots' | 'report.currency' + * | 'report.settings' | 'report.perf' + * | 'report.trades' | 'report.history' + * | 'graphic' + * } UpdateChangeType + */ + /** + * When an indicator update happens + * @param {(changes: UpdateChangeType[]) => void} cb + * @event + */ + onUpdate(cb: (changes: ("plots" | "report.currency" | "report.settings" | "report.perf" | "report.trades" | "report.history" | "graphic")[]) => void): void; + /** + * When indicator error happens + * @param {(...any) => void} cb Callback + * @event + */ + onError(cb: (...any: any[]) => void): void; + /** Remove the study */ + remove(): void; + }; + }; + export = _exports; + /** + * Trade report + */ + export type TradeReport = { + /** + * Trade entry + */ + entry: { + name: string; + type: 'long' | 'short'; + value: number; + time: number; + }; + /** + * Trade exit + */ + exit: { + name: '' | string; + value: number; + time: number; + }; + /** + * Trade quantity + */ + quantity: number; + /** + * Trade profit + */ + profit: RelAbsValue; + /** + * Trade cummulative profit + */ + cumulative: RelAbsValue; + /** + * Trade run-up + */ + runup: RelAbsValue; + /** + * Trade drawdown + */ + drawdown: RelAbsValue; + }; + export type PerfReport = { + /** + * Average bars in trade + */ + avgBarsInTrade: number; + /** + * Average bars in winning trade + */ + avgBarsInWinTrade: number; + /** + * Average bars in losing trade + */ + avgBarsInLossTrade: number; + /** + * Average trade gain + */ + avgTrade: number; + /** + * Average trade performace + */ + avgTradePercent: number; + /** + * Average losing trade gain + */ + avgLosTrade: number; + /** + * Average losing trade performace + */ + avgLosTradePercent: number; + /** + * Average winning trade gain + */ + avgWinTrade: number; + /** + * Average winning trade performace + */ + avgWinTradePercent: number; + /** + * Commission paid + */ + commissionPaid: number; + /** + * Gross loss value + */ + grossLoss: number; + /** + * Gross loss percent + */ + grossLossPercent: number; + /** + * Gross profit + */ + grossProfit: number; + /** + * Gross profit percent + */ + grossProfitPercent: number; + /** + * Largest losing trade gain + */ + largestLosTrade: number; + /** + * Largent losing trade performance (percentage) + */ + largestLosTradePercent: number; + /** + * Largest winning trade gain + */ + largestWinTrade: number; + /** + * Largest winning trade performance (percentage) + */ + largestWinTradePercent: number; + /** + * Margin calls + */ + marginCalls: number; + /** + * Max Contracts Held + */ + maxContractsHeld: number; + /** + * Net profit + */ + netProfit: number; + /** + * Net performance (percentage) + */ + netProfitPercent: number; + /** + * Number of losing trades + */ + numberOfLosingTrades: number; + /** + * Number of winning trades + */ + numberOfWiningTrades: number; + /** + * Strategy winrate + */ + percentProfitable: number; + /** + * Profit factor + */ + profitFactor: number; + /** + * Ratio Average Win / Average Loss + */ + ratioAvgWinAvgLoss: number; + /** + * Total open trades + */ + totalOpenTrades: number; + /** + * Total trades + */ + totalTrades: number; + }; + export type FromTo = { + /** + * From timestamp + */ + from: number; + /** + * To timestamp + */ + to: number; + }; + export type StrategyReport = { + /** + * Selected currency + */ + currency?: 'EUR' | 'USD' | 'JPY' | '' | 'CHF'; + /** + * Backtester settings + */ + settings?: { + dateRange?: { + backtest?: FromTo; + trade?: FromTo; + }; + }; + /** + * Trade list starting by the last + */ + trades: TradeReport[]; + /** + * History Chart value + */ + history: { + buyHold?: number[]; + buyHoldPercent?: number[]; + drawDown?: number[]; + drawDownPercent?: number[]; + equity?: number[]; + equityPercent?: number[]; + }; + /** + * Strategy performance + */ + performance: { + all?: PerfReport; + long?: PerfReport; + short?: PerfReport; + buyHoldReturn?: number; + buyHoldReturnPercent?: number; + maxDrawDown?: number; + maxDrawDownPercent?: number; + openPL?: number; + openPLPercent?: number; + sharpeRatio?: number; + sortinoRatio?: number; + }; + }; + import PineIndicator = require("../classes/PineIndicator"); + import BuiltInIndicator = require("../classes/BuiltInIndicator"); + import graphicParser = require("./graphicParser"); + //# sourceMappingURL=study.d.ts.map +} +declare module '@mathieuc/tradingview/src/chart/study.d.ts' { + {"version":3,"file":"study.d.ts","sourceRoot":"","sources":["../../../../../../../Documents/coding/TradingView-API/src/chart/study.js"],"names":[],"mappings":"AAmJiB,wCAFN,OAAO,WAAW,EAAE,kBAAkB;oBAgFpC,aAAa,GAAG,gBAAgB;;;;;QAzE3C;;;WAGG;;gBADc,MAAM,GAAE,EAAE,EAAE;;QAI7B,4CAA4C;;QAK5C;;;WAGG;yBADO,MAAM,EAAE;QAIlB;;;WAGG;;gBADc,MAAM;oBAAS,MAAM,GAAE,EAAE;;;QAI1C;;;WAGG;;QAYH,6BAA6B;gCAAlB,cAAc;QAOzB,oEAAoE;;;;;;;;QAapE;;;WAGG;qDADW,EAAE;;QAqBd,kEAAkE;kBAAvD,aAAa,GAAG,gBAAgB;QA2I7C;;WAEG;gCADQ,aAAa,GAAG,gBAAgB;QAkB3C;;;;WAIG;oBAFQ,MAAM,IAAI;QAOrB;;;;;;WAMG;QAEH;;;;WAIG;wJAFyC,IAAI;QAOhD;;;;WAIG;uCAFoB,IAAI;QAO3B,uBAAuB;;;EAQxB;;;;;;;;;;QAvXuB,IAAI,EAAlB,MAAM;QACkB,IAAI,EAA5B,MAAM,GAAG,OAAO;QACF,KAAK,EAAnB,MAAM;QACQ,IAAI,EAAlB,MAAM;;;;;;QAGY,IAAI,EAAtB,EAAE,GAAG,MAAM;QACE,KAAK,EAAlB,MAAM;QACO,IAAI,EAAjB,MAAM;;;;;cAEN,MAAM;;;;;;;;;;;;;;;;;;;;;;oBASN,MAAM;;;;uBACN,MAAM;;;;wBACN,MAAM;;;;cACN,MAAM;;;;qBACN,MAAM;;;;iBACN,MAAM;;;;wBACN,MAAM;;;;iBACN,MAAM;;;;wBACN,MAAM;;;;oBACN,MAAM;;;;eACN,MAAM;;;;sBACN,MAAM;;;;iBACN,MAAM;;;;wBACN,MAAM;;;;qBACN,MAAM;;;;4BACN,MAAM;;;;qBACN,MAAM;;;;4BACN,MAAM;;;;iBACN,MAAM;;;;sBACN,MAAM;;;;eACN,MAAM;;;;sBACN,MAAM;;;;0BACN,MAAM;;;;0BACN,MAAM;;;;uBACN,MAAM;;;;kBACN,MAAM;;;;wBACN,MAAM;;;;qBACN,MAAM;;;;iBACN,MAAM;;;;;;UAKN,MAAM;;;;QACN,MAAM;;;;;;eAKN,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK;;;;;QAEhB,SAAS;YACC,QAAQ,GAApC,MAAM;YACsB,KAAK,GAAjC,MAAM;;;;;;YACN,WAAW,EAAE;;;;;QAEM,OAAO,GAA1B,MAAM,EAAE;QACW,cAAc,GAAjC,MAAM,EAAE;QACW,QAAQ,GAA3B,MAAM,EAAE;QACW,eAAe,GAAlC,MAAM,EAAE;QACW,MAAM,GAAzB,MAAM,EAAE;QACW,aAAa,GAAhC,MAAM,EAAE;;;;;;QAEiB,GAAG,GAA5B,UAAU;QACe,IAAI,GAA7B,UAAU;QACe,KAAK,GAA9B,UAAU;QACW,aAAa,GAAlC,MAAM;QACe,oBAAoB,GAAzC,MAAM;QACe,WAAW,GAAhC,MAAM;QACe,kBAAkB,GAAvC,MAAM;QACe,MAAM,GAA3B,MAAM;QACe,aAAa,GAAlC,MAAM;QACe,WAAW,GAAhC,MAAM;QACe,YAAY,GAAjC,MAAM"} +} +declare module '@mathieuc/tradingview/src/classes/BuiltInIndicator' { + export = BuiltInIndicator; + class BuiltInIndicator { + /** + * @param {BuiltInIndicatorType} type Buit-in indocator raw type + */ + constructor(type?: BuiltInIndicatorType); + /** @return {BuiltInIndicatorType} Indicator script */ + get type(): BuiltInIndicatorType; + /** @return {Object} Indicator script */ + get options(): { + [x: string]: any; + }; + /** + * Set an option + * @param {BuiltInIndicatorOption} key The option you want to change + * @param {*} value The new value of the property + * @param {boolean} FORCE Ignore type and key verifications + */ + setOption(key: BuiltInIndicatorOption, value: any, FORCE?: boolean): void; + #private; + } + namespace BuiltInIndicator { + export { BuiltInIndicatorType, BuiltInIndicatorOption }; + } + /** + * Built-in indicator type + */ + type BuiltInIndicatorType = 'Volume@tv-basicstudies-144' | 'VbPFixed@tv-basicstudies-139!' | 'VbPFixed@tv-volumebyprice-53!' | 'VbPSessions@tv-volumebyprice-53' | 'VbPSessionsRough@tv-volumebyprice-53!' | 'VbPSessionsDetailed@tv-volumebyprice-53!' | 'VbPVisible@tv-volumebyprice-53'; + /** + * Built-in indicator Option + */ + type BuiltInIndicatorOption = 'rowsLayout' | 'rows' | 'volume' | 'vaVolume' | 'subscribeRealtime' | 'first_bar_time' | 'first_visible_bar_time' | 'last_bar_time' | 'last_visible_bar_time' | 'extendPocRight'; + //# sourceMappingURL=BuiltInIndicator.d.ts.map +} +declare module '@mathieuc/tradingview/src/classes/BuiltInIndicator.d.ts' { + {"version":3,"file":"BuiltInIndicator.d.ts","sourceRoot":"","sources":["../../../../../../../Documents/coding/TradingView-API/src/classes/BuiltInIndicator.js"],"names":[],"mappings":";AAuEiB;IAiBf;;OAEG;IACH,mBAFW,oBAAoB,EAO9B;IArBD,sDAAsD;IACtD,iCAEC;IAKD,qDAAqD;IACrD;;MAEC;IAYD;;;;;OAKG;IACH,eAJW,sBAAsB,sBAEtB,OAAO,QAqBjB;;CACF;;;;;;;4BA3HY,4BAA4B,GACnC,+BAA+B,GAC/B,+BAA+B,GAC/B,iCAAiC,GACjC,uCAAuC,GACvC,0CAA0C,GAC1C,gCAAgC;;;;8BAIzB,YAAY,GAAG,MAAM,GAAG,QAAQ,GACvC,UAAU,GAAG,mBAAmB,GAChC,gBAAgB,GAAG,wBAAwB,GAC3C,eAAe,GAAG,uBAAuB,GACzC,gBAAgB"} +} +declare module '@mathieuc/tradingview/src/classes/PineIndicator' { + export = PineIndicator; + class PineIndicator { + /** @param {Indicator} options Indicator */ + constructor(options: Indicator); + /** @return {string} Indicator ID */ + get pineId(): string; + /** @return {string} Indicator version */ + get pineVersion(): string; + /** @return {string} Indicator description */ + get description(): string; + /** @return {string} Indicator short description */ + get shortDescription(): string; + /** @return {Object} Indicator inputs */ + get inputs(): { + [x: string]: IndicatorInput; + }; + /** @return {Object} Indicator plots */ + get plots(): { + [x: string]: string; + }; + /** @return {IndicatorType} Indicator script */ + get type(): IndicatorType; + /** + * Set the indicator type + * @param {IndicatorType} type Indicator type + */ + setType(type?: IndicatorType): void; + /** @return {string} Indicator script */ + get script(): string; + /** + * Set an option + * @param {number | string} key The key can be ID of the property (`in_{ID}`), + * the inline name or the internalID. + * @param {*} value The new value of the property + */ + setOption(key: number | string, value: any): void; + #private; + } + namespace PineIndicator { + export { IndicatorInput, Indicator, IndicatorType }; + } + type IndicatorInput = { + /** + * Input name + */ + name: string; + /** + * Input inline name + */ + inline: string; + /** + * Input internal ID + */ + internalID?: string; + /** + * Input tooltip + */ + tooltip?: string; + /** + * Input type + */ + type: 'text' | 'source' | 'integer' | 'float' | 'resolution' | 'bool' | 'color'; + /** + * Input default value + */ + value: string | number | boolean; + /** + * If the input is hidden + */ + isHidden: boolean; + /** + * If the input is fake + */ + isFake: boolean; + /** + * Input options if the input is a select + */ + options?: string[]; + }; + /** + * Indicator type + */ + type IndicatorType = 'Script@tv-scripting-101!' | 'StrategyScript@tv-scripting-101!'; + type Indicator = { + /** + * Indicator ID + */ + pineId: string; + /** + * Indicator version + */ + pineVersion: string; + /** + * Indicator description + */ + description: string; + /** + * Indicator short description + */ + shortDescription: string; + /** + * Indicator inputs + */ + inputs: { + [x: string]: IndicatorInput; + }; + /** + * Indicator plots + */ + plots: { + [x: string]: string; + }; + /** + * Indicator script + */ + script: string; + }; + //# sourceMappingURL=PineIndicator.d.ts.map +} +declare module '@mathieuc/tradingview/src/classes/PineIndicator.d.ts' { + {"version":3,"file":"PineIndicator.d.ts","sourceRoot":"","sources":["../../../../../../../Documents/coding/TradingView-API/src/classes/PineIndicator.js"],"names":[],"mappings":";AAgCiB;IAMf,2CAA2C;IAC3C,qBADY,SAAS,EAGpB;IAED,oCAAoC;IACpC,qBAEC;IAED,yCAAyC;IACzC,0BAEC;IAED,6CAA6C;IAC7C,0BAEC;IAED,mDAAmD;IACnD,+BAEC;IAED,gEAAgE;IAChE;;MAEC;IAED,uDAAuD;IACvD;;MAEC;IAED,+CAA+C;IAC/C,0BAEC;IAED;;;OAGG;IACH,eAFW,aAAa,QAIvB;IAED,wCAAwC;IACxC,qBAEC;IAED;;;;;OAKG;IACH,eAJW,MAAM,GAAG,MAAM,oBAqCzB;;CACF;;;;;;;;UAjIa,MAAM;;;;YACN,MAAM;;;;iBACN,MAAM;;;;cACN,MAAM;;;;UACN,MAAM,GAAG,QAAQ,GAAG,SAAS,GACrC,OAAO,GAAG,YAAY,GAAG,MAAM,GAAG,OAAO;;;;WAEjC,MAAM,GAAG,MAAM,GAAG,OAAO;;;;cACzB,OAAO;;;;YACP,OAAO;;;;cACP,MAAM,EAAE;;;;;qBAeT,0BAA0B,GACjC,kCAAkC;;;;;YAX1B,MAAM;;;;iBACN,MAAM;;;;iBACN,MAAM;;;;sBACN,MAAM;;;;;YACC,MAAM,GAAE,cAAc;;;;;;YACtB,MAAM,GAAE,MAAM;;;;;YACrB,MAAM"} +} +declare module '@mathieuc/tradingview/src/classes/PinePermManager' { + export = PinePermManager; + /** + * @typedef {Object} AuthorizationUser + * @prop {id} id User id + * @prop {string} username User's username + * @prop {string} userpic User's profile picture URL + * @prop {string} expiration Authorization expiration date + * @prop {string} created Authorization creation date + */ + /** @class */ + class PinePermManager { + /** + * Creates a PinePermManager instance + * @param {string} sessionId Token from `sessionid` cookie + * @param {string} signature Signature cookie + * @param {string} pineId Indicator ID (Like: PUB;XXXXXXXXXXXXXXXXXXXXX) + */ + constructor(sessionId: string, signature: string, pineId: string); + sessionId: string; + pineId: string; + signature: string; + /** + * Get list of authorized users + * @param {number} limit Fetching limit + * @param {'user__username' + * | '-user__username' + * | 'created' | 'created' + * | 'expiration,user__username' + * | '-expiration,user__username' + * } order Fetching order + * @returns {AuthorizationUser[]} + */ + getUsers(limit?: number, order?: 'user__username' | '-user__username' | 'created' | 'created' | 'expiration,user__username' | '-expiration,user__username'): AuthorizationUser[]; + /** + * Adds an user to the authorized list + * @param {string} username User's username + * @param {Date} [expiration] Expiration date + * @returns {'ok' | 'exists' | null} + */ + addUser(username: string, expiration?: Date): 'ok' | 'exists' | null; + /** + * Modify an authorization expiration date + * @param {string} username User's username + * @param {Date} [expiration] New expiration date + * @returns {'ok' | null} + */ + modifyExpiration(username: string, expiration?: Date): 'ok' | null; + /** + * Removes an user to the authorized list + * @param {string} username User's username + * @returns {'ok' | null} + */ + removeUser(username: string): 'ok' | null; + } + namespace PinePermManager { + export { AuthorizationUser }; + } + type AuthorizationUser = { + /** + * User id + */ + id: id; + /** + * User's username + */ + username: string; + /** + * User's profile picture URL + */ + userpic: string; + /** + * Authorization expiration date + */ + expiration: string; + /** + * Authorization creation date + */ + created: string; + }; + //# sourceMappingURL=PinePermManager.d.ts.map +} +declare module '@mathieuc/tradingview/src/classes/PinePermManager.d.ts' { + {"version":3,"file":"PinePermManager.d.ts","sourceRoot":"","sources":["../../../../../../../Documents/coding/TradingView-API/src/classes/PinePermManager.js"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAEH,aAAa;AACb;IAKE;;;;;OAKG;IACH,uBAJW,MAAM,aACN,MAAM,UACN,MAAM,EAShB;IAjBD,kBAAU;IAEV,eAAO;IAaL,kBAA0B;IAI5B;;;;;;;;;;OAUG;IACH,iBATW,MAAM,UACN,gBAAgB,GACtB,iBAAiB,GACjB,SAAS,GAAG,SAAS,GACrB,2BAA2B,GAC3B,4BAA4B,GAEpB,iBAAiB,EAAE,CAoB/B;IAED;;;;;OAKG;IACH,kBAJW,MAAM,eACN,IAAI,GACF,IAAI,GAAG,QAAQ,GAAG,IAAI,CA4BlC;IAED;;;;;OAKG;IACH,2BAJW,MAAM,eACN,IAAI,GACF,IAAI,GAAG,IAAI,CA4BvB;IAED;;;;OAIG;IACH,qBAHW,MAAM,GACJ,IAAI,GAAG,IAAI,CAoBvB;CACF;;;;;;;;;;;;cAtJS,MAAM;;;;aACN,MAAM;;;;gBACN,MAAM;;;;aACN,MAAM"} +} +declare module '@mathieuc/tradingview/src/client' { + export = Client; + class Client { + /** + * @typedef {Object} ClientOptions + * @prop {string} [token] User auth token (in 'sessionid' cookie) + * @prop {string} [signature] User auth token signature (in 'sessionid_sign' cookie) + * @prop {boolean} [DEBUG] Enable debug mode + * @prop {'data' | 'prodata' | 'widgetdata'} [server] Server type + */ + /** Client object + * @param {ClientOptions} clientOptions TradingView client options + */ + constructor(clientOptions?: { + /** + * User auth token (in 'sessionid' cookie) + */ + token?: string; + /** + * User auth token signature (in 'sessionid_sign' cookie) + */ + signature?: string; + /** + * Enable debug mode + */ + DEBUG?: boolean; + /** + * Server type + */ + server?: 'data' | 'prodata' | 'widgetdata'; + }); + /** If the client is logged in */ + get isLogged(): boolean; + /** If the cient was closed */ + get isOpen(): boolean; + /** + * When client is connected + * @param {() => void} cb Callback + * @event onConnected + */ + onConnected(cb: () => void): void; + /** + * When client is disconnected + * @param {() => void} cb Callback + * @event onDisconnected + */ + onDisconnected(cb: () => void): void; + /** + * @typedef {Object} SocketSession + * @prop {string} session_id Socket session ID + * @prop {number} timestamp Session start timestamp + * @prop {number} timestampMs Session start milliseconds timestamp + * @prop {string} release Release + * @prop {string} studies_metadata_hash Studies metadata hash + * @prop {'json' | string} protocol Used protocol + * @prop {string} javastudies Javastudies + * @prop {number} auth_scheme_vsn Auth scheme type + * @prop {string} via Socket IP + */ + /** + * When client is logged + * @param {(SocketSession: SocketSession) => void} cb Callback + * @event onLogged + */ + onLogged(cb: (SocketSession: { + /** + * Socket session ID + */ + session_id: string; + /** + * Session start timestamp + */ + timestamp: number; + /** + * Session start milliseconds timestamp + */ + timestampMs: number; + /** + * Release + */ + release: string; + /** + * Studies metadata hash + */ + studies_metadata_hash: string; + /** + * Used protocol + */ + protocol: 'json' | string; + /** + * Javastudies + */ + javastudies: string; + /** + * Auth scheme type + */ + auth_scheme_vsn: number; + /** + * Socket IP + */ + via: string; + }) => void): void; + /** + * When server is pinging the client + * @param {(i: number) => void} cb Callback + * @event onPing + */ + onPing(cb: (i: number) => void): void; + /** + * When unparsed data is received + * @param {(...{}) => void} cb Callback + * @event onData + */ + onData(cb: (...{}) => void): void; + /** + * When a client error happens + * @param {(...{}) => void} cb Callback + * @event onError + */ + onError(cb: (...{}) => void): void; + /** + * When a client event happens + * @param {(...{}) => void} cb Callback + * @event onEvent + */ + onEvent(cb: (...{}) => void): void; + send(t: string, p: string[]): void; + /** Send all waiting packets */ + sendQueue(): void; + /** @namespace Session */ + Session: { + Quote: { + new (options?: { + /** + * Asked quote fields + */ + fields?: "all" | "price"; + /** + * List of asked quote fields + */ + customFields?: quoteSessionGenerator.quoteField[]; + }): { + "__#3@#sessionID": string; + "__#3@#client": ClientBridge; + "__#3@#symbolListeners": { + [x: string]: Function[]; + }; + "__#3@#quoteSession": quoteSessionGenerator.QuoteSessionBridge; + Market: { + new (symbol: string, session?: string): { + "__#2@#symbolListeners": { + [x: string]: Function[]; + }; + "__#2@#symbol": string; + "__#2@#session": string; + "__#2@#symbolKey": string; + "__#2@#symbolListenerID": number; + "__#2@#lastData": {}; + "__#2@#callbacks": { + loaded: any[]; + data: any[]; + /** @typedef {Object} SessionList Session list */ + /** + * @callback SendPacket Send a custom packet + * @param {string} t Packet type + * @param {string[]} p Packet data + * @returns {void} + */ + /** + * @typedef {Object} ClientBridge + * @prop {SessionList} sessions + * @prop {SendPacket} send + */ + /** + * @typedef { 'connected' | 'disconnected' + * | 'logged' | 'ping' | 'data' + * | 'error' | 'event' + * } ClientEvent + */ + /** @class */ + event: any[]; + error: any[]; + }; + "__#2@#handleEvent"(ev: import("@mathieuc/tradingview/src/quote/market").MarketEvent, ...data: {}[]): void; + "__#2@#handleError"(...msgs: any[]): void; + onLoaded(cb: () => void): void; + onData(cb: (data: {}) => void): void; + onEvent(cb: (...any: any[]) => void): void; + onError(cb: (...any: any[]) => void): void; /** + * When server is pinging the client + * @param {(i: number) => void} cb Callback + * @event onPing + */ + close(): void; + }; + }; + delete(): void; + }; + }; + Chart: { + new (): { + "__#6@#chartSessionID": string; + "__#6@#replaySessionID": string; + "__#6@#replayMode": boolean; + "__#6@#replayOKCB": { + [x: string]: () => any; + }; + "__#6@#client": ClientBridge; + "__#6@#studyListeners": { + [x: string]: Function[]; + }; + "__#6@#periods": { + [x: number]: chartSessionGenerator.PricePeriod[]; + }; + readonly periods: chartSessionGenerator.PricePeriod[]; + "__#6@#infos": chartSessionGenerator.MarketInfos; + readonly infos: chartSessionGenerator.MarketInfos; + "__#6@#callbacks": { + seriesLoaded: any[]; + symbolLoaded: any[]; + update: any[]; + replayLoaded: any[]; + replayPoint: any[]; + replayResolution: any[]; + replayEnd: any[]; + event: any[]; + error: any[]; + }; + "__#6@#handleEvent"(ev: chartSessionGenerator.ChartEvent, ...data: {}[]): void; + "__#6@#handleError"(...msgs: any[]): void; + "__#6@#seriesCreated": boolean; + "__#6@#currentSeries": number; + setSeries(timeframe?: import("@mathieuc/tradingview/src/types").TimeFrame, range?: number, reference?: number): void; + setMarket(symbol: string, options?: { + timeframe?: import("@mathieuc/tradingview/src/types").TimeFrame; + range?: number; + to?: number; + adjustment?: "splits" | "dividends"; + session?: "regular" | "extended"; + currency?: string; + type?: chartSessionGenerator.ChartType; + inputs?: chartSessionGenerator.ChartInputs; + replay?: number; + }): void; + setTimezone(timezone: import("@mathieuc/tradingview/src/types").Timezone): void; + fetchMore(number?: number): void; + replayStep(number?: number): Promise; + replayStart(interval?: number): Promise; + replayStop(): Promise; + onSymbolLoaded(cb: () => void): void; + onUpdate(cb: (changes: string[]) => void): void; + onReplayLoaded(cb: () => void): void; + onReplayResolution(cb: (timeframe: import("@mathieuc/tradingview/src/types").TimeFrame, index: number) => void): void; + onReplayEnd(cb: () => void): void; + onReplayPoint(cb: (index: number) => void): void; + onError(cb: (...any: any[]) => void): void; + "__#6@#chartSession": chartSessionGenerator.ChartSessionBridge; + Study: { + new (indicator: import("@mathieuc/tradingview/src/classes/PineIndicator") | import("./classes/BuiltInIndicator")): { + "__#5@#studID": string; + "__#5@#studyListeners": { + [x: string]: Function[]; + }; + "__#5@#periods": { + [x: number]: {}[]; + }; + readonly periods: {}[]; + "__#5@#indexes": number[]; + "__#5@#graphic": { + [x: string]: { + [x: number]: {}; + }; + }; + readonly graphic: import("@mathieuc/tradingview/src/chart/graphicParser").GraphicData; + "__#5@#strategyReport": import("@mathieuc/tradingview/src/chart/study").StrategyReport; + readonly strategyReport: import("@mathieuc/tradingview/src/chart/study").StrategyReport; + "__#5@#callbacks": { + studyCompleted: any[]; + update: any[]; + event: any[]; + error: any[]; + }; + "__#5@#handleEvent"(ev: ChartEvent, ...data: {}[]): void; + "__#5@#handleError"(...msgs: any[]): void; + instance: import("@mathieuc/tradingview/src/classes/PineIndicator") | import("./classes/BuiltInIndicator"); + setIndicator(indicator: import("@mathieuc/tradingview/src/classes/PineIndicator") | import("./classes/BuiltInIndicator")): void; + onReady(cb: () => void): void; + onUpdate(cb: (changes: ("plots" | "report.currency" | "report.settings" | "report.perf" | "report.trades" | "report.history" | "graphic")[]) => void): void; + onError(cb: (...any: any[]) => void): void; + remove(): void; + }; + }; + delete(): void; + }; + }; + }; + /** + * Close the websocket connection + * @return {Promise} When websocket is closed + */ + end(): Promise; + #private; + } + namespace Client { + export { Session, SessionList, SendPacket, ClientBridge, ClientEvent }; + } + import quoteSessionGenerator = require("./quote/session"); + type ClientBridge = { + sessions: SessionList; + send: SendPacket; + }; + import chartSessionGenerator = require("./chart/session"); + type Session = { + /** + * Session type + */ + type: 'quote' | 'chart' | 'replay'; + /** + * When there is a data + */ + onData: (data: {}) => null; + }; + /** + * Session list + */ + type SessionList = { + [x: string]: Session; + }; + /** + * Send a custom packet + */ + type SendPacket = (t: string, p: string[]) => void; + type ClientEvent = 'connected' | 'disconnected' | 'logged' | 'ping' | 'data' | 'error' | 'event'; + //# sourceMappingURL=client.d.ts.map +} +declare module '@mathieuc/tradingview/src/client.d.ts' { + {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../Documents/coding/TradingView-API/src/client.js"],"names":[],"mappings":";AAqCiB;IAgLf;;;;;;OAMG;IAEH;;OAEG;IACH;;;;gBATU,MAAM;;;;oBACN,MAAM;;;;gBACN,OAAO;;;;iBACP,MAAM,GAAG,SAAS,GAAG,YAAY;OAgD1C;IAhOD,iCAAiC;IACjC,wBAEC;IAED,8BAA8B;IAC9B,sBAEC;IA8BD;;;;OAIG;IACH,gBAHW,MAAM,IAAI,QAKpB;IAED;;;;OAIG;IACH,mBAHW,MAAM,IAAI,QAKpB;IAED;;;;;;;;;;;OAWG;IAEH;;;;OAIG;IACH;;;;oBAhBU,MAAM;;;;mBACN,MAAM;;;;qBACN,MAAM;;;;iBACN,MAAM;;;;+BACN,MAAM;;;;kBACN,MAAM,GAAG,MAAM;;;;qBACf,MAAM;;;;yBACN,MAAM;;;;aACN,MAAM;UAK6B,IAAI,QAKhD;IAED;;;;OAIG;IACH,eAHe,MAAM,KAAK,IAAI,QAK7B;IAED;;;;OAIG;IACH,WAHW,CAAC,GAAG,EAAE,KAAK,IAAI,QAKzB;IAED;;;;OAIG;IACH,YAHW,CAAC,GAAG,EAAE,KAAK,IAAI,QAKzB;IAED;;;;OAIG;IACH,YAHW,CAAC,GAAG,EAAE,KAAK,IAAI,QAKzB;IAzIA,mCAIH;IAuLE,+BAA+B;IAC/B,kBAMC;IA+DD,yBAAyB;IACzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BArQF,kEAAkE;4BAElE;;;;;8BAKE;4BAEF;;;;+BAIG;4BAEH;;;;;+BAKG;4BAEH,aAAa;;;;;;;;;oEAoFX;;;;2BAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA0JD;IAEF;;;OAGG;IACH,OAFY,QAAQ,IAAI,CAAC,CAOxB;;CACF;;;;;;cAzQS,WAAW;UACX,UAAU;;;;;;;UAhBV,OAAO,GAAG,OAAO,GAAG,QAAQ;;;;mBACrB,EAAE,KAAK,IAAI;;;;;;QAGP,MAAM,GAAE,OAAO;;;;;sBAIzB,MAAM,KACN,MAAM,EAAE,KACN,IAAI;mBAUH,WAAW,GAAG,cAAc,GACpC,QAAQ,GAAG,MAAM,GAAG,MAAM,GAC1B,OAAO,GAAG,OAAO"} +} +declare module '@mathieuc/tradingview/src/miscRequests' { + export type advice = number; + export type Period = { + Other: advice; + All: advice; + MA: advice; + }; + export type Periods = { + '1': Period; + '5': Period; + '15': Period; + '60': Period; + '240': Period; + '1D': Period; + '1W': Period; + '1M': Period; + }; + import PineIndicator = require("./classes/PineIndicator"); + /** + * Get technical analysis + * @function getTA + * @param {Screener} screener Market screener + * @param {string} id Full market id (Example: COINBASE:BTCEUR) + * @returns {Promise} results + */ + function getTA(screener: Screener, id: string): Promise; + /** + * @typedef {Object} SearchMarketResult + * @prop {string} id Market full symbol + * @prop {string} exchange Market exchange name + * @prop {string} fullExchange Market exchange full name + * @prop {Screener | 'forex' | 'crypto'} screener Market screener + * @prop {string} symbol Market symbol + * @prop {string} description Market name + * @prop {string} type Market type + * @prop {() => Promise} getTA Get market technical analysis + */ + /** + * Find a symbol + * @function searchMarket + * @param {string} search Keywords + * @param {'stock' + * | 'futures' | 'forex' | 'cfd' + * | 'crypto' | 'index' | 'economic' + * } [filter] Caterogy filter + * @returns {Promise} Search results + */ + function searchMarket(search: string, filter?: "index" | "crypto" | "stock" | "futures" | "forex" | "cfd" | "economic"): Promise<{ + /** + * Market full symbol + */ + id: string; + /** + * Market exchange name + */ + exchange: string; + /** + * Market exchange full name + */ + fullExchange: string; + /** + * Market screener + */ + screener: any; + /** + * Market symbol + */ + symbol: string; + /** + * Market name + */ + description: string; + /** + * Market type + */ + type: string; + /** + * Get market technical analysis + */ + getTA: () => Promise; + }[]>; + /** + * @typedef {Object} SearchIndicatorResult + * @prop {string} id Script ID + * @prop {string} version Script version + * @prop {string} name Script complete name + * @prop {{ id: number, username: string }} author Author user ID + * @prop {string} image Image ID https://tradingview.com/i/${image} + * @prop {string | ''} source Script source (if available) + * @prop {'study' | 'strategy'} type Script type (study / strategy) + * @prop {'open_source' | 'closed_source' | 'invite_only' + * | 'private' | 'other'} access Script access type + * @prop {() => Promise} get Get the full indicator informations + */ + /** + * Find an indicator + * @function searchIndicator + * @param {string} search Keywords + * @returns {Promise} Search results + */ + function searchIndicator(search?: string): Promise<{ + /** + * Script ID + */ + id: string; + /** + * Script version + */ + version: string; + /** + * Script complete name + */ + name: string; + /** + * Author user ID + */ + author: { + id: number; + username: string; + }; + /** + * Image ID https://tradingview.com/i/${image} + */ + image: string; + /** + * Script source (if available) + */ + source: string; + /** + * Script type (study / strategy) + */ + type: "study" | "strategy"; + /** + * Script access type + */ + access: "private" | "other" | "closed_source" | "open_source" | "invite_only"; + /** + * Get the full indicator informations + */ + get: () => Promise; + }[]>; + /** + * Get an indicator + * @function getIndicator + * @param {string} id Indicator ID (Like: PUB;XXXXXXXXXXXXXXXXXXXXX) + * @param {'last' | string} [version] Wanted version of the indicator + * @returns {Promise} Indicator + */ + function getIndicator(id: string, version?: string): Promise; + /** + * @typedef {Object} User Instance of User + * @prop {number} id User ID + * @prop {string} username User username + * @prop {string} firstName User first name + * @prop {string} lastName User last name + * @prop {number} reputation User reputation + * @prop {number} following Number of following accounts + * @prop {number} followers Number of followers + * @prop {Object} notifications User's notifications + * @prop {number} notifications.user User notifications + * @prop {number} notifications.following Notification from following accounts + * @prop {string} session User session + * @prop {string} sessionHash User session hash + * @prop {string} signature User session signature + * @prop {string} privateChannel User private channel + * @prop {string} authToken User auth token + * @prop {Date} joinDate Account creation date + */ + /** + * Get user and sessionid from username/email and password + * @function loginUser + * @param {string} username User username/email + * @param {string} password User password + * @param {boolean} [remember] Remember the session (default: false) + * @param {string} [UA] Custom UserAgent + * @returns {Promise} Token + */ + function loginUser(username: string, password: string, remember?: boolean, UA?: string): Promise<{ + /** + * User ID + */ + id: number; + /** + * User username + */ + username: string; + /** + * User first name + */ + firstName: string; + /** + * User last name + */ + lastName: string; + /** + * User reputation + */ + reputation: number; + /** + * Number of following accounts + */ + following: number; + /** + * Number of followers + */ + followers: number; + /** + * User's notifications + */ + notifications: { + /** + * User notifications + */ + user: number; + /** + * Notification from following accounts + */ + following: number; + }; + /** + * User session + */ + session: string; + /** + * User session hash + */ + sessionHash: string; + /** + * User session signature + */ + signature: string; + /** + * User private channel + */ + privateChannel: string; + /** + * User auth token + */ + authToken: string; + /** + * Account creation date + */ + joinDate: Date; + }>; + /** + * Get user from 'sessionid' cookie + * @function getUser + * @param {string} session User 'sessionid' cookie + * @param {string} [signature] User 'sessionid_sign' cookie + * @param {string} [location] Auth page location (For france: https://fr.tradingview.com/) + * @returns {Promise} Token + */ + function getUser(session: string, signature?: string, location?: string): Promise<{ + /** + * User ID + */ + id: number; + /** + * User username + */ + username: string; + /** + * User first name + */ + firstName: string; + /** + * User last name + */ + lastName: string; + /** + * User reputation + */ + reputation: number; + /** + * Number of following accounts + */ + following: number; + /** + * Number of followers + */ + followers: number; + /** + * User's notifications + */ + notifications: { + /** + * User notifications + */ + user: number; + /** + * Notification from following accounts + */ + following: number; + }; + /** + * User session + */ + session: string; + /** + * User session hash + */ + sessionHash: string; + /** + * User session signature + */ + signature: string; + /** + * User private channel + */ + privateChannel: string; + /** + * User auth token + */ + authToken: string; + /** + * Account creation date + */ + joinDate: Date; + }>; + /** + * Get user's private indicators from a 'sessionid' cookie + * @function getPrivateIndicators + * @param {string} session User 'sessionid' cookie + * @param {string} [signature] User 'sessionid_sign' cookie + * @returns {Promise} Search results + */ + function getPrivateIndicators(session: string, signature?: string): Promise<{ + /** + * Script ID + */ + id: string; + /** + * Script version + */ + version: string; + /** + * Script complete name + */ + name: string; + /** + * Author user ID + */ + author: { + id: number; + username: string; + }; + /** + * Image ID https://tradingview.com/i/${image} + */ + image: string; + /** + * Script source (if available) + */ + source: string; + /** + * Script type (study / strategy) + */ + type: "study" | "strategy"; + /** + * Script access type + */ + access: "private" | "other" | "closed_source" | "open_source" | "invite_only"; + /** + * Get the full indicator informations + */ + get: () => Promise; + }[]>; + /** + * User credentials + * @typedef {Object} UserCredentials + * @prop {number} id User ID + * @prop {string} session User session ('sessionid' cookie) + * @prop {string} [signature] User session signature ('sessionid_sign' cookie) + */ + /** + * Get a chart token from a layout ID and the user credentials if the layout is not public + * @function getChartToken + * @param {string} layout The layout ID found in the layout URL (Like: 'XXXXXXXX') + * @param {UserCredentials} [credentials] User credentials (id + session + [signature]) + * @returns {Promise} Token + */ + function getChartToken(layout: string, credentials?: { + /** + * User ID + */ + id: number; + /** + * User session ('sessionid' cookie) + */ + session: string; + /** + * User session signature ('sessionid_sign' cookie) + */ + signature?: string; + }): Promise; + /** + * @typedef {Object} DrawingPoint Drawing poitn + * @prop {number} time_t Point X time position + * @prop {number} price Point Y price position + * @prop {number} offset Point offset + */ + /** + * @typedef {Object} Drawing + * @prop {string} id Drawing ID (Like: 'XXXXXX') + * @prop {string} symbol Layout market symbol (Like: 'BINANCE:BUCEUR') + * @prop {string} ownerSource Owner user ID (Like: 'XXXXXX') + * @prop {string} serverUpdateTime Drawing last update timestamp + * @prop {string} currencyId Currency ID (Like: 'EUR') + * @prop {any} unitId Unit ID + * @prop {string} type Drawing type + * @prop {DrawingPoint[]} points List of drawing points + * @prop {number} zorder Drawing Z order + * @prop {string} linkKey Drawing link key + * @prop {Object} state Drawing state + */ + /** + * Get a chart token from a layout ID and the user credentials if the layout is not public + * @function getDrawings + * @param {string} layout The layout ID found in the layout URL (Like: 'XXXXXXXX') + * @param {string | ''} [symbol] Market filter (Like: 'BINANCE:BTCEUR') + * @param {UserCredentials} [credentials] User credentials (id + session + [signature]) + * @param {number} [chartID] Chart ID + * @returns {Promise} Drawings + */ + function getDrawings(layout: string, symbol?: string, credentials?: { + /** + * User ID + */ + id: number; + /** + * User session ('sessionid' cookie) + */ + session: string; + /** + * User session signature ('sessionid_sign' cookie) + */ + signature?: string; + }, chartID?: number): Promise<{ + /** + * Drawing ID (Like: 'XXXXXX') + */ + id: string; + /** + * Layout market symbol (Like: 'BINANCE:BUCEUR') + */ + symbol: string; + /** + * Owner user ID (Like: 'XXXXXX') + */ + ownerSource: string; + /** + * Drawing last update timestamp + */ + serverUpdateTime: string; + /** + * Currency ID (Like: 'EUR') + */ + currencyId: string; + /** + * Unit ID + */ + unitId: any; + /** + * Drawing type + */ + type: string; + /** + * List of drawing points + */ + points: { + /** + * Point X time position + */ + time_t: number; + /** + * Point Y price position + */ + price: number; + /** + * Point offset + */ + offset: number; + }[]; + /** + * Drawing Z order + */ + zorder: number; + /** + * Drawing link key + */ + linkKey: string; + /** + * Drawing state + */ + state: any; + }[]>; + export {}; + //# sourceMappingURL=miscRequests.d.ts.map +} +declare module '@mathieuc/tradingview/src/miscRequests.d.ts' { + {"version":3,"file":"miscRequests.d.ts","sourceRoot":"","sources":["../../../../../../Documents/coding/TradingView-API/src/miscRequests.js"],"names":[],"mappings":"qBAmBc,MAAM;qBAGP;IACZ,KAAS,EAAE,MAAM,CAAC;IAClB,GAAO,EAAE,MAAM,CAAC;IAChB,EAAM,EAAE,MAAM,CAAA;CACX;sBAIS;IACZ,GAAM,EAAE,MAAM,CAAC;IACf,GAAM,EAAE,MAAM,CAAC;IACf,IAAO,EAAE,MAAM,CAAC;IAChB,IAAO,EAAE,MAAM,CAAC;IAChB,KAAQ,EAAE,MAAM,CAAC;IACjB,IAAO,EAAE,MAAM,CAAC;IAChB,IAAO,EAAE,MAAM,CAAC;IAChB,IAAO,EAAE,MAAM,CAAA;CACZ;;AAsCF;;;;;;GAMG;AACH,yEAkBC;AAED;;;;;;;;;;GAUG;AAEH;;;;;;;;;GASG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgCC;AAED;;;;;;;;;;;;GAYG;AAEH;;;;;GAKG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA0DC;AAED;;;;;;GAMG;AACH,oFAoEC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;;;;;;;GAQG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCC;AAED;;;;;;;GAOG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BC;AAED;;;;;;GAMG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwBC;AAED;;;;;;GAMG;AAEH;;;;;;GAMG;AACH;;;;;;;;;;;;;oBAsBC;AAED;;;;;GAKG;AAEH;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;GAQG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqBC"} +} +declare module '@mathieuc/tradingview/src/protocol' { + export type TWPacket = { + /** + * Packet type + */ + m?: string; + /** + * Packet data + */ + p?: [session: string, {}]; + }; + /** + * Parse websocket packet + * @function parseWSPacket + * @param {string} str Websocket raw data + * @returns {TWPacket[]} TradingView packets + */ + function parseWSPacket(str: string): TWPacket[]; + /** + * Format websocket packet + * @function formatWSPacket + * @param {TWPacket} packet TradingView packet + * @returns {string} Websocket raw data + */ + function formatWSPacket(packet: TWPacket): string; + /** + * Parse compressed data + * @function parseCompressed + * @param {string} data Compressed data + * @returns {Promise<{}>} Parsed data + */ + function parseCompressed(data: string): Promise<{}>; + export {}; + //# sourceMappingURL=protocol.d.ts.map +} +declare module '@mathieuc/tradingview/src/protocol.d.ts' { + {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../../../../Documents/coding/TradingView-API/src/protocol.js"],"names":[],"mappings":";;;;QAIU,MAAM;;;;QACN,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;;AAO7B;;;;;GAKG;AACH,wDAYC;AAED;;;;;GAKG;AACH,0DAKC;AAED;;;;;GAKG;AACH,4DAOC"} +} +declare module '@mathieuc/tradingview/src/quote/market' { + function _exports(quoteSession: import('@mathieuc/tradingview/src/quote/session').QuoteSessionBridge): { + new (symbol: string, session?: string): { + "__#2@#symbolListeners": { + [x: string]: Function[]; + }; + "__#2@#symbol": string; + "__#2@#session": string; + "__#2@#symbolKey": string; + "__#2@#symbolListenerID": number; + "__#2@#lastData": {}; + "__#2@#callbacks": { + loaded: any[]; + data: any[]; + event: any[]; + error: any[]; + }; + /** + * @param {MarketEvent} ev Client event + * @param {...{}} data Packet data + */ + "__#2@#handleEvent"(ev: MarketEvent, ...data: {}[]): void; + "__#2@#handleError"(...msgs: any[]): void; + /** + * When quote market is loaded + * @param {() => void} cb Callback + * @event + */ + onLoaded(cb: () => void): void; + /** + * When quote data is received + * @param {(data: {}) => void} cb Callback + * @event + */ + onData(cb: (data: {}) => void): void; + /** + * When quote event happens + * @param {(...any) => void} cb Callback + * @event + */ + onEvent(cb: (...any: any[]) => void): void; + /** + * When quote error happens + * @param {(...any) => void} cb Callback + * @event + */ + onError(cb: (...any: any[]) => void): void; + /** Close this listener */ + close(): void; + }; + }; + export = _exports; + export type MarketEvent = 'loaded' | 'data' | 'error'; + //# sourceMappingURL=market.d.ts.map +} +declare module '@mathieuc/tradingview/src/quote/market.d.ts' { + {"version":3,"file":"market.d.ts","sourceRoot":"","sources":["../../../../../../../Documents/coding/TradingView-API/src/quote/market.js"],"names":[],"mappings":"AAQiB,wCAHN,OAAO,WAAW,EAAE,kBAAkB;iBAuCpC,MAAM,YACN,MAAM;;;;;;;;;;;;;;;QAhBjB;;;WAGG;gCAFQ,WAAW,WACR,EAAE;;QAsDhB;;;;WAIG;qBAFQ,MAAM,IAAI;QAOrB;;;;WAIG;0BAFe,EAAE,KAAK,IAAI;QAO7B;;;;WAIG;uCAFoB,IAAI;QAO3B;;;;WAIG;uCAFoB,IAAI;QAO3B,0BAA0B;;;EAU3B;;0BAlIY,QAAQ,GAAG,MAAM,GAAG,OAAO"} +} +declare module '@mathieuc/tradingview/src/quote/session' { + function _exports(client: import('@mathieuc/tradingview/src/client').ClientBridge): { + new (options?: { + /** + * Asked quote fields + */ + fields?: 'all' | 'price'; + /** + * List of asked quote fields + */ + customFields?: quoteField[]; + }): { + "__#3@#sessionID": string; + /** Parent client */ + "__#3@#client": import("@mathieuc/tradingview/src/client").ClientBridge; + /** @type {SymbolListeners} */ + "__#3@#symbolListeners": SymbolListeners; + /** @type {QuoteSessionBridge} */ + "__#3@#quoteSession": QuoteSessionBridge; + /** @constructor */ + Market: { + new (symbol: string, session?: string): { + "__#2@#symbolListeners": { + [x: string]: Function[]; + }; + "__#2@#symbol": string; + "__#2@#session": string; + "__#2@#symbolKey": string; + "__#2@#symbolListenerID": number; + "__#2@#lastData": {}; + "__#2@#callbacks": { + loaded: any[]; + data: any[]; + event: any[]; + error: any[]; + }; + "__#2@#handleEvent"(ev: quoteMarketConstructor.MarketEvent, ...data: {}[]): void; + "__#2@#handleError"(...msgs: any[]): void; + onLoaded(cb: () => void): void; + onData(cb: (data: {}) => void): void; + onEvent(cb: (...any: any[]) => void): void; + onError(cb: (...any: any[]) => void): void; + close(): void; + }; + }; + /** Delete the quote session */ + delete(): void; + }; + }; + export = _exports; + export type SymbolListeners = { + [x: string]: Function[]; + }; + export type QuoteSessionBridge = { + sessionID: string; + symbolListeners: SymbolListeners; + send: import('@mathieuc/tradingview/src/client').SendPacket; + }; + /** + * Quote data field + */ + export type quoteField = 'base-currency-logoid' | 'ch' | 'chp' | 'currency-logoid' | 'provider_id' | 'currency_code' | 'current_session' | 'description' | 'exchange' | 'format' | 'fractional' | 'is_tradable' | 'language' | 'local_description' | 'logoid' | 'lp' | 'lp_time' | 'minmov' | 'minmove2' | 'original_name' | 'pricescale' | 'pro_name' | 'short_name' | 'type' | 'update_mode' | 'volume' | 'ask' | 'bid' | 'fundamentals' | 'high_price' | 'low_price' | 'open_price' | 'prev_close_price' | 'rch' | 'rchp' | 'rtc' | 'rtc_time' | 'status' | 'industry' | 'basic_eps_net_income' | 'beta_1_year' | 'market_cap_basic' | 'earnings_per_share_basic_ttm' | 'price_earnings_ttm' | 'sector' | 'dividends_yield' | 'timezone' | 'country_code'; + import quoteMarketConstructor = require("./market"); + //# sourceMappingURL=session.d.ts.map +} +declare module '@mathieuc/tradingview/src/quote/session.d.ts' { + {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../../../../Documents/coding/TradingView-API/src/quote/session.js"],"names":[],"mappings":"AAwDiB,kCAFN,OAAO,WAAW,EAAE,YAAY;;;;;iBAa/B,KAAK,GAAG,OAAO;;;;uBACf,UAAU,EAAE;;;QATtB,oBAAoB;;QAGpB,8BAA8B;iCAAnB,eAAe;QA+C1B,iCAAiC;8BAAtB,kBAAkB;QAO7B,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;QAGnB,+BAA+B;;;EAKhC;;;QAxHoB,MAAM,GAAE,UAAU;;;eAI7B,MAAM;qBACN,eAAe;UACf,OAAO,WAAW,EAAE,UAAU;;;;;yBAI3B,sBAAsB,GAC9B,IAAI,GAAG,KAAK,GAAG,iBAAiB,GAAG,aAAa,GAChD,eAAe,GAAG,iBAAiB,GAAG,aAAa,GACnD,UAAU,GAAG,QAAQ,GAAG,YAAY,GAAG,aAAa,GACpD,UAAU,GAAG,mBAAmB,GAAG,QAAQ,GAAG,IAAI,GAClD,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,eAAe,GACnD,YAAY,GAAG,UAAU,GAAG,YAAY,GAAG,MAAM,GACjD,aAAa,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,cAAc,GACzD,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,kBAAkB,GAC9D,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAC3D,sBAAsB,GAAG,aAAa,GAAG,kBAAkB,GAC3D,8BAA8B,GAAG,oBAAoB,GACrD,QAAQ,GAAG,iBAAiB,GAAG,UAAU,GAAG,cAAc"} +} +declare module '@mathieuc/tradingview/src/types' { + /** + * Market symbol (like: 'BTCEUR' or 'KRAKEN:BTCEUR') + */ + export type MarketSymbol = string; + /** + * (Chart) timezone + */ + export type Timezone = 'Etc/UTC' | 'exchange' | 'Pacific/Honolulu' | 'America/Juneau' | 'America/Los_Angeles' | 'America/Phoenix' | 'America/Vancouver' | 'US/Mountain' | 'America/El_Salvador' | 'America/Bogota' | 'America/Chicago' | 'America/Lima' | 'America/Mexico_City' | 'America/Caracas' | 'America/New_York' | 'America/Toronto' | 'America/Argentina/Buenos_Aires' | 'America/Santiago' | 'America/Sao_Paulo' | 'Atlantic/Reykjavik' | 'Europe/Dublin' | 'Africa/Lagos' | 'Europe/Lisbon' | 'Europe/London' | 'Europe/Amsterdam' | 'Europe/Belgrade' | 'Europe/Berlin' | 'Europe/Brussels' | 'Europe/Copenhagen' | 'Africa/Johannesburg' | 'Africa/Cairo' | 'Europe/Luxembourg' | 'Europe/Madrid' | 'Europe/Malta' | 'Europe/Oslo' | 'Europe/Paris' | 'Europe/Rome' | 'Europe/Stockholm' | 'Europe/Warsaw' | 'Europe/Zurich' | 'Europe/Athens' | 'Asia/Bahrain' | 'Europe/Helsinki' | 'Europe/Istanbul' | 'Asia/Jerusalem' | 'Asia/Kuwait' | 'Europe/Moscow' | 'Asia/Qatar' | 'Europe/Riga' | 'Asia/Riyadh' | 'Europe/Tallinn' | 'Europe/Vilnius' | 'Asia/Tehran' | 'Asia/Dubai' | 'Asia/Muscat' | 'Asia/Ashkhabad' | 'Asia/Kolkata' | 'Asia/Almaty' | 'Asia/Bangkok' | 'Asia/Jakarta' | 'Asia/Ho_Chi_Minh' | 'Asia/Chongqing' | 'Asia/Hong_Kong' | 'Australia/Perth' | 'Asia/Shanghai' | 'Asia/Singapore' | 'Asia/Taipei' | 'Asia/Seoul' | 'Asia/Tokyo' | 'Australia/Brisbane' | 'Australia/Adelaide' | 'Australia/Sydney' | 'Pacific/Norfolk' | 'Pacific/Auckland' | 'Pacific/Fakaofo' | 'Pacific/Chatham'; + export type TimeFrame = '1' | '3' | '5' | '15' | '30' | '45' | '60' | '120' | '180' | '240' | '1D' | '1W' | '1M' | 'D' | 'W' | 'M'; + //# sourceMappingURL=types.d.ts.map +} +declare module '@mathieuc/tradingview/src/types.d.ts' { + {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../Documents/coding/TradingView-API/src/types.js"],"names":[],"mappings":";;;2BACa,MAAM;;;;uBAIN,SAAS,GAAG,UAAU,GAC9B,kBAAkB,GAAG,gBAAgB,GAAG,qBAAqB,GAC7D,iBAAiB,GAAG,mBAAmB,GAAG,aAAa,GACvD,qBAAqB,GAAG,gBAAgB,GAAG,iBAAiB,GAC5D,cAAc,GAAG,qBAAqB,GAAG,iBAAiB,GAC1D,kBAAkB,GAAG,iBAAiB,GAAG,gCAAgC,GACzE,kBAAkB,GAAG,mBAAmB,GAAG,oBAAoB,GAC/D,eAAe,GAAG,cAAc,GAAG,eAAe,GAAG,eAAe,GACpE,kBAAkB,GAAG,iBAAiB,GAAG,eAAe,GACxD,iBAAiB,GAAG,mBAAmB,GAAG,qBAAqB,GAC/D,cAAc,GAAG,mBAAmB,GAAG,eAAe,GAAG,cAAc,GACvE,aAAa,GAAG,cAAc,GAAG,aAAa,GAAG,kBAAkB,GACnE,eAAe,GAAG,eAAe,GAAG,eAAe,GAAG,cAAc,GACpE,iBAAiB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,aAAa,GACxE,eAAe,GAAG,YAAY,GAAG,aAAa,GAAG,aAAa,GAC9D,gBAAgB,GAAG,gBAAgB,GAAG,aAAa,GAAG,YAAY,GAClE,aAAa,GAAG,gBAAgB,GAAG,cAAc,GAAG,aAAa,GACjE,cAAc,GAAG,cAAc,GAAG,kBAAkB,GAAG,gBAAgB,GACvE,gBAAgB,GAAG,iBAAiB,GAAG,eAAe,GAAG,gBAAgB,GACzE,aAAa,GAAG,YAAY,GAAG,YAAY,GAAG,oBAAoB,GAClE,oBAAoB,GAAG,kBAAkB,GAAG,iBAAiB,GAC7D,kBAAkB,GAAG,iBAAiB,GAAG,iBAAiB;wBAIlD,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GACrC,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACnC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG"} +} +declare module '@mathieuc/tradingview/src/utils' { + /** + * Generates a session id + * @function genSessionID + * @param {String} type Session type + * @returns {string} + */ + export function genSessionID(type?: string): string; + //# sourceMappingURL=utils.d.ts.map +} +declare module '@mathieuc/tradingview/src/utils.d.ts' { + {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../Documents/coding/TradingView-API/src/utils.js"],"names":[],"mappings":"AACE;;;;;GAKG;AACH,oDAKC"} +} +declare module '@mathieuc/tradingview' { + import main = require('@mathieuc/tradingview/main'); + export = main; +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index cf3c1c7..95bd7dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mathieuc/tradingview", - "version": "3.4.1", + "version": "3.4.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mathieuc/tradingview", - "version": "3.4.1", + "version": "3.4.2", "license": "ISC", "dependencies": { "axios": "^1.5.0", @@ -20,6 +20,8 @@ "eslint": "^7.25.0", "eslint-config-airbnb-base": "^14.2.1", "eslint-plugin-import": "^2.22.1", + "npm-dts": "^1.3.12", + "typescript": "^5.2.2", "vitest": "^0.31.1" }, "engines": { @@ -90,9 +92,9 @@ } }, "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "peer": true, "bin": { @@ -118,9 +120,9 @@ } }, "node_modules/@babel/eslint-parser/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -161,9 +163,9 @@ } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "peer": true, "bin": { @@ -530,6 +532,26 @@ "node": ">=6.9.0" } }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "dev": true, + "dependencies": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, "node_modules/@esbuild/android-arm": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", @@ -1004,6 +1026,12 @@ "integrity": "sha512-DqJociPbZP1lbZ5SQPk4oag6W7AyaGMO6gSfRwq3PWl4PXTwJpRQJhDq4W0kzrg3w6tJ1SwlvGZ5uKFHY13LIg==", "dev": true }, + "node_modules/@types/triple-beam": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.3.tgz", + "integrity": "sha512-6tOUG+nVHn0cJbVp25JFayS5UE6+xlbcNF9Lo9mU7U0zk3zeUShZied4YEQZjy1JBF043FSkdXw8YkUJuVtB5g==", + "dev": true + }, "node_modules/@vitest/expect": { "version": "0.31.1", "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.31.1.tgz", @@ -1199,6 +1227,92 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/args": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/args/-/args-5.0.3.tgz", + "integrity": "sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA==", + "dev": true, + "dependencies": { + "camelcase": "5.0.0", + "chalk": "2.4.2", + "leven": "2.1.0", + "mri": "1.1.4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/args/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/args/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/args/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/args/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/args/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/args/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/args/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/array-includes": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", @@ -1253,6 +1367,12 @@ "node": ">=8" } }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -1295,8 +1415,6 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -1359,6 +1477,15 @@ "node": ">=6" } }, + "node_modules/camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001263", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001263.tgz", @@ -1413,6 +1540,16 @@ "node": "*" } }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1431,6 +1568,41 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dev": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dev": true, + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -1442,6 +1614,12 @@ "node": ">= 0.8" } }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1569,6 +1747,15 @@ "node": ">=0.4.0" } }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -1606,6 +1793,12 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", + "dev": true + }, "node_modules/enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -2053,6 +2246,18 @@ "node": ">=0.10.0" } }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -2106,6 +2311,12 @@ "reusify": "^1.0.4" } }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "dev": true + }, "node_modules/fflate": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.7.4.tgz", @@ -2131,8 +2342,6 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -2140,6 +2349,16 @@ "node": ">=8" } }, + "node_modules/find-node-modules": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.1.3.tgz", + "integrity": "sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==", + "dev": true, + "dependencies": { + "findup-sync": "^4.0.0", + "merge": "^2.1.1" + } + }, "node_modules/find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -2152,6 +2371,21 @@ "node": ">=4" } }, + "node_modules/findup-sync": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", + "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^4.0.2", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -2171,6 +2405,12 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", + "dev": true + }, "node_modules/follow-redirects": { "version": "1.15.2", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", @@ -2246,9 +2486,9 @@ } }, "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "engines": { "node": "*" @@ -2300,6 +2540,48 @@ "node": ">= 6" } }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/globals": { "version": "13.10.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz", @@ -2363,6 +2645,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -2423,6 +2717,12 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -2536,8 +2836,6 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "optional": true, - "peer": true, "engines": { "node": ">=0.12.0" } @@ -2570,6 +2868,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-string": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", @@ -2597,6 +2907,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -2696,6 +3015,21 @@ "set-immediate-shim": "~1.0.1" } }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", + "dev": true + }, + "node_modules/leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -2781,6 +3115,20 @@ "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, + "node_modules/logform": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz", + "integrity": "sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==", + "dev": true, + "dependencies": { + "@colors/colors": "1.5.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + } + }, "node_modules/loupe": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", @@ -2826,6 +3174,12 @@ "node": ">=8" } }, + "node_modules/merge": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", + "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", + "dev": true + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -2842,8 +3196,6 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -2889,6 +3241,18 @@ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/mlly": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.2.1.tgz", @@ -2913,6 +3277,15 @@ "node": ">=0.4.0" } }, + "node_modules/mri": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz", + "integrity": "sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/mrmime": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", @@ -2981,27 +3354,119 @@ } }, "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" } }, - "node_modules/object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "node_modules/npm-dts": { + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/npm-dts/-/npm-dts-1.3.12.tgz", + "integrity": "sha512-3pFsz7Gf1u0cyQE2czXt8Y0hKe6kczHxlFbVrr74xWweNUit2tCDbOcL4n6KaWxyimGNJ4gzOa8KkShFA8hrdA==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "args": "5.0.3", + "find-node-modules": "2.1.3", + "mkdirp": "1.0.4", + "npm-run": "5.0.1", + "rimraf": "3.0.2", + "tmp": "0.2.1", + "winston": "3.7.2" + }, + "bin": { + "npm-dts": "cli.js" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "node_modules/npm-path": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz", + "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", + "dev": true, + "dependencies": { + "which": "^1.2.10" + }, + "bin": { + "npm-path": "bin/npm-path" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm-path/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/npm-run": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npm-run/-/npm-run-5.0.1.tgz", + "integrity": "sha512-s7FyRpHUgaJfzkRgOnevX8rAWWsv1dofY1XS7hliWCF6LSQh+HtDfBvpigPS1krLvXw+Fi17CYMY8mUtblnyWw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0", + "npm-path": "^2.0.4", + "npm-which": "^3.0.1", + "serializerr": "^1.0.3" + }, + "bin": { + "npm-run": "bin/npm-run.js" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/npm-which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", + "integrity": "sha512-CM8vMpeFQ7MAPin0U3wzDhSGV0hMHNwHU0wjo402IVizPDrs45jSfSuoC+wThevY88LQti8VvaAnqYAeVy3I1A==", + "dev": true, + "dependencies": { + "commander": "^2.9.0", + "npm-path": "^2.0.2", + "which": "^1.2.10" + }, + "bin": { + "npm-which": "bin/npm-which.js" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/npm-which/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, "engines": { "node": ">= 0.4" @@ -3065,6 +3530,15 @@ "wrappy": "1" } }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dev": true, + "dependencies": { + "fn.name": "1.x.x" + } + }, "node_modules/optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -3145,6 +3619,15 @@ "node": ">=4" } }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -3216,8 +3699,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "optional": true, - "peer": true, "engines": { "node": ">=8.6" }, @@ -3270,9 +3751,9 @@ } }, "node_modules/postcss": { - "version": "8.4.29", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", - "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, "funding": [ { @@ -3346,6 +3827,12 @@ "node": ">=0.4.0" } }, + "node_modules/protochain": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/protochain/-/protochain-1.0.5.tgz", + "integrity": "sha512-4hDwFSX50C4NE6f/6zg8EPr/WLPTkFPUtG0ulWZu6bwzV2hmb50fpdQLr0HiKBAUehapaFpItzWoCLjraLJhUA==", + "dev": true + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -3463,6 +3950,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -3545,10 +4045,19 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -3560,6 +4069,15 @@ "node": ">=10" } }, + "node_modules/serializerr": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/serializerr/-/serializerr-1.0.3.tgz", + "integrity": "sha512-yXUlHj0fjbndhACj2XWtIH5eJv7b/uadyl7CJA8b9wL5mIKm+g0/sL7rDzEmjC+k5y8ggcaP8i049F4FxA0U9Q==", + "dev": true, + "dependencies": { + "protochain": "^1.0.5" + } + }, "node_modules/set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", @@ -3595,6 +4113,21 @@ "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", "dev": true }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + }, "node_modules/sirv": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz", @@ -3685,6 +4218,15 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", @@ -3853,6 +4395,12 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "dev": true + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -3892,6 +4440,18 @@ "node": ">=14.0.0" } }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -3907,8 +4467,6 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "is-number": "^7.0.0" }, @@ -3927,6 +4485,15 @@ "node": ">=6" } }, + "node_modules/triple-beam": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "dev": true, + "engines": { + "node": ">= 14.0.0" + } + }, "node_modules/tsconfig-paths": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.10.1.tgz", @@ -3971,6 +4538,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/ufo": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.1.2.tgz", @@ -4246,10 +4826,73 @@ "node": ">=8" } }, + "node_modules/winston": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.7.2.tgz", + "integrity": "sha512-QziIqtojHBoyzUOdQvQiar1DH0Xp9nF1A1y7NVy2DGEsz82SBDtOalS0ulTRGVT14xPX3WRWkCsdcJKqNflKng==", + "dev": true, + "dependencies": { + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "dev": true, + "dependencies": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 6.4.0" + } + }, + "node_modules/winston-transport/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/winston/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -4352,9 +4995,9 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "peer": true } @@ -4372,9 +5015,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -4405,9 +5048,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "peer": true } @@ -4698,6 +5341,23 @@ "to-fast-properties": "^2.0.0" } }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true + }, + "@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "dev": true, + "requires": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, "@esbuild/android-arm": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", @@ -4959,6 +5619,12 @@ "integrity": "sha512-DqJociPbZP1lbZ5SQPk4oag6W7AyaGMO6gSfRwq3PWl4PXTwJpRQJhDq4W0kzrg3w6tJ1SwlvGZ5uKFHY13LIg==", "dev": true }, + "@types/triple-beam": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.3.tgz", + "integrity": "sha512-6tOUG+nVHn0cJbVp25JFayS5UE6+xlbcNF9Lo9mU7U0zk3zeUShZied4YEQZjy1JBF043FSkdXw8YkUJuVtB5g==", + "dev": true + }, "@vitest/expect": { "version": "0.31.1", "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.31.1.tgz", @@ -5102,6 +5768,76 @@ "sprintf-js": "~1.0.2" } }, + "args": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/args/-/args-5.0.3.tgz", + "integrity": "sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA==", + "dev": true, + "requires": { + "camelcase": "5.0.0", + "chalk": "2.4.2", + "leven": "2.1.0", + "mri": "1.1.4" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "array-includes": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", @@ -5138,6 +5874,12 @@ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -5180,8 +5922,6 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "optional": true, - "peer": true, "requires": { "fill-range": "^7.0.1" } @@ -5222,6 +5962,12 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "dev": true + }, "caniuse-lite": { "version": "1.0.30001263", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001263.tgz", @@ -5260,6 +6006,33 @@ "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", "dev": true }, + "color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dev": true, + "requires": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + }, + "dependencies": { + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + } + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -5275,6 +6048,26 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dev": true, + "requires": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -5283,6 +6076,12 @@ "delayed-stream": "~1.0.0" } }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -5384,6 +6183,12 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -5412,6 +6217,12 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", + "dev": true + }, "enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -5768,6 +6579,15 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -5818,6 +6638,12 @@ "reusify": "^1.0.4" } }, + "fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "dev": true + }, "fflate": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.7.4.tgz", @@ -5840,12 +6666,20 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "optional": true, - "peer": true, "requires": { "to-regex-range": "^5.0.1" } }, + "find-node-modules": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.1.3.tgz", + "integrity": "sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==", + "dev": true, + "requires": { + "findup-sync": "^4.0.0", + "merge": "^2.1.1" + } + }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -5855,6 +6689,18 @@ "locate-path": "^2.0.0" } }, + "findup-sync": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", + "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^4.0.2", + "resolve-dir": "^1.0.1" + } + }, "flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -5871,6 +6717,12 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, + "fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", + "dev": true + }, "follow-redirects": { "version": "1.15.2", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", @@ -5919,9 +6771,9 @@ "peer": true }, "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true }, "get-intrinsic": { @@ -5958,6 +6810,41 @@ "is-glob": "^4.0.1" } }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "globals": { "version": "13.10.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz", @@ -6000,6 +6887,15 @@ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, "hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -6048,6 +6944,12 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -6121,9 +7023,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "is-number-object": { "version": "1.0.5", @@ -6141,6 +7041,12 @@ "has-symbols": "^1.0.2" } }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, "is-string": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", @@ -6156,6 +7062,12 @@ "has-symbols": "^1.0.2" } }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -6237,6 +7149,18 @@ "set-immediate-shim": "~1.0.1" } }, + "kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", + "dev": true + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==", + "dev": true + }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -6307,6 +7231,20 @@ "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, + "logform": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz", + "integrity": "sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + } + }, "loupe": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", @@ -6343,6 +7281,12 @@ "blueimp-md5": "^2.10.0" } }, + "merge": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", + "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", + "dev": true + }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -6356,8 +7300,6 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, - "optional": true, - "peer": true, "requires": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -6391,6 +7333,12 @@ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, "mlly": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.2.1.tgz", @@ -6411,6 +7359,12 @@ } } }, + "mri": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz", + "integrity": "sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==", + "dev": true + }, "mrmime": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", @@ -6464,13 +7418,82 @@ }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } }, + "npm-dts": { + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/npm-dts/-/npm-dts-1.3.12.tgz", + "integrity": "sha512-3pFsz7Gf1u0cyQE2czXt8Y0hKe6kczHxlFbVrr74xWweNUit2tCDbOcL4n6KaWxyimGNJ4gzOa8KkShFA8hrdA==", + "dev": true, + "requires": { + "args": "5.0.3", + "find-node-modules": "2.1.3", + "mkdirp": "1.0.4", + "npm-run": "5.0.1", + "rimraf": "3.0.2", + "tmp": "0.2.1", + "winston": "3.7.2" + } + }, + "npm-path": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz", + "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", + "dev": true, + "requires": { + "which": "^1.2.10" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "npm-run": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npm-run/-/npm-run-5.0.1.tgz", + "integrity": "sha512-s7FyRpHUgaJfzkRgOnevX8rAWWsv1dofY1XS7hliWCF6LSQh+HtDfBvpigPS1krLvXw+Fi17CYMY8mUtblnyWw==", + "dev": true, + "requires": { + "minimist": "^1.2.0", + "npm-path": "^2.0.4", + "npm-which": "^3.0.1", + "serializerr": "^1.0.3" + } + }, + "npm-which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", + "integrity": "sha512-CM8vMpeFQ7MAPin0U3wzDhSGV0hMHNwHU0wjo402IVizPDrs45jSfSuoC+wThevY88LQti8VvaAnqYAeVy3I1A==", + "dev": true, + "requires": { + "commander": "^2.9.0", + "npm-path": "^2.0.2", + "which": "^1.2.10" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "object-inspect": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", @@ -6526,6 +7549,15 @@ "wrappy": "1" } }, + "one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dev": true, + "requires": { + "fn.name": "1.x.x" + } + }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -6588,6 +7620,12 @@ "json-parse-better-errors": "^1.0.1" } }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true + }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -6643,9 +7681,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "pify": { "version": "3.0.0", @@ -6683,9 +7719,9 @@ } }, "postcss": { - "version": "8.4.29", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", - "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, "requires": { "nanoid": "^3.3.6", @@ -6729,6 +7765,12 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "protochain": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/protochain/-/protochain-1.0.5.tgz", + "integrity": "sha512-4hDwFSX50C4NE6f/6zg8EPr/WLPTkFPUtG0ulWZu6bwzV2hmb50fpdQLr0HiKBAUehapaFpItzWoCLjraLJhUA==", + "dev": true + }, "proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -6811,6 +7853,16 @@ "path-parse": "^1.0.6" } }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -6859,15 +7911,30 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "dev": true + }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" } }, + "serializerr": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/serializerr/-/serializerr-1.0.3.tgz", + "integrity": "sha512-yXUlHj0fjbndhACj2XWtIH5eJv7b/uadyl7CJA8b9wL5mIKm+g0/sL7rDzEmjC+k5y8ggcaP8i049F4FxA0U9Q==", + "dev": true, + "requires": { + "protochain": "^1.0.5" + } + }, "set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", @@ -6894,6 +7961,23 @@ "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", "dev": true }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, "sirv": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz", @@ -6969,6 +8053,12 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dev": true + }, "stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", @@ -7101,6 +8191,12 @@ } } }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "dev": true + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -7131,6 +8227,15 @@ "integrity": "sha512-7eORpyqImoOvkQJCSkL0d0mB4NHHIFAy4b1u8PHdDa7SjGS2njzl6/lyGoZLm+eyYEtlUmFGE0rFj66SWxZgQQ==", "dev": true }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -7143,8 +8248,6 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "optional": true, - "peer": true, "requires": { "is-number": "^7.0.0" } @@ -7157,6 +8260,12 @@ "optional": true, "peer": true }, + "triple-beam": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "dev": true + }, "tsconfig-paths": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.10.1.tgz", @@ -7189,6 +8298,12 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, + "typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true + }, "ufo": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.1.2.tgz", @@ -7342,10 +8457,65 @@ "stackback": "0.0.2" } }, + "winston": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.7.2.tgz", + "integrity": "sha512-QziIqtojHBoyzUOdQvQiar1DH0Xp9nF1A1y7NVy2DGEsz82SBDtOalS0ulTRGVT14xPX3WRWkCsdcJKqNflKng==", + "dev": true, + "requires": { + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "dev": true, + "requires": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true }, "wrappy": { diff --git a/package.json b/package.json index 75ae3bc..ba415f1 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "Tradingview instant stocks API, indicator alerts, trading bot, and more !", "main": "main.js", "scripts": { - "test": "vitest" + "test": "vitest", + "dts": "npx npm-dts -e main.js generate" }, "repository": { "type": "git", @@ -37,6 +38,8 @@ "eslint": "^7.25.0", "eslint-config-airbnb-base": "^14.2.1", "eslint-plugin-import": "^2.22.1", + "npm-dts": "^1.3.12", + "typescript": "^5.2.2", "vitest": "^0.31.1" } } diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..630f576 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,21 @@ +{ + // Change this to match your project + "include": ["./main.js"], + "compilerOptions": { + // Tells TypeScript to read JS files, as + // normally they are ignored as source files + "allowJs": true, + // Generate d.ts files + "declaration": true, + // This compiler run should + // only output d.ts files + "emitDeclarationOnly": true, + // Types should go into this directory. + // Removing this would place the .d.ts files + // next to the .js files + "outDir": "dist", + // go to js file when using IDE functions like + // "Go to Definition" in VSCode + "declarationMap": true + } + } \ No newline at end of file