build: preparing to publish (part 2)

fixed imports, package.json files, improved package generation for certain packages, and more (i'm too lazy to describe all the magic that i've done)
This commit is contained in:
teidesu 2021-06-06 19:23:43 +03:00
parent ae2dbcf03f
commit 280c9f51aa
31 changed files with 310 additions and 134 deletions

View file

@ -9,17 +9,10 @@
"test": "lerna run test", "test": "lerna run test",
"build": "lerna run build", "build": "lerna run build",
"lint": "eslint packages/**/*.ts", "lint": "eslint packages/**/*.ts",
"format": "prettier --write packages/**/*.ts" "format": "prettier --write packages/**/*.ts",
"publish-all": "node scripts/publish.js all"
}, },
"dependencies": { "dependencies": {
"big-integer": "1.6.48",
"buffer": "^6.0.3",
"debug": "^4.3.1",
"es6-symbol": "^3.1.3",
"events": "3.2.0",
"file-type": "^16.2.0",
"leemon": "6.2.0",
"pako": "2.0.2",
"node-gyp": "^8.0.0" "node-gyp": "^8.0.0"
}, },
"devDependencies": { "devDependencies": {
@ -47,7 +40,9 @@
"ts-node": "^9.1.1", "ts-node": "^9.1.1",
"typedoc": "^0.20.28", "typedoc": "^0.20.28",
"typescript": "^4.1.3", "typescript": "^4.1.3",
"nyc": "^15.1.0" "nyc": "^15.1.0",
"glob": "^7.1.7",
"rimraf": "^3.0.2"
}, },
"workspaces": [ "workspaces": [
"packages/*" "packages/*"

View file

@ -1,7 +1,7 @@
{ {
"name": "@mtcute/client", "name": "@mtcute/client",
"private": true, "private": true,
"version": "0.0.0", "version": "1.0.0",
"description": "High-level API over @mtcute/core", "description": "High-level API over @mtcute/core",
"author": "Alisa Sireneva <me@tei.su>", "author": "Alisa Sireneva <me@tei.su>",
"license": "MIT", "license": "MIT",
@ -12,9 +12,13 @@
"build": "tsc" "build": "tsc"
}, },
"dependencies": { "dependencies": {
"@mtcute/tl": "^0.0.0", "@types/node": "^15.12.1",
"@mtcute/core": "^0.0.0", "@mtcute/tl": "~1.129.0",
"@mtcute/file-id": "^0.0.0", "@mtcute/core": "^1.0.0",
"eager-async-pool": "^1.0.0" "@mtcute/file-id": "^1.0.0",
"eager-async-pool": "^1.0.0",
"file-type": "^16.2.0",
"big-integer": "1.6.48",
"debug": "^4.3.1"
} }
} }

View file

