dailyGainers.js•8.6 kB
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = dailyGainers;
const typebox_1 = require("@sinclair/typebox");
const yahooFinanceTypes_js_1 = require("../lib/yahooFinanceTypes.js");
const DailyGainersCriterum = typebox_1.Type.Object({
field: typebox_1.Type.String(),
operators: typebox_1.Type.Array(typebox_1.Type.String()),
values: typebox_1.Type.Array(yahooFinanceTypes_js_1.YahooNumber),
labelsSelected: typebox_1.Type.Array(yahooFinanceTypes_js_1.YahooNumber),
dependentValues: typebox_1.Type.Array(typebox_1.Type.Any()),
}, { title: "DailyGainersCriterium" });
const DailyGainersQuote = typebox_1.Type.Object({
language: typebox_1.Type.String(),
region: typebox_1.Type.String(),
quoteType: typebox_1.Type.String(),
typeDisp: typebox_1.Type.String(),
quoteSourceName: typebox_1.Type.String(),
triggerable: typebox_1.Type.Boolean(),
customPriceAlertConfidence: typebox_1.Type.String(),
lastCloseTevEbitLtm: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
lastClosePriceToNNWCPerShare: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
firstTradeDateMilliseconds: yahooFinanceTypes_js_1.YahooNumber,
priceHint: yahooFinanceTypes_js_1.YahooNumber,
postMarketChangePercent: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
postMarketTime: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
postMarketPrice: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
postMarketChange: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
regularMarketChange: yahooFinanceTypes_js_1.YahooNumber,
regularMarketTime: yahooFinanceTypes_js_1.YahooNumber,
regularMarketPrice: yahooFinanceTypes_js_1.YahooNumber,
regularMarketDayHigh: yahooFinanceTypes_js_1.YahooNumber,
regularMarketDayRange: typebox_1.Type.String(),
currency: typebox_1.Type.String(),
regularMarketDayLow: yahooFinanceTypes_js_1.YahooNumber,
regularMarketVolume: yahooFinanceTypes_js_1.YahooNumber,
regularMarketPreviousClose: yahooFinanceTypes_js_1.YahooNumber,
bid: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
ask: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
bidSize: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
askSize: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
market: typebox_1.Type.String(),
messageBoardId: typebox_1.Type.String(),
fullExchangeName: typebox_1.Type.String(),
longName: typebox_1.Type.String(),
financialCurrency: typebox_1.Type.Optional(typebox_1.Type.String()),
regularMarketOpen: yahooFinanceTypes_js_1.YahooNumber,
averageDailyVolume3Month: yahooFinanceTypes_js_1.YahooNumber,
averageDailyVolume10Day: yahooFinanceTypes_js_1.YahooNumber,
fiftyTwoWeekLowChange: yahooFinanceTypes_js_1.YahooNumber,
fiftyTwoWeekLowChangePercent: yahooFinanceTypes_js_1.YahooNumber,
fiftyTwoWeekRange: typebox_1.Type.String(),
fiftyTwoWeekHighChange: yahooFinanceTypes_js_1.YahooNumber,
fiftyTwoWeekHighChangePercent: yahooFinanceTypes_js_1.YahooNumber,
fiftyTwoWeekChangePercent: yahooFinanceTypes_js_1.YahooNumber,
earningsTimestamp: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
earningsTimestampStart: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
earningsTimestampEnd: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
trailingAnnualDividendRate: yahooFinanceTypes_js_1.YahooNumber,
trailingAnnualDividendYield: yahooFinanceTypes_js_1.YahooNumber,
marketState: typebox_1.Type.String(),
epsTrailingTwelveMonths: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
epsForward: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
epsCurrentYear: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
priceEpsCurrentYear: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
sharesOutstanding: yahooFinanceTypes_js_1.YahooNumber,
bookValue: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
fiftyDayAverage: yahooFinanceTypes_js_1.YahooNumber,
fiftyDayAverageChange: yahooFinanceTypes_js_1.YahooNumber,
fiftyDayAverageChangePercent: yahooFinanceTypes_js_1.YahooNumber,
twoHundredDayAverage: yahooFinanceTypes_js_1.YahooNumber,
twoHundredDayAverageChange: yahooFinanceTypes_js_1.YahooNumber,
twoHundredDayAverageChangePercent: yahooFinanceTypes_js_1.YahooNumber,
marketCap: yahooFinanceTypes_js_1.YahooNumber,
forwardPE: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
priceToBook: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
sourceInterval: yahooFinanceTypes_js_1.YahooNumber,
exchangeDataDelayedBy: yahooFinanceTypes_js_1.YahooNumber,
exchangeTimezoneName: typebox_1.Type.String(),
exchangeTimezoneShortName: typebox_1.Type.String(),
gmtOffSetMilliseconds: yahooFinanceTypes_js_1.YahooNumber,
esgPopulated: typebox_1.Type.Boolean(),
tradeable: typebox_1.Type.Boolean(),
cryptoTradeable: typebox_1.Type.Boolean(),
exchange: typebox_1.Type.String(),
fiftyTwoWeekLow: yahooFinanceTypes_js_1.YahooNumber,
fiftyTwoWeekHigh: yahooFinanceTypes_js_1.YahooNumber,
shortName: typebox_1.Type.String(),
averageAnalystRating: typebox_1.Type.Optional(typebox_1.Type.String()),
regularMarketChangePercent: yahooFinanceTypes_js_1.YahooNumber,
symbol: typebox_1.Type.String(),
dividendDate: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
displayName: typebox_1.Type.Optional(typebox_1.Type.String()),
trailingPE: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
prevName: typebox_1.Type.Optional(typebox_1.Type.String()),
nameChangeDate: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
ipoExpectedDate: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
dividendYield: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
dividendRate: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
}, { title: "DailyGainersQuote" });
const DailyGainersOptionsSchema = typebox_1.Type.Object({
lang: typebox_1.Type.Optional(typebox_1.Type.String()),
region: typebox_1.Type.Optional(typebox_1.Type.String()),
count: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber),
}, { title: "DailyGainersOptions" });
const DailyGainersCriteriaMeta = typebox_1.Type.Object({
size: yahooFinanceTypes_js_1.YahooNumber,
offset: yahooFinanceTypes_js_1.YahooNumber,
sortField: typebox_1.Type.String(),
sortType: typebox_1.Type.String(),
quoteType: typebox_1.Type.String(),
criteria: typebox_1.Type.Array(DailyGainersCriterum),
topOperator: typebox_1.Type.String(),
}, { title: "DailyGainersCriteriaMeta" });
const DailyGainersResultSchema = typebox_1.Type.Object({
id: typebox_1.Type.String(),
title: typebox_1.Type.String(),
description: typebox_1.Type.String(),
canonicalName: typebox_1.Type.String(),
criteriaMeta: DailyGainersCriteriaMeta,
rawCriteria: typebox_1.Type.String(),
start: yahooFinanceTypes_js_1.YahooNumber,
count: yahooFinanceTypes_js_1.YahooNumber,
total: yahooFinanceTypes_js_1.YahooNumber,
quotes: typebox_1.Type.Array(DailyGainersQuote),
useRecords: typebox_1.Type.Boolean(),
predefinedScr: typebox_1.Type.Boolean(),
versionId: yahooFinanceTypes_js_1.YahooNumber,
creationDate: yahooFinanceTypes_js_1.YahooNumber,
lastUpdated: yahooFinanceTypes_js_1.YahooNumber,
isPremium: typebox_1.Type.Boolean(),
iconUrl: typebox_1.Type.String(),
}, { title: "DailyGainersResult" });
const queryOptionsDefaults = {
lang: "en-US",
region: "US",
scrIds: "day_gainers",
count: 5,
};
function dailyGainers(queryOptionsOverrides, moduleOptions) {
return this._moduleExec({
moduleName: "dailyGainers",
query: {
url: "https://${YF_QUERY_HOST}/v1/finance/screener/predefined/saved",
schema: DailyGainersOptionsSchema,
defaults: queryOptionsDefaults,
overrides: queryOptionsOverrides,
needsCrumb: true,
},
result: {
schema: DailyGainersResultSchema,
transformWith(result) {
if (!result.finance)
throw new Error("Unexpected result: " + JSON.stringify(result));
return result.finance.result[0];
},
},
moduleOptions,
});
}