@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 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(r){return g().parse(r)}function n(r,o,a){a!==void 0&&r.set(o,a)}function h(r,o,a){if(a===void 0)return;const{photoUrl:s,firstName:p,lastName:m,isPremium:u,languageCode:l,isBot:c,...i}=a;r.set(o,JSON.stringify({...i,photo_url:s,first_name:p,last_name:m,is_premium:u,language_code:l,is_bot:c}))}function P(r){const{chat:o,chatType:a,chatInstance:s,hash:p,user:m,queryId:u,receiver:l,startParam:c,canSendAfter:i,authDate:y}=r,e=new URLSearchParams;if(e.set("auth_date",(y.getTime()/1e3).toString()),n(e,"chat_instance",s),n(e,"chat_type",a),n(e,"hash",p),n(e,"query_id",u),h(e,"receiver",l),n(e,"start_param",c),h(e,"user",m),o){const{photoUrl:d,...b}=o;e.set("chat",JSON.stringify({...b,photo_url:d}))}return i&&e.set("can_send_after",i.toString()),e.toString()}exports.chat=_;exports.initData=g;exports.parse=S;exports.serialize=P;exports.user=f;
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
@@ -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 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":["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.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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"}
@@ -1,2 +1,2 @@
1
- this.tmajs=this.tmajs||{};this.tmajs.initData=function(y){"use strict";class u extends Error{constructor(e,{type:n,error:i,field:r}={}){super(`Unable to parse ${r?`field "${r}"`:"value"} as ${n}`,{cause:{value:e,error:i}}),Object.setPrototypeOf(this,u.prototype)}}class b{constructor(e,n,i){this.parser=e,this.isOptional=n,this.isEmpty=i}parse(e){return this.isOptional&&this.isEmpty(e)?void 0:this.parser(e)}optional(){return this.isOptional=!0,this}}function S(t){return t===void 0}function h(){return new TypeError("Does not have any of expected types")}function _(t,{isEmpty:e=S}={}){return function({isEmpty:n=e}={}){return new b(t,!1,n)}}function v(t,e,n){const i={};for(const r in t){const o=t[r];if(!o)continue;let s,c;if("type"in o){const{type:f}=o;s=o.from||r,c=typeof f=="function"?f:f.parse.bind(f)}else s=r,c=typeof o=="function"?o:o.parse.bind(o);let l;const m=e(s);try{l=c(m)}catch(f){throw new u(m,{field:s,type:n,error:f})}l!==void 0&&(i[r]=l)}return i}const w=_(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 new u(t,{type:"boolean",error:h()})}),g=_(t=>{if(typeof t=="number")return t;if(typeof t=="string"){const e=Number(t);if(!Number.isNaN(e))return e}throw new u(t,{type:"number",error:h()})}),E=g(),T=_(t=>{if(t instanceof Date)return t;try{return new Date(E.parse(t)*1e3)}catch(e){throw new u(t,{type:"Date",error:e})}});function O(t,e={}){const{type:n,isEmpty:i=S}=e;return new b(r=>{let o=r;if(typeof o=="string")try{o=JSON.parse(o)}catch(s){throw new u(r,{type:n,error:s})}if(typeof o!="object"||o===null||Array.isArray(o))throw new u(r,{type:n,error:h()});return v(t,s=>o[s])},!1,i)}const a=_(t=>{if(typeof t=="string"||typeof t=="number")return t.toString();throw new u(t,{type:"string",error:h()})});a();function j(t,e={}){const{type:n,isEmpty:i=S}=e;return new b(r=>{if(typeof r!="string"&&!(r instanceof URLSearchParams))throw new u(r,{type:n,error:h()});const o=typeof r=="string"?new URLSearchParams(r):r;return v(t,s=>{const c=o.get(s);return c===null?void 0:c})},!1,i)}function P(){return O({id:g(),type:a(),title:a(),photoUrl:{type:a().optional(),from:"photo_url"},username:a().optional()})}function N(){return O({addedToAttachmentMenu:{type:w().optional(),from:"added_to_attachment_menu"},allowsWriteToPm:{type:w().optional(),from:"allows_write_to_pm"},firstName:{type:a(),from:"first_name"},id:g(),isBot:{type:w().optional(),from:"is_bot"},isPremium:{type:w().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()})}function U(){return j({authDate:{type:T(),from:"auth_date"},canSendAfter:{type:g().optional(),from:"can_send_after"},chat:P().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:N().optional(),startParam:{type:a().optional(),from:"start_param"},user:N().optional()})}function A(t){return U().parse(t)}function d(t,e,n){n!==void 0&&t.set(e,n)}function D(t,e,n){if(n===void 0)return;const{photoUrl:i,firstName:r,lastName:o,isPremium:s,languageCode:c,isBot:l,...m}=n;t.set(e,JSON.stringify({...m,photo_url:i,first_name:r,last_name:o,is_premium:s,language_code:c,is_bot:l}))}function q(t){const{chat:e,chatType:n,chatInstance:i,hash:r,user:o,queryId:s,receiver:c,startParam:l,canSendAfter:m,authDate:f}=t,p=new URLSearchParams;if(p.set("auth_date",(f.getTime()/1e3).toString()),d(p,"chat_instance",i),d(p,"chat_type",n),d(p,"hash",r),d(p,"query_id",s),D(p,"receiver",c),d(p,"start_param",l),D(p,"user",o),e){const{photoUrl:I,...R}=e;p.set("chat",JSON.stringify({...R,photo_url:I}))}return m&&p.set("can_send_after",m.toString()),p.toString()}return y.chat=P,y.initData=U,y.parse=A,y.serialize=q,y.user=N,Object.defineProperty(y,Symbol.toStringTag,{value:"Module"}),y}({});
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
@@ -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 N, date as U } from "@tma.js/parsing";
2
- function T() {
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 b() {
53
- return N({
56
+ function T() {
57
+ return U({
54
58
  authDate: {
55
- type: U(),
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: T().optional(),
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 w(a) {
85
- return b().parse(a);
90
+ function q(o) {
91
+ return T().parse(o);
86
92
  }
87
- function n(a, r, o) {
88
- o !== void 0 && a.set(r, o);
93
+ function n(o, r, a) {
94
+ a !== void 0 && o.set(r, a);
89
95
  }
90
- function y(a, r, o) {
91
- if (o === void 0)
96
+ function y(o, r, a) {
97
+ if (a === void 0)
92
98
  return;
93
99
  const {
94
- photoUrl: p,
95
- firstName: m,
96
- lastName: u,
97
- isPremium: c,
98
- languageCode: l,
99
- isBot: f,
100
- ...i
101
- } = o;
102
- a.set(r, JSON.stringify({
103
- ...i,
104
- photo_url: p,
105
- first_name: m,
106
- last_name: u,
107
- is_premium: c,
108
- language_code: l,
109
- is_bot: f
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 I(a) {
118
+ function w(o) {
113
119
  const {
114
- chat: r,
115
- chatType: o,
120
+ authDate: r,
121
+ canSendAfter: a,
122
+ chat: i,
116
123
  chatInstance: p,
117
- hash: m,
118
- user: u,
124
+ chatType: m,
125
+ hash: u,
119
126
  queryId: c,
120
127
  receiver: l,
121
128
  startParam: f,
122
- canSendAfter: i,
123
- authDate: g
124
- } = a, e = new URLSearchParams();
125
- if (e.set("auth_date", (g.getTime() / 1e3).toString()), n(e, "chat_instance", p), n(e, "chat_type", o), n(e, "hash", m), n(e, "query_id", c), y(e, "receiver", l), n(e, "start_param", f), y(e, "user", u), r) {
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 i && e.set("can_send_after", i.toString()), e.toString();
138
+ return a && e.set("can_send_after", a.toString()), e.toString();
133
139
  }
134
140
  export {
135
- T as chat,
136
- b as initData,
137
- w as parse,
138
- I as serialize,
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
@@ -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 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":["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.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":";AAKO,SAASA,IAAO;AACrB,SAAOC,EAAK;AAAA,IACV,IAAIC,EAAO;AAAA,IACX,MAAMC,EAAO;AAAA,IACb,OAAOA,EAAO;AAAA,IACd,UAAU;AAAA,MACR,MAAMA,EAAO,EAAE,SAAS;AAAA,MACxB,MAAM;AAAA,IACR;AAAA,IACA,UAAUA,EAAO,EAAE,SAAS;AAAA,EAAA,GAC3B;AAAA,IACD,MAAM;AAAA,EAAA,CACP;AACH;ACXO,SAASC,IAAO;AACrB,SAAOH,EAAW;AAAA,IAChB,uBAAuB;AAAA,MACrB,MAAMI,EAAQ,EAAE,SAAS;AAAA,MACzB,MAAM;AAAA,IACR;AAAA,IACA,iBAAiB;AAAA,MACf,MAAMA,EAAQ,EAAE,SAAS;AAAA,MACzB,MAAM;AAAA,IACR;AAAA,IACA,WAAW;AAAA,MACT,MAAMF,EAAO;AAAA,MACb,MAAM;AAAA,IACR;AAAA,IACA,IAAID,EAAO;AAAA,IACX,OAAO;AAAA,MACL,MAAMG,EAAQ,EAAE,SAAS;AAAA,MACzB,MAAM;AAAA,IACR;AAAA,IACA,WAAW;AAAA,MACT,MAAMA,EAAQ,EAAE,SAAS;AAAA,MACzB,MAAM;AAAA,IACR;AAAA,IACA,cAAc;AAAA,MACZ,MAAMF,EAAO,EAAE,SAAS;AAAA,MACxB,MAAM;AAAA,IACR;AAAA,IACA,UAAU;AAAA,MACR,MAAMA,EAAO,EAAE,SAAS;AAAA,MACxB,MAAM;AAAA,IACR;AAAA,IACA,UAAU;AAAA,MACR,MAAMA,EAAO,EAAE,SAAS;AAAA,MACxB,MAAM;AAAA,IACR;AAAA,IACA,UAAUA,EAAO,EAAE,SAAS;AAAA,EAAA,GAC3B;AAAA,IACD,MAAM;AAAA,EAAA,CACP;AACH;ACrCO,SAASG,IAAW;AACzB,SAAOC,EAAuB;AAAA,IAC5B,UAAU;AAAA,MACR,MAAMC,EAAK;AAAA,MACX,MAAM;AAAA,IACR;AAAA,IACA,cAAc;AAAA,MACZ,MAAMN,EAAO,EAAE,SAAS;AAAA,MACxB,MAAM;AAAA,IACR;AAAA,IACA,MAAMF,EAAK,EAAE,SAAS;AAAA,IACtB,cAAc;AAAA,MACZ,MAAMG,EAAO,EAAE,SAAS;AAAA,MACxB,MAAM;AAAA,IACR;AAAA,IACA,UAAU;AAAA,MACR,MAAMA,EAAO,EAAE,SAAS;AAAA,MACxB,MAAM;AAAA,IACR;AAAA,IACA,MAAMA,EAAO;AAAA,IACb,SAAS;AAAA,MACP,MAAMA,EAAO,EAAE,SAAS;AAAA,MACxB,MAAM;AAAA,IACR;AAAA,IACA,UAAUC,EAAK,EAAE,SAAS;AAAA,IAC1B,YAAY;AAAA,MACV,MAAMD,EAAO,EAAE,SAAS;AAAA,MACxB,MAAM;AAAA,IACR;AAAA,IACA,MAAMC,EAAK,EAAE,SAAS;AAAA,EAAA,GACrB;AAAA,IACD,MAAM;AAAA,EAAA,CACP;AACH;ACnCO,SAASK,EAAMC,GAA0B;AACvC,SAAAJ,EAAW,EAAA,MAAMI,CAAK;AAC/B;ACPA,SAASC,EAAUC,GAAyBC,GAAaH,GAA2B;AAClF,EAAIA,MAAU,UAGPE,EAAA,IAAIC,GAAKH,CAAK;AACvB;AAEA,SAASI,EAAQF,GAAyBC,GAAaH,GAAyB;AAC9E,MAAIA,MAAU;AACZ;AAEI,QAAA;AAAA,IACJ,UAAAK;AAAA,IACA,WAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,cAAAC;AAAA,IACA,OAAAC;AAAA,IACA,GAAGC;AAAA,EACD,IAAAX;AAEG,EAAAE,EAAA,IAAIC,GAAK,KAAK,UAAU;AAAA,IAC7B,GAAGQ;AAAA,IACH,WAAWN;AAAA,IACX,YAAYC;AAAA,IACZ,WAAWC;AAAA,IACX,YAAYC;AAAA,IACZ,eAAeC;AAAA,IACf,QAAQC;AAAA,EACT,CAAA,CAAC;AACJ;AAMO,SAASE,EAAUZ,GAAyB;AAC3C,QAAA;AAAA,IACJ,UAAAa;AAAA,IACA,cAAAC;AAAA,IACA,MAAAxB;AAAA,IACA,cAAAyB;AAAA,IACA,UAAAC;AAAA,IACA,MAAAC;AAAA,IACA,SAAAC;AAAA,IACA,UAAAC;AAAA,IACA,YAAAC;AAAA,IACA,MAAA1B;AAAA,EACE,IAAAM,GAEEE,IAAS,IAAI;AAWnB,MATAA,EAAO,IAAI,cAAcW,EAAS,YAAY,KAAM,UAAU,GACpDZ,EAAAC,GAAQ,iBAAiBa,CAAY,GACrCd,EAAAC,GAAQ,aAAac,CAAQ,GAC7Bf,EAAAC,GAAQ,QAAQe,CAAI,GACpBhB,EAAAC,GAAQ,YAAYgB,CAAO,GAC7Bd,EAAAF,GAAQ,YAAYiB,CAAQ,GAC1BlB,EAAAC,GAAQ,eAAekB,CAAU,GACnChB,EAAAF,GAAQ,QAAQR,CAAI,GAExBJ,GAAM;AACR,UAAM,EAAE,UAAAe,GAAU,GAAGM,EAAA,IAASrB;AACvB,IAAAY,EAAA,IAAI,QAAQ,KAAK,UAAU;AAAA,MAChC,GAAGS;AAAA,MACH,WAAWN;AAAA,IACZ,CAAA,CAAC;AAAA,EACJ;AAEA,SAAIS,KACFZ,EAAO,IAAI,kBAAkBY,EAAa,SAAU,CAAA,GAG/CZ,EAAO;AAChB;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tma.js/init-data",
3
- "version": "0.2.20",
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.1.3"
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
@@ -13,5 +13,7 @@ export function chat() {
13
13
  from: 'photo_url',
14
14
  },
15
15
  username: string().optional(),
16
+ }, {
17
+ type: 'Chat',
16
18
  });
17
19
  }
package/src/initData.ts CHANGED
@@ -37,5 +37,7 @@ export function initData() {
37
37
  from: 'start_param',
38
38
  },
39
39
  user: user().optional(),
40
+ }, {
41
+ type: 'InitData',
40
42
  });
41
43
  }
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
- canSendAfter,
50
- authDate,
50
+ user,
51
51
  } = value;
52
52
 
53
53
  const params = new URLSearchParams();
package/src/user.ts CHANGED
@@ -41,5 +41,7 @@ export function user() {
41
41
  from: 'photo_url',
42
42
  },
43
43
  username: string().optional(),
44
+ }, {
45
+ type: 'User',
44
46
  });
45
47
  }