@ -1,7 +1,7 @@
import { TelegramClient } from '../../client' import { TelegramClient } from '../../client'
import { InputPeerLike } from '../../types' import { InputPeerLike } from '../../types'
import { tl } from '@mtcute/tl' import { tl } from '@mtcute/tl'
import { computeSrpParams } from '@mtcute/core/dist' import { computeSrpParams } from '@mtcute/core'
/** /**
* Request a callback answer from a bot, * Request a callback answer from a bot,

View file

@ -1,7 +1,7 @@
import { TelegramClient } from '../../client' import { TelegramClient } from '../../client'
import { tl } from '@mtcute/tl' import { tl } from '@mtcute/tl'
import { StickerSet } from '../../types' import { StickerSet } from '../../types'
import { fileIdToInputDocument, tdFileId } from '../../../../file-id' import { fileIdToInputDocument, tdFileId } from '@mtcute/file-id'
/** /**
* Delete a sticker from a sticker set * Delete a sticker from a sticker set

View file

@ -1,5 +1,5 @@
import { TelegramClient } from '../../client' import { TelegramClient } from '../../client'
import { fileIdToInputDocument, tdFileId } from '../../../../file-id' import { fileIdToInputDocument, tdFileId } from '@mtcute/file-id'
import { tl } from '@mtcute/tl' import { tl } from '@mtcute/tl'
import { StickerSet } from '../../types' import { StickerSet } from '../../types'

View file

@ -1,7 +1,7 @@
import { TelegramClient } from '../../client' import { TelegramClient } from '../../client'
import { MaybeArray } from '@mtcute/core' import { MaybeArray } from '@mtcute/core'
import { tl } from '@mtcute/tl' import { tl } from '@mtcute/tl'
import { fileIdToInputPhoto } from '../../../../file-id' import { fileIdToInputPhoto } from '@mtcute/file-id'
/** /**
* Delete your own profile photos * Delete your own profile photos

View file

@ -1,4 +1,4 @@
import { makeInspectable } from '@mtcute/client/src/types/utils' import { makeInspectable } from '../utils'
import { tl } from '@mtcute/tl' import { tl } from '@mtcute/tl'
import { PeerType, User, UsersIndex } from '../peers' import { PeerType, User, UsersIndex } from '../peers'
import { TelegramClient } from '../../client' import { TelegramClient } from '../../client'

View file

@ -1,7 +1,6 @@
import { MaybeDynamic, Message, MtCuteError } from '../types' import { MaybeDynamic, Message, MtCuteError } from '../types'
import { BigInteger } from 'big-integer' import { BigInteger } from 'big-integer'
import { randomBytes } from '@mtcute/core/src/utils/buffer-utils' import { randomBytes, bufferToBigInt } from '@mtcute/core'
import { bufferToBigInt } from '@mtcute/core/src/utils/bigint-utils'
import { tl } from '@mtcute/tl' import { tl } from '@mtcute/tl'
export const EMPTY_BUFFER = Buffer.alloc(0) export const EMPTY_BUFFER = Buffer.alloc(0)

View file

@ -1,7 +1,7 @@
{ {
"name": "@mtcute/core", "name": "@mtcute/core",
"private": true, "private": true,
"version": "0.0.0", "version": "1.0.0",
"description": "Core functions and base MTProto client", "description": "Core functions and base MTProto client",
"author": "Alisa Sireneva <me@tei.su>", "author": "Alisa Sireneva <me@tei.su>",
"license": "MIT", "license": "MIT",
@ -12,10 +12,19 @@
"docs": "npx typedoc" "docs": "npx typedoc"
}, },
"dependencies": { "dependencies": {
"@mtcute/tl": "^0.0.0" "@types/events": "^3.0.0",
"@mtcute/tl": "~1.129.0",
"leemon": "6.2.0",
"pako": "2.0.2",
"big-integer": "1.6.48",
"debug": "^4.3.1",
"events": "3.2.0"
}, },
"devDependencies": { "devDependencies": {
"@types/ws": "^7.4.1", "@types/ws": "^7.4.1",
"ws": "^7.4.4" "ws": "^7.4.4"
},
"peerDependencies": {
"@types/node": "^15.12.1"
} }
} }

View file

@ -1,6 +1,7 @@
import { tl } from '@mtcute/tl' import { tl } from '@mtcute/tl'
import { MaybeAsync } from '../../types/utils' import { MaybeAsync } from '../../types/utils'
import { ICryptoProvider } from '../../utils/crypto' import { ICryptoProvider } from '../../utils/crypto'
import EventEmitter from 'events'
export enum TransportState { export enum TransportState {
/** /**
@ -23,25 +24,16 @@ export enum TransportState {
} }
/** /**
* Interface declaring a transport to connect to Telegram with. * Interface implementing a transport to interact with Telegram servers.
* Is usually extended from `EventEmitter` to provide on/once *
* Events:
* - `ready` event is emitted once connection has been established: `() => void`
* - `close` event is emitted once connection has been closed: `() => void`
* - `error` event is event is emitted when there was some error
* (either mtproto related or network related): `(error: Error) => void`
* - `message` event is emitted when a mtproto message is received: `(message: Buffer) => void`
*/ */
export interface ICuteTransport { export interface ICuteTransport extends EventEmitter {
/** ready event is emitted once connection has been established */
on(event: 'ready', handler: () => void): this
once(event: 'ready', handler: () => void): this
/** close event is emitted once connection has been closed */
on(event: 'close', handler: () => void): this
once(event: 'close', handler: () => void): this
/** error event is emitted when there was some error (either mtproto related or network related) */
on(event: 'error', handler: (error: Error) => void): this
once(event: 'error', handler: (error: Error) => void): this
/** message event is emitted when a mtproto message is received */
on(event: 'message', handler: (message: Buffer) => void): this
once(event: 'message', handler: (message: Buffer) => void): this
/** used to clean up a transport to be able to recycle them */
removeAllListeners(): void
/** returns current state */ /** returns current state */
state(): TransportState state(): TransportState
/** returns current DC. should return null if state == IDLE */ /** returns current DC. should return null if state == IDLE */

View file

@ -1,4 +1,4 @@
import { EventEmitter } from 'events' import EventEmitter from 'events'
import { PacketCodec } from './abstract' import { PacketCodec } from './abstract'
import { ICryptoProvider } from '../../utils/crypto' import { ICryptoProvider } from '../../utils/crypto'

View file

@ -6,6 +6,8 @@ import { ForgeCryptoProvider } from './forge-crypto'
export * from './abstract' export * from './abstract'
export * from './password' export * from './password'
export { NodeCryptoProvider, ForgeCryptoProvider }
export let defaultCryptoProviderFactory: CryptoProviderFactory export let defaultCryptoProviderFactory: CryptoProviderFactory
if (nodeCrypto) { if (nodeCrypto) {
defaultCryptoProviderFactory = () => new NodeCryptoProvider() defaultCryptoProviderFactory = () => new NodeCryptoProvider()

View file

@ -1,10 +1,12 @@
{ {
"name": "@mtcute/crypto-node", "name": "@mtcute/crypto-node",
"version": "0.0.0", "version": "1.0.0",
"description": "Native crypto implementation for NodeJS", "description": "Native crypto implementation for NodeJS",
"main": "src/index.ts", "main": "src/index.ts",
"private": true, "private": true,
"license": "MIT",
"scripts": { "scripts": {
"build-ts": "tsc",
"build:dev": "node-gyp -j 16 build --debug", "build:dev": "node-gyp -j 16 build --debug",
"build": "node-gyp configure && node-gyp -j 16 build && tsc", "build": "node-gyp configure && node-gyp -j 16 build && tsc",
"install": "node-gyp configure && node-gyp -j 16 build", "install": "node-gyp configure && node-gyp -j 16 build",

View file

@ -1,6 +1,5 @@
import { NodeCryptoProvider } from '@mtcute/core/src/utils/crypto/node-crypto' import { NodeCryptoProvider, IEncryptionScheme } from '@mtcute/core'
import { IEncryptionScheme } from '@mtcute/core' import { ige256_decrypt, ige256_encrypt } from './native'
import { ige256_decrypt, ige256_encrypt } from '../native'
/** /**
* Crypto provider for NodeJS that uses a native extension to improve * Crypto provider for NodeJS that uses a native extension to improve

View file

@ -1,5 +1,5 @@
{ {
"name": "@mtcute/crypto", "name": "@mtcute/crypto",
"private": true, "private": true,
"version": "0.0.0" "version": "1.0.0"
} }

View file

@ -1,7 +1,7 @@
{ {
"name": "@mtcute/dispatcher", "name": "@mtcute/dispatcher",
"private": true, "private": true,
"version": "0.0.0", "version": "1.0.0",
"description": "Updates dispatcher and bot framework for @mtcute/client", "description": "Updates dispatcher and bot framework for @mtcute/client",
"author": "Alisa Sireneva <me@tei.su>", "author": "Alisa Sireneva <me@tei.su>",
"license": "MIT", "license": "MIT",
@ -12,8 +12,10 @@
"build": "tsc" "build": "tsc"
}, },
"dependencies": { "dependencies": {
"@mtcute/tl": "^0.0.0", "@mtcute/tl": "~1.129.0",
"@mtcute/core": "^0.0.0", "@mtcute/core": "^1.0.0",
"@mtcute/client": "^0.0.0" "@mtcute/client": "^1.0.0",
"es6-symbol": "^3.1.3",
"debug": "^4.3.1"
} }
} }

View file

@ -1,7 +1,7 @@
{ {
"name": "@mtcute/file-id", "name": "@mtcute/file-id",
"private": true, "private": true,
"version": "0.0.0", "version": "1.0.0",
"description": "Support for TDLib and Bot API file ID for MTCute", "description": "Support for TDLib and Bot API file ID for MTCute",
"author": "Alisa Sireneva <me@tei.su>", "author": "Alisa Sireneva <me@tei.su>",
"license": "MIT", "license": "MIT",
@ -12,7 +12,8 @@
"build": "tsc" "build": "tsc"
}, },
"dependencies": { "dependencies": {
"@mtcute/tl": "^0.0.0", "@mtcute/tl": "~1.129.0",
"@mtcute/core": "^0.0.0" "@mtcute/core": "^1.0.0",
"big-integer": "1.6.48"
} }
} }

View file

@ -1,7 +1,7 @@
{ {
"name": "@mtcute/html-parser", "name": "@mtcute/html-parser",
"private": true, "private": true,
"version": "0.0.0", "version": "1.0.0",
"description": "HTML entities parser for MTCute", "description": "HTML entities parser for MTCute",
"author": "Alisa Sireneva <me@tei.su>", "author": "Alisa Sireneva <me@tei.su>",
"license": "MIT", "license": "MIT",
@ -13,11 +13,11 @@
"docs": "npx typedoc" "docs": "npx typedoc"
}, },
"dependencies": { "dependencies": {
"@mtcute/tl": "^0.0.0", "@mtcute/tl": "~1.129.0",
"htmlparser2": "^6.0.1", "htmlparser2": "^6.0.1",
"big-integer": "^1.6.48" "big-integer": "^1.6.48"
}, },
"devDependencies": { "devDependencies": {
"@mtcute/client": "^0.0.0" "@mtcute/client": "^1.0.0"
} }
} }

View file

@ -1,7 +1,7 @@
{ {
"name": "@mtcute/http-proxy", "name": "@mtcute/http-proxy",
"private": true, "private": true,
"version": "0.0.0", "version": "1.0.0",
"description": "HTTP(S) proxy support for MTCute", "description": "HTTP(S) proxy support for MTCute",
"author": "Alisa Sireneva <me@tei.su>", "author": "Alisa Sireneva <me@tei.su>",
"license": "MIT", "license": "MIT",
@ -12,6 +12,7 @@
"build": "tsc" "build": "tsc"
}, },
"dependencies": { "dependencies": {
"@mtcute/core": "^0.0.0" "@mtcute/core": "^1.0.0",
"debug": "^4.3.1"
} }
} }

View file

@ -1,7 +1,7 @@
{ {
"name": "@mtcute/markdown-parser", "name": "@mtcute/markdown-parser",
"private": true, "private": true,
"version": "0.0.0", "version": "1.0.0",
"description": "Markdown entities parser for MTCute", "description": "Markdown entities parser for MTCute",
"author": "Alisa Sireneva <me@tei.su>", "author": "Alisa Sireneva <me@tei.su>",
"license": "MIT", "license": "MIT",
@ -13,10 +13,10 @@
"docs": "npx typedoc" "docs": "npx typedoc"
}, },
"dependencies": { "dependencies": {
"@mtcute/tl": "^0.0.0", "@mtcute/tl": "~1.129.0",
"big-integer": "^1.6.48" "big-integer": "^1.6.48"
}, },
"devDependencies": { "devDependencies": {
"@mtcute/client": "^0.0.0" "@mtcute/client": "^1.0.0"
} }
} }

View file

@ -1,7 +1,7 @@
{ {
"name": "@mtcute/mtproxy", "name": "@mtcute/mtproxy",
"private": true, "private": true,
"version": "0.0.0", "version": "1.0.0",
"description": "MTProto proxy (MTProxy) support for MTCute", "description": "MTProto proxy (MTProxy) support for MTCute",
"author": "Alisa Sireneva <me@tei.su>", "author": "Alisa Sireneva <me@tei.su>",
"license": "MIT", "license": "MIT",
@ -12,6 +12,7 @@
"build": "tsc" "build": "tsc"
}, },
"dependencies": { "dependencies": {
"@mtcute/core": "^0.0.0" "@mtcute/core": "^1.0.0",
"big-integer": "1.6.48"
} }
} }

View file

@ -26,7 +26,8 @@ export namespace NodeTelegramClient {
* You can pass a file name as a simple string, * You can pass a file name as a simple string,
* which will be passed directly to `SqliteStorage` * which will be passed directly to `SqliteStorage`
* *
* Defaults to in-memory SQLite storage. * Defaults to SQLite storage in `session.db` file in
* current working directory
*/ */
storage?: BaseTelegramClient.Options['storage'] | string storage?: BaseTelegramClient.Options['storage'] | string
} }
@ -46,7 +47,7 @@ export class NodeTelegramClient extends TelegramClient {
storage: storage:
typeof opts.storage === 'string' typeof opts.storage === 'string'
? new SqliteStorage(opts.storage) ? new SqliteStorage(opts.storage)
: opts.storage ?? new SqliteStorage(':memory:'), : opts.storage ?? new SqliteStorage('session.db'),
}) })
this.registerParseMode(new HtmlMessageEntityParser()) this.registerParseMode(new HtmlMessageEntityParser())

View file

@ -1,7 +1,7 @@
{ {
"name": "@mtcute/node", "name": "@mtcute/node",
"private": true, "private": true,
"version": "0.0.0", "version": "1.0.0",
"description": "Meta-package for Node JS", "description": "Meta-package for Node JS",
"author": "Alisa Sireneva <me@tei.su>", "author": "Alisa Sireneva <me@tei.su>",
"license": "MIT", "license": "MIT",
@ -12,11 +12,11 @@
"build": "tsc" "build": "tsc"
}, },
"dependencies": { "dependencies": {
"@mtcute/client": "^0.0.0", "@mtcute/client": "^1.0.0",
"@mtcute/sqlite": "^0.0.0", "@mtcute/sqlite": "^1.0.0",
"@mtcute/markdown-parser": "^0.0.0", "@mtcute/markdown-parser": "^1.0.0",
"@mtcute/html-parser": "^0.0.0", "@mtcute/html-parser": "^1.0.0",
"@mtcute/dispatcher": "^0.0.0", "@mtcute/dispatcher": "^1.0.0",
"@mtcute/crypto-node": "^0.0.0" "@mtcute/crypto-node": "^1.0.0"
} }
} }

View file

@ -1,7 +1,7 @@
{ {
"name": "@mtcute/socks-proxy", "name": "@mtcute/socks-proxy",
"private": true, "private": true,
"version": "0.0.0", "version": "1.0.0",
"description": "SOCKS4/5 proxy support for MTCute", "description": "SOCKS4/5 proxy support for MTCute",
"author": "Alisa Sireneva <me@tei.su>", "author": "Alisa Sireneva <me@tei.su>",
"license": "MIT", "license": "MIT",
@ -12,7 +12,8 @@
"build": "tsc" "build": "tsc"
}, },
"dependencies": { "dependencies": {
"@mtcute/core": "^0.0.0", "@mtcute/core": "^1.0.0",
"ip6": "^0.2.6" "ip6": "^0.2.6",
"debug": "^4.3.1"
} }
} }

