build: added deprecation notice to commonjs builds

This commit is contained in:
alina 🌸 2024-04-25 13:46:11 +03:00
parent 9389cf8b5f
commit c3c7d1ddce
Signed by: teidesu
SSH key fingerprint: SHA256:uNeCpw6aTSU4aIObXLvHfLkDa82HWH9EiOj9AXOIRpI
2 changed files with 31 additions and 7 deletions

View file

@ -1,4 +1,3 @@
import { createRequire } from 'module'
import { createInterface, Interface as RlInterface } from 'readline' import { createInterface, Interface as RlInterface } from 'readline'
import { FileDownloadLocation, FileDownloadParameters, ITelegramStorageProvider, PartialOnly, User } from '@mtcute/core' import { FileDownloadLocation, FileDownloadParameters, ITelegramStorageProvider, PartialOnly, User } from '@mtcute/core'
@ -23,11 +22,13 @@ export type { TelegramClientOptions }
let nativeCrypto: any let nativeCrypto: any
try { try {
// @only-if-esm /* eslint-disable @typescript-eslint/prefer-ts-expect-error, @typescript-eslint/ban-ts-comment */
const require = createRequire(import.meta.url) /* eslint-disable import/no-unresolved */
// @/only-if-esm // @ts-ignore not in deps
// eslint-disable-next-line // @esm-replace-import
nativeCrypto = require('@mtcute/crypto-node').NodeNativeCryptoProvider nativeCrypto = (await import('@mtcute/crypto-node')).NodeNativeCryptoProvider // eslint-disable-line
/* eslint-enable @typescript-eslint/prefer-ts-expect-error, @typescript-eslint/ban-ts-comment */
/* eslint-enable import/no-unresolved */
} catch (e) {} } catch (e) {}
export interface BaseTelegramClientOptions export interface BaseTelegramClientOptions

View file

@ -274,7 +274,7 @@ if (buildConfig.buildTs && !IS_JSR) {
if (!content.includes('@esm-replace-import')) continue if (!content.includes('@esm-replace-import')) continue
originalFiles[f] = content originalFiles[f] = content
fs.writeFileSync(f, content.replace(/@esm-replace-import.*?await import/gs, 'require')) fs.writeFileSync(f, content.replace(/(?<=@esm-replace-import.*?)await import/gs, 'require'))
} }
// set type=commonjs in all package.json-s // set type=commonjs in all package.json-s
@ -464,6 +464,29 @@ const builtPkgJson = buildPackageJson()
if (buildConfig.buildCjs) { if (buildConfig.buildCjs) {
fs.writeFileSync(path.join(outDir, 'cjs/package.json'), JSON.stringify({ type: 'commonjs' }, null, 2)) fs.writeFileSync(path.join(outDir, 'cjs/package.json'), JSON.stringify({ type: 'commonjs' }, null, 2))
const CJS_DEPRECATION_WARNING = `
"use strict";
if (typeof globalThis !== 'undefined' && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true
console.warn("[${builtPkgJson.name}] CommonJS support is deprecated and will be removed soon. Please consider switching to ESM, it's "+(new Date()).getFullYear()+" already.")
console.warn("[${builtPkgJson.name}] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c")
}
`.trim()
const entrypoints = []
if (typeof builtPkgJson.exports === 'string') {
entrypoints.push(builtPkgJson.exports)
} else if (builtPkgJson.exports && typeof builtPkgJson.exports === 'object') {
for (const entrypoint of Object.values(builtPkgJson.exports)) {
entrypoints.push(entrypoint.require)
}
}
for (const entry of entrypoints) {
if (!entry.endsWith('.js')) continue
transformFile(path.join(outDir, entry), (content) => `${CJS_DEPRECATION_WARNING}\n${content}`)
}
} }
if (IS_JSR) { if (IS_JSR) {