test: properly run tests on bun
turned out bun sucks :D
This commit is contained in:
parent
3074e9bbf5
commit
852b1b766c
21 changed files with 859 additions and 557 deletions
128
.config/vite-utils/fixup-bun-test.ts
Normal file
128
.config/vite-utils/fixup-bun-test.ts
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
const bunTest = require('bun:test')
|
||||||
|
const console = require('console') // https://github.com/oven-sh/bun/issues/6044
|
||||||
|
const chaiExpect = require('chai').expect
|
||||||
|
const bunExpect = bunTest.expect
|
||||||
|
|
||||||
|
class BunTestUnsupportedError extends Error {
|
||||||
|
constructor(readonly feature) {
|
||||||
|
super()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function _wrapBunExpect(args, bun, invert = false) {
|
||||||
|
let chai = chaiExpect(...args)
|
||||||
|
if (invert) chai = chai.not
|
||||||
|
|
||||||
|
return new Proxy(bun, {
|
||||||
|
get: (target, prop, receiver) => {
|
||||||
|
if (prop === 'eq') return (...args) => chai.eq(...args)
|
||||||
|
if (prop === 'eql') return (...args) => chai.eql(...args)
|
||||||
|
if (prop === 'throws') return (...args) => chai.throws(...args)
|
||||||
|
if (prop === 'is') return chai.is
|
||||||
|
if (prop === 'to') return chai.to
|
||||||
|
if (prop === 'false') return chai.false
|
||||||
|
if (prop === 'true') return chai.true
|
||||||
|
if (prop === 'deep') return chai.deep
|
||||||
|
|
||||||
|
if (prop === 'toMatchInlineSnapshot') {
|
||||||
|
return (expected, options) => {
|
||||||
|
let snapshot
|
||||||
|
if (typeof args[0] === 'string') {
|
||||||
|
const snapshot = '"' + args[0] + '"'
|
||||||
|
return chaiExpect(snapshot).eql(expected.trim())
|
||||||
|
} else {
|
||||||
|
const obj = eval('(' + expected + ')') // idc lol
|
||||||
|
return chaiExpect(args[0]).eql(obj)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prop === 'not') {
|
||||||
|
const not = bun.not
|
||||||
|
return _wrapBunExpect(args, not, !invert)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prop === 'rejects') {
|
||||||
|
if (typeof args[0] === 'function') {
|
||||||
|
const newArgs = [args[0](), ...args.slice(1)]
|
||||||
|
return _wrapBunExpect(newArgs, bunExpect(...newArgs), invert).rejects
|
||||||
|
}
|
||||||
|
|
||||||
|
return bun.rejects
|
||||||
|
}
|
||||||
|
if (prop === 'resolves') {
|
||||||
|
return bun.resolves
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prop === 'toHaveBeenCalledOnce' || prop === 'toHaveBeenCalledTimes' || prop === 'toMatchSnapshot') {
|
||||||
|
throw new BunTestUnsupportedError(prop)
|
||||||
|
}
|
||||||
|
|
||||||
|
return Reflect.get(target, prop, receiver).bind(bun)
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function expect(...args) {
|
||||||
|
return _wrapBunExpect(args, bunExpect(...args))
|
||||||
|
}
|
||||||
|
|
||||||
|
expect.any = bunExpect.any
|
||||||
|
|
||||||
|
const stubbedGlobal = new Map()
|
||||||
|
function stubGlobal(name, value) {
|
||||||
|
stubbedGlobal.set(name, globalThis[name])
|
||||||
|
globalThis[name] = value
|
||||||
|
}
|
||||||
|
|
||||||
|
function unstubAllGlobals() {
|
||||||
|
for (const [name, value] of stubbedGlobal) {
|
||||||
|
globalThis[name] = value
|
||||||
|
}
|
||||||
|
stubbedGlobal.clear()
|
||||||
|
}
|
||||||
|
|
||||||
|
const _wrapRunner = (name, fn) => {
|
||||||
|
const handleError = (err) => {
|
||||||
|
if (err instanceof BunTestUnsupportedError) {
|
||||||
|
console.warn(`skipping "${name}" - ${err.feature} is currently not supported in bun:test`)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
throw err
|
||||||
|
}
|
||||||
|
return (...args) => {
|
||||||
|
try {
|
||||||
|
const res = fn(...args)
|
||||||
|
if (res instanceof Promise) {
|
||||||
|
return res.catch(handleError)
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
} catch (e) {
|
||||||
|
return handleError(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const it = (name, fn) => bunTest.it(name, _wrapRunner(name, fn))
|
||||||
|
it.only = (name, fn) => bunTest.it.only(name, _wrapRunner(name, fn))
|
||||||
|
it.skip = (name, fn) => bunTest.it.skip(name, _wrapRunner(name, fn))
|
||||||
|
it.each = (table) => (name, fn) => bunTest.it.each(table)(name, _wrapRunner(name, fn))
|
||||||
|
|
||||||
|
export { it }
|
||||||
|
|
||||||
|
export const vi = {
|
||||||
|
...bunTest.jest,
|
||||||
|
...bunTest.vi,
|
||||||
|
mocked: (fn) => fn,
|
||||||
|
stubGlobal,
|
||||||
|
unstubAllGlobals,
|
||||||
|
...['setSystemTime', 'advanceTimersByTimeAsync', 'advanceTimersByTime', 'waitFor', 'doMock'].reduce(
|
||||||
|
(acc, name) => ({
|
||||||
|
...acc,
|
||||||
|
[name]: () => {
|
||||||
|
throw new BunTestUnsupportedError(name)
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
{},
|
||||||
|
),
|
||||||
|
}
|
26
.config/vite-utils/fixup-cjs.ts
Normal file
26
.config/vite-utils/fixup-cjs.ts
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
import { Plugin } from 'vite'
|
||||||
|
import * as cjsLexer from 'cjs-module-lexer'
|
||||||
|
import esbuild from 'esbuild'
|
||||||
|
|
||||||
|
await cjsLexer.init()
|
||||||
|
|
||||||
|
export function fixupCjs(): Plugin {
|
||||||
|
return {
|
||||||
|
name: 'fixup-cjs',
|
||||||
|
async transform(code, id) {
|
||||||
|
if (!id.match(/\/packages\/tl\/.*\.js$/)) return code
|
||||||
|
|
||||||
|
const lexed = cjsLexer.parse(code)
|
||||||
|
const r = await esbuild.transform(code, { format: 'esm' })
|
||||||
|
code = r.code.replace(/export default require_stdin\(\);/, '')
|
||||||
|
|
||||||
|
code += 'const __exp = require_stdin()\n'
|
||||||
|
|
||||||
|
for (const exp of lexed.exports) {
|
||||||
|
code += `export const ${exp} = __exp.${exp}\n`
|
||||||
|
}
|
||||||
|
|
||||||
|
return code
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
21
.config/vite-utils/test-setup-plugin.ts
Normal file
21
.config/vite-utils/test-setup-plugin.ts
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
import { Plugin } from 'vite'
|
||||||
|
import { fileURLToPath } from 'url'
|
||||||
|
|
||||||
|
const setupFile = fileURLToPath(new URL('./test-setup.mts', import.meta.url))
|
||||||
|
|
||||||
|
export function testSetup(params?: { additionalCode?: string }): Plugin {
|
||||||
|
const { additionalCode = '' } = params || {}
|
||||||
|
|
||||||
|
return {
|
||||||
|
name: 'test-setup',
|
||||||
|
async transform(code, id) {
|
||||||
|
if (!id.match(/\.test\.m?[tj]s/)) return
|
||||||
|
|
||||||
|
return {
|
||||||
|
code: `import '${setupFile}'\n` + additionalCode + code,
|
||||||
|
map: null,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
apply: 'build',
|
||||||
|
}
|
||||||
|
}
|
9
.config/vite-utils/test-setup.mts
Normal file
9
.config/vite-utils/test-setup.mts
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
import { setPlatform } from '../../packages/core/src/platform.js'
|
||||||
|
|
||||||
|
// @ts-expect-error no .env here
|
||||||
|
const TEST_ENV = import.meta.env.TEST_ENV
|
||||||
|
if (TEST_ENV === 'browser') {
|
||||||
|
setPlatform(new (await import('../../packages/web/src/platform.js')).WebPlatform())
|
||||||
|
} else {
|
||||||
|
setPlatform(new (await import('../../packages/node/src/platform.js')).NodePlatform())
|
||||||
|
}
|
|
@ -1,11 +1,8 @@
|
||||||
/// <reference types="vitest" />
|
/// <reference types="vitest" />
|
||||||
import { defineConfig, mergeConfig } from 'vite'
|
import { defineConfig, mergeConfig } from 'vite'
|
||||||
import * as cjsLexer from 'cjs-module-lexer'
|
|
||||||
import esbuild from 'esbuild'
|
|
||||||
|
|
||||||
import baseConfig from './vite.mjs'
|
import baseConfig from './vite.mjs'
|
||||||
|
import { fixupCjs } from './vite-utils/fixup-cjs'
|
||||||
await cjsLexer.init()
|
|
||||||
|
|
||||||
export default mergeConfig(baseConfig, defineConfig({
|
export default mergeConfig(baseConfig, defineConfig({
|
||||||
test: {
|
test: {
|
||||||
|
@ -26,24 +23,7 @@ export default mergeConfig(baseConfig, defineConfig({
|
||||||
// ],
|
// ],
|
||||||
},
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
{
|
fixupCjs(),
|
||||||
name: 'fixup-cjs',
|
|
||||||
async transform(code, id) {
|
|
||||||
if (!id.match(/\/packages\/tl\/.*\.js$/)) return code
|
|
||||||
|
|
||||||
const lexed = cjsLexer.parse(code)
|
|
||||||
const r = await esbuild.transform(code, { format: 'esm' })
|
|
||||||
code = r.code.replace(/export default require_stdin\(\);/, '')
|
|
||||||
|
|
||||||
code += 'const __exp = require_stdin()\n'
|
|
||||||
|
|
||||||
for (const exp of lexed.exports) {
|
|
||||||
code += `export const ${exp} = __exp.${exp}\n`
|
|
||||||
}
|
|
||||||
|
|
||||||
return code
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
define: {
|
define: {
|
||||||
'import.meta.env.TEST_ENV': '"browser"'
|
'import.meta.env.TEST_ENV': '"browser"'
|
||||||
|
|
|
@ -1,10 +1,126 @@
|
||||||
/// <reference types="vitest" />
|
import { defineConfig } from 'vite'
|
||||||
import { defineConfig, mergeConfig } from 'vite'
|
import { globSync } from 'glob'
|
||||||
|
import { resolve, join } from 'path'
|
||||||
|
import * as fs from 'fs'
|
||||||
|
import { fixupCjs } from './vite-utils/fixup-cjs'
|
||||||
|
import { testSetup } from './vite-utils/test-setup-plugin'
|
||||||
|
|
||||||
import baseConfig from './vite.mjs'
|
const SKIP_PACKAGES = ['create-bot', 'crypto-node']
|
||||||
|
|
||||||
export default mergeConfig(baseConfig, defineConfig({
|
// https://github.com/oven-sh/bun/issues/4145 prevents us from using vitest directly
|
||||||
|
// so we have to use bun's native test runner
|
||||||
|
const FIXUP_TEST = resolve(__dirname, 'vite-utils/fixup-bun-test.ts')
|
||||||
|
|
||||||
|
|
||||||
|
// bun:test doesn't support certain features of vitest, so we'll skip them for now
|
||||||
|
// https://github.com/oven-sh/bun/issues/1825
|
||||||
|
const SKIP_TESTS = [
|
||||||
|
// uses timers
|
||||||
|
'core/src/network/config-manager.test.ts',
|
||||||
|
// incompatible spies
|
||||||
|
'core/src/utils/crypto/mtproto.test.ts',
|
||||||
|
// snapshot format
|
||||||
|
'tl-utils/src/codegen/errors.test.ts'
|
||||||
|
].map(path => resolve(__dirname, '../packages', path))
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
build: {
|
||||||
|
lib: {
|
||||||
|
entry: (() => {
|
||||||
|
const files: string[] = []
|
||||||
|
|
||||||
|
const packages = resolve(__dirname, '../packages')
|
||||||
|
|
||||||
|
for (const dir of fs.readdirSync(packages)) {
|
||||||
|
if (dir.startsWith('.') || SKIP_PACKAGES.includes(dir)) continue
|
||||||
|
if (!fs.statSync(resolve(packages, dir)).isDirectory()) continue
|
||||||
|
|
||||||
|
const fullDir = resolve(packages, dir)
|
||||||
|
|
||||||
|
for (const file of globSync(join(fullDir, '**/*.test.ts'))) {
|
||||||
|
if (SKIP_TESTS.includes(file)) continue
|
||||||
|
files.push(file)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return files
|
||||||
|
})(),
|
||||||
|
formats: ['es'],
|
||||||
|
},
|
||||||
|
rollupOptions: {
|
||||||
|
external: [
|
||||||
|
'zlib',
|
||||||
|
'vitest',
|
||||||
|
'stream',
|
||||||
|
'net',
|
||||||
|
'crypto',
|
||||||
|
'module',
|
||||||
|
'fs',
|
||||||
|
'fs/promises',
|
||||||
|
'events',
|
||||||
|
'path',
|
||||||
|
'util',
|
||||||
|
'os',
|
||||||
|
'bun:test',
|
||||||
|
],
|
||||||
|
output: {
|
||||||
|
chunkFileNames: 'chunk-[hash].js',
|
||||||
|
entryFileNames: '[name]-[hash].test.js',
|
||||||
|
minifyInternalExports: false,
|
||||||
|
},
|
||||||
|
treeshake: false,
|
||||||
|
},
|
||||||
|
commonjsOptions: {
|
||||||
|
ignoreDynamicRequires: true,
|
||||||
|
},
|
||||||
|
outDir: 'dist/tests',
|
||||||
|
emptyOutDir: true,
|
||||||
|
target: 'esnext',
|
||||||
|
minify: false,
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
fixupCjs(),
|
||||||
|
{
|
||||||
|
name: 'fix-vitest',
|
||||||
|
transform(code) {
|
||||||
|
if (!code.includes('vitest')) return code
|
||||||
|
code = code.replace(/^import {(.+?)} from ['"]vitest['"]/gms, (_, names) => {
|
||||||
|
const namesParsed = names.split(',').map((name) => name.trim())
|
||||||
|
|
||||||
|
const namesFromFixup: string[] = []
|
||||||
|
const newNames = namesParsed
|
||||||
|
.map((name) => {
|
||||||
|
if (['expect', 'vi', 'it'].includes(name)) {
|
||||||
|
namesFromFixup.push(name)
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
return name
|
||||||
|
})
|
||||||
|
.filter(Boolean)
|
||||||
|
|
||||||
|
let code = `import {${newNames.join(', ')}} from 'bun:test'`
|
||||||
|
|
||||||
|
if (namesFromFixup.length) {
|
||||||
|
code += `\nimport { ${namesFromFixup.join(', ')} } from '${FIXUP_TEST}'`
|
||||||
|
}
|
||||||
|
return code
|
||||||
|
})
|
||||||
|
return code
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'fix-wasm-load',
|
||||||
|
async transform(code, id) {
|
||||||
|
if (code.includes('@mtcute/wasm/mtcute.wasm')) {
|
||||||
|
return code.replace('@mtcute/wasm/mtcute.wasm', resolve(__dirname, '../packages/wasm/mtcute.wasm'))
|
||||||
|
}
|
||||||
|
|
||||||
|
return code
|
||||||
|
}
|
||||||
|
},
|
||||||
|
testSetup(),
|
||||||
|
],
|
||||||
define: {
|
define: {
|
||||||
'import.meta.env.TEST_ENV': '"bun"'
|
'import.meta.env.TEST_ENV': '"bun"',
|
||||||
}
|
},
|
||||||
}))
|
})
|
||||||
|
|
|
@ -12,7 +12,7 @@ export default defineConfig({
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
setupFiles: [
|
setupFiles: [
|
||||||
'./.config/vitest.setup.mts'
|
'./.config/vite-utils/test-setup.mts'
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
define: {
|
define: {
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
import { setPlatform } from '../packages/core/src/platform.js'
|
|
||||||
|
|
||||||
// @ts-expect-error no .env here
|
|
||||||
const TEST_ENV = import.meta.env.TEST_ENV
|
|
||||||
if (TEST_ENV === 'browser') {
|
|
||||||
setPlatform(new (await import('../packages/web/src/platform.js')).WebPlatform())
|
|
||||||
} else {
|
|
||||||
setPlatform(new (await import('../packages/node/src/platform.js')).NodePlatform())
|
|
||||||
}
|
|
6
.github/workflows/test.yaml
vendored
6
.github/workflows/test.yaml
vendored
|
@ -43,14 +43,18 @@ jobs:
|
||||||
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
||||||
with:
|
with:
|
||||||
files: ./coverage/coverage-final.json
|
files: ./coverage/coverage-final.json
|
||||||
|
|
||||||
test-bun:
|
test-bun:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: lint
|
needs: lint
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
- uses: ./.github/actions/init
|
||||||
- uses: ./.github/actions/init-bun
|
- uses: ./.github/actions/init-bun
|
||||||
|
- name: 'Build tests'
|
||||||
|
run: pnpm exec vite build -c .config/vite.bun.mts
|
||||||
- name: 'Run tests'
|
- name: 'Run tests'
|
||||||
run: bun run test:ci
|
run: cd dist/tests && bun test
|
||||||
|
|
||||||
test-web:
|
test-web:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
|
@ -43,6 +43,7 @@
|
||||||
"@vitest/browser": "1.4.0",
|
"@vitest/browser": "1.4.0",
|
||||||
"@vitest/coverage-v8": "1.4.0",
|
"@vitest/coverage-v8": "1.4.0",
|
||||||
"@vitest/ui": "1.4.0",
|
"@vitest/ui": "1.4.0",
|
||||||
|
"chai": "^5.1.0",
|
||||||
"cjs-module-lexer": "1.2.3",
|
"cjs-module-lexer": "1.2.3",
|
||||||
"dotenv-flow": "3.2.0",
|
"dotenv-flow": "3.2.0",
|
||||||
"dpdm": "3.14.0",
|
"dpdm": "3.14.0",
|
||||||
|
|
|
@ -5,7 +5,7 @@ import { TransportState } from '@mtcute/core'
|
||||||
import { getPlatform } from '@mtcute/core/platform.js'
|
import { getPlatform } from '@mtcute/core/platform.js'
|
||||||
import { defaultProductionDc, LogManager } from '@mtcute/core/utils.js'
|
import { defaultProductionDc, LogManager } from '@mtcute/core/utils.js'
|
||||||
|
|
||||||
if (import.meta.env.TEST_ENV === 'node' || import.meta.env.TEST_ENV === 'bun') {
|
if (import.meta.env.TEST_ENV === 'node') {
|
||||||
vi.doMock('net', () => ({
|
vi.doMock('net', () => ({
|
||||||
connect: vi.fn().mockImplementation((port: number, ip: string, cb: () => void) => {
|
connect: vi.fn().mockImplementation((port: number, ip: string, cb: () => void) => {
|
||||||
cb()
|
cb()
|
||||||
|
|
|
@ -10,7 +10,7 @@ import {
|
||||||
|
|
||||||
import { SqliteStorage } from '../src/index.js'
|
import { SqliteStorage } from '../src/index.js'
|
||||||
|
|
||||||
if (import.meta.env.TEST_ENV === 'node' || import.meta.env.TEST_ENV === 'bun') {
|
if (import.meta.env.TEST_ENV === 'node') {
|
||||||
describe('SqliteStorage', () => {
|
describe('SqliteStorage', () => {
|
||||||
const storage = new SqliteStorage(':memory:')
|
const storage = new SqliteStorage(':memory:')
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
"sideEffects": false,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "pnpm run -w build-package test"
|
"build": "pnpm run -w build-package test"
|
||||||
},
|
},
|
||||||
|
|
|
@ -2,10 +2,7 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from 'vite
|
||||||
import { gzipSync, inflateSync } from 'zlib'
|
import { gzipSync, inflateSync } from 'zlib'
|
||||||
|
|
||||||
import { getPlatform } from '@mtcute/core/platform.js'
|
import { getPlatform } from '@mtcute/core/platform.js'
|
||||||
import {
|
import { dataViewFromBuffer, ICryptoProvider } from '@mtcute/core/utils.js'
|
||||||
dataViewFromBuffer,
|
|
||||||
ICryptoProvider,
|
|
||||||
} from '@mtcute/core/utils.js'
|
|
||||||
|
|
||||||
import { defaultCryptoProvider } from './platform.js'
|
import { defaultCryptoProvider } from './platform.js'
|
||||||
|
|
||||||
|
@ -42,9 +39,14 @@ export function withFakeRandom(provider: ICryptoProvider, source = DEFAULT_ENTRO
|
||||||
offset += buf.length
|
offset += buf.length
|
||||||
}
|
}
|
||||||
|
|
||||||
provider.randomFill = getRandomValues
|
return new Proxy<ICryptoProvider>(provider, {
|
||||||
|
get(target, prop, receiver) {
|
||||||
|
if (prop === 'randomFill') return getRandomValues
|
||||||
|
|
||||||
return provider
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
||||||
|
return Reflect.get(target, prop, receiver)
|
||||||
|
},
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export function useFakeMathRandom(source = DEFAULT_ENTROPY): void {
|
export function useFakeMathRandom(source = DEFAULT_ENTROPY): void {
|
||||||
|
@ -176,14 +178,10 @@ export function testCryptoProvider(c: ICryptoProvider): void {
|
||||||
p.hexDecode('6D656E746174696F6E206F6620494745206D6F646520666F72204F70656E5353'),
|
p.hexDecode('6D656E746174696F6E206F6620494745206D6F646520666F72204F70656E5353'),
|
||||||
)
|
)
|
||||||
expect(
|
expect(
|
||||||
p.hexEncode(
|
p.hexEncode(aes.encrypt(p.hexDecode('99706487a1cde613bc6de0b6f24b1c7aa448c8b9c3403e3467a8cad89340f53b'))),
|
||||||
aes.encrypt(p.hexDecode('99706487a1cde613bc6de0b6f24b1c7aa448c8b9c3403e3467a8cad89340f53b')),
|
|
||||||
),
|
|
||||||
).to.eq('792ea8ae577b1a66cb3bd92679b8030ca54ee631976bd3a04547fdcb4639fa69')
|
).to.eq('792ea8ae577b1a66cb3bd92679b8030ca54ee631976bd3a04547fdcb4639fa69')
|
||||||
expect(
|
expect(
|
||||||
p.hexEncode(
|
p.hexEncode(aes.decrypt(p.hexDecode('792ea8ae577b1a66cb3bd92679b8030ca54ee631976bd3a04547fdcb4639fa69'))),
|
||||||
aes.decrypt(p.hexDecode('792ea8ae577b1a66cb3bd92679b8030ca54ee631976bd3a04547fdcb4639fa69')),
|
|
||||||
),
|
|
||||||
).to.eq('99706487a1cde613bc6de0b6f24b1c7aa448c8b9c3403e3467a8cad89340f53b')
|
).to.eq('99706487a1cde613bc6de0b6f24b1c7aa448c8b9c3403e3467a8cad89340f53b')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -623,159 +623,6 @@ exports[`generateTlSchemasDifference shows added constructors 1`] = `
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
exports[`generateTlSchemasDifference shows removed constructors 1`] = `
|
|
||||||
{
|
|
||||||
"classes": {
|
|
||||||
"added": [],
|
|
||||||
"modified": [],
|
|
||||||
"removed": [
|
|
||||||
{
|
|
||||||
"arguments": [],
|
|
||||||
"id": 3847402009,
|
|
||||||
"kind": "class",
|
|
||||||
"name": "test2",
|
|
||||||
"type": "Test",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
"methods": {
|
|
||||||
"added": [],
|
|
||||||
"modified": [],
|
|
||||||
"removed": [],
|
|
||||||
},
|
|
||||||
"unions": {
|
|
||||||
"added": [],
|
|
||||||
"modified": [
|
|
||||||
{
|
|
||||||
"classes": {
|
|
||||||
"added": [],
|
|
||||||
"modified": [],
|
|
||||||
"removed": [
|
|
||||||
{
|
|
||||||
"arguments": [],
|
|
||||||
"id": 3847402009,
|
|
||||||
"kind": "class",
|
|
||||||
"name": "test2",
|
|
||||||
"type": "Test",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
"methods": {
|
|
||||||
"added": [],
|
|
||||||
"modified": [],
|
|
||||||
"removed": [],
|
|
||||||
},
|
|
||||||
"name": "Test",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"removed": [],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTlSchemasDifference shows modified constructors 1`] = `
|
|
||||||
{
|
|
||||||
"classes": {
|
|
||||||
"added": [],
|
|
||||||
"modified": [
|
|
||||||
{
|
|
||||||
"arguments": {
|
|
||||||
"added": [],
|
|
||||||
"modified": [
|
|
||||||
{
|
|
||||||
"name": "foo",
|
|
||||||
"type": {
|
|
||||||
"new": "Foo",
|
|
||||||
"old": "int",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"removed": [],
|
|
||||||
},
|
|
||||||
"id": {
|
|
||||||
"new": 3348640942,
|
|
||||||
"old": 1331975629,
|
|
||||||
},
|
|
||||||
"name": "test",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"removed": [],
|
|
||||||
},
|
|
||||||
"methods": {
|
|
||||||
"added": [],
|
|
||||||
"modified": [],
|
|
||||||
"removed": [],
|
|
||||||
},
|
|
||||||
"unions": {
|
|
||||||
"added": [],
|
|
||||||
"modified": [],
|
|
||||||
"removed": [],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTlSchemasDifference shows removed unions 1`] = `
|
|
||||||
{
|
|
||||||
"classes": {
|
|
||||||
"added": [],
|
|
||||||
"modified": [
|
|
||||||
{
|
|
||||||
"arguments": {
|
|
||||||
"added": [],
|
|
||||||
"modified": [
|
|
||||||
{
|
|
||||||
"name": "foo",
|
|
||||||
"type": {
|
|
||||||
"new": "Foo",
|
|
||||||
"old": "int",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"removed": [],
|
|
||||||
},
|
|
||||||
"id": {
|
|
||||||
"new": 3348640942,
|
|
||||||
"old": 1331975629,
|
|
||||||
},
|
|
||||||
"name": "test",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"removed": [
|
|
||||||
{
|
|
||||||
"arguments": [],
|
|
||||||
"id": 3739166976,
|
|
||||||
"kind": "class",
|
|
||||||
"name": "test1",
|
|
||||||
"type": "Test1",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
"methods": {
|
|
||||||
"added": [],
|
|
||||||
"modified": [],
|
|
||||||
"removed": [],
|
|
||||||
},
|
|
||||||
"unions": {
|
|
||||||
"added": [],
|
|
||||||
"modified": [],
|
|
||||||
"removed": [
|
|
||||||
{
|
|
||||||
"classes": [
|
|
||||||
{
|
|
||||||
"arguments": [],
|
|
||||||
"id": 3739166976,
|
|
||||||
"kind": "class",
|
|
||||||
"name": "test1",
|
|
||||||
"type": "Test1",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"name": "Test1",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTlSchemasDifference shows added unions 1`] = `
|
exports[`generateTlSchemasDifference shows added unions 1`] = `
|
||||||
{
|
{
|
||||||
"classes": {
|
"classes": {
|
||||||
|
@ -838,6 +685,79 @@ exports[`generateTlSchemasDifference shows added unions 1`] = `
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`generateTlSchemasDifference shows modified constructors 1`] = `
|
||||||
|
{
|
||||||
|
"classes": {
|
||||||
|
"added": [],
|
||||||
|
"modified": [
|
||||||
|
{
|
||||||
|
"arguments": {
|
||||||
|
"added": [],
|
||||||
|
"modified": [
|
||||||
|
{
|
||||||
|
"name": "foo",
|
||||||
|
"type": {
|
||||||
|
"new": "Foo",
|
||||||
|
"old": "int",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"removed": [],
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"new": 3348640942,
|
||||||
|
"old": 1331975629,
|
||||||
|
},
|
||||||
|
"name": "test",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"removed": [],
|
||||||
|
},
|
||||||
|
"methods": {
|
||||||
|
"added": [],
|
||||||
|
"modified": [],
|
||||||
|
"removed": [],
|
||||||
|
},
|
||||||
|
"unions": {
|
||||||
|
"added": [],
|
||||||
|
"modified": [],
|
||||||
|
"removed": [],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateTlSchemasDifference shows modified methods 1`] = `
|
||||||
|
{
|
||||||
|
"classes": {
|
||||||
|
"added": [],
|
||||||
|
"modified": [],
|
||||||
|
"removed": [],
|
||||||
|
},
|
||||||
|
"methods": {
|
||||||
|
"added": [],
|
||||||
|
"modified": [
|
||||||
|
{
|
||||||
|
"id": {
|
||||||
|
"new": 3994885231,
|
||||||
|
"old": 471282454,
|
||||||
|
},
|
||||||
|
"name": "test",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"removed": [],
|
||||||
|
},
|
||||||
|
"unions": {
|
||||||
|
"added": [
|
||||||
|
undefined,
|
||||||
|
],
|
||||||
|
"modified": [],
|
||||||
|
"removed": [
|
||||||
|
undefined,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`generateTlSchemasDifference shows modified unions 1`] = `
|
exports[`generateTlSchemasDifference shows modified unions 1`] = `
|
||||||
{
|
{
|
||||||
"classes": {
|
"classes": {
|
||||||
|
@ -1114,33 +1034,113 @@ exports[`generateTlSchemasDifference shows modified unions 3`] = `
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
exports[`generateTlSchemasDifference shows modified methods 1`] = `
|
exports[`generateTlSchemasDifference shows removed constructors 1`] = `
|
||||||
{
|
{
|
||||||
"classes": {
|
"classes": {
|
||||||
"added": [],
|
"added": [],
|
||||||
"modified": [],
|
"modified": [],
|
||||||
"removed": [],
|
"removed": [
|
||||||
|
{
|
||||||
|
"arguments": [],
|
||||||
|
"id": 3847402009,
|
||||||
|
"kind": "class",
|
||||||
|
"name": "test2",
|
||||||
|
"type": "Test",
|
||||||
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
"methods": {
|
"methods": {
|
||||||
|
"added": [],
|
||||||
|
"modified": [],
|
||||||
|
"removed": [],
|
||||||
|
},
|
||||||
|
"unions": {
|
||||||
"added": [],
|
"added": [],
|
||||||
"modified": [
|
"modified": [
|
||||||
{
|
{
|
||||||
"id": {
|
"classes": {
|
||||||
"new": 3994885231,
|
"added": [],
|
||||||
"old": 471282454,
|
"modified": [],
|
||||||
|
"removed": [
|
||||||
|
{
|
||||||
|
"arguments": [],
|
||||||
|
"id": 3847402009,
|
||||||
|
"kind": "class",
|
||||||
|
"name": "test2",
|
||||||
|
"type": "Test",
|
||||||
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
"name": "test",
|
"methods": {
|
||||||
|
"added": [],
|
||||||
|
"modified": [],
|
||||||
|
"removed": [],
|
||||||
|
},
|
||||||
|
"name": "Test",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"removed": [],
|
"removed": [],
|
||||||
},
|
},
|
||||||
"unions": {
|
}
|
||||||
"added": [
|
`;
|
||||||
undefined,
|
|
||||||
|
exports[`generateTlSchemasDifference shows removed unions 1`] = `
|
||||||
|
{
|
||||||
|
"classes": {
|
||||||
|
"added": [],
|
||||||
|
"modified": [
|
||||||
|
{
|
||||||
|
"arguments": {
|
||||||
|
"added": [],
|
||||||
|
"modified": [
|
||||||
|
{
|
||||||
|
"name": "foo",
|
||||||
|
"type": {
|
||||||
|
"new": "Foo",
|
||||||
|
"old": "int",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"removed": [],
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"new": 3348640942,
|
||||||
|
"old": 1331975629,
|
||||||
|
},
|
||||||
|
"name": "test",
|
||||||
|
},
|
||||||
],
|
],
|
||||||
|
"removed": [
|
||||||
|
{
|
||||||
|
"arguments": [],
|
||||||
|
"id": 3739166976,
|
||||||
|
"kind": "class",
|
||||||
|
"name": "test1",
|
||||||
|
"type": "Test1",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
"methods": {
|
||||||
|
"added": [],
|
||||||
|
"modified": [],
|
||||||
|
"removed": [],
|
||||||
|
},
|
||||||
|
"unions": {
|
||||||
|
"added": [],
|
||||||
"modified": [],
|
"modified": [],
|
||||||
"removed": [
|
"removed": [
|
||||||
undefined,
|
{
|
||||||
|
"classes": [
|
||||||
|
{
|
||||||
|
"arguments": [],
|
||||||
|
"id": 3739166976,
|
||||||
|
"kind": "class",
|
||||||
|
"name": "test1",
|
||||||
|
"type": "Test1",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"name": "Test1",
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -125,7 +125,7 @@ RpcError.fromTl = function (obj) {
|
||||||
|
|
||||||
var err = new RpcError(obj.errorCode, obj.errorMessage);
|
var err = new RpcError(obj.errorCode, obj.errorMessage);
|
||||||
var match, param;
|
var match, param;
|
||||||
if ((match=err.text.match(/^FLOOD_WAIT_(\d+)$/))!=null){ err.text = 'FLOOD_WAIT_%d'; param = err.duration = parseInt(match[1]) }
|
if ((match=err.text.match(/^FLOOD_WAIT_(d+)$/))!=null){ err.text = 'FLOOD_WAIT_%d'; param = err.duration = parseInt(match[1]) }
|
||||||
|
|
||||||
else return err
|
else return err
|
||||||
|
|
||||||
|
|
|
@ -59,6 +59,65 @@ exports[`generateReaderCodeForTlEntries > updates readers used in bare vectors 1
|
||||||
}"
|
}"
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`generateReaderCodeForTlEntries doesn't generate code for methods by default 1`] = `
|
||||||
|
"var m={
|
||||||
|
471282454:function(r){return{_:'test'}},
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateReaderCodeForTlEntries generates code for methods if asked to 1`] = `
|
||||||
|
"var m={
|
||||||
|
471282454:function(r){return{_:'test'}},
|
||||||
|
2119910527:function(r){return{_:'test2'}},
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateReaderCodeForTlEntries generates code for multiple entries 1`] = `
|
||||||
|
"var m={
|
||||||
|
471282454:function(r){return{_:'test'}},
|
||||||
|
2119910527:function(r){return{_:'test2'}},
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateReaderCodeForTlEntries method return readers doesn't include Bool parsing 1`] = `
|
||||||
|
"var m={
|
||||||
|
_results:{
|
||||||
|
},
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateReaderCodeForTlEntries method return readers includes primitive return type parsing info 1`] = `
|
||||||
|
"var m={
|
||||||
|
1809692154:function(r){return{_:'test1'}},
|
||||||
|
_results:{
|
||||||
|
'test':function(r){return r.int()},
|
||||||
|
},
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateReaderCodeForTlEntries method return readers includes primitive vectors return type parsing info 1`] = `
|
||||||
|
"var m={
|
||||||
|
_results:{
|
||||||
|
'test':function(r){return r.vector(r.int)},
|
||||||
|
},
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateReaderCodeForTlEntries method return readers includes primitive vectors return type parsing info 2`] = `
|
||||||
|
"var m={
|
||||||
|
_results:{
|
||||||
|
'test':function(r){return r.vector(r.int)},
|
||||||
|
},
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateReaderCodeForTlEntries updates readers used in bare vectors 1`] = `
|
||||||
|
"var m={
|
||||||
|
471282454:function(r=this){return{_:'test'}},
|
||||||
|
3562390222:function(r){return{_:'test2',a:r.vector(m[471282454],1),}},
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntry > generates code for bare types 1`] = `"1945237724:function(r){return{_:'msg_container',messages:r.vector(m[155834844],1),}},"`;
|
exports[`generateReaderCodeForTlEntry > generates code for bare types 1`] = `"1945237724:function(r){return{_:'msg_container',messages:r.vector(m[155834844],1),}},"`;
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntry > generates code for bare types 2`] = `"2924480661:function(r){return{_:'future_salts',salts:r.vector(m[155834844]),current:r.object(),}},"`;
|
exports[`generateReaderCodeForTlEntry > generates code for bare types 2`] = `"2924480661:function(r){return{_:'future_salts',salts:r.vector(m[155834844]),current:r.object(),}},"`;
|
||||||
|
@ -89,7 +148,21 @@ exports[`generateReaderCodeForTlEntry > generates code for constructors without
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntry > generates code with raw flags for constructors with flags 1`] = `"1554225816:function(r){var flags=r.uint(),flags2=r.uint();return{_:'test',flags:flags,flags2:flags2,}},"`;
|
exports[`generateReaderCodeForTlEntry > generates code with raw flags for constructors with flags 1`] = `"1554225816:function(r){var flags=r.uint(),flags2=r.uint();return{_:'test',flags:flags,flags2:flags2,}},"`;
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntry generates code for constructors without arguments 1`] = `"2875595611:function(r){return{_:'topPeerCategoryBotsPM'}},"`;
|
exports[`generateReaderCodeForTlEntry generates code for bare types 1`] = `"1945237724:function(r){return{_:'msg_container',messages:r.vector(m[155834844],1),}},"`;
|
||||||
|
|
||||||
|
exports[`generateReaderCodeForTlEntry generates code for bare types 2`] = `"2924480661:function(r){return{_:'future_salts',salts:r.vector(m[155834844]),current:r.object(),}},"`;
|
||||||
|
|
||||||
|
exports[`generateReaderCodeForTlEntry generates code for bare types 3`] = `"2924480661:function(r){return{_:'future_salts',salts:r.vector(m[155834844],1),current:m[155834844](r),}},"`;
|
||||||
|
|
||||||
|
exports[`generateReaderCodeForTlEntry generates code for constructors with arguments before flags field 1`] = `"2262925665:function(r){var id=r.long(),flags=r.uint();return{_:'poll',id:id,quiz:!!(flags&8),question:r.string(),}},"`;
|
||||||
|
|
||||||
|
exports[`generateReaderCodeForTlEntry generates code for constructors with generics 1`] = `"3667594509:function(r){return{_:'invokeWithLayer',layer:r.int(),query:r.object(),}},"`;
|
||||||
|
|
||||||
|
exports[`generateReaderCodeForTlEntry generates code for constructors with multiple flags fields 1`] = `"1041346555:function(r){var flags=r.uint(),pts=r.int(),timeout=flags&2?r.int():void 0,flags2=r.uint();return{_:'updates.channelDifferenceEmpty',final:!!(flags&1),pts:pts,timeout:timeout,canDeleteChannel:!!(flags2&1),}},"`;
|
||||||
|
|
||||||
|
exports[`generateReaderCodeForTlEntry generates code for constructors with optional arguments 1`] = `"1041346555:function(r){var flags=r.uint();return{_:'updates.channelDifferenceEmpty',final:!!(flags&1),pts:r.int(),timeout:flags&2?r.int():void 0,}},"`;
|
||||||
|
|
||||||
|
exports[`generateReaderCodeForTlEntry generates code for constructors with optional vector arguments 1`] = `"2338894028:function(r){var flags=r.uint();return{_:'messages.getWebPagePreview',message:r.string(),entities:flags&8?r.vector(r.object):void 0,}},"`;
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntry generates code for constructors with simple arguments 1`] = `"2299280777:function(r){return{_:'inputBotInlineMessageID',dcId:r.int(),id:r.long(),accessHash:r.long(),}},"`;
|
exports[`generateReaderCodeForTlEntry generates code for constructors with simple arguments 1`] = `"2299280777:function(r){return{_:'inputBotInlineMessageID',dcId:r.int(),id:r.long(),accessHash:r.long(),}},"`;
|
||||||
|
|
||||||
|
@ -99,81 +172,8 @@ exports[`generateReaderCodeForTlEntry generates code for constructors with simpl
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntry generates code for constructors with true flags 1`] = `"649453030:function(r){var flags=r.uint();return{_:'messages.messageEditData',caption:!!(flags&1),}},"`;
|
exports[`generateReaderCodeForTlEntry generates code for constructors with true flags 1`] = `"649453030:function(r){var flags=r.uint();return{_:'messages.messageEditData',caption:!!(flags&1),}},"`;
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntry generates code for constructors with optional arguments 1`] = `"1041346555:function(r){var flags=r.uint();return{_:'updates.channelDifferenceEmpty',final:!!(flags&1),pts:r.int(),timeout:flags&2?r.int():void 0,}},"`;
|
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntry generates code for constructors with arguments before flags field 1`] = `"2262925665:function(r){var id=r.long(),flags=r.uint();return{_:'poll',id:id,quiz:!!(flags&8),question:r.string(),}},"`;
|
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntry generates code for constructors with multiple flags fields 1`] = `"1041346555:function(r){var flags=r.uint(),pts=r.int(),timeout=flags&2?r.int():void 0,flags2=r.uint();return{_:'updates.channelDifferenceEmpty',final:!!(flags&1),pts:pts,timeout:timeout,canDeleteChannel:!!(flags2&1),}},"`;
|
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntry generates code for constructors with vector arguments 1`] = `"2131196633:function(r){return{_:'contacts.resolvedPeer',peer:r.object(),chats:r.vector(r.object),users:r.vector(r.object),}},"`;
|
exports[`generateReaderCodeForTlEntry generates code for constructors with vector arguments 1`] = `"2131196633:function(r){return{_:'contacts.resolvedPeer',peer:r.object(),chats:r.vector(r.object),users:r.vector(r.object),}},"`;
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntry generates code for constructors with optional vector arguments 1`] = `"2338894028:function(r){var flags=r.uint();return{_:'messages.getWebPagePreview',message:r.string(),entities:flags&8?r.vector(r.object):void 0,}},"`;
|
exports[`generateReaderCodeForTlEntry generates code for constructors without arguments 1`] = `"2875595611:function(r){return{_:'topPeerCategoryBotsPM'}},"`;
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntry generates code for constructors with generics 1`] = `"3667594509:function(r){return{_:'invokeWithLayer',layer:r.int(),query:r.object(),}},"`;
|
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntry generates code for bare types 1`] = `"1945237724:function(r){return{_:'msg_container',messages:r.vector(m[155834844],1),}},"`;
|
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntry generates code for bare types 2`] = `"2924480661:function(r){return{_:'future_salts',salts:r.vector(m[155834844]),current:r.object(),}},"`;
|
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntry generates code for bare types 3`] = `"2924480661:function(r){return{_:'future_salts',salts:r.vector(m[155834844],1),current:m[155834844](r),}},"`;
|
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntry generates code with raw flags for constructors with flags 1`] = `"1554225816:function(r){var flags=r.uint(),flags2=r.uint();return{_:'test',flags:flags,flags2:flags2,}},"`;
|
exports[`generateReaderCodeForTlEntry generates code with raw flags for constructors with flags 1`] = `"1554225816:function(r){var flags=r.uint(),flags2=r.uint();return{_:'test',flags:flags,flags2:flags2,}},"`;
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntries method return readers includes primitive return type parsing info 1`] = `
|
|
||||||
"var m={
|
|
||||||
1809692154:function(r){return{_:'test1'}},
|
|
||||||
_results:{
|
|
||||||
'test':function(r){return r.int()},
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntries method return readers includes primitive vectors return type parsing info 1`] = `
|
|
||||||
"var m={
|
|
||||||
_results:{
|
|
||||||
'test':function(r){return r.vector(r.int)},
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntries method return readers includes primitive vectors return type parsing info 2`] = `
|
|
||||||
"var m={
|
|
||||||
_results:{
|
|
||||||
'test':function(r){return r.vector(r.int)},
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntries method return readers doesn't include Bool parsing 1`] = `
|
|
||||||
"var m={
|
|
||||||
_results:{
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntries generates code for multiple entries 1`] = `
|
|
||||||
"var m={
|
|
||||||
471282454:function(r){return{_:'test'}},
|
|
||||||
2119910527:function(r){return{_:'test2'}},
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntries doesn't generate code for methods by default 1`] = `
|
|
||||||
"var m={
|
|
||||||
471282454:function(r){return{_:'test'}},
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntries generates code for methods if asked to 1`] = `
|
|
||||||
"var m={
|
|
||||||
471282454:function(r){return{_:'test'}},
|
|
||||||
2119910527:function(r){return{_:'test2'}},
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateReaderCodeForTlEntries updates readers used in bare vectors 1`] = `
|
|
||||||
"var m={
|
|
||||||
471282454:function(r=this){return{_:'test'}},
|
|
||||||
3562390222:function(r){return{_:'test2',a:r.vector(m[471282454],1),}},
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
|
@ -163,6 +163,169 @@ exports[`generateTypescriptDefinitionsForTlEntry > writes generic types 1`] = `
|
||||||
}"
|
}"
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`generateTypescriptDefinitionsForTlEntry comments adds return type comments 1`] = `
|
||||||
|
"/**
|
||||||
|
* This is a test method
|
||||||
|
*
|
||||||
|
* RPC method returns {@link tl.TypeTest}
|
||||||
|
*/
|
||||||
|
interface RawTestRequest {
|
||||||
|
_: 'test';
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateTypescriptDefinitionsForTlEntry comments adds return type comments 2`] = `
|
||||||
|
"/**
|
||||||
|
* This is a test method
|
||||||
|
*
|
||||||
|
* RPC method returns {@link tl.TypeTest}
|
||||||
|
*/
|
||||||
|
interface RawTestRequest {
|
||||||
|
_: 'test';
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateTypescriptDefinitionsForTlEntry comments adds return type comments 3`] = `
|
||||||
|
"/**
|
||||||
|
* RPC method returns {@link tl.TypeTest} array
|
||||||
|
*/
|
||||||
|
interface RawTestRequest {
|
||||||
|
_: 'test';
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateTypescriptDefinitionsForTlEntry comments adds tdlib style comments 1`] = `
|
||||||
|
"/**
|
||||||
|
* This is a test constructor
|
||||||
|
*/
|
||||||
|
interface RawTest {
|
||||||
|
_: 'test';
|
||||||
|
/**
|
||||||
|
* Some field
|
||||||
|
*/
|
||||||
|
field: number;
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateTypescriptDefinitionsForTlEntry comments adds tl style comments 1`] = `
|
||||||
|
"/**
|
||||||
|
* This is a test constructor
|
||||||
|
*/
|
||||||
|
interface RawTest {
|
||||||
|
_: 'test';
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateTypescriptDefinitionsForTlEntry comments adds usage info comments 1`] = `
|
||||||
|
"/**
|
||||||
|
* RPC method returns {@link tl.TypeTest}
|
||||||
|
*
|
||||||
|
* This method is **not** available for bots
|
||||||
|
*
|
||||||
|
* This method *may* throw one of these errors: FOO, BAR
|
||||||
|
*/
|
||||||
|
interface RawTestRequest {
|
||||||
|
_: 'test';
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateTypescriptDefinitionsForTlEntry comments adds usage info comments 2`] = `
|
||||||
|
"/**
|
||||||
|
* RPC method returns {@link tl.TypeTest}
|
||||||
|
*
|
||||||
|
* This method is **not** available for normal users
|
||||||
|
*/
|
||||||
|
interface RawTestBotRequest {
|
||||||
|
_: 'testBot';
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateTypescriptDefinitionsForTlEntry comments should not break @link tags 1`] = `
|
||||||
|
"/**
|
||||||
|
* This is a test constructor with a very long comment
|
||||||
|
* {@link whatever} more text
|
||||||
|
*/
|
||||||
|
interface RawTest {
|
||||||
|
_: 'test';
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateTypescriptDefinitionsForTlEntry comments wraps long comments 1`] = `
|
||||||
|
"/**
|
||||||
|
* This is a test constructor with a very very very very very
|
||||||
|
* very very very long comment
|
||||||
|
*/
|
||||||
|
interface RawTest {
|
||||||
|
_: 'test';
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateTypescriptDefinitionsForTlEntry comments wraps long comments 2`] = `
|
||||||
|
"/**
|
||||||
|
* This is a test method with a very very very very very very
|
||||||
|
* very very long comment
|
||||||
|
*
|
||||||
|
* RPC method returns {@link tl.TypeTest}
|
||||||
|
*/
|
||||||
|
interface RawTestRequest {
|
||||||
|
_: 'test';
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateTypescriptDefinitionsForTlEntry generates code with raw flags for constructors with flags 1`] = `
|
||||||
|
"interface RawTest {
|
||||||
|
_: 'test';
|
||||||
|
flags: number;
|
||||||
|
flags2: number;
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateTypescriptDefinitionsForTlEntry ignores namespace for name 1`] = `
|
||||||
|
"interface RawTest {
|
||||||
|
_: 'test.test';
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateTypescriptDefinitionsForTlEntry marks optional fields as optional 1`] = `
|
||||||
|
"interface RawTest {
|
||||||
|
_: 'test';
|
||||||
|
a?: boolean;
|
||||||
|
b?: string;
|
||||||
|
c?: tl.TypeFoo;
|
||||||
|
d?: tl.namespace.TypeFoo[];
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateTypescriptDefinitionsForTlEntry renames non-primitive types 1`] = `
|
||||||
|
"interface RawTest {
|
||||||
|
_: 'test';
|
||||||
|
foo: tl.TypeFoo;
|
||||||
|
bar: tl.TypeBar[];
|
||||||
|
baz: tl.namespace.TypeBaz;
|
||||||
|
egg: tl.namespace.TypeEgg[];
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateTypescriptDefinitionsForTlEntry replaces primitive types 1`] = `
|
||||||
|
"interface RawTest {
|
||||||
|
_: 'test';
|
||||||
|
a: number;
|
||||||
|
b: Long;
|
||||||
|
c: Double;
|
||||||
|
d: string;
|
||||||
|
e: Uint8Array;
|
||||||
|
f: boolean;
|
||||||
|
g: number[];
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateTypescriptDefinitionsForTlEntry writes generic types 1`] = `
|
||||||
|
"interface RawInvokeWithoutUpdatesRequest<X extends tl.TlObject = tl.TlObject> {
|
||||||
|
_: 'invokeWithoutUpdates';
|
||||||
|
query: X;
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlSchema > writes schemas with methods 1`] = `
|
exports[`generateTypescriptDefinitionsForTlSchema > writes schemas with methods 1`] = `
|
||||||
"interface RawTest {
|
"interface RawTest {
|
||||||
_: 'test';
|
_: 'test';
|
||||||
|
@ -291,209 +454,6 @@ exports[`generateTypescriptDefinitionsForTlSchema > writes simple schemas 2`] =
|
||||||
_types = JSON.parse('{"test":"Test"}');"
|
_types = JSON.parse('{"test":"Test"}');"
|
||||||
`;
|
`;
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlEntry comments adds tl style comments 1`] = `
|
|
||||||
"/**
|
|
||||||
* This is a test constructor
|
|
||||||
*/
|
|
||||||
interface RawTest {
|
|
||||||
_: 'test';
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlEntry comments adds return type comments 1`] = `
|
|
||||||
"/**
|
|
||||||
* This is a test method
|
|
||||||
*
|
|
||||||
* RPC method returns {@link tl.TypeTest}
|
|
||||||
*/
|
|
||||||
interface RawTestRequest {
|
|
||||||
_: 'test';
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlEntry comments adds return type comments 2`] = `
|
|
||||||
"/**
|
|
||||||
* This is a test method
|
|
||||||
*
|
|
||||||
* RPC method returns {@link tl.TypeTest}
|
|
||||||
*/
|
|
||||||
interface RawTestRequest {
|
|
||||||
_: 'test';
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlEntry comments adds return type comments 3`] = `
|
|
||||||
"/**
|
|
||||||
* RPC method returns {@link tl.TypeTest} array
|
|
||||||
*/
|
|
||||||
interface RawTestRequest {
|
|
||||||
_: 'test';
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlEntry comments adds usage info comments 1`] = `
|
|
||||||
"/**
|
|
||||||
* RPC method returns {@link tl.TypeTest}
|
|
||||||
*
|
|
||||||
* This method is **not** available for bots
|
|
||||||
*
|
|
||||||
* This method *may* throw one of these errors: FOO, BAR
|
|
||||||
*/
|
|
||||||
interface RawTestRequest {
|
|
||||||
_: 'test';
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlEntry comments adds usage info comments 2`] = `
|
|
||||||
"/**
|
|
||||||
* RPC method returns {@link tl.TypeTest}
|
|
||||||
*
|
|
||||||
* This method is **not** available for normal users
|
|
||||||
*/
|
|
||||||
interface RawTestBotRequest {
|
|
||||||
_: 'testBot';
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlEntry comments adds tdlib style comments 1`] = `
|
|
||||||
"/**
|
|
||||||
* This is a test constructor
|
|
||||||
*/
|
|
||||||
interface RawTest {
|
|
||||||
_: 'test';
|
|
||||||
/**
|
|
||||||
* Some field
|
|
||||||
*/
|
|
||||||
field: number;
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlEntry comments wraps long comments 1`] = `
|
|
||||||
"/**
|
|
||||||
* This is a test constructor with a very very very very very
|
|
||||||
* very very very long comment
|
|
||||||
*/
|
|
||||||
interface RawTest {
|
|
||||||
_: 'test';
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlEntry comments wraps long comments 2`] = `
|
|
||||||
"/**
|
|
||||||
* This is a test method with a very very very very very very
|
|
||||||
* very very long comment
|
|
||||||
*
|
|
||||||
* RPC method returns {@link tl.TypeTest}
|
|
||||||
*/
|
|
||||||
interface RawTestRequest {
|
|
||||||
_: 'test';
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlEntry comments should not break @link tags 1`] = `
|
|
||||||
"/**
|
|
||||||
* This is a test constructor with a very long comment
|
|
||||||
* {@link whatever} more text
|
|
||||||
*/
|
|
||||||
interface RawTest {
|
|
||||||
_: 'test';
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlEntry replaces primitive types 1`] = `
|
|
||||||
"interface RawTest {
|
|
||||||
_: 'test';
|
|
||||||
a: number;
|
|
||||||
b: Long;
|
|
||||||
c: Double;
|
|
||||||
d: string;
|
|
||||||
e: Uint8Array;
|
|
||||||
f: boolean;
|
|
||||||
g: number[];
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlEntry ignores namespace for name 1`] = `
|
|
||||||
"interface RawTest {
|
|
||||||
_: 'test.test';
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlEntry renames non-primitive types 1`] = `
|
|
||||||
"interface RawTest {
|
|
||||||
_: 'test';
|
|
||||||
foo: tl.TypeFoo;
|
|
||||||
bar: tl.TypeBar[];
|
|
||||||
baz: tl.namespace.TypeBaz;
|
|
||||||
egg: tl.namespace.TypeEgg[];
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlEntry marks optional fields as optional 1`] = `
|
|
||||||
"interface RawTest {
|
|
||||||
_: 'test';
|
|
||||||
a?: boolean;
|
|
||||||
b?: string;
|
|
||||||
c?: tl.TypeFoo;
|
|
||||||
d?: tl.namespace.TypeFoo[];
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlEntry writes generic types 1`] = `
|
|
||||||
"interface RawInvokeWithoutUpdatesRequest<X extends tl.TlObject = tl.TlObject> {
|
|
||||||
_: 'invokeWithoutUpdates';
|
|
||||||
query: X;
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlEntry generates code with raw flags for constructors with flags 1`] = `
|
|
||||||
"interface RawTest {
|
|
||||||
_: 'test';
|
|
||||||
flags: number;
|
|
||||||
flags2: number;
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlSchema writes simple schemas 1`] = `
|
|
||||||
"interface RawTest {
|
|
||||||
_: 'test';
|
|
||||||
}
|
|
||||||
interface RpcCallReturn {
|
|
||||||
}
|
|
||||||
type TypeTest = tl.RawTest
|
|
||||||
function isAnyTest(o: object): o is TypeTest
|
|
||||||
|
|
||||||
type TlObject =
|
|
||||||
| tl.RawTest"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlSchema writes simple schemas 2`] = `
|
|
||||||
"ns.isAnyTest = _isAny('Test');
|
|
||||||
_types = JSON.parse('{"test":"Test"}');"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlSchema writes schemas with multi-unions 1`] = `
|
|
||||||
"interface RawTest {
|
|
||||||
_: 'test';
|
|
||||||
}
|
|
||||||
interface RawTest2 {
|
|
||||||
_: 'test2';
|
|
||||||
}
|
|
||||||
interface RpcCallReturn {
|
|
||||||
}
|
|
||||||
type TypeTest = tl.RawTest | tl.RawTest2
|
|
||||||
function isAnyTest(o: object): o is TypeTest
|
|
||||||
|
|
||||||
type TlObject =
|
|
||||||
| tl.RawTest
|
|
||||||
| tl.RawTest2"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlSchema writes schemas with multi-unions 2`] = `
|
|
||||||
"ns.isAnyTest = _isAny('Test');
|
|
||||||
_types = JSON.parse('{"test":"Test","test2":"Test"}');"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlSchema writes schemas with methods 1`] = `
|
exports[`generateTypescriptDefinitionsForTlSchema writes schemas with methods 1`] = `
|
||||||
"interface RawTest {
|
"interface RawTest {
|
||||||
_: 'test';
|
_: 'test';
|
||||||
|
@ -522,6 +482,28 @@ exports[`generateTypescriptDefinitionsForTlSchema writes schemas with methods 2`
|
||||||
_types = JSON.parse('{"test":"Test"}');"
|
_types = JSON.parse('{"test":"Test"}');"
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`generateTypescriptDefinitionsForTlSchema writes schemas with multi-unions 1`] = `
|
||||||
|
"interface RawTest {
|
||||||
|
_: 'test';
|
||||||
|
}
|
||||||
|
interface RawTest2 {
|
||||||
|
_: 'test2';
|
||||||
|
}
|
||||||
|
interface RpcCallReturn {
|
||||||
|
}
|
||||||
|
type TypeTest = tl.RawTest | tl.RawTest2
|
||||||
|
function isAnyTest(o: object): o is TypeTest
|
||||||
|
|
||||||
|
type TlObject =
|
||||||
|
| tl.RawTest
|
||||||
|
| tl.RawTest2"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateTypescriptDefinitionsForTlSchema writes schemas with multi-unions 2`] = `
|
||||||
|
"ns.isAnyTest = _isAny('Test');
|
||||||
|
_types = JSON.parse('{"test":"Test","test2":"Test"}');"
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`generateTypescriptDefinitionsForTlSchema writes schemas with namespaces 1`] = `
|
exports[`generateTypescriptDefinitionsForTlSchema writes schemas with namespaces 1`] = `
|
||||||
"interface RawTest {
|
"interface RawTest {
|
||||||
_: 'test';
|
_: 'test';
|
||||||
|
@ -581,3 +563,21 @@ ns.isAnyTest = _isAny('test.Test');
|
||||||
})(ns.test);
|
})(ns.test);
|
||||||
_types = JSON.parse('{"test":"Test","test2":"Test","test.test":"test.Test","test.test2":"test.Test"}');"
|
_types = JSON.parse('{"test":"Test","test2":"Test","test.test":"test.Test","test.test2":"test.Test"}');"
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`generateTypescriptDefinitionsForTlSchema writes simple schemas 1`] = `
|
||||||
|
"interface RawTest {
|
||||||
|
_: 'test';
|
||||||
|
}
|
||||||
|
interface RpcCallReturn {
|
||||||
|
}
|
||||||
|
type TypeTest = tl.RawTest
|
||||||
|
function isAnyTest(o: object): o is TypeTest
|
||||||
|
|
||||||
|
type TlObject =
|
||||||
|
| tl.RawTest"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateTypescriptDefinitionsForTlSchema writes simple schemas 2`] = `
|
||||||
|
"ns.isAnyTest = _isAny('Test');
|
||||||
|
_types = JSON.parse('{"test":"Test"}');"
|
||||||
|
`;
|
||||||
|
|
|
@ -29,6 +29,35 @@ _staticSize:{
|
||||||
}"
|
}"
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`generateWriterCodeForTlEntries generates code for bare types 1`] = `
|
||||||
|
"var m={
|
||||||
|
'future_salt':function(w,v){w.uint(155834844);w.bytes(h(v,'salt'));},
|
||||||
|
'future_salts':function(w,v){w.uint(2924480661);w.vector(m._bare[155834844],h(v,'salts'),1);m._bare[155834844](w,h(v,'current'));},
|
||||||
|
_bare:{
|
||||||
|
155834844:function(w=this,v){w.bytes(h(v,'salt'));},
|
||||||
|
},
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateWriterCodeForTlEntries should include prelude by default 1`] = `
|
||||||
|
"function h(o,p){var q=o[p];if(q===void 0)throw Error('Object '+o._+' is missing required property '+p);return q}
|
||||||
|
var m={
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`generateWriterCodeForTlEntries should include static sizes calculations 1`] = `
|
||||||
|
"function h(o,p){var q=o[p];if(q===void 0)throw Error('Object '+o._+' is missing required property '+p);return q}
|
||||||
|
var m={
|
||||||
|
'test1':function(w,v){w.uint(102026291);w.int(h(v,'foo'));w.int(h(v,'bar'));},
|
||||||
|
'test2':function(w,v){w.uint(2926357645);w.int(h(v,'foo'));w.double(h(v,'bar'));},
|
||||||
|
'test3':function(w,v){w.uint(3373702963);w.int(h(v,'foo'));w.bytes(h(v,'bar'));},
|
||||||
|
_staticSize:{
|
||||||
|
'test1':12,
|
||||||
|
'test2':16,
|
||||||
|
},
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`generateWriterCodeForTlEntry > automatically computes constructor ID if needed 1`] = `"'topPeerCategoryBotsPM':function(w){w.uint(2875595611);},"`;
|
exports[`generateWriterCodeForTlEntry > automatically computes constructor ID if needed 1`] = `"'topPeerCategoryBotsPM':function(w){w.uint(2875595611);},"`;
|
||||||
|
|
||||||
exports[`generateWriterCodeForTlEntry > generates code for bare vectors 1`] = `"'msg_container':function(w,v){w.uint(1945237724);w.vector(m._bare[155834844],h(v,'messages'),1);},"`;
|
exports[`generateWriterCodeForTlEntry > generates code for bare vectors 1`] = `"'msg_container':function(w,v){w.uint(1945237724);w.vector(m._bare[155834844],h(v,'messages'),1);},"`;
|
||||||
|
@ -59,7 +88,21 @@ exports[`generateWriterCodeForTlEntry > generates code for constructors without
|
||||||
|
|
||||||
exports[`generateWriterCodeForTlEntry > generates code with raw flags for constructors with flags 1`] = `"'test':function(w,v){w.uint(1554225816);var flags=v.flags;w.uint(flags);var flags2=v.flags2;w.uint(flags2);},"`;
|
exports[`generateWriterCodeForTlEntry > generates code with raw flags for constructors with flags 1`] = `"'test':function(w,v){w.uint(1554225816);var flags=v.flags;w.uint(flags);var flags2=v.flags2;w.uint(flags2);},"`;
|
||||||
|
|
||||||
exports[`generateWriterCodeForTlEntry generates code for constructors without arguments 1`] = `"'topPeerCategoryBotsPM':function(w){w.uint(2875595611);},"`;
|
exports[`generateWriterCodeForTlEntry automatically computes constructor ID if needed 1`] = `"'topPeerCategoryBotsPM':function(w){w.uint(2875595611);},"`;
|
||||||
|
|
||||||
|
exports[`generateWriterCodeForTlEntry generates code for bare vectors 1`] = `"'msg_container':function(w,v){w.uint(1945237724);w.vector(m._bare[155834844],h(v,'messages'),1);},"`;
|
||||||
|
|
||||||
|
exports[`generateWriterCodeForTlEntry generates code for bare vectors 2`] = `"'future_salts':function(w,v){w.uint(2924480661);w.vector(m._bare[155834844],h(v,'salts'));w.object(h(v,'current'));},"`;
|
||||||
|
|
||||||
|
exports[`generateWriterCodeForTlEntry generates code for constructors with generics 1`] = `"'invokeWithLayer':function(w,v){w.uint(3667594509);w.int(h(v,'layer'));w.object(h(v,'query'));},"`;
|
||||||
|
|
||||||
|
exports[`generateWriterCodeForTlEntry generates code for constructors with multiple fields using the same flag 1`] = `"'inputMediaPoll':function(w,v){w.uint(261416433);var flags=0;var _solution=v.solution!==undefined;var _solutionEntities=v.solutionEntities&&v.solutionEntities.length;var _flags_1=_solution||_solutionEntities;if(_flags_1)flags|=2;w.uint(flags);if(_flags_1)w.string(v.solution);if(_flags_1)w.vector(w.object,v.solutionEntities);},"`;
|
||||||
|
|
||||||
|
exports[`generateWriterCodeForTlEntry generates code for constructors with multiple flags fields 1`] = `"'updates.channelDifferenceEmpty':function(w,v){w.uint(1041346555);var flags=0;if(v.final===true)flags|=1;var _timeout=v.timeout!==undefined;if(_timeout)flags|=2;w.uint(flags);w.int(h(v,'pts'));if(_timeout)w.int(v.timeout);var flags2=0;if(v.canDeleteChannel===true)flags2|=1;w.uint(flags2);},"`;
|
||||||
|
|
||||||
|
exports[`generateWriterCodeForTlEntry generates code for constructors with optional arguments 1`] = `"'updates.channelDifferenceEmpty':function(w,v){w.uint(1041346555);var flags=0;if(v.final===true)flags|=1;var _timeout=v.timeout!==undefined;if(_timeout)flags|=2;w.uint(flags);w.int(h(v,'pts'));if(_timeout)w.int(v.timeout);},"`;
|
||||||
|
|
||||||
|
exports[`generateWriterCodeForTlEntry generates code for constructors with optional vector arguments 1`] = `"'messages.getWebPagePreview':function(w,v){w.uint(2338894028);var flags=0;var _entities=v.entities&&v.entities.length;if(_entities)flags|=8;w.uint(flags);w.string(h(v,'message'));if(_entities)w.vector(w.object,v.entities);},"`;
|
||||||
|
|
||||||
exports[`generateWriterCodeForTlEntry generates code for constructors with simple arguments 1`] = `"'inputBotInlineMessageID':function(w,v){w.uint(2299280777);w.int(h(v,'dcId'));w.long(h(v,'id'));w.long(h(v,'accessHash'));},"`;
|
exports[`generateWriterCodeForTlEntry generates code for constructors with simple arguments 1`] = `"'inputBotInlineMessageID':function(w,v){w.uint(2299280777);w.int(h(v,'dcId'));w.long(h(v,'id'));w.long(h(v,'accessHash'));},"`;
|
||||||
|
|
||||||
|
@ -69,51 +112,8 @@ exports[`generateWriterCodeForTlEntry generates code for constructors with simpl
|
||||||
|
|
||||||
exports[`generateWriterCodeForTlEntry generates code for constructors with true flags 1`] = `"'messages.messageEditData':function(w,v){w.uint(649453030);var flags=0;if(v.caption===true)flags|=1;w.uint(flags);},"`;
|
exports[`generateWriterCodeForTlEntry generates code for constructors with true flags 1`] = `"'messages.messageEditData':function(w,v){w.uint(649453030);var flags=0;if(v.caption===true)flags|=1;w.uint(flags);},"`;
|
||||||
|
|
||||||
exports[`generateWriterCodeForTlEntry generates code for constructors with optional arguments 1`] = `"'updates.channelDifferenceEmpty':function(w,v){w.uint(1041346555);var flags=0;if(v.final===true)flags|=1;var _timeout=v.timeout!==undefined;if(_timeout)flags|=2;w.uint(flags);w.int(h(v,'pts'));if(_timeout)w.int(v.timeout);},"`;
|
|
||||||
|
|
||||||
exports[`generateWriterCodeForTlEntry generates code for constructors with multiple flags fields 1`] = `"'updates.channelDifferenceEmpty':function(w,v){w.uint(1041346555);var flags=0;if(v.final===true)flags|=1;var _timeout=v.timeout!==undefined;if(_timeout)flags|=2;w.uint(flags);w.int(h(v,'pts'));if(_timeout)w.int(v.timeout);var flags2=0;if(v.canDeleteChannel===true)flags2|=1;w.uint(flags2);},"`;
|
|
||||||
|
|
||||||
exports[`generateWriterCodeForTlEntry generates code for constructors with multiple fields using the same flag 1`] = `"'inputMediaPoll':function(w,v){w.uint(261416433);var flags=0;var _solution=v.solution!==undefined;var _solutionEntities=v.solutionEntities&&v.solutionEntities.length;var _flags_1=_solution||_solutionEntities;if(_flags_1)flags|=2;w.uint(flags);if(_flags_1)w.string(v.solution);if(_flags_1)w.vector(w.object,v.solutionEntities);},"`;
|
|
||||||
|
|
||||||
exports[`generateWriterCodeForTlEntry generates code for constructors with vector arguments 1`] = `"'contacts.resolvedPeer':function(w,v){w.uint(2131196633);w.object(h(v,'peer'));w.vector(w.object,h(v,'chats'));w.vector(w.object,h(v,'users'));},"`;
|
exports[`generateWriterCodeForTlEntry generates code for constructors with vector arguments 1`] = `"'contacts.resolvedPeer':function(w,v){w.uint(2131196633);w.object(h(v,'peer'));w.vector(w.object,h(v,'chats'));w.vector(w.object,h(v,'users'));},"`;
|
||||||
|
|
||||||
exports[`generateWriterCodeForTlEntry generates code for constructors with optional vector arguments 1`] = `"'messages.getWebPagePreview':function(w,v){w.uint(2338894028);var flags=0;var _entities=v.entities&&v.entities.length;if(_entities)flags|=8;w.uint(flags);w.string(h(v,'message'));if(_entities)w.vector(w.object,v.entities);},"`;
|
exports[`generateWriterCodeForTlEntry generates code for constructors without arguments 1`] = `"'topPeerCategoryBotsPM':function(w){w.uint(2875595611);},"`;
|
||||||
|
|
||||||
exports[`generateWriterCodeForTlEntry generates code for constructors with generics 1`] = `"'invokeWithLayer':function(w,v){w.uint(3667594509);w.int(h(v,'layer'));w.object(h(v,'query'));},"`;
|
|
||||||
|
|
||||||
exports[`generateWriterCodeForTlEntry generates code for bare vectors 1`] = `"'msg_container':function(w,v){w.uint(1945237724);w.vector(m._bare[155834844],h(v,'messages'),1);},"`;
|
|
||||||
|
|
||||||
exports[`generateWriterCodeForTlEntry generates code for bare vectors 2`] = `"'future_salts':function(w,v){w.uint(2924480661);w.vector(m._bare[155834844],h(v,'salts'));w.object(h(v,'current'));},"`;
|
|
||||||
|
|
||||||
exports[`generateWriterCodeForTlEntry generates code with raw flags for constructors with flags 1`] = `"'test':function(w,v){w.uint(1554225816);var flags=v.flags;w.uint(flags);var flags2=v.flags2;w.uint(flags2);},"`;
|
exports[`generateWriterCodeForTlEntry generates code with raw flags for constructors with flags 1`] = `"'test':function(w,v){w.uint(1554225816);var flags=v.flags;w.uint(flags);var flags2=v.flags2;w.uint(flags2);},"`;
|
||||||
|
|
||||||
exports[`generateWriterCodeForTlEntry automatically computes constructor ID if needed 1`] = `"'topPeerCategoryBotsPM':function(w){w.uint(2875595611);},"`;
|
|
||||||
|
|
||||||
exports[`generateWriterCodeForTlEntries generates code for bare types 1`] = `
|
|
||||||
"var m={
|
|
||||||
'future_salt':function(w,v){w.uint(155834844);w.bytes(h(v,'salt'));},
|
|
||||||
'future_salts':function(w,v){w.uint(2924480661);w.vector(m._bare[155834844],h(v,'salts'),1);m._bare[155834844](w,h(v,'current'));},
|
|
||||||
_bare:{
|
|
||||||
155834844:function(w=this,v){w.bytes(h(v,'salt'));},
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateWriterCodeForTlEntries should include prelude by default 1`] = `
|
|
||||||
"function h(o,p){var q=o[p];if(q===void 0)throw Error('Object '+o._+' is missing required property '+p);return q}
|
|
||||||
var m={
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`generateWriterCodeForTlEntries should include static sizes calculations 1`] = `
|
|
||||||
"function h(o,p){var q=o[p];if(q===void 0)throw Error('Object '+o._+' is missing required property '+p);return q}
|
|
||||||
var m={
|
|
||||||
'test1':function(w,v){w.uint(102026291);w.int(h(v,'foo'));w.int(h(v,'bar'));},
|
|
||||||
'test2':function(w,v){w.uint(2926357645);w.int(h(v,'foo'));w.double(h(v,'bar'));},
|
|
||||||
'test3':function(w,v){w.uint(3373702963);w.int(h(v,'foo'));w.bytes(h(v,'bar'));},
|
|
||||||
_staticSize:{
|
|
||||||
'test1':12,
|
|
||||||
'test2':16,
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
`;
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { initSync } from '../src/index.js'
|
||||||
export async function initWasm() {
|
export async function initWasm() {
|
||||||
const url = new URL('../mtcute.wasm', import.meta.url)
|
const url = new URL('../mtcute.wasm', import.meta.url)
|
||||||
|
|
||||||
if (import.meta.env.TEST_ENV === 'node' || import.meta.env.TEST_ENV === 'bun') {
|
if (import.meta.env.TEST_ENV === 'node') {
|
||||||
const fs = await import('fs/promises')
|
const fs = await import('fs/promises')
|
||||||
const blob = await fs.readFile(url)
|
const blob = await fs.readFile(url)
|
||||||
initSync(blob)
|
initSync(blob)
|
||||||
|
|
|
@ -42,6 +42,9 @@ importers:
|
||||||
'@vitest/ui':
|
'@vitest/ui':
|
||||||
specifier: 1.4.0
|
specifier: 1.4.0
|
||||||
version: 1.4.0(vitest@1.4.0)
|
version: 1.4.0(vitest@1.4.0)
|
||||||
|
chai:
|
||||||
|
specifier: ^5.1.0
|
||||||
|
version: 5.1.0
|
||||||
cjs-module-lexer:
|
cjs-module-lexer:
|
||||||
specifier: 1.2.3
|
specifier: 1.2.3
|
||||||
version: 1.2.3
|
version: 1.2.3
|
||||||
|
@ -1620,7 +1623,7 @@ packages:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vitest/spy': 0.34.6
|
'@vitest/spy': 0.34.6
|
||||||
'@vitest/utils': 0.34.6
|
'@vitest/utils': 0.34.6
|
||||||
chai: 4.3.10
|
chai: 4.4.1
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@vitest/expect@1.4.0:
|
/@vitest/expect@1.4.0:
|
||||||
|
@ -1909,6 +1912,11 @@ packages:
|
||||||
/assertion-error@1.1.0:
|
/assertion-error@1.1.0:
|
||||||
resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
|
resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
|
||||||
|
|
||||||
|
/assertion-error@2.0.1:
|
||||||
|
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/astral-regex@2.0.0:
|
/astral-regex@2.0.0:
|
||||||
resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
|
resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
@ -2028,19 +2036,6 @@ packages:
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/chai@4.3.10:
|
|
||||||
resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==}
|
|
||||||
engines: {node: '>=4'}
|
|
||||||
dependencies:
|
|
||||||
assertion-error: 1.1.0
|
|
||||||
check-error: 1.0.3
|
|
||||||
deep-eql: 4.1.3
|
|
||||||
get-func-name: 2.0.2
|
|
||||||
loupe: 2.3.7
|
|
||||||
pathval: 1.1.1
|
|
||||||
type-detect: 4.0.8
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/chai@4.4.1:
|
/chai@4.4.1:
|
||||||
resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==}
|
resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
|
@ -2053,6 +2048,17 @@ packages:
|
||||||
pathval: 1.1.1
|
pathval: 1.1.1
|
||||||
type-detect: 4.0.8
|
type-detect: 4.0.8
|
||||||
|
|
||||||
|
/chai@5.1.0:
|
||||||
|
resolution: {integrity: sha512-kDZ7MZyM6Q1DhR9jy7dalKohXQ2yrlXkk59CR52aRKxJrobmlBNqnFQxX9xOX8w+4mz8SYlKJa/7D7ddltFXCw==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
dependencies:
|
||||||
|
assertion-error: 2.0.1
|
||||||
|
check-error: 2.0.0
|
||||||
|
deep-eql: 5.0.1
|
||||||
|
loupe: 3.1.0
|
||||||
|
pathval: 2.0.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
/chalk@2.4.2:
|
/chalk@2.4.2:
|
||||||
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
|
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
|
@ -2088,6 +2094,11 @@ packages:
|
||||||
dependencies:
|
dependencies:
|
||||||
get-func-name: 2.0.2
|
get-func-name: 2.0.2
|
||||||
|
|
||||||
|
/check-error@2.0.0:
|
||||||
|
resolution: {integrity: sha512-tjLAOBHKVxtPoHe/SA7kNOMvhCRdCJ3vETdeY0RuAc9popf+hyaSV6ZEg9hr4cpWF7jmo/JSWEnLDrnijS9Tog==}
|
||||||
|
engines: {node: '>= 16'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/cheerio-select@2.1.0:
|
/cheerio-select@2.1.0:
|
||||||
resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==}
|
resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==}
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -2371,6 +2382,11 @@ packages:
|
||||||
dependencies:
|
dependencies:
|
||||||
type-detect: 4.0.8
|
type-detect: 4.0.8
|
||||||
|
|
||||||
|
/deep-eql@5.0.1:
|
||||||
|
resolution: {integrity: sha512-nwQCf6ne2gez3o1MxWifqkciwt0zhl0LO1/UwVu4uMBuPmflWM4oQ70XMqHqnBJA+nhzncaqL9HVL6KkHJ28lw==}
|
||||||
|
engines: {node: '>=6'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/deep-extend@0.6.0:
|
/deep-extend@0.6.0:
|
||||||
resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
|
resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
|
||||||
engines: {node: '>=4.0.0'}
|
engines: {node: '>=4.0.0'}
|
||||||
|
@ -4056,6 +4072,12 @@ packages:
|
||||||
dependencies:
|
dependencies:
|
||||||
get-func-name: 2.0.2
|
get-func-name: 2.0.2
|
||||||
|
|
||||||
|
/loupe@3.1.0:
|
||||||
|
resolution: {integrity: sha512-qKl+FrLXUhFuHUoDJG7f8P8gEMHq9NFS0c6ghXG1J0rldmZFQZoNVv/vyirE9qwCIhWZDsvEFd1sbFu3GvRQFg==}
|
||||||
|
dependencies:
|
||||||
|
get-func-name: 2.0.2
|
||||||
|
dev: true
|
||||||
|
|
||||||
/lru-cache@6.0.0:
|
/lru-cache@6.0.0:
|
||||||
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
|
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
@ -4677,6 +4699,11 @@ packages:
|
||||||
/pathval@1.1.1:
|
/pathval@1.1.1:
|
||||||
resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
|
resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
|
||||||
|
|
||||||
|
/pathval@2.0.0:
|
||||||
|
resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
|
||||||
|
engines: {node: '>= 14.16'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/picocolors@1.0.0:
|
/picocolors@1.0.0:
|
||||||
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
|
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
|
||||||
|
|
||||||
|
@ -5773,7 +5800,7 @@ packages:
|
||||||
acorn: 8.10.0
|
acorn: 8.10.0
|
||||||
acorn-walk: 8.2.0
|
acorn-walk: 8.2.0
|
||||||
cac: 6.7.14
|
cac: 6.7.14
|
||||||
chai: 4.3.10
|
chai: 4.4.1
|
||||||
debug: 4.3.4
|
debug: 4.3.4
|
||||||
local-pkg: 0.4.3
|
local-pkg: 0.4.3
|
||||||
magic-string: 0.30.5
|
magic-string: 0.30.5
|
||||||
|
|
Loading…
Reference in a new issue