View file

@ -1,7 +1,7 @@
{ {
"name": "@mtcute/sqlite", "name": "@mtcute/sqlite",
"private": true, "private": true,
"version": "0.0.0", "version": "1.0.0",
"description": "SQLite-based storage for MTCute", "description": "SQLite-based storage for MTCute",
"author": "Alisa Sireneva <me@tei.su>", "author": "Alisa Sireneva <me@tei.su>",
"license": "MIT", "license": "MIT",
@ -12,9 +12,11 @@
"build": "tsc" "build": "tsc"
}, },
"dependencies": { "dependencies": {
"@mtcute/core": "^0.0.0", "@mtcute/core": "^1.0.0",
"@mtcute/tl": "^0.0.0", "@mtcute/tl": "~1.129.0",
"better-sqlite3": "^7.4.0" "better-sqlite3": "^7.4.0",
"big-integer": "1.6.48",
"debug": "^4.3.1"
}, },
"devDependencies": { "devDependencies": {
"@types/sqlite3": "^3.1.7", "@types/sqlite3": "^3.1.7",

View file

@ -8,8 +8,15 @@ Generated from TL layer **129** (last updated on 31.05.2021).
This package contains JSON schema, type declarations, binary (de-)serialization, errors, RSA keys and helper functions. This package contains JSON schema, type declarations, binary (de-)serialization, errors, RSA keys and helper functions.
Package patch version is always TL schema layer number, so version `1.0.42` means that this version was generated from Package's minor version is always TL schema layer number,
TL layer 42. so version `1.42.0` means that this version was generated from TL layer 42.
> ⚠️ **Warning**: Always use strict or tilde constraint to ensure
> the same schema is used.
>
> I.e. use `"@mtcute/tl": "~1.42.0"` or `"@mtcute/tl": "1.42.0"`
> instead of `"@mtcute/tl": "^1.42.0"`, since the former would also
> match `1.43.0, 1.44.0, ...` and will probably break your build or runtime
- JSON schema, types, binary (de-)serialization and helper functions are generated directly from `.tl` files that are - JSON schema, types, binary (de-)serialization and helper functions are generated directly from `.tl` files that are
automatically fetched from [TDesktop repository](https://github.com/telegramdesktop/tdesktop/). automatically fetched from [TDesktop repository](https://github.com/telegramdesktop/tdesktop/).

View file

@ -1,6 +1,6 @@
{ {
"name": "@mtcute/tl", "name": "@mtcute/tl",
"version": "0.0.0", "version": "1.129.0",
"description": "TL schema used for MTCute", "description": "TL schema used for MTCute",
"main": "index.js", "main": "index.js",
"author": "Alisa Sireneva <me@tei.su>", "author": "Alisa Sireneva <me@tei.su>",
@ -16,7 +16,7 @@
"big-integer": "^1.6.48" "big-integer": "^1.6.48"
}, },
"devDependencies": { "devDependencies": {
"@mtcute/core": "^0.0.0", "@mtcute/core": "^1.0.0",
"cheerio": "^1.0.0-rc.5", "cheerio": "^1.0.0-rc.5",
"eager-async-pool": "^1.0.0", "eager-async-pool": "^1.0.0",
"csv-parser": "^3.0.0", "csv-parser": "^3.0.0",

View file

@ -1,61 +1,205 @@
const fs = require('fs') const fs = require('fs')
const path = require('path') const path = require('path')
const glob = require('glob')
const cp = require('child_process') const cp = require('child_process')
const rimraf = require('rimraf')
function publishSinglePackage(name) { function publishSinglePackage(name) {
let dir = path.join(__dirname, '../packages', name) let dir = path.join(__dirname, '../packages', name)
if (name !== 'tl') { console.log('[i] Building %s', name)
// tl package is already generated ready to publish // cleanup dist folder
rimraf.sync(path.join(dir, 'dist'))
console.log('[i] Building %s', name) if (name === 'tl') {
// create package by copying all the needed files
const files = [
'binary/reader.d.ts',
'binary/reader.js',
'binary/rsa-keys.d.ts',
'binary/rsa-keys.js',
'binary/writer.d.ts',
'binary/writer.js',
'errors.d.ts',
'errors.js',
'index.d.ts',
'index.js',
'raw-errors.json',
'raw-schema.d.ts',
'raw-schema.json',
'package.json',
'README.md',
]
fs.mkdirSync(path.join(dir, 'dist/binary'), { recursive: true })
for (const f of files) {
fs.copyFileSync(path.join(dir, f), path.join(dir, 'dist', f))
}
} else {
// build ts // build ts
cp.execSync('yarn run build', { cp.execSync(
cwd: dir, 'yarn run ' + (name === 'crypto-node' ? 'build-ts' : 'build'),
stdio: 'inherit', {
}) cwd: dir,
stdio: 'inherit',
// copy package.json, replacing private with false }
const packJson = JSON.parse(
fs.readFileSync(path.join(dir, 'package.json'), 'utf8')
)
if (!packJson.main)
throw new Error(`${name}'s package.json does not contain "main"`)
// since "src" is compiled to "dist", we need to remove that prefix
packJson.main = packJson.main.replace(/^(?:\.\/)?src\//, '')
packJson.private = false
fs.writeFileSync(
path.join(dir, 'dist/package.json'),
JSON.stringify(packJson, null, 4)
) )
// copy readme // remove reference comments
try { for (const f of glob.sync(path.join(dir, 'dist/**/*.d.ts'))) {
fs.copyFileSync( let content = fs.readFileSync(f, 'utf8')
path.join(dir, 'README.md'), let changed = false
path.join(dir, 'dist/README.md')
) if (content.indexOf('/// <reference types="node" />') !== -1) {
} catch (e) { changed = true
if (e.code !== 'ENOENT') throw e content = content.replace('/// <reference types="node" />', '')
}
if (content.match(/@mtcute\/[a-z]+\/src/)) {
changed = true
content = content.replace(/(@mtcute\/[a-z]+)\/src/g, '$1')
}
if (content.trim().match(/^export {};?$/)) {
// no public exports, we can safely remove this module
changed = false
fs.unlinkSync(f)
}
if (changed) fs.writeFileSync(f, content)
} }
dir = path.join(dir, 'dist') // replace /src/ imports
for (const f of glob.sync(path.join(dir, 'dist/**/*.js'))) {
let content = fs.readFileSync(f, 'utf8')
let changed = false
if (content.match(/@mtcute\/[a-z]+\/src/)) {
changed = true
content = content.replace(/(@mtcute\/[a-z]+)\/src/g, '$1')
}
if (changed) fs.writeFileSync(f, content)
}
if (name === 'client') {
// make TelegramClient a class, not an interface
const content = fs.readFileSync(
path.join(dir, 'dist/client.d.ts'),
'utf8'
)
fs.writeFileSync(
path.join(dir, 'dist/client.d.ts'),
content.replace(
'export interface TelegramClient',
'export class TelegramClient'
)
)
}
if (name === 'crypto-node') {
// copy native sources and binding.gyp file
fs.mkdirSync(path.join(dir, 'dist/lib'), { recursive: true })
fs.mkdirSync(path.join(dir, 'dist/crypto'), { recursive: true })
const bindingGyp = fs.readFileSync(
path.join(dir, 'binding.gyp'),
'utf8'
)
fs.writeFileSync(
path.join(dir, 'dist/binding.gyp'),
bindingGyp
// replace paths to crypto
.replace(/"\.\.\/crypto/g, '"crypto')
)
for (const f of fs.readdirSync(path.join(dir, 'lib'))) {
const content = fs.readFileSync(
path.join(dir, 'lib', f),
'utf8'
)
fs.writeFileSync(
path.join(dir, 'dist/lib', f),
content
// replace paths to crypto
.replace(
/#include "\.\.\/\.\.\/crypto/g,
'#include "../crypto'
)
)
}
for (const f of fs.readdirSync(path.join(dir, '../crypto'))) {
fs.copyFileSync(
path.join(dir, '../crypto', f),
path.join(dir, 'dist/crypto', f)
)
}
const nativeJs = fs.readFileSync(
path.join(dir, 'dist/native.js'),
'utf8'
)
fs.writeFileSync(
path.join(dir, 'dist/native.js'),
nativeJs.replace(/'\.\.\/build/g, "'./build")
)
}
} }
// copy package.json, replacing private with false
const packJson = JSON.parse(
fs.readFileSync(path.join(dir, 'package.json'), 'utf8')
)
if (!packJson.main)
throw new Error(`${name}'s package.json does not contain "main"`)
// since "src" is compiled to "dist", we need to remove that prefix
packJson.main = packJson.main.replace(/^(?:\.\/)?src\//, '')
packJson.private = false
fs.writeFileSync(
path.join(dir, 'dist/package.json'),
JSON.stringify(packJson, null, 4)
)
// copy tsconfig
try {
fs.copyFileSync(
path.join(__dirname, '../tsconfig.json'),
path.join(dir, 'dist/tsconfig.json')
)
} catch (e) {
if (e.code !== 'ENOENT') throw e
}
// copy readme
try {
fs.copyFileSync(
path.join(dir, 'README.md'),
path.join(dir, 'dist/README.md')
)
} catch (e) {
if (e.code !== 'ENOENT') throw e
}
dir = path.join(dir, 'dist')
console.log('[i] Publishing %s', name) console.log('[i] Publishing %s', name)
// publish to npm // publish to npm
// cp.execSync('npm publish', { cp.execSync('yarn publish', {
// cwd: , cwd: dir,
// }) stdio: 'inherit',
})
} }
const LOCAL = [ const LOCAL = ['crypto']
'crypto',
'tl-reference'
]
if (require.main === module) { if (require.main === module) {
const arg = process.argv[2] const arg = process.argv[2]
@ -65,7 +209,7 @@ if (require.main === module) {
} }
if (arg === 'all') { if (arg === 'all') {
for (const f of fs.readdirSync(path.join('../packages'))) { for (const f of fs.readdirSync(path.join(__dirname, '../packages'))) {
if (LOCAL.indexOf(f) > -1) continue if (LOCAL.indexOf(f) > -1) continue
publishSinglePackage(f) publishSinglePackage(f)

View file

@ -1,6 +1,6 @@
const fs = require('fs') const fs = require('fs')
const path = require('path') const path = require('path')
const { convertTlToJson } = require('../../tl/scripts/generate-schema') const { convertTlToJson } = require('../../packages/tl/scripts/generate-schema')
const fetch = require('node-fetch') const fetch = require('node-fetch')
const qs = require('querystring') const qs = require('querystring')
const { convertToArrays } = require('./prepare-data') const { convertToArrays } = require('./prepare-data')

View file

@ -1,7 +1,7 @@
const { const {
convertTlToJson, convertTlToJson,
convertJsonToTl, convertJsonToTl,
} = require('../../tl/scripts/generate-schema') } = require('../../packages/tl/scripts/generate-schema')
const fetch = require('node-fetch') const fetch = require('node-fetch')
const fs = require('fs') const fs = require('fs')
const path = require('path') const path = require('path')

View file

@ -1115,6 +1115,11 @@
resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd"
integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ== integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==
"@types/events@^3.0.0":
version "3.0.0"
resolved "http://localhost:4873/@types%2fevents/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==
"@types/integer@*": "@types/integer@*":
version "4.0.0" version "4.0.0"
resolved "https://registry.yarnpkg.com/@types/integer/-/integer-4.0.0.tgz#3b778715df72d2cf8ba73bad27bd9d830907f944" resolved "https://registry.yarnpkg.com/@types/integer/-/integer-4.0.0.tgz#3b778715df72d2cf8ba73bad27bd9d830907f944"
@ -1152,6 +1157,11 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18"
integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw== integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw==
"@types/node@^15.12.1":
version "15.12.1"
resolved "http://localhost:4873/@types%2fnode/-/node-15.12.1.tgz#9b60797dee1895383a725f828a869c86c6caa5c2"
integrity sha512-zyxJM8I1c9q5sRMtVF+zdd13Jt6RU4r4qfhTd7lQubyThvLfx6yYekWSQjGCGV2Tkecgxnlpl/DNlb6Hg+dmEw==
"@types/normalize-package-data@^2.4.0": "@types/normalize-package-data@^2.4.0":
version "2.4.0" version "2.4.0"
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
@ -1635,14 +1645,6 @@ buffer@^5.5.0:
base64-js "^1.3.1" base64-js "^1.3.1"
ieee754 "^1.1.13" ieee754 "^1.1.13"
buffer@^6.0.3:
version "6.0.3"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6"
integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==
dependencies:
base64-js "^1.3.1"
ieee754 "^1.2.1"
builtins@^1.0.3: builtins@^1.0.3:
version "1.0.3" version "1.0.3"
resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88"
@ -3086,6 +3088,18 @@ glob@7.1.6, glob@^7.0.0, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
once "^1.3.0" once "^1.3.0"
path-is-absolute "^1.0.0" path-is-absolute "^1.0.0"
glob@^7.1.7:
version "7.1.7"
resolved "http://localhost:4873/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.0.4"
once "^1.3.0"
path-is-absolute "^1.0.0"
globals@^11.1.0: globals@^11.1.0:
version "11.12.0" version "11.12.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"