4nm
Version:
TypeScript reimplementation of Telegram's official library for communicating with Telegram Web Apps.
45 lines (44 loc) • 1.96 kB
JavaScript
import { createJSONStructParser, createSearchParamsSchemaParser, parseJSONParamAsInt, parseJSONParamAsOptBool, parseJSONParamAsOptString, parseJSONParamAsString, parseSearchParamAsDate, parseSearchParamAsOptDate, parseSearchParamAsOptString, parseSearchParamAsString, } from '../parsing';
/**
* Returns minimum, default and empty init data information.
*/
export function getEmptyInitData() {
return { authDate: new Date(), hash: '' };
}
/**
* Parses string as User. In case, value is null, returns null.
*/
const parseUser = createJSONStructParser({
id: ['id', parseJSONParamAsInt],
isBot: ['is_bot', parseJSONParamAsOptBool],
firstName: ['first_name', parseJSONParamAsString],
lastName: ['last_name', parseJSONParamAsOptString],
username: ['username', parseJSONParamAsOptString],
languageCode: ['language_code', parseJSONParamAsOptString],
isPremium: ['is_premium', parseJSONParamAsOptBool],
photoUrl: ['photo_url', parseJSONParamAsOptString],
}, true);
/**
* Parses string as Chat. In case, value is null, returns null.
*/
const parseChat = createJSONStructParser({
id: ['id', parseJSONParamAsInt],
title: ['title', parseJSONParamAsString],
type: ['type', parseJSONParamAsString],
username: ['username', parseJSONParamAsOptString],
photoUrl: ['photo_url', parseJSONParamAsOptString],
}, true);
/**
* Extract init data from query string or URLSearchParams.
* @see createSearchParamsSchemaParser
*/
export const extractInitData = createSearchParamsSchemaParser({
queryId: ['query_id', parseSearchParamAsOptString],
user: ['user', parseUser],
receiver: ['receiver', parseUser],
chat: ['chat', parseChat],
startParam: ['start_param', parseSearchParamAsOptString],
canSendAfter: ['can_send_after', parseSearchParamAsOptDate],
authDate: ['auth_date', parseSearchParamAsDate],
hash: ['hash', parseSearchParamAsString],
});