@tma.js/init-data-node 1.3.1 → 1.4.0
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/entries/{index-Brzmngqx.js → index-B-IiSE5b.js} +65 -92
- package/dist/entries/index-B-IiSE5b.js.map +1 -0
- package/dist/entries/{index-CDcPFeVC.cjs → index-DQxFLF1J.cjs} +65 -92
- package/dist/entries/index-DQxFLF1J.cjs.map +1 -0
- package/dist/entries/node.cjs +13 -8
- package/dist/entries/node.cjs.map +1 -1
- package/dist/entries/node.d.ts +13 -4
- package/dist/entries/node.js +15 -10
- package/dist/entries/node.js.map +1 -1
- package/dist/entries/shared.d.ts +1 -1
- package/dist/entries/web.cjs +26 -21
- package/dist/entries/web.cjs.map +1 -1
- package/dist/entries/web.d.ts +13 -4
- package/dist/entries/web.js +27 -22
- package/dist/entries/web.js.map +1 -1
- package/dist/hashToken.d.ts +3 -0
- package/dist/sign.d.ts +6 -3
- package/dist/signData.d.ts +7 -3
- package/dist/types.d.ts +18 -4
- package/dist/validate.d.ts +4 -4
- package/package.json +2 -2
- package/dist/entries/index-Brzmngqx.js.map +0 -1
- package/dist/entries/index-CDcPFeVC.cjs.map +0 -1
package/dist/entries/node.d.ts
CHANGED
|
@@ -1,22 +1,31 @@
|
|
|
1
1
|
import { InitData, InitDataParsed } from '@tma.js/sdk';
|
|
2
|
+
import { SignOptions } from '../sign.js';
|
|
3
|
+
import { SignDataOptions } from '../signData.js';
|
|
2
4
|
import { ValidateOptions } from '../validate.js';
|
|
3
|
-
import { SignData } from '../types.js';
|
|
5
|
+
import { SignData, Text } from '../types.js';
|
|
4
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Hashes specified token using a string, expected during init data sign.
|
|
9
|
+
* @param token - token to hash.
|
|
10
|
+
*/
|
|
11
|
+
export declare function hashToken(token: Text): Buffer;
|
|
5
12
|
/**
|
|
6
13
|
* Signs specified init data.
|
|
7
14
|
* @param data - init data to sign.
|
|
8
15
|
* @param authDate - date, when this init data should be signed.
|
|
9
16
|
* @param key - private key.
|
|
17
|
+
* @param options - additional options.
|
|
10
18
|
* @returns Signed init data presented as query parameters.
|
|
11
19
|
*/
|
|
12
|
-
export declare function sign(data: SignData, key:
|
|
20
|
+
export declare function sign(data: SignData, key: Text, authDate: Date, options?: SignOptions): string;
|
|
13
21
|
/**
|
|
14
22
|
* Signs specified data with the passed token.
|
|
15
23
|
* @param data - data to sign.
|
|
16
24
|
* @param key - private key.
|
|
25
|
+
* @param options - additional options.
|
|
17
26
|
* @returns Data sign.
|
|
18
27
|
*/
|
|
19
|
-
export declare function signData(data:
|
|
28
|
+
export declare function signData(data: Text, key: Text, options?: SignDataOptions): string;
|
|
20
29
|
/**
|
|
21
30
|
* Validates passed init data.
|
|
22
31
|
* @param value - value to check.
|
|
@@ -27,5 +36,5 @@ export declare function signData(data: string, key: string): string;
|
|
|
27
36
|
* @throws {Error} "auth_date" is empty or not found
|
|
28
37
|
* @throws {Error} Init data expired
|
|
29
38
|
*/
|
|
30
|
-
export declare function validate(value: InitData | InitDataParsed | string | URLSearchParams, token:
|
|
39
|
+
export declare function validate(value: InitData | InitDataParsed | string | URLSearchParams, token: Text, options?: ValidateOptions): void;
|
|
31
40
|
export * from './shared.js';
|
package/dist/entries/node.js
CHANGED
|
@@ -1,20 +1,25 @@
|
|
|
1
|
-
import { createHmac } from "node:crypto";
|
|
2
|
-
import { s as sign$1, a as signData$1, v as validate$1 } from "./index-
|
|
3
|
-
import { i,
|
|
4
|
-
|
|
5
|
-
return
|
|
1
|
+
import { createHmac as createHmac$1 } from "node:crypto";
|
|
2
|
+
import { h as hashToken$1, s as sign$1, a as signData$1, v as validate$1 } from "./index-B-IiSE5b.js";
|
|
3
|
+
import { i, c } from "./index-B-IiSE5b.js";
|
|
4
|
+
const createHmac = (data, key) => {
|
|
5
|
+
return createHmac$1("sha256", key).update(data).digest();
|
|
6
|
+
};
|
|
7
|
+
function hashToken(token) {
|
|
8
|
+
return hashToken$1(token, createHmac);
|
|
9
|
+
}
|
|
10
|
+
function sign(data, key, authDate, options) {
|
|
11
|
+
return sign$1(data, key, authDate, signData, options);
|
|
6
12
|
}
|
|
7
|
-
function signData(data, key) {
|
|
8
|
-
return signData$1(data, key,
|
|
9
|
-
return createHmac("sha256", k).update(d).digest();
|
|
10
|
-
});
|
|
13
|
+
function signData(data, key, options) {
|
|
14
|
+
return signData$1(data, key, createHmac, options);
|
|
11
15
|
}
|
|
12
16
|
function validate(value, token, options) {
|
|
13
17
|
return validate$1(value, token, signData, options);
|
|
14
18
|
}
|
|
15
19
|
export {
|
|
20
|
+
hashToken,
|
|
16
21
|
i as initDataToSearchParams,
|
|
17
|
-
|
|
22
|
+
c as parse,
|
|
18
23
|
sign,
|
|
19
24
|
signData,
|
|
20
25
|
validate
|
package/dist/entries/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sources":["../../src/entries/node.ts"],"sourcesContent":["import { InitData, InitDataParsed } from '@tma.js/sdk';\nimport {
|
|
1
|
+
{"version":3,"file":"node.js","sources":["../../src/entries/node.ts"],"sourcesContent":["import { createHmac as nodeCreateHmac } from 'node:crypto';\nimport { InitData, InitDataParsed } from '@tma.js/sdk';\n\nimport { hashToken as baseHashToken } from '../hashToken.js';\nimport { sign as baseSign, SignOptions } from '../sign.js';\nimport { signData as baseSignData, SignDataOptions } from '../signData.js';\nimport { validate as baseValidate } from '../validate.js';\nimport type { ValidateOptions } from '../validate.js';\nimport type { CreateHmacFn, SignData, Text } from '../types.js';\n\nconst createHmac: CreateHmacFn<false> = (data, key) => {\n return nodeCreateHmac('sha256', key).update(data).digest();\n};\n\n/**\n * Hashes specified token using a string, expected during init data sign.\n * @param token - token to hash.\n */\nexport function hashToken(token: Text): Buffer {\n return baseHashToken(token, createHmac);\n}\n\n/**\n * Signs specified init data.\n * @param data - init data to sign.\n * @param authDate - date, when this init data should be signed.\n * @param key - private key.\n * @param options - additional options.\n * @returns Signed init data presented as query parameters.\n */\nexport function sign(data: SignData, key: Text, authDate: Date, options?: SignOptions): string {\n return baseSign(data, key, authDate, signData, options);\n}\n\n/**\n * Signs specified data with the passed token.\n * @param data - data to sign.\n * @param key - private key.\n * @param options - additional options.\n * @returns Data sign.\n */\nexport function signData(data: Text, key: Text, options?: SignDataOptions): string {\n return baseSignData(data, key, createHmac, options);\n}\n\n/**\n * Validates passed init data.\n * @param value - value to check.\n * @param token - bot secret token.\n * @param options - additional validation options.\n * @throws {TypeError} \"auth_date\" should present integer\n * @throws {Error} \"hash\" is empty or not found\n * @throws {Error} \"auth_date\" is empty or not found\n * @throws {Error} Init data expired\n */\nexport function validate(\n value: InitData | InitDataParsed | string | URLSearchParams,\n token: Text,\n options?: ValidateOptions,\n): void {\n return baseValidate(value, token, signData, options);\n}\n\nexport * from './shared.js';\n"],"names":["nodeCreateHmac","baseHashToken","baseSign","baseSignData","baseValidate"],"mappings":";;;AAUA,MAAM,aAAkC,CAAC,MAAM,QAAQ;AACrD,SAAOA,aAAe,UAAU,GAAG,EAAE,OAAO,IAAI,EAAE;AACpD;AAMO,SAAS,UAAU,OAAqB;AACtC,SAAAC,YAAc,OAAO,UAAU;AACxC;AAUO,SAAS,KAAK,MAAgB,KAAW,UAAgB,SAA+B;AAC7F,SAAOC,OAAS,MAAM,KAAK,UAAU,UAAU,OAAO;AACxD;AASgB,SAAA,SAAS,MAAY,KAAW,SAAmC;AACjF,SAAOC,WAAa,MAAM,KAAK,YAAY,OAAO;AACpD;AAYgB,SAAA,SACd,OACA,OACA,SACM;AACN,SAAOC,WAAa,OAAO,OAAO,UAAU,OAAO;AACrD;"}
|
package/dist/entries/shared.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { type Chat, type ChatType, type InitDataParsed, parseInitData as parse, type User, } from '@tma.js/sdk';
|
|
2
2
|
export { initDataToSearchParams } from '../initDataToSearchParams.js';
|
|
3
3
|
export type { ValidateOptions } from '../validate.js';
|
|
4
|
-
export type { SignData } from '../types.js';
|
|
4
|
+
export type { SignData, Text, CreateHmacFn } from '../types.js';
|
package/dist/entries/web.cjs
CHANGED
|
@@ -1,32 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const index = require("./index-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
const index = require("./index-DQxFLF1J.cjs");
|
|
4
|
+
const createHmac = async (data, key) => {
|
|
5
|
+
const encoder = new TextEncoder();
|
|
6
|
+
return Buffer.from(
|
|
7
|
+
await crypto.subtle.sign(
|
|
8
|
+
"HMAC",
|
|
9
|
+
await crypto.subtle.importKey(
|
|
10
|
+
"raw",
|
|
11
|
+
typeof key === "string" ? encoder.encode(key) : key,
|
|
12
|
+
{ name: "HMAC", hash: "SHA-256" },
|
|
13
|
+
false,
|
|
14
|
+
["sign", "verify"]
|
|
15
|
+
),
|
|
16
|
+
encoder.encode(data.toString())
|
|
17
|
+
)
|
|
18
|
+
);
|
|
19
|
+
};
|
|
20
|
+
function hashToken(token) {
|
|
21
|
+
return index.hashToken(token, createHmac);
|
|
6
22
|
}
|
|
7
|
-
|
|
8
|
-
return index.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
"HMAC",
|
|
13
|
-
await crypto.subtle.importKey(
|
|
14
|
-
"raw",
|
|
15
|
-
typeof k === "string" ? encoder.encode(k) : k,
|
|
16
|
-
{ name: "HMAC", hash: "SHA-256" },
|
|
17
|
-
false,
|
|
18
|
-
["sign", "verify"]
|
|
19
|
-
),
|
|
20
|
-
encoder.encode(d)
|
|
21
|
-
)
|
|
22
|
-
);
|
|
23
|
-
});
|
|
23
|
+
function sign(data, key, authDate, options) {
|
|
24
|
+
return index.sign(data, key, authDate, signData, options);
|
|
25
|
+
}
|
|
26
|
+
async function signData(data, key, options) {
|
|
27
|
+
return index.signData(data, key, createHmac, options);
|
|
24
28
|
}
|
|
25
29
|
async function validate(value, token, options) {
|
|
26
30
|
return index.validate(value, token, signData, options);
|
|
27
31
|
}
|
|
28
32
|
exports.initDataToSearchParams = index.initDataToSearchParams;
|
|
29
|
-
exports.parse = index.
|
|
33
|
+
exports.parse = index.cs;
|
|
34
|
+
exports.hashToken = hashToken;
|
|
30
35
|
exports.sign = sign;
|
|
31
36
|
exports.signData = signData;
|
|
32
37
|
exports.validate = validate;
|
package/dist/entries/web.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.cjs","sources":["../../src/entries/web.ts"],"sourcesContent":["import { InitData, InitDataParsed } from '@tma.js/sdk';\n\nimport { sign as baseSign } from '../sign.js';\nimport { signData as baseSignData } from '../signData.js';\nimport { validate as baseValidate } from '../validate.js';\nimport type{ ValidateOptions } from '../validate.js';\nimport type { SignData } from '../types.js';\n\n/**\n * Signs specified init data.\n * @param data - init data to sign.\n * @param authDate - date, when this init data should be signed.\n * @param key - private key.\n * @returns Signed init data presented as query parameters.\n */\nexport function sign(data: SignData
|
|
1
|
+
{"version":3,"file":"web.cjs","sources":["../../src/entries/web.ts"],"sourcesContent":["import { InitData, InitDataParsed } from '@tma.js/sdk';\n\nimport { hashToken as baseHashToken } from '../hashToken.js';\nimport { sign as baseSign, SignOptions } from '../sign.js';\nimport { signData as baseSignData, SignDataOptions } from '../signData.js';\nimport { validate as baseValidate } from '../validate.js';\nimport type{ ValidateOptions } from '../validate.js';\nimport type { CreateHmacFn, SignData, Text } from '../types.js';\n\nconst createHmac: CreateHmacFn<true> = async (data, key) => {\n const encoder = new TextEncoder();\n\n return Buffer.from(\n await crypto.subtle.sign(\n 'HMAC',\n await crypto.subtle.importKey(\n 'raw',\n typeof key === 'string' ? encoder.encode(key) : key,\n { name: 'HMAC', hash: 'SHA-256' },\n false,\n ['sign', 'verify'],\n ),\n encoder.encode(data.toString()),\n ),\n );\n};\n\n\n/**\n * Hashes specified token using a string, expected during init data sign.\n * @param token - token to hash.\n */\nexport function hashToken(token: Text): Promise<Buffer> {\n return baseHashToken(token, createHmac);\n}\n\n/**\n * Signs specified init data.\n * @param data - init data to sign.\n * @param authDate - date, when this init data should be signed.\n * @param key - private key.\n * @param options - additional options.\n * @returns Signed init data presented as query parameters.\n */\nexport function sign(\n data: SignData,\n key: Text,\n authDate: Date,\n options?: SignOptions\n): Promise<string> {\n return baseSign(data, key, authDate, signData, options);\n}\n\n/**\n * Signs specified data with the passed token.\n * @param data - data to sign.\n * @param key - private key.\n * @param options - additional options.\n * @returns Data sign.\n */\nexport async function signData(data: Text, key: Text, options?: SignDataOptions): Promise<string> {\n return baseSignData(data, key, createHmac, options);\n}\n\n/**\n * Validates passed init data.\n * @param value - value to check.\n * @param token - bot secret token.\n * @param options - additional validation options.\n * @throws {TypeError} \"auth_date\" should present integer\n * @throws {Error} \"hash\" is empty or not found\n * @throws {Error} \"auth_date\" is empty or not found\n * @throws {Error} Init data expired\n */\nexport async function validate(\n value: InitData | InitDataParsed | string | URLSearchParams,\n token: Text,\n options?: ValidateOptions,\n): Promise<void> {\n return baseValidate(value, token, signData, options);\n}\n\nexport * from './shared.js';\n"],"names":["baseHashToken","baseSign","baseSignData","baseValidate"],"mappings":";;;AASA,MAAM,aAAiC,OAAO,MAAM,QAAQ;AACpD,QAAA,UAAU,IAAI;AAEpB,SAAO,OAAO;AAAA,IACZ,MAAM,OAAO,OAAO;AAAA,MAClB;AAAA,MACA,MAAM,OAAO,OAAO;AAAA,QAClB;AAAA,QACA,OAAO,QAAQ,WAAW,QAAQ,OAAO,GAAG,IAAI;AAAA,QAChD,EAAE,MAAM,QAAQ,MAAM,UAAU;AAAA,QAChC;AAAA,QACA,CAAC,QAAQ,QAAQ;AAAA,MACnB;AAAA,MACA,QAAQ,OAAO,KAAK,UAAU;AAAA,IAChC;AAAA,EAAA;AAEJ;AAOO,SAAS,UAAU,OAA8B;AAC/C,SAAAA,MAAA,UAAc,OAAO,UAAU;AACxC;AAUO,SAAS,KACd,MACA,KACA,UACA,SACiB;AACjB,SAAOC,MAAAA,KAAS,MAAM,KAAK,UAAU,UAAU,OAAO;AACxD;AASsB,eAAA,SAAS,MAAY,KAAW,SAA4C;AAChG,SAAOC,MAAa,SAAA,MAAM,KAAK,YAAY,OAAO;AACpD;AAYsB,eAAA,SACpB,OACA,OACA,SACe;AACf,SAAOC,MAAa,SAAA,OAAO,OAAO,UAAU,OAAO;AACrD;;;;;;;"}
|
package/dist/entries/web.d.ts
CHANGED
|
@@ -1,22 +1,31 @@
|
|
|
1
1
|
import { InitData, InitDataParsed } from '@tma.js/sdk';
|
|
2
|
+
import { SignOptions } from '../sign.js';
|
|
3
|
+
import { SignDataOptions } from '../signData.js';
|
|
2
4
|
import { ValidateOptions } from '../validate.js';
|
|
3
|
-
import { SignData } from '../types.js';
|
|
5
|
+
import { SignData, Text } from '../types.js';
|
|
4
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Hashes specified token using a string, expected during init data sign.
|
|
9
|
+
* @param token - token to hash.
|
|
10
|
+
*/
|
|
11
|
+
export declare function hashToken(token: Text): Promise<Buffer>;
|
|
5
12
|
/**
|
|
6
13
|
* Signs specified init data.
|
|
7
14
|
* @param data - init data to sign.
|
|
8
15
|
* @param authDate - date, when this init data should be signed.
|
|
9
16
|
* @param key - private key.
|
|
17
|
+
* @param options - additional options.
|
|
10
18
|
* @returns Signed init data presented as query parameters.
|
|
11
19
|
*/
|
|
12
|
-
export declare function sign(data: SignData, key:
|
|
20
|
+
export declare function sign(data: SignData, key: Text, authDate: Date, options?: SignOptions): Promise<string>;
|
|
13
21
|
/**
|
|
14
22
|
* Signs specified data with the passed token.
|
|
15
23
|
* @param data - data to sign.
|
|
16
24
|
* @param key - private key.
|
|
25
|
+
* @param options - additional options.
|
|
17
26
|
* @returns Data sign.
|
|
18
27
|
*/
|
|
19
|
-
export declare function signData(data:
|
|
28
|
+
export declare function signData(data: Text, key: Text, options?: SignDataOptions): Promise<string>;
|
|
20
29
|
/**
|
|
21
30
|
* Validates passed init data.
|
|
22
31
|
* @param value - value to check.
|
|
@@ -27,5 +36,5 @@ export declare function signData(data: string, key: string): Promise<string>;
|
|
|
27
36
|
* @throws {Error} "auth_date" is empty or not found
|
|
28
37
|
* @throws {Error} Init data expired
|
|
29
38
|
*/
|
|
30
|
-
export declare function validate(value: InitData | InitDataParsed | string | URLSearchParams, token:
|
|
39
|
+
export declare function validate(value: InitData | InitDataParsed | string | URLSearchParams, token: Text, options?: ValidateOptions): Promise<void>;
|
|
31
40
|
export * from './shared.js';
|
package/dist/entries/web.js
CHANGED
|
@@ -1,32 +1,37 @@
|
|
|
1
|
-
import { s as sign$1, a as signData$1, v as validate$1 } from "./index-
|
|
2
|
-
import { i,
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { h as hashToken$1, s as sign$1, a as signData$1, v as validate$1 } from "./index-B-IiSE5b.js";
|
|
2
|
+
import { i, c } from "./index-B-IiSE5b.js";
|
|
3
|
+
const createHmac = async (data, key) => {
|
|
4
|
+
const encoder = new TextEncoder();
|
|
5
|
+
return Buffer.from(
|
|
6
|
+
await crypto.subtle.sign(
|
|
7
|
+
"HMAC",
|
|
8
|
+
await crypto.subtle.importKey(
|
|
9
|
+
"raw",
|
|
10
|
+
typeof key === "string" ? encoder.encode(key) : key,
|
|
11
|
+
{ name: "HMAC", hash: "SHA-256" },
|
|
12
|
+
false,
|
|
13
|
+
["sign", "verify"]
|
|
14
|
+
),
|
|
15
|
+
encoder.encode(data.toString())
|
|
16
|
+
)
|
|
17
|
+
);
|
|
18
|
+
};
|
|
19
|
+
function hashToken(token) {
|
|
20
|
+
return hashToken$1(token, createHmac);
|
|
21
|
+
}
|
|
22
|
+
function sign(data, key, authDate, options) {
|
|
23
|
+
return sign$1(data, key, authDate, signData, options);
|
|
5
24
|
}
|
|
6
|
-
async function signData(data, key) {
|
|
7
|
-
return signData$1(data, key,
|
|
8
|
-
const encoder = new TextEncoder();
|
|
9
|
-
return Buffer.from(
|
|
10
|
-
await crypto.subtle.sign(
|
|
11
|
-
"HMAC",
|
|
12
|
-
await crypto.subtle.importKey(
|
|
13
|
-
"raw",
|
|
14
|
-
typeof k === "string" ? encoder.encode(k) : k,
|
|
15
|
-
{ name: "HMAC", hash: "SHA-256" },
|
|
16
|
-
false,
|
|
17
|
-
["sign", "verify"]
|
|
18
|
-
),
|
|
19
|
-
encoder.encode(d)
|
|
20
|
-
)
|
|
21
|
-
);
|
|
22
|
-
});
|
|
25
|
+
async function signData(data, key, options) {
|
|
26
|
+
return signData$1(data, key, createHmac, options);
|
|
23
27
|
}
|
|
24
28
|
async function validate(value, token, options) {
|
|
25
29
|
return validate$1(value, token, signData, options);
|
|
26
30
|
}
|
|
27
31
|
export {
|
|
32
|
+
hashToken,
|
|
28
33
|
i as initDataToSearchParams,
|
|
29
|
-
|
|
34
|
+
c as parse,
|
|
30
35
|
sign,
|
|
31
36
|
signData,
|
|
32
37
|
validate
|
package/dist/entries/web.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sources":["../../src/entries/web.ts"],"sourcesContent":["import { InitData, InitDataParsed } from '@tma.js/sdk';\n\nimport { sign as baseSign } from '../sign.js';\nimport { signData as baseSignData } from '../signData.js';\nimport { validate as baseValidate } from '../validate.js';\nimport type{ ValidateOptions } from '../validate.js';\nimport type { SignData } from '../types.js';\n\n/**\n * Signs specified init data.\n * @param data - init data to sign.\n * @param authDate - date, when this init data should be signed.\n * @param key - private key.\n * @returns Signed init data presented as query parameters.\n */\nexport function sign(data: SignData
|
|
1
|
+
{"version":3,"file":"web.js","sources":["../../src/entries/web.ts"],"sourcesContent":["import { InitData, InitDataParsed } from '@tma.js/sdk';\n\nimport { hashToken as baseHashToken } from '../hashToken.js';\nimport { sign as baseSign, SignOptions } from '../sign.js';\nimport { signData as baseSignData, SignDataOptions } from '../signData.js';\nimport { validate as baseValidate } from '../validate.js';\nimport type{ ValidateOptions } from '../validate.js';\nimport type { CreateHmacFn, SignData, Text } from '../types.js';\n\nconst createHmac: CreateHmacFn<true> = async (data, key) => {\n const encoder = new TextEncoder();\n\n return Buffer.from(\n await crypto.subtle.sign(\n 'HMAC',\n await crypto.subtle.importKey(\n 'raw',\n typeof key === 'string' ? encoder.encode(key) : key,\n { name: 'HMAC', hash: 'SHA-256' },\n false,\n ['sign', 'verify'],\n ),\n encoder.encode(data.toString()),\n ),\n );\n};\n\n\n/**\n * Hashes specified token using a string, expected during init data sign.\n * @param token - token to hash.\n */\nexport function hashToken(token: Text): Promise<Buffer> {\n return baseHashToken(token, createHmac);\n}\n\n/**\n * Signs specified init data.\n * @param data - init data to sign.\n * @param authDate - date, when this init data should be signed.\n * @param key - private key.\n * @param options - additional options.\n * @returns Signed init data presented as query parameters.\n */\nexport function sign(\n data: SignData,\n key: Text,\n authDate: Date,\n options?: SignOptions\n): Promise<string> {\n return baseSign(data, key, authDate, signData, options);\n}\n\n/**\n * Signs specified data with the passed token.\n * @param data - data to sign.\n * @param key - private key.\n * @param options - additional options.\n * @returns Data sign.\n */\nexport async function signData(data: Text, key: Text, options?: SignDataOptions): Promise<string> {\n return baseSignData(data, key, createHmac, options);\n}\n\n/**\n * Validates passed init data.\n * @param value - value to check.\n * @param token - bot secret token.\n * @param options - additional validation options.\n * @throws {TypeError} \"auth_date\" should present integer\n * @throws {Error} \"hash\" is empty or not found\n * @throws {Error} \"auth_date\" is empty or not found\n * @throws {Error} Init data expired\n */\nexport async function validate(\n value: InitData | InitDataParsed | string | URLSearchParams,\n token: Text,\n options?: ValidateOptions,\n): Promise<void> {\n return baseValidate(value, token, signData, options);\n}\n\nexport * from './shared.js';\n"],"names":["baseHashToken","baseSign","baseSignData","baseValidate"],"mappings":";;AASA,MAAM,aAAiC,OAAO,MAAM,QAAQ;AACpD,QAAA,UAAU,IAAI;AAEpB,SAAO,OAAO;AAAA,IACZ,MAAM,OAAO,OAAO;AAAA,MAClB;AAAA,MACA,MAAM,OAAO,OAAO;AAAA,QAClB;AAAA,QACA,OAAO,QAAQ,WAAW,QAAQ,OAAO,GAAG,IAAI;AAAA,QAChD,EAAE,MAAM,QAAQ,MAAM,UAAU;AAAA,QAChC;AAAA,QACA,CAAC,QAAQ,QAAQ;AAAA,MACnB;AAAA,MACA,QAAQ,OAAO,KAAK,UAAU;AAAA,IAChC;AAAA,EAAA;AAEJ;AAOO,SAAS,UAAU,OAA8B;AAC/C,SAAAA,YAAc,OAAO,UAAU;AACxC;AAUO,SAAS,KACd,MACA,KACA,UACA,SACiB;AACjB,SAAOC,OAAS,MAAM,KAAK,UAAU,UAAU,OAAO;AACxD;AASsB,eAAA,SAAS,MAAY,KAAW,SAA4C;AAChG,SAAOC,WAAa,MAAM,KAAK,YAAY,OAAO;AACpD;AAYsB,eAAA,SACpB,OACA,OACA,SACe;AACf,SAAOC,WAAa,OAAO,OAAO,UAAU,OAAO;AACrD;"}
|
package/dist/sign.d.ts
CHANGED
|
@@ -1,20 +1,23 @@
|
|
|
1
|
-
import { SignData, SignDataAsyncFn, SignDataSyncFn } from './types.js';
|
|
1
|
+
import { SharedOptions, SignData, SignDataAsyncFn, SignDataSyncFn, Text } from './types.js';
|
|
2
2
|
|
|
3
|
+
export type SignOptions = SharedOptions;
|
|
3
4
|
/**
|
|
4
5
|
* Signs specified init data.
|
|
5
6
|
* @param data - init data to sign.
|
|
6
7
|
* @param authDate - date, when this init data should be signed.
|
|
7
8
|
* @param key - private key.
|
|
8
9
|
* @param signData - function signing data.
|
|
10
|
+
* @param options - additional options.
|
|
9
11
|
* @returns Signed init data presented as query parameters.
|
|
10
12
|
*/
|
|
11
|
-
export declare function sign(data: SignData, key:
|
|
13
|
+
export declare function sign(data: SignData, key: Text, authDate: Date, signData: SignDataSyncFn, options?: SignOptions): string;
|
|
12
14
|
/**
|
|
13
15
|
* Signs specified init data.
|
|
14
16
|
* @param data - init data to sign.
|
|
15
17
|
* @param authDate - date, when this init data should be signed.
|
|
16
18
|
* @param key - private key.
|
|
17
19
|
* @param signData - function signing data.
|
|
20
|
+
* @param options - additional options.
|
|
18
21
|
* @returns Signed init data presented as query parameters.
|
|
19
22
|
*/
|
|
20
|
-
export declare function sign(data: SignData, key:
|
|
23
|
+
export declare function sign(data: SignData, key: Text, authDate: Date, signData: SignDataAsyncFn, options?: SignOptions): Promise<string>;
|
package/dist/signData.d.ts
CHANGED
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
|
|
1
|
+
import { CreateHmacFn, SharedOptions, Text } from './types.js';
|
|
2
|
+
|
|
3
|
+
export type SignDataOptions = SharedOptions;
|
|
2
4
|
/**
|
|
3
5
|
* Signs specified data with the passed token.
|
|
4
6
|
* @param data - data to sign.
|
|
5
7
|
* @param key - private key.
|
|
6
8
|
* @param createHmac - function to create HMAC-SHA256.
|
|
9
|
+
* @param options - additional method options.
|
|
7
10
|
* @returns Data sign.
|
|
8
11
|
*/
|
|
9
|
-
export declare function signData(data:
|
|
12
|
+
export declare function signData(data: Text, key: Text, createHmac: CreateHmacFn<false>, options?: SignDataOptions): string;
|
|
10
13
|
/**
|
|
11
14
|
* Signs specified data with the passed token.
|
|
12
15
|
* @param data - data to sign.
|
|
13
16
|
* @param key - private key.
|
|
14
17
|
* @param createHmac - function to create HMAC-SHA256.
|
|
18
|
+
* @param options - additional method options.
|
|
15
19
|
* @returns Data sign.
|
|
16
20
|
*/
|
|
17
|
-
export declare function signData(data:
|
|
21
|
+
export declare function signData(data: Text, key: Text, createHmac: CreateHmacFn<true>, options?: SignDataOptions): Promise<string>;
|
package/dist/types.d.ts
CHANGED
|
@@ -1,10 +1,24 @@
|
|
|
1
1
|
import { InitDataParsed } from '@tma.js/sdk';
|
|
2
|
+
import { SignDataOptions } from './signData.js';
|
|
2
3
|
|
|
3
|
-
export
|
|
4
|
-
|
|
4
|
+
export type Text = string | Buffer;
|
|
5
|
+
export type SignData = Omit<InitDataParsed, 'authDate' | 'hash'>;
|
|
5
6
|
export interface SignDataSyncFn {
|
|
6
|
-
(data:
|
|
7
|
+
(data: Text, key: Text, options?: SignDataOptions): string;
|
|
7
8
|
}
|
|
8
9
|
export interface SignDataAsyncFn {
|
|
9
|
-
(data:
|
|
10
|
+
(data: Text, key: Text, options?: SignDataOptions): Promise<string>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* SHA-256 hashing function.
|
|
14
|
+
*/
|
|
15
|
+
export interface CreateHmacFn<Async extends boolean> {
|
|
16
|
+
(data: Text, key: Text): Async extends true ? Promise<Buffer> : Buffer;
|
|
17
|
+
}
|
|
18
|
+
export interface SharedOptions {
|
|
19
|
+
/**
|
|
20
|
+
* True, if token is already hashed.
|
|
21
|
+
* @default false
|
|
22
|
+
*/
|
|
23
|
+
tokenHashed?: boolean;
|
|
10
24
|
}
|
package/dist/validate.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { InitData, InitDataParsed } from '@tma.js/sdk';
|
|
2
|
-
import { SignDataAsyncFn, SignDataSyncFn } from './types.js';
|
|
2
|
+
import { SharedOptions, SignDataAsyncFn, SignDataSyncFn, Text } from './types.js';
|
|
3
3
|
|
|
4
|
-
export interface ValidateOptions {
|
|
4
|
+
export interface ValidateOptions extends SharedOptions {
|
|
5
5
|
/**
|
|
6
6
|
* Time in seconds which states, how long from creation time init data is considered valid.
|
|
7
7
|
*
|
|
@@ -24,7 +24,7 @@ export interface ValidateOptions {
|
|
|
24
24
|
* @throws {Error} "auth_date" is empty or not found
|
|
25
25
|
* @throws {Error} Init data expired
|
|
26
26
|
*/
|
|
27
|
-
export declare function validate(value: InitData | InitDataParsed | string | URLSearchParams, token:
|
|
27
|
+
export declare function validate(value: InitData | InitDataParsed | string | URLSearchParams, token: Text, signData: SignDataSyncFn, options?: ValidateOptions): void | never;
|
|
28
28
|
/**
|
|
29
29
|
* Validates passed init data.
|
|
30
30
|
* @param value - value to check.
|
|
@@ -36,4 +36,4 @@ export declare function validate(value: InitData | InitDataParsed | string | URL
|
|
|
36
36
|
* @throws {Error} "auth_date" is empty or not found
|
|
37
37
|
* @throws {Error} Init data expired
|
|
38
38
|
*/
|
|
39
|
-
export declare function validate(value: InitData | InitDataParsed | string | URLSearchParams, token:
|
|
39
|
+
export declare function validate(value: InitData | InitDataParsed | string | URLSearchParams, token: Text, signData: SignDataAsyncFn, options?: ValidateOptions): Promise<void>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tma.js/init-data-node",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "TypeScript Node library to operate with Telegram init data.",
|
|
5
5
|
"author": "Vladislav Kibenko <wolfram.deus@gmail.com>",
|
|
6
6
|
"homepage": "https://github.com/Telegram-Mini-Apps/tma.js#readme",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"access": "public"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@tma.js/sdk": "^2.
|
|
52
|
+
"@tma.js/sdk": "^2.7.0"
|
|
53
53
|
},
|
|
54
54
|
"scripts": {
|
|
55
55
|
"test": "vitest --run",
|