@tma.js/init-data 0.2.20 → 0.2.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.iife.js +1 -1
- package/dist/index.iife.js.map +1 -1
- package/dist/index.mjs +46 -46
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
- package/src/chat.ts +1 -1
- package/src/initData.ts +1 -1
- package/src/serialize.ts +4 -4
- package/src/user.ts +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@tma.js/parsing");function _(){return t.json({id:t.number(),type:t.string(),title:t.string(),photoUrl:{type:t.string().optional(),from:"photo_url"},username:t.string().optional()})}function f(){return t.json({addedToAttachmentMenu:{type:t.boolean().optional(),from:"added_to_attachment_menu"},allowsWriteToPm:{type:t.boolean().optional(),from:"allows_write_to_pm"},firstName:{type:t.string(),from:"first_name"},id:t.number(),isBot:{type:t.boolean().optional(),from:"is_bot"},isPremium:{type:t.boolean().optional(),from:"is_premium"},languageCode:{type:t.string().optional(),from:"language_code"},lastName:{type:t.string().optional(),from:"last_name"},photoUrl:{type:t.string().optional(),from:"photo_url"},username:t.string().optional()})}function g(){return t.searchParams({authDate:{type:t.date(),from:"auth_date"},canSendAfter:{type:t.number().optional(),from:"can_send_after"},chat:_().optional(),chatInstance:{type:t.string().optional(),from:"chat_instance"},chatType:{type:t.string().optional(),from:"chat_type"},hash:t.string(),queryId:{type:t.string().optional(),from:"query_id"},receiver:f().optional(),startParam:{type:t.string().optional(),from:"start_param"},user:f().optional()})}function S(
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@tma.js/parsing");function _(){return t.json({id:t.number(),type:t.string(),title:t.string(),photoUrl:{type:t.string().optional(),from:"photo_url"},username:t.string().optional()},"Chat")}function f(){return t.json({addedToAttachmentMenu:{type:t.boolean().optional(),from:"added_to_attachment_menu"},allowsWriteToPm:{type:t.boolean().optional(),from:"allows_write_to_pm"},firstName:{type:t.string(),from:"first_name"},id:t.number(),isBot:{type:t.boolean().optional(),from:"is_bot"},isPremium:{type:t.boolean().optional(),from:"is_premium"},languageCode:{type:t.string().optional(),from:"language_code"},lastName:{type:t.string().optional(),from:"last_name"},photoUrl:{type:t.string().optional(),from:"photo_url"},username:t.string().optional()},"User")}function g(){return t.searchParams({authDate:{type:t.date(),from:"auth_date"},canSendAfter:{type:t.number().optional(),from:"can_send_after"},chat:_().optional(),chatInstance:{type:t.string().optional(),from:"chat_instance"},chatType:{type:t.string().optional(),from:"chat_type"},hash:t.string(),queryId:{type:t.string().optional(),from:"query_id"},receiver:f().optional(),startParam:{type:t.string().optional(),from:"start_param"},user:f().optional()},"InitData")}function S(a){return g().parse(a)}function n(a,o,r){r!==void 0&&a.set(o,r)}function h(a,o,r){if(r===void 0)return;const{photoUrl:i,firstName:s,lastName:p,isPremium:m,languageCode:u,isBot:l,...c}=r;a.set(o,JSON.stringify({...c,photo_url:i,first_name:s,last_name:p,is_premium:m,language_code:u,is_bot:l}))}function P(a){const{authDate:o,canSendAfter:r,chat:i,chatInstance:s,chatType:p,hash:m,queryId:u,receiver:l,startParam:c,user:y}=a,e=new URLSearchParams;if(e.set("auth_date",(o.getTime()/1e3).toString()),n(e,"chat_instance",s),n(e,"chat_type",p),n(e,"hash",m),n(e,"query_id",u),h(e,"receiver",l),n(e,"start_param",c),h(e,"user",y),i){const{photoUrl:d,...b}=i;e.set("chat",JSON.stringify({...b,photo_url:d}))}return r&&e.set("can_send_after",r.toString()),e.toString()}exports.chat=_;exports.initData=g;exports.parse=S;exports.serialize=P;exports.user=f;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/chat.ts","../src/user.ts","../src/initData.ts","../src/parse.ts","../src/serialize.ts"],"sourcesContent":["import { json, number, string } from '@tma.js/parsing';\n\n/**\n * Returns parser used to parse chat data.\n */\nexport function chat() {\n return json({\n id: number(),\n type: string(),\n title: string(),\n photoUrl: {\n type: string().optional(),\n from: 'photo_url',\n },\n username: string().optional(),\n });\n}\n","import { json, string, boolean, number } from '@tma.js/parsing';\n\nimport type { User } from './types.js';\n\n/**\n * Returns parser used to parse user data.\n */\nexport function user() {\n return json<User>({\n addedToAttachmentMenu: {\n type: boolean().optional(),\n from: 'added_to_attachment_menu',\n },\n allowsWriteToPm: {\n type: boolean().optional(),\n from: 'allows_write_to_pm',\n },\n firstName: {\n type: string(),\n from: 'first_name',\n },\n id: number(),\n isBot: {\n type: boolean().optional(),\n from: 'is_bot',\n },\n isPremium: {\n type: boolean().optional(),\n from: 'is_premium',\n },\n languageCode: {\n type: string().optional(),\n from: 'language_code',\n },\n lastName: {\n type: string().optional(),\n from: 'last_name',\n },\n photoUrl: {\n type: string().optional(),\n from: 'photo_url',\n },\n username: string().optional(),\n });\n}\n","import { string, number, date, searchParams } from '@tma.js/parsing';\n\nimport { user } from './user.js';\nimport { chat } from './chat.js';\nimport type { InitData } from './types.js';\n\n/**\n * Returns parser used to parse init data, presented as search params.\n */\nexport function initData() {\n return searchParams<InitData>({\n authDate: {\n type: date(),\n from: 'auth_date',\n },\n canSendAfter: {\n type: number().optional(),\n from: 'can_send_after',\n },\n chat: chat().optional(),\n chatInstance: {\n type: string().optional(),\n from: 'chat_instance',\n },\n chatType: {\n type: string().optional(),\n from: 'chat_type',\n },\n hash: string(),\n queryId: {\n type: string().optional(),\n from: 'query_id',\n },\n receiver: user().optional(),\n startParam: {\n type: string().optional(),\n from: 'start_param',\n },\n user: user().optional(),\n });\n}\n","import { initData } from './initData.js';\nimport type { InitData } from './types.js';\n\n/**\n * Parses incoming value as init data.\n * @param value - value to parse.\n */\nexport function parse(value: unknown): InitData {\n return initData().parse(value);\n}\n","import type { InitData, User } from './types.js';\n\nfunction setString(params: URLSearchParams, key: string, value: string | undefined) {\n if (value === undefined) {\n return;\n }\n params.set(key, value);\n}\n\nfunction setUser(params: URLSearchParams, key: string, value: User | undefined) {\n if (value === undefined) {\n return;\n }\n const {\n photoUrl,\n firstName,\n lastName,\n isPremium,\n languageCode,\n isBot,\n ...rest\n } = value;\n\n params.set(key, JSON.stringify({\n ...rest,\n photo_url: photoUrl,\n first_name: firstName,\n last_name: lastName,\n is_premium: isPremium,\n language_code: languageCode,\n is_bot: isBot,\n }));\n}\n\n/**\n * Converts init data to its initial representation.\n * @param value - init data.\n */\nexport function serialize(value: InitData): string {\n const {\n
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/chat.ts","../src/user.ts","../src/initData.ts","../src/parse.ts","../src/serialize.ts"],"sourcesContent":["import { json, number, string } from '@tma.js/parsing';\n\n/**\n * Returns parser used to parse chat data.\n */\nexport function chat() {\n return json({\n id: number(),\n type: string(),\n title: string(),\n photoUrl: {\n type: string().optional(),\n from: 'photo_url',\n },\n username: string().optional(),\n }, 'Chat');\n}\n","import { json, string, boolean, number } from '@tma.js/parsing';\n\nimport type { User } from './types.js';\n\n/**\n * Returns parser used to parse user data.\n */\nexport function user() {\n return json<User>({\n addedToAttachmentMenu: {\n type: boolean().optional(),\n from: 'added_to_attachment_menu',\n },\n allowsWriteToPm: {\n type: boolean().optional(),\n from: 'allows_write_to_pm',\n },\n firstName: {\n type: string(),\n from: 'first_name',\n },\n id: number(),\n isBot: {\n type: boolean().optional(),\n from: 'is_bot',\n },\n isPremium: {\n type: boolean().optional(),\n from: 'is_premium',\n },\n languageCode: {\n type: string().optional(),\n from: 'language_code',\n },\n lastName: {\n type: string().optional(),\n from: 'last_name',\n },\n photoUrl: {\n type: string().optional(),\n from: 'photo_url',\n },\n username: string().optional(),\n }, 'User');\n}\n","import { string, number, date, searchParams } from '@tma.js/parsing';\n\nimport { user } from './user.js';\nimport { chat } from './chat.js';\nimport type { InitData } from './types.js';\n\n/**\n * Returns parser used to parse init data, presented as search params.\n */\nexport function initData() {\n return searchParams<InitData>({\n authDate: {\n type: date(),\n from: 'auth_date',\n },\n canSendAfter: {\n type: number().optional(),\n from: 'can_send_after',\n },\n chat: chat().optional(),\n chatInstance: {\n type: string().optional(),\n from: 'chat_instance',\n },\n chatType: {\n type: string().optional(),\n from: 'chat_type',\n },\n hash: string(),\n queryId: {\n type: string().optional(),\n from: 'query_id',\n },\n receiver: user().optional(),\n startParam: {\n type: string().optional(),\n from: 'start_param',\n },\n user: user().optional(),\n }, 'InitData');\n}\n","import { initData } from './initData.js';\nimport type { InitData } from './types.js';\n\n/**\n * Parses incoming value as init data.\n * @param value - value to parse.\n */\nexport function parse(value: unknown): InitData {\n return initData().parse(value);\n}\n","import type { InitData, User } from './types.js';\n\nfunction setString(params: URLSearchParams, key: string, value: string | undefined) {\n if (value === undefined) {\n return;\n }\n params.set(key, value);\n}\n\nfunction setUser(params: URLSearchParams, key: string, value: User | undefined) {\n if (value === undefined) {\n return;\n }\n const {\n photoUrl,\n firstName,\n lastName,\n isPremium,\n languageCode,\n isBot,\n ...rest\n } = value;\n\n params.set(key, JSON.stringify({\n ...rest,\n photo_url: photoUrl,\n first_name: firstName,\n last_name: lastName,\n is_premium: isPremium,\n language_code: languageCode,\n is_bot: isBot,\n }));\n}\n\n/**\n * Converts init data to its initial representation.\n * @param value - init data.\n */\nexport function serialize(value: InitData): string {\n const {\n authDate,\n canSendAfter,\n chat,\n chatInstance,\n chatType,\n hash,\n queryId,\n receiver,\n startParam,\n user,\n } = value;\n\n const params = new URLSearchParams();\n\n params.set('auth_date', (authDate.getTime() / 1000).toString());\n setString(params, 'chat_instance', chatInstance);\n setString(params, 'chat_type', chatType);\n setString(params, 'hash', hash);\n setString(params, 'query_id', queryId);\n setUser(params, 'receiver', receiver);\n setString(params, 'start_param', startParam);\n setUser(params, 'user', user);\n\n if (chat) {\n const { photoUrl, ...rest } = chat;\n params.set('chat', JSON.stringify({\n ...rest,\n photo_url: photoUrl,\n }));\n }\n\n if (canSendAfter) {\n params.set('can_send_after', canSendAfter.toString());\n }\n\n return params.toString();\n}\n"],"names":["chat","json","number","string","user","boolean","initData","searchParams","date","parse","value","setString","params","key","setUser","photoUrl","firstName","lastName","isPremium","languageCode","isBot","rest","serialize","authDate","canSendAfter","chatInstance","chatType","hash","queryId","receiver","startParam"],"mappings":"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"}
|
package/dist/index.iife.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
this.tmajs=this.tmajs||{};this.tmajs.initData=function(
|
|
1
|
+
this.tmajs=this.tmajs||{};this.tmajs.initData=function(p){"use strict";var D=Object.defineProperty,j=(e,t,r)=>t in e?D(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,T=(e,t,r)=>(j(e,typeof t!="symbol"?t+"":t,r),r);class m extends Error{constructor(t,{cause:r,type:n}={}){super(`Unable to parse value${n?` as ${n}`:""}`,{cause:r}),T(this,"type"),this.value=t,Object.setPrototypeOf(this,m.prototype),this.type=n}}class w{constructor(t,r,n){this.parser=t,this.isOptional=r,this.type=n}parse(t){if(!(this.isOptional&&t===void 0))try{return this.parser(t)}catch(r){throw new m(t,{type:this.type,cause:r})}}optional(){return this.isOptional=!0,this}}function l(){return new TypeError("Value has unexpected type")}function d(e,t){return()=>new w(e,!1,t)}const _=d(e=>{if(typeof e=="boolean")return e;const t=String(e);if(t==="1"||t==="true")return!0;if(t==="0"||t==="false")return!1;throw l()},"boolean"),g=d(e=>{if(typeof e=="number")return e;if(typeof e=="string"){const t=Number(e);if(!Number.isNaN(t))return t}throw l()},"number"),A=g(),I=d(e=>e instanceof Date?e:new Date(A.parse(e)*1e3),"Date");class b extends Error{constructor(t,{cause:r,type:n}={}){super(`Unable to parse field "${t}"${n?` as ${n}`:""}`,{cause:r}),Object.setPrototypeOf(this,b.prototype)}}function v(e,t){const r={};for(const n in e){const o=e[n];if(!o)continue;let s,c;if(typeof o=="function"||"parse"in o)s=n,c=typeof o=="function"?o:o.parse.bind(o);else{const{type:i}=o;s=o.from||n,c=typeof i=="function"?i:i.parse.bind(i)}let f;const y=t(s);try{f=c(y)}catch(i){throw i instanceof m?new b(s,{type:i.type,cause:i}):new b(s,{cause:i})}f!==void 0&&(r[n]=f)}return r}function $(e){let t=e;if(typeof t=="string"&&(t=JSON.parse(t)),typeof t!="object"||t===null||Array.isArray(t))throw l();return t}function N(e,t){return new w(r=>{const n=$(r);return v(e,o=>n[o])},!1,t)}const a=d(e=>{if(typeof e=="string"||typeof e=="number")return e.toString();throw l()},"string");a();function q(e,t){return new w(r=>{if(typeof r!="string"&&!(r instanceof URLSearchParams))throw l();const n=typeof r=="string"?new URLSearchParams(r):r;return v(e,o=>{const s=n.get(o);return s===null?void 0:s})},!1,t)}function O(){return N({id:g(),type:a(),title:a(),photoUrl:{type:a().optional(),from:"photo_url"},username:a().optional()},"Chat")}function S(){return N({addedToAttachmentMenu:{type:_().optional(),from:"added_to_attachment_menu"},allowsWriteToPm:{type:_().optional(),from:"allows_write_to_pm"},firstName:{type:a(),from:"first_name"},id:g(),isBot:{type:_().optional(),from:"is_bot"},isPremium:{type:_().optional(),from:"is_premium"},languageCode:{type:a().optional(),from:"language_code"},lastName:{type:a().optional(),from:"last_name"},photoUrl:{type:a().optional(),from:"photo_url"},username:a().optional()},"User")}function P(){return q({authDate:{type:I(),from:"auth_date"},canSendAfter:{type:g().optional(),from:"can_send_after"},chat:O().optional(),chatInstance:{type:a().optional(),from:"chat_instance"},chatType:{type:a().optional(),from:"chat_type"},hash:a(),queryId:{type:a().optional(),from:"query_id"},receiver:S().optional(),startParam:{type:a().optional(),from:"start_param"},user:S().optional()},"InitData")}function R(e){return P().parse(e)}function h(e,t,r){r!==void 0&&e.set(t,r)}function U(e,t,r){if(r===void 0)return;const{photoUrl:n,firstName:o,lastName:s,isPremium:c,languageCode:f,isBot:y,...i}=r;e.set(t,JSON.stringify({...i,photo_url:n,first_name:o,last_name:s,is_premium:c,language_code:f,is_bot:y}))}function C(e){const{authDate:t,canSendAfter:r,chat:n,chatInstance:o,chatType:s,hash:c,queryId:f,receiver:y,startParam:i,user:E}=e,u=new URLSearchParams;if(u.set("auth_date",(t.getTime()/1e3).toString()),h(u,"chat_instance",o),h(u,"chat_type",s),h(u,"hash",c),h(u,"query_id",f),U(u,"receiver",y),h(u,"start_param",i),U(u,"user",E),n){const{photoUrl:J,...L}=n;u.set("chat",JSON.stringify({...L,photo_url:J}))}return r&&u.set("can_send_after",r.toString()),u.toString()}return p.chat=O,p.initData=P,p.parse=R,p.serialize=C,p.user=S,Object.defineProperty(p,Symbol.toStringTag,{value:"Module"}),p}({});
|
|
2
2
|
//# sourceMappingURL=index.iife.js.map
|
package/dist/index.iife.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.iife.js","sources":["../../parsing/dist/index.mjs","../src/chat.ts","../src/user.ts","../src/initData.ts","../src/parse.ts","../src/serialize.ts"],"sourcesContent":["var g = Object.defineProperty;\nvar l = (r, t, e) => t in r ? g(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e;\nvar d = (r, t, e) => (l(r, typeof t != \"symbol\" ? t + \"\" : t, e), e);\nimport { toRGB as A } from \"@tma.js/colors\";\nclass i extends Error {\n constructor(t, { type: e, error: o, field: n } = {}) {\n super(`Unable to parse ${n ? `field \"${n}\"` : \"value\"} as ${e}`, {\n cause: { value: t, error: o }\n }), Object.setPrototypeOf(this, i.prototype);\n }\n}\nclass u {\n constructor(t, e, o) {\n this.parser = t, this.isOptional = e, this.isEmpty = o;\n }\n parse(t) {\n return this.isOptional && this.isEmpty(t) ? void 0 : this.parser(t);\n }\n optional() {\n return this.isOptional = !0, this;\n }\n}\nfunction E(r) {\n if (Array.isArray(r))\n return r;\n if (typeof r == \"string\")\n try {\n const t = JSON.parse(r);\n if (Array.isArray(t))\n return t;\n } catch {\n }\n throw new i(r, { type: \"array\" });\n}\nclass S extends u {\n constructor(e, o, n) {\n super(E, o, n);\n d(this, \"itemParser\");\n this.itemParser = typeof e == \"function\" ? e : e.parse.bind(e);\n }\n parse(e) {\n const o = super.parse(e);\n return o === void 0 ? o : o.map(this.itemParser);\n }\n of(e) {\n return this.itemParser = typeof e == \"function\" ? e : e.parse.bind(e), this;\n }\n}\nfunction h(r) {\n return r === void 0;\n}\nfunction D() {\n return new S((r) => r, !1, h);\n}\nfunction f() {\n return new TypeError(\"Does not have any of expected types\");\n}\nfunction y(r, { isEmpty: t = h } = {}) {\n return function({ isEmpty: o = t } = {}) {\n return new u(r, !1, o);\n };\n}\nfunction b(r, t, e) {\n const o = {};\n for (const n in r) {\n const s = r[n];\n if (!s)\n continue;\n let a, c;\n if (\"type\" in s) {\n const { type: p } = s;\n a = s.from || n, c = typeof p == \"function\" ? p : p.parse.bind(p);\n } else\n a = n, c = typeof s == \"function\" ? s : s.parse.bind(s);\n let w;\n const m = t(a);\n try {\n w = c(m);\n } catch (p) {\n throw new i(m, {\n field: a,\n type: e,\n error: p\n });\n }\n w !== void 0 && (o[n] = w);\n }\n return o;\n}\nconst G = y((r) => {\n if (typeof r == \"boolean\")\n return r;\n const t = String(r);\n if (t === \"1\" || t === \"true\")\n return !0;\n if (t === \"0\" || t === \"false\")\n return !1;\n throw new i(r, { type: \"boolean\", error: f() });\n}), O = y((r) => {\n if (typeof r == \"number\")\n return r;\n if (typeof r == \"string\") {\n const t = Number(r);\n if (!Number.isNaN(t))\n return t;\n }\n throw new i(r, { type: \"number\", error: f() });\n}), V = O(), R = y((r) => {\n if (r instanceof Date)\n return r;\n try {\n return new Date(V.parse(r) * 1e3);\n } catch (t) {\n throw new i(r, { type: \"Date\", error: t });\n }\n});\nfunction U(r, t = {}) {\n const {\n type: e,\n isEmpty: o = h\n } = t;\n return new u((n) => {\n let s = n;\n if (typeof s == \"string\")\n try {\n s = JSON.parse(s);\n } catch (a) {\n throw new i(n, { type: e, error: a });\n }\n if (typeof s != \"object\" || s === null || Array.isArray(s))\n throw new i(n, { type: e, error: f() });\n return b(r, (a) => s[a]);\n }, !1, o);\n}\nconst N = y((r) => {\n if (typeof r == \"string\" || typeof r == \"number\")\n return r.toString();\n throw new i(r, { type: \"string\", error: f() });\n}), P = N(), B = y((r) => {\n try {\n return A(P.parse(r));\n } catch (t) {\n throw new i(r, { type: \"RGB\", error: t });\n }\n});\nfunction $(r, t = {}) {\n const {\n type: e,\n isEmpty: o = h\n } = t;\n return new u((n) => {\n if (typeof n != \"string\" && !(n instanceof URLSearchParams))\n throw new i(n, { type: e, error: f() });\n const s = typeof n == \"string\" ? new URLSearchParams(n) : n;\n return b(r, (a) => {\n const c = s.get(a);\n return c === null ? void 0 : c;\n });\n }, !1, o);\n}\nexport {\n S as ArrayValueParser,\n i as ParsingError,\n u as ValueParser,\n D as array,\n G as boolean,\n y as createValueParserGen,\n R as date,\n U as json,\n O as number,\n B as rgb,\n $ as searchParams,\n N as string\n};\n//# sourceMappingURL=index.mjs.map\n","import { json, number, string } from '@tma.js/parsing';\n\n/**\n * Returns parser used to parse chat data.\n */\nexport function chat() {\n return json({\n id: number(),\n type: string(),\n title: string(),\n photoUrl: {\n type: string().optional(),\n from: 'photo_url',\n },\n username: string().optional(),\n });\n}\n","import { json, string, boolean, number } from '@tma.js/parsing';\n\nimport type { User } from './types.js';\n\n/**\n * Returns parser used to parse user data.\n */\nexport function user() {\n return json<User>({\n addedToAttachmentMenu: {\n type: boolean().optional(),\n from: 'added_to_attachment_menu',\n },\n allowsWriteToPm: {\n type: boolean().optional(),\n from: 'allows_write_to_pm',\n },\n firstName: {\n type: string(),\n from: 'first_name',\n },\n id: number(),\n isBot: {\n type: boolean().optional(),\n from: 'is_bot',\n },\n isPremium: {\n type: boolean().optional(),\n from: 'is_premium',\n },\n languageCode: {\n type: string().optional(),\n from: 'language_code',\n },\n lastName: {\n type: string().optional(),\n from: 'last_name',\n },\n photoUrl: {\n type: string().optional(),\n from: 'photo_url',\n },\n username: string().optional(),\n });\n}\n","import { string, number, date, searchParams } from '@tma.js/parsing';\n\nimport { user } from './user.js';\nimport { chat } from './chat.js';\nimport type { InitData } from './types.js';\n\n/**\n * Returns parser used to parse init data, presented as search params.\n */\nexport function initData() {\n return searchParams<InitData>({\n authDate: {\n type: date(),\n from: 'auth_date',\n },\n canSendAfter: {\n type: number().optional(),\n from: 'can_send_after',\n },\n chat: chat().optional(),\n chatInstance: {\n type: string().optional(),\n from: 'chat_instance',\n },\n chatType: {\n type: string().optional(),\n from: 'chat_type',\n },\n hash: string(),\n queryId: {\n type: string().optional(),\n from: 'query_id',\n },\n receiver: user().optional(),\n startParam: {\n type: string().optional(),\n from: 'start_param',\n },\n user: user().optional(),\n });\n}\n","import { initData } from './initData.js';\nimport type { InitData } from './types.js';\n\n/**\n * Parses incoming value as init data.\n * @param value - value to parse.\n */\nexport function parse(value: unknown): InitData {\n return initData().parse(value);\n}\n","import type { InitData, User } from './types.js';\n\nfunction setString(params: URLSearchParams, key: string, value: string | undefined) {\n if (value === undefined) {\n return;\n }\n params.set(key, value);\n}\n\nfunction setUser(params: URLSearchParams, key: string, value: User | undefined) {\n if (value === undefined) {\n return;\n }\n const {\n photoUrl,\n firstName,\n lastName,\n isPremium,\n languageCode,\n isBot,\n ...rest\n } = value;\n\n params.set(key, JSON.stringify({\n ...rest,\n photo_url: photoUrl,\n first_name: firstName,\n last_name: lastName,\n is_premium: isPremium,\n language_code: languageCode,\n is_bot: isBot,\n }));\n}\n\n/**\n * Converts init data to its initial representation.\n * @param value - init data.\n */\nexport function serialize(value: InitData): string {\n const {\n chat,\n chatType,\n chatInstance,\n hash,\n user,\n queryId,\n receiver,\n startParam,\n canSendAfter,\n authDate,\n } = value;\n\n const params = new URLSearchParams();\n\n params.set('auth_date', (authDate.getTime() / 1000).toString());\n setString(params, 'chat_instance', chatInstance);\n setString(params, 'chat_type', chatType);\n setString(params, 'hash', hash);\n setString(params, 'query_id', queryId);\n setUser(params, 'receiver', receiver);\n setString(params, 'start_param', startParam);\n setUser(params, 'user', user);\n\n if (chat) {\n const { photoUrl, ...rest } = chat;\n params.set('chat', JSON.stringify({\n ...rest,\n photo_url: photoUrl,\n }));\n }\n\n if (canSendAfter) {\n params.set('can_send_after', canSendAfter.toString());\n }\n\n return params.toString();\n}\n"],"names":["i","t","e","o","n","u","h","r","f","y","b","s","a","p","w","G","O","V","R","U","N","$","chat","json","number","string","user","boolean","initData","searchParams","date","parse","value","setString","params","key","setUser","photoUrl","firstName","lastName","isPremium","languageCode","isBot","rest","serialize","chatType","chatInstance","hash","queryId","receiver","startParam","canSendAfter","authDate"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.iife.js","sources":["../../parsing/dist/index.mjs","../src/chat.ts","../src/user.ts","../src/initData.ts","../src/parse.ts","../src/serialize.ts"],"sourcesContent":["var w = Object.defineProperty;\nvar m = (t, r, e) => r in t ? w(t, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[r] = e;\nvar l = (t, r, e) => (m(t, typeof r != \"symbol\" ? r + \"\" : r, e), e);\nimport { toRGB as g } from \"@tma.js/colors\";\nclass p extends Error {\n constructor(e, { cause: n, type: o } = {}) {\n super(`Unable to parse value${o ? ` as ${o}` : \"\"}`, { cause: n });\n /**\n * Parser name.\n */\n l(this, \"type\");\n this.value = e, Object.setPrototypeOf(this, p.prototype), this.type = o;\n }\n}\nclass u {\n constructor(r, e, n) {\n this.parser = r, this.isOptional = e, this.type = n;\n }\n parse(r) {\n if (!(this.isOptional && r === void 0))\n try {\n return this.parser(r);\n } catch (e) {\n throw new p(r, { type: this.type, cause: e });\n }\n }\n optional() {\n return this.isOptional = !0, this;\n }\n}\nfunction a() {\n return new TypeError(\"Value has unexpected type\");\n}\nfunction O(t) {\n if (Array.isArray(t))\n return t;\n if (typeof t == \"string\")\n try {\n const r = JSON.parse(t);\n if (Array.isArray(r))\n return r;\n } catch {\n }\n throw a();\n}\nclass A extends u {\n constructor(e, n, o) {\n super(O, n, o);\n l(this, \"itemParser\");\n this.itemParser = typeof e == \"function\" ? e : e.parse.bind(e);\n }\n parse(e) {\n const n = super.parse(e);\n return n === void 0 ? n : n.map(this.itemParser);\n }\n of(e) {\n return this.itemParser = typeof e == \"function\" ? e : e.parse.bind(e), this;\n }\n}\nfunction E(t) {\n return new A((r) => r, !1, t);\n}\nfunction c(t, r) {\n return () => new u(t, !1, r);\n}\nconst R = c((t) => {\n if (typeof t == \"boolean\")\n return t;\n const r = String(t);\n if (r === \"1\" || r === \"true\")\n return !0;\n if (r === \"0\" || r === \"false\")\n return !1;\n throw a();\n}, \"boolean\"), S = c((t) => {\n if (typeof t == \"number\")\n return t;\n if (typeof t == \"string\") {\n const r = Number(t);\n if (!Number.isNaN(r))\n return r;\n }\n throw a();\n}, \"number\"), V = S(), U = c((t) => t instanceof Date ? t : new Date(V.parse(t) * 1e3), \"Date\");\nclass f extends Error {\n constructor(r, { cause: e, type: n } = {}) {\n super(`Unable to parse field \"${r}\"${n ? ` as ${n}` : \"\"}`, { cause: e }), Object.setPrototypeOf(this, f.prototype);\n }\n}\nfunction d(t, r) {\n const e = {};\n for (const n in t) {\n const o = t[n];\n if (!o)\n continue;\n let i, y;\n if (typeof o == \"function\" || \"parse\" in o)\n i = n, y = typeof o == \"function\" ? o : o.parse.bind(o);\n else {\n const { type: s } = o;\n i = o.from || n, y = typeof s == \"function\" ? s : s.parse.bind(s);\n }\n let h;\n const b = r(i);\n try {\n h = y(b);\n } catch (s) {\n throw s instanceof p ? new f(i, {\n type: s.type,\n cause: s\n }) : new f(i, { cause: s });\n }\n h !== void 0 && (e[n] = h);\n }\n return e;\n}\nfunction x(t) {\n let r = t;\n if (typeof r == \"string\" && (r = JSON.parse(r)), typeof r != \"object\" || r === null || Array.isArray(r))\n throw a();\n return r;\n}\nfunction D(t, r) {\n return new u((e) => {\n const n = x(e);\n return d(t, (o) => n[o]);\n }, !1, r);\n}\nconst N = c((t) => {\n if (typeof t == \"string\" || typeof t == \"number\")\n return t.toString();\n throw a();\n}, \"string\"), P = N(), B = c((t) => g(P.parse(t)), \"rgb\");\nfunction G(t, r) {\n return new u((e) => {\n if (typeof e != \"string\" && !(e instanceof URLSearchParams))\n throw a();\n const n = typeof e == \"string\" ? new URLSearchParams(e) : e;\n return d(t, (o) => {\n const i = n.get(o);\n return i === null ? void 0 : i;\n });\n }, !1, r);\n}\nexport {\n A as ArrayValueParser,\n p as ParseError,\n f as ParseSchemaFieldError,\n u as ValueParser,\n E as array,\n R as boolean,\n c as createValueParserGenerator,\n U as date,\n D as json,\n S as number,\n d as parseBySchema,\n B as rgb,\n G as searchParams,\n N as string,\n x as toRecord,\n a as unexpectedTypeError\n};\n//# sourceMappingURL=index.mjs.map\n","import { json, number, string } from '@tma.js/parsing';\n\n/**\n * Returns parser used to parse chat data.\n */\nexport function chat() {\n return json({\n id: number(),\n type: string(),\n title: string(),\n photoUrl: {\n type: string().optional(),\n from: 'photo_url',\n },\n username: string().optional(),\n }, 'Chat');\n}\n","import { json, string, boolean, number } from '@tma.js/parsing';\n\nimport type { User } from './types.js';\n\n/**\n * Returns parser used to parse user data.\n */\nexport function user() {\n return json<User>({\n addedToAttachmentMenu: {\n type: boolean().optional(),\n from: 'added_to_attachment_menu',\n },\n allowsWriteToPm: {\n type: boolean().optional(),\n from: 'allows_write_to_pm',\n },\n firstName: {\n type: string(),\n from: 'first_name',\n },\n id: number(),\n isBot: {\n type: boolean().optional(),\n from: 'is_bot',\n },\n isPremium: {\n type: boolean().optional(),\n from: 'is_premium',\n },\n languageCode: {\n type: string().optional(),\n from: 'language_code',\n },\n lastName: {\n type: string().optional(),\n from: 'last_name',\n },\n photoUrl: {\n type: string().optional(),\n from: 'photo_url',\n },\n username: string().optional(),\n }, 'User');\n}\n","import { string, number, date, searchParams } from '@tma.js/parsing';\n\nimport { user } from './user.js';\nimport { chat } from './chat.js';\nimport type { InitData } from './types.js';\n\n/**\n * Returns parser used to parse init data, presented as search params.\n */\nexport function initData() {\n return searchParams<InitData>({\n authDate: {\n type: date(),\n from: 'auth_date',\n },\n canSendAfter: {\n type: number().optional(),\n from: 'can_send_after',\n },\n chat: chat().optional(),\n chatInstance: {\n type: string().optional(),\n from: 'chat_instance',\n },\n chatType: {\n type: string().optional(),\n from: 'chat_type',\n },\n hash: string(),\n queryId: {\n type: string().optional(),\n from: 'query_id',\n },\n receiver: user().optional(),\n startParam: {\n type: string().optional(),\n from: 'start_param',\n },\n user: user().optional(),\n }, 'InitData');\n}\n","import { initData } from './initData.js';\nimport type { InitData } from './types.js';\n\n/**\n * Parses incoming value as init data.\n * @param value - value to parse.\n */\nexport function parse(value: unknown): InitData {\n return initData().parse(value);\n}\n","import type { InitData, User } from './types.js';\n\nfunction setString(params: URLSearchParams, key: string, value: string | undefined) {\n if (value === undefined) {\n return;\n }\n params.set(key, value);\n}\n\nfunction setUser(params: URLSearchParams, key: string, value: User | undefined) {\n if (value === undefined) {\n return;\n }\n const {\n photoUrl,\n firstName,\n lastName,\n isPremium,\n languageCode,\n isBot,\n ...rest\n } = value;\n\n params.set(key, JSON.stringify({\n ...rest,\n photo_url: photoUrl,\n first_name: firstName,\n last_name: lastName,\n is_premium: isPremium,\n language_code: languageCode,\n is_bot: isBot,\n }));\n}\n\n/**\n * Converts init data to its initial representation.\n * @param value - init data.\n */\nexport function serialize(value: InitData): string {\n const {\n authDate,\n canSendAfter,\n chat,\n chatInstance,\n chatType,\n hash,\n queryId,\n receiver,\n startParam,\n user,\n } = value;\n\n const params = new URLSearchParams();\n\n params.set('auth_date', (authDate.getTime() / 1000).toString());\n setString(params, 'chat_instance', chatInstance);\n setString(params, 'chat_type', chatType);\n setString(params, 'hash', hash);\n setString(params, 'query_id', queryId);\n setUser(params, 'receiver', receiver);\n setString(params, 'start_param', startParam);\n setUser(params, 'user', user);\n\n if (chat) {\n const { photoUrl, ...rest } = chat;\n params.set('chat', JSON.stringify({\n ...rest,\n photo_url: photoUrl,\n }));\n }\n\n if (canSendAfter) {\n params.set('can_send_after', canSendAfter.toString());\n }\n\n return params.toString();\n}\n"],"names":["w","m","t","r","e","l","p","n","o","u","a","c","R","S","V","U","f","d","i","y","s","h","b","x","D","N","G","chat","json","number","string","user","boolean","initData","searchParams","date","parse","value","setString","params","key","setUser","photoUrl","firstName","lastName","isPremium","languageCode","isBot","rest","serialize","authDate","canSendAfter","chatInstance","chatType","hash","queryId","receiver","startParam"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { json as d, number as h, string as t, boolean as s, searchParams as
|
|
2
|
-
function
|
|
1
|
+
import { json as d, number as h, string as t, boolean as s, searchParams as U, date as N } from "@tma.js/parsing";
|
|
2
|
+
function I() {
|
|
3
3
|
return d({
|
|
4
4
|
id: h(),
|
|
5
5
|
type: t(),
|
|
@@ -9,7 +9,7 @@ function T() {
|
|
|
9
9
|
from: "photo_url"
|
|
10
10
|
},
|
|
11
11
|
username: t().optional()
|
|
12
|
-
});
|
|
12
|
+
}, "Chat");
|
|
13
13
|
}
|
|
14
14
|
function _() {
|
|
15
15
|
return d({
|
|
@@ -47,19 +47,19 @@ function _() {
|
|
|
47
47
|
from: "photo_url"
|
|
48
48
|
},
|
|
49
49
|
username: t().optional()
|
|
50
|
-
});
|
|
50
|
+
}, "User");
|
|
51
51
|
}
|
|
52
|
-
function
|
|
53
|
-
return
|
|
52
|
+
function T() {
|
|
53
|
+
return U({
|
|
54
54
|
authDate: {
|
|
55
|
-
type:
|
|
55
|
+
type: N(),
|
|
56
56
|
from: "auth_date"
|
|
57
57
|
},
|
|
58
58
|
canSendAfter: {
|
|
59
59
|
type: h().optional(),
|
|
60
60
|
from: "can_send_after"
|
|
61
61
|
},
|
|
62
|
-
chat:
|
|
62
|
+
chat: I().optional(),
|
|
63
63
|
chatInstance: {
|
|
64
64
|
type: t().optional(),
|
|
65
65
|
from: "chat_instance"
|
|
@@ -79,63 +79,63 @@ function b() {
|
|
|
79
79
|
from: "start_param"
|
|
80
80
|
},
|
|
81
81
|
user: _().optional()
|
|
82
|
-
});
|
|
82
|
+
}, "InitData");
|
|
83
83
|
}
|
|
84
|
-
function
|
|
85
|
-
return
|
|
84
|
+
function q(o) {
|
|
85
|
+
return T().parse(o);
|
|
86
86
|
}
|
|
87
|
-
function n(
|
|
88
|
-
|
|
87
|
+
function n(o, r, a) {
|
|
88
|
+
a !== void 0 && o.set(r, a);
|
|
89
89
|
}
|
|
90
|
-
function y(
|
|
91
|
-
if (
|
|
90
|
+
function y(o, r, a) {
|
|
91
|
+
if (a === void 0)
|
|
92
92
|
return;
|
|
93
93
|
const {
|
|
94
|
-
photoUrl:
|
|
95
|
-
firstName:
|
|
96
|
-
lastName:
|
|
97
|
-
isPremium:
|
|
98
|
-
languageCode:
|
|
99
|
-
isBot:
|
|
100
|
-
...
|
|
101
|
-
} =
|
|
102
|
-
|
|
103
|
-
...
|
|
104
|
-
photo_url:
|
|
105
|
-
first_name:
|
|
106
|
-
last_name:
|
|
107
|
-
is_premium:
|
|
108
|
-
language_code:
|
|
109
|
-
is_bot:
|
|
94
|
+
photoUrl: i,
|
|
95
|
+
firstName: p,
|
|
96
|
+
lastName: m,
|
|
97
|
+
isPremium: u,
|
|
98
|
+
languageCode: c,
|
|
99
|
+
isBot: l,
|
|
100
|
+
...f
|
|
101
|
+
} = a;
|
|
102
|
+
o.set(r, JSON.stringify({
|
|
103
|
+
...f,
|
|
104
|
+
photo_url: i,
|
|
105
|
+
first_name: p,
|
|
106
|
+
last_name: m,
|
|
107
|
+
is_premium: u,
|
|
108
|
+
language_code: c,
|
|
109
|
+
is_bot: l
|
|
110
110
|
}));
|
|
111
111
|
}
|
|
112
|
-
function
|
|
112
|
+
function w(o) {
|
|
113
113
|
const {
|
|
114
|
-
|
|
115
|
-
|
|
114
|
+
authDate: r,
|
|
115
|
+
canSendAfter: a,
|
|
116
|
+
chat: i,
|
|
116
117
|
chatInstance: p,
|
|
117
|
-
|
|
118
|
-
|
|
118
|
+
chatType: m,
|
|
119
|
+
hash: u,
|
|
119
120
|
queryId: c,
|
|
120
121
|
receiver: l,
|
|
121
122
|
startParam: f,
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
const { photoUrl: S, ...P } = r;
|
|
123
|
+
user: g
|
|
124
|
+
} = o, e = new URLSearchParams();
|
|
125
|
+
if (e.set("auth_date", (r.getTime() / 1e3).toString()), n(e, "chat_instance", p), n(e, "chat_type", m), n(e, "hash", u), n(e, "query_id", c), y(e, "receiver", l), n(e, "start_param", f), y(e, "user", g), i) {
|
|
126
|
+
const { photoUrl: S, ...P } = i;
|
|
127
127
|
e.set("chat", JSON.stringify({
|
|
128
128
|
...P,
|
|
129
129
|
photo_url: S
|
|
130
130
|
}));
|
|
131
131
|
}
|
|
132
|
-
return
|
|
132
|
+
return a && e.set("can_send_after", a.toString()), e.toString();
|
|
133
133
|
}
|
|
134
134
|
export {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
135
|
+
I as chat,
|
|
136
|
+
T as initData,
|
|
137
|
+
q as parse,
|
|
138
|
+
w as serialize,
|
|
139
139
|
_ as user
|
|
140
140
|
};
|
|
141
141
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/chat.ts","../src/user.ts","../src/initData.ts","../src/parse.ts","../src/serialize.ts"],"sourcesContent":["import { json, number, string } from '@tma.js/parsing';\n\n/**\n * Returns parser used to parse chat data.\n */\nexport function chat() {\n return json({\n id: number(),\n type: string(),\n title: string(),\n photoUrl: {\n type: string().optional(),\n from: 'photo_url',\n },\n username: string().optional(),\n });\n}\n","import { json, string, boolean, number } from '@tma.js/parsing';\n\nimport type { User } from './types.js';\n\n/**\n * Returns parser used to parse user data.\n */\nexport function user() {\n return json<User>({\n addedToAttachmentMenu: {\n type: boolean().optional(),\n from: 'added_to_attachment_menu',\n },\n allowsWriteToPm: {\n type: boolean().optional(),\n from: 'allows_write_to_pm',\n },\n firstName: {\n type: string(),\n from: 'first_name',\n },\n id: number(),\n isBot: {\n type: boolean().optional(),\n from: 'is_bot',\n },\n isPremium: {\n type: boolean().optional(),\n from: 'is_premium',\n },\n languageCode: {\n type: string().optional(),\n from: 'language_code',\n },\n lastName: {\n type: string().optional(),\n from: 'last_name',\n },\n photoUrl: {\n type: string().optional(),\n from: 'photo_url',\n },\n username: string().optional(),\n });\n}\n","import { string, number, date, searchParams } from '@tma.js/parsing';\n\nimport { user } from './user.js';\nimport { chat } from './chat.js';\nimport type { InitData } from './types.js';\n\n/**\n * Returns parser used to parse init data, presented as search params.\n */\nexport function initData() {\n return searchParams<InitData>({\n authDate: {\n type: date(),\n from: 'auth_date',\n },\n canSendAfter: {\n type: number().optional(),\n from: 'can_send_after',\n },\n chat: chat().optional(),\n chatInstance: {\n type: string().optional(),\n from: 'chat_instance',\n },\n chatType: {\n type: string().optional(),\n from: 'chat_type',\n },\n hash: string(),\n queryId: {\n type: string().optional(),\n from: 'query_id',\n },\n receiver: user().optional(),\n startParam: {\n type: string().optional(),\n from: 'start_param',\n },\n user: user().optional(),\n });\n}\n","import { initData } from './initData.js';\nimport type { InitData } from './types.js';\n\n/**\n * Parses incoming value as init data.\n * @param value - value to parse.\n */\nexport function parse(value: unknown): InitData {\n return initData().parse(value);\n}\n","import type { InitData, User } from './types.js';\n\nfunction setString(params: URLSearchParams, key: string, value: string | undefined) {\n if (value === undefined) {\n return;\n }\n params.set(key, value);\n}\n\nfunction setUser(params: URLSearchParams, key: string, value: User | undefined) {\n if (value === undefined) {\n return;\n }\n const {\n photoUrl,\n firstName,\n lastName,\n isPremium,\n languageCode,\n isBot,\n ...rest\n } = value;\n\n params.set(key, JSON.stringify({\n ...rest,\n photo_url: photoUrl,\n first_name: firstName,\n last_name: lastName,\n is_premium: isPremium,\n language_code: languageCode,\n is_bot: isBot,\n }));\n}\n\n/**\n * Converts init data to its initial representation.\n * @param value - init data.\n */\nexport function serialize(value: InitData): string {\n const {\n
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/chat.ts","../src/user.ts","../src/initData.ts","../src/parse.ts","../src/serialize.ts"],"sourcesContent":["import { json, number, string } from '@tma.js/parsing';\n\n/**\n * Returns parser used to parse chat data.\n */\nexport function chat() {\n return json({\n id: number(),\n type: string(),\n title: string(),\n photoUrl: {\n type: string().optional(),\n from: 'photo_url',\n },\n username: string().optional(),\n }, 'Chat');\n}\n","import { json, string, boolean, number } from '@tma.js/parsing';\n\nimport type { User } from './types.js';\n\n/**\n * Returns parser used to parse user data.\n */\nexport function user() {\n return json<User>({\n addedToAttachmentMenu: {\n type: boolean().optional(),\n from: 'added_to_attachment_menu',\n },\n allowsWriteToPm: {\n type: boolean().optional(),\n from: 'allows_write_to_pm',\n },\n firstName: {\n type: string(),\n from: 'first_name',\n },\n id: number(),\n isBot: {\n type: boolean().optional(),\n from: 'is_bot',\n },\n isPremium: {\n type: boolean().optional(),\n from: 'is_premium',\n },\n languageCode: {\n type: string().optional(),\n from: 'language_code',\n },\n lastName: {\n type: string().optional(),\n from: 'last_name',\n },\n photoUrl: {\n type: string().optional(),\n from: 'photo_url',\n },\n username: string().optional(),\n }, 'User');\n}\n","import { string, number, date, searchParams } from '@tma.js/parsing';\n\nimport { user } from './user.js';\nimport { chat } from './chat.js';\nimport type { InitData } from './types.js';\n\n/**\n * Returns parser used to parse init data, presented as search params.\n */\nexport function initData() {\n return searchParams<InitData>({\n authDate: {\n type: date(),\n from: 'auth_date',\n },\n canSendAfter: {\n type: number().optional(),\n from: 'can_send_after',\n },\n chat: chat().optional(),\n chatInstance: {\n type: string().optional(),\n from: 'chat_instance',\n },\n chatType: {\n type: string().optional(),\n from: 'chat_type',\n },\n hash: string(),\n queryId: {\n type: string().optional(),\n from: 'query_id',\n },\n receiver: user().optional(),\n startParam: {\n type: string().optional(),\n from: 'start_param',\n },\n user: user().optional(),\n }, 'InitData');\n}\n","import { initData } from './initData.js';\nimport type { InitData } from './types.js';\n\n/**\n * Parses incoming value as init data.\n * @param value - value to parse.\n */\nexport function parse(value: unknown): InitData {\n return initData().parse(value);\n}\n","import type { InitData, User } from './types.js';\n\nfunction setString(params: URLSearchParams, key: string, value: string | undefined) {\n if (value === undefined) {\n return;\n }\n params.set(key, value);\n}\n\nfunction setUser(params: URLSearchParams, key: string, value: User | undefined) {\n if (value === undefined) {\n return;\n }\n const {\n photoUrl,\n firstName,\n lastName,\n isPremium,\n languageCode,\n isBot,\n ...rest\n } = value;\n\n params.set(key, JSON.stringify({\n ...rest,\n photo_url: photoUrl,\n first_name: firstName,\n last_name: lastName,\n is_premium: isPremium,\n language_code: languageCode,\n is_bot: isBot,\n }));\n}\n\n/**\n * Converts init data to its initial representation.\n * @param value - init data.\n */\nexport function serialize(value: InitData): string {\n const {\n authDate,\n canSendAfter,\n chat,\n chatInstance,\n chatType,\n hash,\n queryId,\n receiver,\n startParam,\n user,\n } = value;\n\n const params = new URLSearchParams();\n\n params.set('auth_date', (authDate.getTime() / 1000).toString());\n setString(params, 'chat_instance', chatInstance);\n setString(params, 'chat_type', chatType);\n setString(params, 'hash', hash);\n setString(params, 'query_id', queryId);\n setUser(params, 'receiver', receiver);\n setString(params, 'start_param', startParam);\n setUser(params, 'user', user);\n\n if (chat) {\n const { photoUrl, ...rest } = chat;\n params.set('chat', JSON.stringify({\n ...rest,\n photo_url: photoUrl,\n }));\n }\n\n if (canSendAfter) {\n params.set('can_send_after', canSendAfter.toString());\n }\n\n return params.toString();\n}\n"],"names":["chat","json","number","string","user","boolean","initData","searchParams","date","parse","value","setString","params","key","setUser","photoUrl","firstName","lastName","isPremium","languageCode","isBot","rest","serialize","authDate","canSendAfter","chatInstance","chatType","hash","queryId","receiver","startParam"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tma.js/init-data",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.22",
|
|
4
4
|
"description": "Frontend TypeScript library to make work with Mini Apps init data easier.",
|
|
5
5
|
"author": "Vladislav Kibenko <wolfram.deus@gmail.com>",
|
|
6
6
|
"homepage": "https://github.com/Telegram-Mini-Apps/tma.js#readme",
|
|
@@ -37,12 +37,13 @@
|
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@tma.js/parsing": "0.1
|
|
40
|
+
"@tma.js/parsing": "1.0.1"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"tsconfig": "0.0.2",
|
|
44
44
|
"eslint-config-custom": "0.1.0",
|
|
45
|
-
"build-utils": "0.0.1"
|
|
45
|
+
"build-utils": "0.0.1",
|
|
46
|
+
"test-utils": "0.0.1"
|
|
46
47
|
},
|
|
47
48
|
"publishConfig": {
|
|
48
49
|
"access": "public"
|
|
@@ -53,7 +54,6 @@
|
|
|
53
54
|
"typecheck": "tsc --noEmit -p tsconfig.build.json",
|
|
54
55
|
"build": "pnpm run build:default && pnpm run build:iife",
|
|
55
56
|
"build:default": "vite build --config vite.config.ts",
|
|
56
|
-
"build:iife": "vite build --config vite.iife.config.ts"
|
|
57
|
-
"rollup": "pnpm run typecheck && pnpm run build"
|
|
57
|
+
"build:iife": "vite build --config vite.iife.config.ts"
|
|
58
58
|
}
|
|
59
59
|
}
|
package/src/chat.ts
CHANGED
package/src/initData.ts
CHANGED
package/src/serialize.ts
CHANGED
|
@@ -38,16 +38,16 @@ function setUser(params: URLSearchParams, key: string, value: User | undefined)
|
|
|
38
38
|
*/
|
|
39
39
|
export function serialize(value: InitData): string {
|
|
40
40
|
const {
|
|
41
|
+
authDate,
|
|
42
|
+
canSendAfter,
|
|
41
43
|
chat,
|
|
42
|
-
chatType,
|
|
43
44
|
chatInstance,
|
|
45
|
+
chatType,
|
|
44
46
|
hash,
|
|
45
|
-
user,
|
|
46
47
|
queryId,
|
|
47
48
|
receiver,
|
|
48
49
|
startParam,
|
|
49
|
-
|
|
50
|
-
authDate,
|
|
50
|
+
user,
|
|
51
51
|
} = value;
|
|
52
52
|
|
|
53
53
|
const params = new URLSearchParams();
|
package/src/user.ts
CHANGED