fix(TypeScript): imports not working in TypeScript (#113)

This commit is contained in:
Vlad Frangu
2021-04-12 12:01:37 +03:00
committed by GitHub
parent 75f902b0f5
commit a95f40e5b8
20 changed files with 947 additions and 52 deletions

3
.babelrc Normal file
View File

@@ -0,0 +1,3 @@
{
"plugins": ["@babel/plugin-syntax-top-level-await"]
}

5
.gitignore vendored
View File

@@ -6,6 +6,11 @@ globals.*map
globals.d.ts
globals.mjs
v*.js
v*.*map
v*.d.ts
v*.mjs
gateway/**/*.js
gateway/**/*.map
gateway/**/*.d.ts

2
.npmrc
View File

@@ -2,4 +2,4 @@ audit=false
fund=false
legacy-peer-deps=true
tag-version-prefix=""
message="chore(release): %s :tada:"
message="chore(release): %s 🎉"

View File

@@ -1,3 +1,9 @@
## [0.15.1](https://github.com/discordjs/discord-api-types/compare/0.15.0...0.15.1) (2021-04-12)
### Bug Fixes
- **TypeScript:** imports not working in TypeScript ([4738c33](https://github.com/discordjs/discord-api-types/commit/4738c33b062d359a1c2fbb35cdd2daf128ab6e5b))
# [0.15.0](https://github.com/discordjs/discord-api-types/compare/0.14.0...0.15.0) (2021-04-11)
### Bug Fixes

View File

@@ -53,21 +53,21 @@ We also provide typings compatible with the [deno](https://deno.land/) runtime.
```ts
// Importing a specific API version
import { APIUser } from 'https://raw.githubusercontent.com/discordjs/discord-api-types/main/deno/shortcuts/v8/mod.ts';
import { APIUser } from 'https://raw.githubusercontent.com/discordjs/discord-api-types/main/deno/v8.ts';
```
2. From [deno.land/x](https://deno.land/x)
```ts
// Importing a specific API version
import { APIUser } from 'https://deno.land/x/discord_api_types/shortcuts/v8.ts';
import { APIUser } from 'https://deno.land/x/discord_api_types/v8.ts';
```
3. From [skypack.dev](https://www.skypack.dev/)
```ts
// Importing a specific API version
import { APIUser } from 'https://cdn.skypack.dev/discord-api-types/shortcuts/v8?dts';
import { APIUser } from 'https://cdn.skypack.dev/discord-api-types/v8?dts';
```
## Project Structure

View File

@@ -53,21 +53,21 @@ We also provide typings compatible with the [deno](https://deno.land/) runtime.
```ts
// Importing a specific API version
import { APIUser } from 'https://raw.githubusercontent.com/discordjs/discord-api-types/main/deno/shortcuts/v8/mod.ts';
import { APIUser } from 'https://raw.githubusercontent.com/discordjs/discord-api-types/main/deno/v8.ts';
```
2. From [deno.land/x](https://deno.land/x)
```ts
// Importing a specific API version
import { APIUser } from 'https://deno.land/x/discord_api_types/shortcuts/v8.ts';
import { APIUser } from 'https://deno.land/x/discord_api_types/v8.ts';
```
3. From [skypack.dev](https://www.skypack.dev/)
```ts
// Importing a specific API version
import { APIUser } from 'https://cdn.skypack.dev/discord-api-types/shortcuts/v8?dts';
import { APIUser } from 'https://cdn.skypack.dev/discord-api-types/v8?dts';
```
## Project Structure

View File

@@ -1,4 +0,0 @@
export * from '../globals.ts';
export * from '../gateway/v6.ts';
export * from '../payloads/v6/mod.ts';
export * from '../rest/v6/mod.ts';

View File

@@ -1,6 +0,0 @@
export * from '../globals.ts';
export * from '../gateway/v8.ts';
export * from '../payloads/v8/mod.ts';
export * from '../rest/v8/mod.ts';
export * from '../rpc/v8.ts';
export * as Utils from '../utils/v8.ts';

4
deno/v6.ts Normal file
View File

@@ -0,0 +1,4 @@
export * from './globals.ts';
export * from './gateway/v6.ts';
export * from './payloads/v6/mod.ts';
export * from './rest/v6/mod.ts';

6
deno/v8.ts Normal file
View File

@@ -0,0 +1,6 @@
export * from './globals.ts';
export * from './gateway/v8.ts';
export * from './payloads/v8/mod.ts';
export * from './rest/v8/mod.ts';
export * from './rpc/v8.ts';
export * as Utils from './utils/v8.ts';

856
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,22 +1,22 @@
{
"name": "discord-api-types",
"version": "0.15.0",
"version": "0.15.1",
"description": "Discord API typings that are kept up to date for use in bot library creation.",
"main": "./shortcuts/v8.js",
"module": "./shortcuts/v8.mjs",
"types": "./shortcuts/v8.d.ts",
"main": "./v8.js",
"module": "./v8.mjs",
"types": "./v8.d.ts",
"exports": {
"./globals": {
"require": "./globals.js",
"import": "./globals.mjs"
},
"./v6": {
"require": "./shortcuts/v6.js",
"import": "./shortcuts/v6.mjs"
"require": "./v6.js",
"import": "./v6.mjs"
},
"./v8": {
"require": "./shortcuts/v8.js",
"import": "./shortcuts/v8.mjs"
"require": "./v8.js",
"import": "./v8.mjs"
},
"./gateway": {
"require": "./gateway/index.js",
@@ -72,7 +72,7 @@
"build:deno": "node ./scripts/deno.mjs",
"build:node": "tsc && run-p esm:*",
"clean:deno": "rimraf deno/",
"clean:node": "rimraf {gateway,payloads,rest,rpc,voice,shortcuts,utils}/**/*.{js,mjs,d.ts,map} globals.{js,mjs,d.ts,*map}",
"clean:node": "rimraf {gateway,payloads,rest,rpc,voice,utils}/**/*.{js,mjs,d.ts,map} {globals,v*}.{js,mjs,d.ts,*map}",
"clean": "run-p clean:*",
"esm:gateway": "gen-esm-wrapper ./gateway/index.js ./gateway/index.mjs",
"esm:payloads": "gen-esm-wrapper ./payloads/index.js ./payloads/index.mjs",
@@ -82,8 +82,8 @@
"esm:voice": "gen-esm-wrapper ./voice/index.js ./voice/index.mjs",
"esm:globals": "gen-esm-wrapper ./globals.js ./globals.mjs",
"esm:versions": "node ./scripts/versions.mjs",
"lint": "eslint --fix --ext mjs,ts {gateway,payloads,rest,rpc,voice,shortcuts,utils}/** globals.ts",
"test:lint": "eslint --ext mjs,ts {gateway,payloads,rest,rpc,voice,shortcuts,utils}/** globals.ts",
"lint": "eslint --fix --ext mjs,ts {gateway,payloads,rest,rpc,voice,utils}/** {globals,v*}.ts",
"test:lint": "eslint --ext mjs,ts {gateway,payloads,rest,rpc,voice,utils}/** {globals,v*}.ts",
"prepublishOnly": "run-s clean test:lint build:node",
"postpublish": "run-s clean:node build:deno",
"version": "conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md"
@@ -97,13 +97,16 @@
"author": "Vlad Frangu <kingdgrizzle@gmail.com>",
"license": "MIT",
"files": [
"{gateway,payloads,rest,rpc,voice,shortcuts,utils}/**/*.{js,js.map,d.ts,d.ts.map,mjs}",
"globals.{js,js.map,d.ts,d.ts.map,mjs}"
"{gateway,payloads,rest,rpc,voice,utils}/**/*.{js,js.map,d.ts,d.ts.map,mjs}",
"{globals,v*}.{js,js.map,d.ts,d.ts.map,mjs}"
],
"engines": {
"node": ">=12"
},
"devDependencies": {
"@babel/core": "^7.13.15",
"@babel/eslint-parser": "^7.13.14",
"@babel/plugin-syntax-top-level-await": "^7.12.13",
"@commitlint/cli": "^12.1.1",
"@commitlint/config-angular": "^12.1.1",
"@types/node": "^14.14.37",
@@ -143,7 +146,9 @@
"files": [
"scripts/**/*.mjs"
],
"parser": "@babel/eslint-parser",
"parserOptions": {
"ecmaVersion": 2021,
"sourceType": "module"
}
}

View File

@@ -39,6 +39,14 @@ function convertConstEnums(source) {
const transformers = [convertImports, convertConstEnums];
async function convertFile(fullFilePath, finalDenoPath) {
const originalFile = await readFile(fullFilePath, { encoding: 'utf8' });
const finalFile = transformers.reduce((code, transformer) => transformer(code), originalFile);
await writeFile(finalDenoPath, finalFile);
}
/**
* @param {string} folderName The folder name
* @param {URL} node The node path
@@ -61,21 +69,17 @@ async function adaptFolderToDeno(folderName, node = baseDirectory, deno = denoPa
const fullFilePath = new URL(file.name, nodeDirectory);
const finalDenoPath = new URL(file.name.includes('index') ? 'mod.ts' : file.name, denoDirectory);
const originalFile = await readFile(fullFilePath, { encoding: 'utf8' });
const finalFile = transformers.reduce((code, transformer) => transformer(code), originalFile);
await writeFile(finalDenoPath, finalFile);
await convertFile(fullFilePath, finalDenoPath);
}
}
// Convert folders
const folderResults = await Promise.allSettled(
[
'gateway/', //
'payloads/',
'rest/',
'rpc/',
'shortcuts/',
'utils/',
'voice/',
].map((item) => adaptFolderToDeno(item)),
@@ -85,6 +89,7 @@ for (const result of folderResults) {
if (result.status === 'rejected') console.error(result.reason);
}
// Copy over core files
const copyResults = await Promise.allSettled(
[
'LICENSE', //
@@ -96,3 +101,15 @@ const copyResults = await Promise.allSettled(
for (const result of copyResults) {
if (result.status === 'rejected') console.error(result.reason);
}
// Copy over shortcuts for versions, converting imports
const globalFileResults = await Promise.allSettled(
[
'v6.ts', //
'v8.ts',
].map((version) => convertFile(new URL(version, baseDirectory), new URL(version, denoPath))),
);
for (const result of globalFileResults) {
if (result.status === 'rejected') console.error(result.reason);
}

View File

@@ -1,10 +1,15 @@
import { exec } from 'node:child_process';
import { dirname, join } from 'node:path';
import { fileURLToPath } from 'node:url';
import { promisify } from 'node:util';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const rootDir = join(__dirname, '..');
const execAsync = promisify(exec);
const fileToESMWrapperCall = (path, version) =>
execAsync(`npx gen-esm-wrapper ./${path}/${version}.js ./${path}/${version}.mjs`);
execAsync(`npx gen-esm-wrapper "${join(rootDir, path, `${version}.js`)}" "${join(rootDir, path, `${version}.mjs`)}"`);
await Promise.allSettled(
[
@@ -29,7 +34,7 @@ await Promise.allSettled(
fileToESMWrapperCall('utils', version),
// Shortcuts
fileToESMWrapperCall('shortcuts', version),
fileToESMWrapperCall('', version),
])
.flat(),
);

View File

@@ -1,4 +0,0 @@
export * from '../globals';
export * from '../gateway/v6';
export * from '../payloads/v6/index';
export * from '../rest/v6/index';

View File

@@ -1,6 +0,0 @@
export * from '../globals';
export * from '../gateway/v8';
export * from '../payloads/v8/index';
export * from '../rest/v8/index';
export * from '../rpc/v8';
export * as Utils from '../utils/v8';

View File

@@ -6,11 +6,12 @@
},
"include": [
"globals.ts",
"v6.ts",
"v8.ts",
"gateway/**/*.ts",
"payloads/**/*.ts",
"rest/**/*.ts",
"rpc/**/*.ts",
"shortcuts/**/*.ts",
"utils/**/*.ts",
"voice/**/*.ts",
"scripts",

View File

@@ -17,11 +17,12 @@
},
"include": [
"globals.ts",
"v6.ts",
"v8.ts",
"gateway/**/*.ts",
"payloads/**/*.ts",
"rest/**/*.ts",
"rpc/**/*.ts",
"shortcuts/**/*.ts",
"utils/**/*.ts",
"voice/**/*.ts"
]

4
v6.ts Normal file
View File

@@ -0,0 +1,4 @@
export * from './globals';
export * from './gateway/v6';
export * from './payloads/v6/index';
export * from './rest/v6/index';

6
v8.ts Normal file
View File

@@ -0,0 +1,6 @@
export * from './globals';
export * from './gateway/v8';
export * from './payloads/v8/index';
export * from './rest/v8/index';
export * from './rpc/v8';
export * as Utils from './utils/v8';