@tma.js/init-data 0.2.20 → 0.2.21
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 +49 -43
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
- package/src/chat.ts +2 -0
- package/src/initData.ts +2 -0
- package/src/serialize.ts +4 -4
- package/src/user.ts +2 -0
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()},{type:"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()},{type:"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()},{type:"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 }, {\n type: 'Chat',\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 type: 'User',\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 type: 'InitData',\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 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(f){"use strict";var E=Object.defineProperty,j=(t,e,r)=>e in t?E(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,T=(t,e,r)=>(j(t,typeof e!="symbol"?e+"":e,r),r);class m extends Error{constructor(e,{cause:r,type:n}={}){super(`Unable to parse value${n?` as ${n}`:""}`,{cause:r}),T(this,"type"),this.value=e,Object.setPrototypeOf(this,m.prototype),this.type=n}}class w{constructor(e,r,n,o){this.parser=e,this.isOptional=r,this.isEmpty=n,this.type=o}parse(e){if(!(this.isOptional&&this.isEmpty(e)))try{return this.parser(e)}catch(r){throw new m(e,{type:this.type,cause:r})}}optional(){return this.isOptional=!0,this}}function y(){return new TypeError("Value has unexpected type")}function S(t){return t===void 0}function d(t,{type:e,isEmpty:r=S}={}){return({isEmpty:n=r}={})=>new w(t,!1,n,e)}const _=d(t=>{if(typeof t=="boolean")return t;const e=String(t);if(e==="1"||e==="true")return!0;if(e==="0"||e==="false")return!1;throw y()},{type:"boolean"}),g=d(t=>{if(typeof t=="number")return t;if(typeof t=="string"){const e=Number(t);if(!Number.isNaN(e))return e}throw y()},{type:"number"}),$=g(),A=d(t=>t instanceof Date?t:new Date($.parse(t)*1e3),{type:"Date"});class b extends Error{constructor(e,{cause:r,type:n}={}){super(`Unable to parse field "${e}"${n?` as ${n}`:""}`,{cause:r}),Object.setPrototypeOf(this,b.prototype)}}function O(t,e){const r={};for(const n in t){const o=t[n];if(!o)continue;let a,p;if(typeof o=="function"||"parse"in o)a=n,p=typeof o=="function"?o:o.parse.bind(o);else{const{type:s}=o;a=o.from||n,p=typeof s=="function"?s:s.parse.bind(s)}let c;const h=e(a);try{c=p(h)}catch(s){throw s instanceof m?new b(a,{type:s.type,cause:s}):new b(a,{cause:s})}c!==void 0&&(r[n]=c)}return r}function P(t,e={}){const{type:r,isEmpty:n=S}=e;return new w(o=>{let a=o;if(typeof a=="string"&&(a=JSON.parse(a)),typeof a!="object"||a===null||Array.isArray(a))throw y();return O(t,p=>a[p])},!1,n,r)}const i=d(t=>{if(typeof t=="string"||typeof t=="number")return t.toString();throw y()},{type:"string"});i();function I(t,e={}){const{type:r,isEmpty:n=S}=e;return new w(o=>{if(typeof o!="string"&&!(o instanceof URLSearchParams))throw y();const a=typeof o=="string"?new URLSearchParams(o):o;return O(t,p=>{const c=a.get(p);return c===null?void 0:c})},!1,n,r)}function N(){return P({id:g(),type:i(),title:i(),photoUrl:{type:i().optional(),from:"photo_url"},username:i().optional()},{type:"Chat"})}function v(){return P({addedToAttachmentMenu:{type:_().optional(),from:"added_to_attachment_menu"},allowsWriteToPm:{type:_().optional(),from:"allows_write_to_pm"},firstName:{type:i(),from:"first_name"},id:g(),isBot:{type:_().optional(),from:"is_bot"},isPremium:{type:_().optional(),from:"is_premium"},languageCode:{type:i().optional(),from:"language_code"},lastName:{type:i().optional(),from:"last_name"},photoUrl:{type:i().optional(),from:"photo_url"},username:i().optional()},{type:"User"})}function U(){return I({authDate:{type:A(),from:"auth_date"},canSendAfter:{type:g().optional(),from:"can_send_after"},chat:N().optional(),chatInstance:{type:i().optional(),from:"chat_instance"},chatType:{type:i().optional(),from:"chat_type"},hash:i(),queryId:{type:i().optional(),from:"query_id"},receiver:v().optional(),startParam:{type:i().optional(),from:"start_param"},user:v().optional()},{type:"InitData"})}function q(t){return U().parse(t)}function l(t,e,r){r!==void 0&&t.set(e,r)}function D(t,e,r){if(r===void 0)return;const{photoUrl:n,firstName:o,lastName:a,isPremium:p,languageCode:c,isBot:h,...s}=r;t.set(e,JSON.stringify({...s,photo_url:n,first_name:o,last_name:a,is_premium:p,language_code:c,is_bot:h}))}function R(t){const{authDate:e,canSendAfter:r,chat:n,chatInstance:o,chatType:a,hash:p,queryId:c,receiver:h,startParam:s,user:C}=t,u=new URLSearchParams;if(u.set("auth_date",(e.getTime()/1e3).toString()),l(u,"chat_instance",o),l(u,"chat_type",a),l(u,"hash",p),l(u,"query_id",c),D(u,"receiver",h),l(u,"start_param",s),D(u,"user",C),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 f.chat=N,f.initData=U,f.parse=q,f.serialize=R,f.user=v,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"}),f}({});
|
|
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 g = (t, r, e) => r in t ? w(t, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[r] = e;\nvar d = (t, r, e) => (g(t, typeof r != \"symbol\" ? r + \"\" : r, e), e);\nimport { toRGB as E } from \"@tma.js/colors\";\nclass y extends Error {\n constructor(e, { cause: s, type: n } = {}) {\n super(`Unable to parse value${n ? ` as ${n}` : \"\"}`, { cause: s });\n /**\n * Parser name.\n */\n d(this, \"type\");\n this.value = e, Object.setPrototypeOf(this, y.prototype), this.type = n;\n }\n}\nclass h {\n constructor(r, e, s, n) {\n this.parser = r, this.isOptional = e, this.isEmpty = s, this.type = n;\n }\n parse(r) {\n if (!(this.isOptional && this.isEmpty(r)))\n try {\n return this.parser(r);\n } catch (e) {\n throw new y(r, { type: this.type, cause: e });\n }\n }\n optional() {\n return this.isOptional = !0, this;\n }\n}\nfunction c() {\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 c();\n}\nclass A extends h {\n constructor(e, s, n, o) {\n super(O, s, n, o);\n d(this, \"itemParser\");\n this.itemParser = typeof e == \"function\" ? e : e.parse.bind(e);\n }\n parse(e) {\n const s = super.parse(e);\n return s === void 0 ? s : s.map(this.itemParser);\n }\n of(e) {\n return this.itemParser = typeof e == \"function\" ? e : e.parse.bind(e), this;\n }\n}\nfunction l(t) {\n return t === void 0;\n}\nfunction U(t) {\n return new A((r) => r, !1, l, t);\n}\nfunction f(t, {\n type: r,\n isEmpty: e = l\n} = {}) {\n return ({ isEmpty: s = e } = {}) => new h(t, !1, s, r);\n}\nconst $ = f((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 c();\n}, {\n type: \"boolean\"\n}), S = f((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 c();\n}, {\n type: \"number\"\n}), V = S(), D = f((t) => t instanceof Date ? t : new Date(V.parse(t) * 1e3), {\n type: \"Date\"\n});\nclass u extends Error {\n constructor(r, { cause: e, type: s } = {}) {\n super(`Unable to parse field \"${r}\"${s ? ` as ${s}` : \"\"}`, { cause: e }), Object.setPrototypeOf(this, u.prototype);\n }\n}\nfunction m(t, r) {\n const e = {};\n for (const s in t) {\n const n = t[s];\n if (!n)\n continue;\n let o, a;\n if (typeof n == \"function\" || \"parse\" in n)\n o = s, a = typeof n == \"function\" ? n : n.parse.bind(n);\n else {\n const { type: i } = n;\n o = n.from || s, a = typeof i == \"function\" ? i : i.parse.bind(i);\n }\n let p;\n const b = r(o);\n try {\n p = a(b);\n } catch (i) {\n throw i instanceof y ? new u(o, {\n type: i.type,\n cause: i\n }) : new u(o, { cause: i });\n }\n p !== void 0 && (e[s] = p);\n }\n return e;\n}\nfunction R(t, r = {}) {\n const {\n type: e,\n isEmpty: s = l\n } = r;\n return new h((n) => {\n let o = n;\n if (typeof o == \"string\" && (o = JSON.parse(o)), typeof o != \"object\" || o === null || Array.isArray(o))\n throw c();\n return m(t, (a) => o[a]);\n }, !1, s, e);\n}\nconst x = f((t) => {\n if (typeof t == \"string\" || typeof t == \"number\")\n return t.toString();\n throw c();\n}, {\n type: \"string\"\n}), N = x(), B = f((t) => E(N.parse(t)), {\n type: \"rgb\"\n});\nfunction G(t, r = {}) {\n const {\n type: e,\n isEmpty: s = l\n } = r;\n return new h((n) => {\n if (typeof n != \"string\" && !(n instanceof URLSearchParams))\n throw c();\n const o = typeof n == \"string\" ? new URLSearchParams(n) : n;\n return m(t, (a) => {\n const p = o.get(a);\n return p === null ? void 0 : p;\n });\n }, !1, s, e);\n}\nexport {\n A as ArrayValueParser,\n u as ParseSchemaFieldError,\n h as ValueParser,\n U as array,\n $ as boolean,\n f as createValueParserGenerator,\n D as date,\n R as json,\n S as number,\n B as rgb,\n G as searchParams,\n x 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 type: 'Chat',\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 type: 'User',\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 type: 'InitData',\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 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","g","r","e","d","y","s","h","n","c","l","f","$","S","V","D","u","m","o","a","i","p","b","R","x","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,6 +9,8 @@ function T() {
|
|
|
9
9
|
from: "photo_url"
|
|
10
10
|
},
|
|
11
11
|
username: t().optional()
|
|
12
|
+
}, {
|
|
13
|
+
type: "Chat"
|
|
12
14
|
});
|
|
13
15
|
}
|
|
14
16
|
function _() {
|
|
@@ -47,19 +49,21 @@ function _() {
|
|
|
47
49
|
from: "photo_url"
|
|
48
50
|
},
|
|
49
51
|
username: t().optional()
|
|
52
|
+
}, {
|
|
53
|
+
type: "User"
|
|
50
54
|
});
|
|
51
55
|
}
|
|
52
|
-
function
|
|
53
|
-
return
|
|
56
|
+
function T() {
|
|
57
|
+
return U({
|
|
54
58
|
authDate: {
|
|
55
|
-
type:
|
|
59
|
+
type: N(),
|
|
56
60
|
from: "auth_date"
|
|
57
61
|
},
|
|
58
62
|
canSendAfter: {
|
|
59
63
|
type: h().optional(),
|
|
60
64
|
from: "can_send_after"
|
|
61
65
|
},
|
|
62
|
-
chat:
|
|
66
|
+
chat: I().optional(),
|
|
63
67
|
chatInstance: {
|
|
64
68
|
type: t().optional(),
|
|
65
69
|
from: "chat_instance"
|
|
@@ -79,63 +83,65 @@ function b() {
|
|
|
79
83
|
from: "start_param"
|
|
80
84
|
},
|
|
81
85
|
user: _().optional()
|
|
86
|
+
}, {
|
|
87
|
+
type: "InitData"
|
|
82
88
|
});
|
|
83
89
|
}
|
|
84
|
-
function
|
|
85
|
-
return
|
|
90
|
+
function q(o) {
|
|
91
|
+
return T().parse(o);
|
|
86
92
|
}
|
|
87
|
-
function n(
|
|
88
|
-
|
|
93
|
+
function n(o, r, a) {
|
|
94
|
+
a !== void 0 && o.set(r, a);
|
|
89
95
|
}
|
|
90
|
-
function y(
|
|
91
|
-
if (
|
|
96
|
+
function y(o, r, a) {
|
|
97
|
+
if (a === void 0)
|
|
92
98
|
return;
|
|
93
99
|
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:
|
|
100
|
+
photoUrl: i,
|
|
101
|
+
firstName: p,
|
|
102
|
+
lastName: m,
|
|
103
|
+
isPremium: u,
|
|
104
|
+
languageCode: c,
|
|
105
|
+
isBot: l,
|
|
106
|
+
...f
|
|
107
|
+
} = a;
|
|
108
|
+
o.set(r, JSON.stringify({
|
|
109
|
+
...f,
|
|
110
|
+
photo_url: i,
|
|
111
|
+
first_name: p,
|
|
112
|
+
last_name: m,
|
|
113
|
+
is_premium: u,
|
|
114
|
+
language_code: c,
|
|
115
|
+
is_bot: l
|
|
110
116
|
}));
|
|
111
117
|
}
|
|
112
|
-
function
|
|
118
|
+
function w(o) {
|
|
113
119
|
const {
|
|
114
|
-
|
|
115
|
-
|
|
120
|
+
authDate: r,
|
|
121
|
+
canSendAfter: a,
|
|
122
|
+
chat: i,
|
|
116
123
|
chatInstance: p,
|
|
117
|
-
|
|
118
|
-
|
|
124
|
+
chatType: m,
|
|
125
|
+
hash: u,
|
|
119
126
|
queryId: c,
|
|
120
127
|
receiver: l,
|
|
121
128
|
startParam: f,
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
const { photoUrl: S, ...P } = r;
|
|
129
|
+
user: g
|
|
130
|
+
} = o, e = new URLSearchParams();
|
|
131
|
+
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) {
|
|
132
|
+
const { photoUrl: S, ...P } = i;
|
|
127
133
|
e.set("chat", JSON.stringify({
|
|
128
134
|
...P,
|
|
129
135
|
photo_url: S
|
|
130
136
|
}));
|
|
131
137
|
}
|
|
132
|
-
return
|
|
138
|
+
return a && e.set("can_send_after", a.toString()), e.toString();
|
|
133
139
|
}
|
|
134
140
|
export {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
141
|
+
I as chat,
|
|
142
|
+
T as initData,
|
|
143
|
+
q as parse,
|
|
144
|
+
w as serialize,
|
|
139
145
|
_ as user
|
|
140
146
|
};
|
|
141
147
|
//# 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 }, {\n type: 'Chat',\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 type: 'User',\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 type: 'InitData',\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 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.21",
|
|
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.
|
|
40
|
+
"@tma.js/parsing": "1.0.0"
|
|
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();
|