create-mbler 0.0.1-beta.r1 → 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/dist/main.d.ts +28 -2
- package/dist/main.mjs +11 -9
- package/package.json +9 -2
- package/rollup.config.mjs +0 -40
- package/src/i18n.ts +0 -34
- package/src/init.ts +0 -125
- package/src/main.ts +0 -85
- package/src/types.ts +0 -11
- package/src/utils.ts +0 -26
- package/tsconfig.json +0 -32
package/README.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# create-mbler
|
|
2
|
+
|
|
3
|
+
## Github
|
|
4
|
+
|
|
5
|
+
[GIthub](https://github.com/RuanhoR/mcx-core/tree/main/packages/create-mbler) | [Mbler](https://github.com/RuanhoR/mbler)
|
|
6
|
+
|
|
7
|
+
## Info
|
|
8
|
+
|
|
9
|
+
Run `mbler init` or `pnpm create mbler` to use.
|
|
10
|
+
|
|
11
|
+
It can generate a mbler project fast.
|
package/dist/main.d.ts
CHANGED
|
@@ -21,7 +21,33 @@ declare const LanguageMap: {
|
|
|
21
21
|
};
|
|
22
22
|
declare function getI18n(key: I18nKey, language: Language): string;
|
|
23
23
|
|
|
24
|
+
type PackageManager = 'npm' | 'pnpm';
|
|
25
|
+
interface InputResult {
|
|
26
|
+
createAt: string;
|
|
27
|
+
OtherModule: ('ui' | 'beta-api' | 'init git' | 'init dep')[];
|
|
28
|
+
McVersion: string;
|
|
29
|
+
Description: string;
|
|
30
|
+
Name: string;
|
|
31
|
+
Language: 'mcx' | 'js' | 'ts';
|
|
32
|
+
PackageManager: PackageManager;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
declare function showText(etxt: string): void;
|
|
36
|
+
interface JSTypeMap {
|
|
37
|
+
string: string;
|
|
38
|
+
boolean: boolean;
|
|
39
|
+
bigint: bigint;
|
|
40
|
+
symbol: symbol;
|
|
41
|
+
object: object;
|
|
42
|
+
number: number;
|
|
43
|
+
undefined: undefined;
|
|
44
|
+
null: null;
|
|
45
|
+
}
|
|
46
|
+
declare function verifyType<T extends object, U extends Record<keyof T, keyof JSTypeMap>>(obj: T, typeMapping: U): obj is T & {
|
|
47
|
+
[P in keyof U]: JSTypeMap[U[P]];
|
|
48
|
+
};
|
|
49
|
+
|
|
24
50
|
declare const cli: () => void;
|
|
25
51
|
|
|
26
|
-
export { LanguageList, LanguageMap, cli, getI18n };
|
|
27
|
-
export type { I18nKey, Language };
|
|
52
|
+
export { LanguageList, LanguageMap, cli, getI18n, showText, verifyType };
|
|
53
|
+
export type { I18nKey, InputResult, JSTypeMap, Language, PackageManager };
|
package/dist/main.mjs
CHANGED
|
@@ -44,7 +44,7 @@ function verifyType(obj, typeMapping) {
|
|
|
44
44
|
function spawnCmd(cmd, args, cwd) {
|
|
45
45
|
return new Promise((resolve, reject) => {
|
|
46
46
|
const child = spawn(cmd, args, { cwd, stdio: 'inherit', shell: true });
|
|
47
|
-
child.on('close',
|
|
47
|
+
child.on('close', code => {
|
|
48
48
|
if (code === 0)
|
|
49
49
|
resolve();
|
|
50
50
|
else
|
|
@@ -101,22 +101,20 @@ async function initProject(inputOpt) {
|
|
|
101
101
|
'@minecraft/server': mcVersionToGameTest(inputOpt.McVersion),
|
|
102
102
|
},
|
|
103
103
|
devDependencies: {
|
|
104
|
-
mbler: '
|
|
104
|
+
mbler: 'latest',
|
|
105
105
|
},
|
|
106
106
|
};
|
|
107
107
|
if (isMcx) {
|
|
108
108
|
packageJson.dependencies['@mbler/mcx'] = '0.0.3-alpha.r1';
|
|
109
|
-
packageJson.devDependencies['@mbler/mcx-core'] = '
|
|
109
|
+
packageJson.devDependencies['@mbler/mcx-core'] = 'latest';
|
|
110
110
|
}
|
|
111
111
|
await writeFile(path.join(dir, 'package.json'), JSON.stringify(packageJson, null, 2) + '\n');
|
|
112
112
|
const ui = inputOpt.OtherModule.includes('ui');
|
|
113
113
|
const beta = inputOpt.OtherModule.includes('beta-api');
|
|
114
114
|
const mblerConfig = `import { defineConfig } from "mbler"
|
|
115
115
|
export default defineConfig({
|
|
116
|
-
name: '${inputOpt.Name}',
|
|
117
116
|
description: '${inputOpt.Description}',
|
|
118
117
|
mcVersion: '${inputOpt.McVersion}',
|
|
119
|
-
version: '0.0.1',
|
|
120
118
|
minify: false,
|
|
121
119
|
script: { main: 'index.ts', ui: ${ui}, lang: '${inputOpt.Language}', UseBeta: ${beta} },
|
|
122
120
|
build: { bundle: true, cache: "file" },
|
|
@@ -148,13 +146,17 @@ export default defineConfig({
|
|
|
148
146
|
try {
|
|
149
147
|
await spawnCmd('git', ['init'], dir);
|
|
150
148
|
}
|
|
151
|
-
catch {
|
|
149
|
+
catch (err) {
|
|
150
|
+
console.log('Failed to initialize git, you can try to run it manually later. ERR: ', err);
|
|
151
|
+
}
|
|
152
152
|
}
|
|
153
153
|
if (inputOpt.OtherModule.includes('init dep')) {
|
|
154
154
|
try {
|
|
155
155
|
await spawnCmd(inputOpt.PackageManager, ['install'], dir);
|
|
156
156
|
}
|
|
157
|
-
catch {
|
|
157
|
+
catch (err) {
|
|
158
|
+
console.log('Failed to install dependencies, you can try to run it manually later. ERR: ', err);
|
|
159
|
+
}
|
|
158
160
|
}
|
|
159
161
|
}
|
|
160
162
|
|
|
@@ -164,7 +166,7 @@ function throwErr(text) {
|
|
|
164
166
|
}
|
|
165
167
|
const program = new Command('create-mbler');
|
|
166
168
|
program
|
|
167
|
-
.name('mbler')
|
|
169
|
+
.name('create-mbler')
|
|
168
170
|
.description('Create mbler project')
|
|
169
171
|
.addArgument(new Argument('[dir]', 'Where to create mbler project'))
|
|
170
172
|
.option('-l, --language <value>', 'Define Create mbler tool language', 'en')
|
|
@@ -233,4 +235,4 @@ const cli = () => {
|
|
|
233
235
|
program.parse();
|
|
234
236
|
};
|
|
235
237
|
|
|
236
|
-
export { LanguageList, LanguageMap, cli, getI18n };
|
|
238
|
+
export { LanguageList, LanguageMap, cli, getI18n, showText, verifyType };
|
package/package.json
CHANGED
|
@@ -12,10 +12,16 @@
|
|
|
12
12
|
"url": "https://github.com/RuanhoR/mcx-core",
|
|
13
13
|
"directory": "packages/create-mbler"
|
|
14
14
|
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"bin",
|
|
18
|
+
"README.md",
|
|
19
|
+
"template"
|
|
20
|
+
],
|
|
15
21
|
"engines": {
|
|
16
22
|
"node": ">= 20"
|
|
17
23
|
},
|
|
18
|
-
"version": "0.0.1
|
|
24
|
+
"version": "0.0.1",
|
|
19
25
|
"dependencies": {
|
|
20
26
|
"commander": "14.0.3",
|
|
21
27
|
"inquirer": "13.4.3"
|
|
@@ -32,6 +38,7 @@
|
|
|
32
38
|
"build": "rollup -c && rm -rf ./dist/_tmp",
|
|
33
39
|
"dev": "rollup -c -w",
|
|
34
40
|
"lint": "eslint src --ext .js,.ts",
|
|
35
|
-
"lint:fix": "eslint src --ext .js,.ts --fix"
|
|
41
|
+
"lint:fix": "eslint src --ext .js,.ts --fix",
|
|
42
|
+
"prepublish": "pnpm build"
|
|
36
43
|
}
|
|
37
44
|
}
|
package/rollup.config.mjs
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import path from "node:path"
|
|
2
|
-
import ts from "@rollup/plugin-typescript"
|
|
3
|
-
import resolve from "@rollup/plugin-node-resolve"
|
|
4
|
-
import commjs from "@rollup/plugin-commonjs"
|
|
5
|
-
import json from "@rollup/plugin-json"
|
|
6
|
-
import dts from "rollup-plugin-dts"
|
|
7
|
-
import terser from "@rollup/plugin-terser"
|
|
8
|
-
export default [
|
|
9
|
-
{
|
|
10
|
-
input: path.resolve("src/main.ts"),
|
|
11
|
-
plugins: [
|
|
12
|
-
ts(),
|
|
13
|
-
resolve(),
|
|
14
|
-
commjs(),
|
|
15
|
-
json(),
|
|
16
|
-
// terser()
|
|
17
|
-
],
|
|
18
|
-
external: [
|
|
19
|
-
"inquirer",
|
|
20
|
-
"commander"
|
|
21
|
-
],
|
|
22
|
-
output: [
|
|
23
|
-
{
|
|
24
|
-
file: "./dist/main.mjs",
|
|
25
|
-
format: "esm"
|
|
26
|
-
}
|
|
27
|
-
]
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
input: path.resolve("src/main.ts"),
|
|
31
|
-
plugins: [
|
|
32
|
-
dts()
|
|
33
|
-
],
|
|
34
|
-
output: [
|
|
35
|
-
{
|
|
36
|
-
file: "./dist/main.d.ts"
|
|
37
|
-
}
|
|
38
|
-
]
|
|
39
|
-
}
|
|
40
|
-
]
|
package/src/i18n.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
export type I18nKey =
|
|
2
|
-
| 'InputCreateAt'
|
|
3
|
-
| 'Name'
|
|
4
|
-
| 'Description'
|
|
5
|
-
| 'McVersion'
|
|
6
|
-
| 'Need'
|
|
7
|
-
| 'PackageManager'
|
|
8
|
-
export const LanguageList = ['zh', 'en'] as const
|
|
9
|
-
export type Language = (typeof LanguageList)[number]
|
|
10
|
-
export const LanguageMap = {
|
|
11
|
-
zh: {
|
|
12
|
-
InputCreateAt: '创建在哪呢?',
|
|
13
|
-
Name: '项目名称',
|
|
14
|
-
Need: '需要什么?',
|
|
15
|
-
McVersion: '依赖的 mc 版本(像 1.21.100 )?',
|
|
16
|
-
Description: '项目描述?',
|
|
17
|
-
PackageManager: '使用哪个包管理器?',
|
|
18
|
-
},
|
|
19
|
-
en: {
|
|
20
|
-
InputCreateAt: 'Create mbler project at ...?',
|
|
21
|
-
Need: 'Need?',
|
|
22
|
-
Description: 'Project description?',
|
|
23
|
-
McVersion: 'Need mcbe version(like 1.21.100)?',
|
|
24
|
-
Name: 'Project name? ',
|
|
25
|
-
PackageManager: 'Which package manager to use?',
|
|
26
|
-
},
|
|
27
|
-
} satisfies {
|
|
28
|
-
[key in Language]: {
|
|
29
|
-
[key in I18nKey]: string
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
export function getI18n(key: I18nKey, language: Language): string {
|
|
33
|
-
return LanguageMap[language][key]
|
|
34
|
-
}
|
package/src/init.ts
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import path from 'node:path'
|
|
2
|
-
import { spawn } from 'node:child_process'
|
|
3
|
-
import { InputResult } from './types'
|
|
4
|
-
import { stat, mkdir, cp, writeFile } from 'node:fs/promises'
|
|
5
|
-
|
|
6
|
-
function spawnCmd(cmd: string, args: string[], cwd: string): Promise<void> {
|
|
7
|
-
return new Promise((resolve, reject) => {
|
|
8
|
-
const child = spawn(cmd, args, { cwd, stdio: 'inherit', shell: true })
|
|
9
|
-
child.on('close', (code) => {
|
|
10
|
-
if (code === 0) resolve()
|
|
11
|
-
else reject(new Error(`${cmd} exited with code ${code}`))
|
|
12
|
-
})
|
|
13
|
-
child.on('error', reject)
|
|
14
|
-
})
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export async function fileExists(f: string) {
|
|
18
|
-
try {
|
|
19
|
-
await stat(path.resolve(f))
|
|
20
|
-
return true
|
|
21
|
-
} catch {
|
|
22
|
-
return false
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
async function findTemplate(language: InputResult['Language']) {
|
|
27
|
-
const d = path.join('template', language)
|
|
28
|
-
if (await fileExists(path.join(import.meta.dirname, '../', d))) {
|
|
29
|
-
return path.join(import.meta.dirname, '../', d)
|
|
30
|
-
}
|
|
31
|
-
if (await fileExists(path.join(import.meta.dirname, '../../', d))) {
|
|
32
|
-
return path.join(import.meta.dirname, '../../', d)
|
|
33
|
-
}
|
|
34
|
-
throw new Error("Can't find template")
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
function mcVersionToGameTest(mcVersion: string): string {
|
|
38
|
-
const map: Record<string, string> = {
|
|
39
|
-
'1.21.100': '2.0.0',
|
|
40
|
-
'1.21.120': '2.0.0',
|
|
41
|
-
}
|
|
42
|
-
return map[mcVersion] || '2.0.0'
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export async function initProject(inputOpt: InputResult) {
|
|
46
|
-
const dir = path.resolve(inputOpt.createAt)
|
|
47
|
-
const isMcx = inputOpt.Language === 'mcx'
|
|
48
|
-
await mkdir(dir, { recursive: true })
|
|
49
|
-
const templatePath = await findTemplate(inputOpt.Language)
|
|
50
|
-
await cp(templatePath, dir, { recursive: true, force: true })
|
|
51
|
-
const packageJson: Record<string, any> = {
|
|
52
|
-
name: inputOpt.Name,
|
|
53
|
-
description: inputOpt.Description,
|
|
54
|
-
version: '0.0.1',
|
|
55
|
-
packageManager: inputOpt.PackageManager,
|
|
56
|
-
engines: { node: '>=18.0.0' },
|
|
57
|
-
scripts: {
|
|
58
|
-
dev: 'mbler watch',
|
|
59
|
-
build: 'mcx-tsc && BUILD_MODULE=release mbler build',
|
|
60
|
-
'dev-build': 'mbler build',
|
|
61
|
-
},
|
|
62
|
-
type: 'module',
|
|
63
|
-
dependencies: {
|
|
64
|
-
'@minecraft/server': mcVersionToGameTest(inputOpt.McVersion),
|
|
65
|
-
},
|
|
66
|
-
devDependencies: {
|
|
67
|
-
mbler: '0.2.4-rc.6',
|
|
68
|
-
},
|
|
69
|
-
}
|
|
70
|
-
if (isMcx) {
|
|
71
|
-
packageJson.dependencies['@mbler/mcx'] = '0.0.3-alpha.r1'
|
|
72
|
-
packageJson.devDependencies['@mbler/mcx-core'] = '0.0.8-rc.4'
|
|
73
|
-
}
|
|
74
|
-
await writeFile(
|
|
75
|
-
path.join(dir, 'package.json'),
|
|
76
|
-
JSON.stringify(packageJson, null, 2) + '\n',
|
|
77
|
-
)
|
|
78
|
-
const ui = inputOpt.OtherModule.includes('ui')
|
|
79
|
-
const beta = inputOpt.OtherModule.includes('beta-api')
|
|
80
|
-
const mblerConfig = `import { defineConfig } from "mbler"
|
|
81
|
-
export default defineConfig({
|
|
82
|
-
name: '${inputOpt.Name}',
|
|
83
|
-
description: '${inputOpt.Description}',
|
|
84
|
-
mcVersion: '${inputOpt.McVersion}',
|
|
85
|
-
version: '0.0.1',
|
|
86
|
-
minify: false,
|
|
87
|
-
script: { main: 'index.ts', ui: ${ui}, lang: '${inputOpt.Language}', UseBeta: ${beta} },
|
|
88
|
-
build: { bundle: true, cache: "file" },
|
|
89
|
-
outdir: { resources: './dist/res', behavior: './dist/dep', dist: './dist.mcaddon' }
|
|
90
|
-
});\n`
|
|
91
|
-
await writeFile(path.join(dir, 'mbler.config.js'), mblerConfig)
|
|
92
|
-
if (inputOpt.Language !== 'js') {
|
|
93
|
-
const tsconfig = {
|
|
94
|
-
compilerOptions: {
|
|
95
|
-
module: 'esnext',
|
|
96
|
-
noEmit: true,
|
|
97
|
-
target: 'esnext',
|
|
98
|
-
sourceMap: true,
|
|
99
|
-
declaration: false,
|
|
100
|
-
strict: true,
|
|
101
|
-
moduleResolution: 'bundler',
|
|
102
|
-
allowImportingTsExtensions: true,
|
|
103
|
-
isolatedModules: true,
|
|
104
|
-
moduleDetection: 'force',
|
|
105
|
-
skipLibCheck: true,
|
|
106
|
-
types: ['mbler/client'],
|
|
107
|
-
},
|
|
108
|
-
include: ['./behavior/scripts/**/*'],
|
|
109
|
-
}
|
|
110
|
-
await writeFile(
|
|
111
|
-
path.join(dir, 'tsconfig.json'),
|
|
112
|
-
JSON.stringify(tsconfig, null, 2) + '\n',
|
|
113
|
-
)
|
|
114
|
-
}
|
|
115
|
-
await writeFile(
|
|
116
|
-
path.join(dir, '.gitignore'),
|
|
117
|
-
'node_modules\ndist\ndist.mcaddon\n.mbler\ncache\n',
|
|
118
|
-
)
|
|
119
|
-
if (inputOpt.OtherModule.includes('init git')) {
|
|
120
|
-
try { await spawnCmd('git', ['init'], dir) } catch {}
|
|
121
|
-
}
|
|
122
|
-
if (inputOpt.OtherModule.includes('init dep')) {
|
|
123
|
-
try { await spawnCmd(inputOpt.PackageManager, ['install'], dir) } catch {}
|
|
124
|
-
}
|
|
125
|
-
}
|
package/src/main.ts
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { Argument, Command } from 'commander'
|
|
2
|
-
import inpurer from 'inquirer'
|
|
3
|
-
import { getI18n, LanguageList } from './i18n'
|
|
4
|
-
import { showText, verifyType } from './utils'
|
|
5
|
-
import { InputResult } from './types'
|
|
6
|
-
import { initProject } from './init'
|
|
7
|
-
function throwErr(text: string) {
|
|
8
|
-
showText('×: ERR: ' + text)
|
|
9
|
-
process.exit(1)
|
|
10
|
-
}
|
|
11
|
-
const program = new Command('create-mbler')
|
|
12
|
-
program
|
|
13
|
-
.name('mbler')
|
|
14
|
-
.description('Create mbler project')
|
|
15
|
-
.addArgument(new Argument('[dir]', 'Where to create mbler project'))
|
|
16
|
-
.option('-l, --language <value>', 'Define Create mbler tool language', 'en')
|
|
17
|
-
.action(async function (...argv) {
|
|
18
|
-
const language = this.getOptionValue('language')
|
|
19
|
-
if (!LanguageList.includes(language)) {
|
|
20
|
-
throwErr(
|
|
21
|
-
'Invaild Language, should such as ' + JSON.stringify(LanguageList),
|
|
22
|
-
)
|
|
23
|
-
}
|
|
24
|
-
const inputResult = (await inpurer.prompt([
|
|
25
|
-
{
|
|
26
|
-
type: 'input',
|
|
27
|
-
default: argv[0] || './',
|
|
28
|
-
message: getI18n('InputCreateAt', language),
|
|
29
|
-
name: 'createAt',
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
type: 'input',
|
|
33
|
-
name: 'Name',
|
|
34
|
-
message: getI18n('Name', language),
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
type: 'input',
|
|
38
|
-
name: 'Description',
|
|
39
|
-
message: getI18n('Description', language),
|
|
40
|
-
default: 'The package is a ...',
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
type: 'input',
|
|
44
|
-
name: 'McVersion',
|
|
45
|
-
message: getI18n('McVersion', language),
|
|
46
|
-
default: '1.21.100',
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
type: 'checkbox',
|
|
50
|
-
name: 'OtherModule',
|
|
51
|
-
message: getI18n('Need', language),
|
|
52
|
-
choices: ['ui', 'beta-api', 'init git', 'init dep'],
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
type: 'select',
|
|
56
|
-
name: 'Language',
|
|
57
|
-
message: getI18n('Need', language),
|
|
58
|
-
choices: ['mcx', 'js', 'ts'],
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
type: 'select',
|
|
62
|
-
name: 'PackageManager',
|
|
63
|
-
message: getI18n('PackageManager', language),
|
|
64
|
-
choices: ['npm', 'pnpm'],
|
|
65
|
-
},
|
|
66
|
-
])) as InputResult
|
|
67
|
-
if (
|
|
68
|
-
!verifyType(inputResult, {
|
|
69
|
-
createAt: 'string',
|
|
70
|
-
Description: 'string',
|
|
71
|
-
Language: 'string',
|
|
72
|
-
McVersion: 'string',
|
|
73
|
-
PackageManager: 'string',
|
|
74
|
-
Name: 'string',
|
|
75
|
-
OtherModule: 'object',
|
|
76
|
-
})
|
|
77
|
-
) {
|
|
78
|
-
throwErr('basic type error')
|
|
79
|
-
}
|
|
80
|
-
await initProject(inputResult)
|
|
81
|
-
})
|
|
82
|
-
export const cli = () => {
|
|
83
|
-
program.parse()
|
|
84
|
-
}
|
|
85
|
-
export * from './i18n'
|
package/src/types.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export type PackageManager = 'npm' | 'pnpm'
|
|
2
|
-
|
|
3
|
-
export interface InputResult {
|
|
4
|
-
createAt: string
|
|
5
|
-
OtherModule: ('ui' | 'beta-api' | 'init git' | 'init dep')[]
|
|
6
|
-
McVersion: string
|
|
7
|
-
Description: string
|
|
8
|
-
Name: string
|
|
9
|
-
Language: 'mcx' | 'js' | 'ts'
|
|
10
|
-
PackageManager: PackageManager
|
|
11
|
-
}
|
package/src/utils.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { stdout } from 'node:process'
|
|
2
|
-
|
|
3
|
-
export function showText(etxt: string) {
|
|
4
|
-
stdout.write(etxt + '\n')
|
|
5
|
-
}
|
|
6
|
-
export interface JSTypeMap {
|
|
7
|
-
string: string
|
|
8
|
-
boolean: boolean
|
|
9
|
-
bigint: bigint
|
|
10
|
-
symbol: symbol
|
|
11
|
-
object: object
|
|
12
|
-
number: number
|
|
13
|
-
undefined: undefined
|
|
14
|
-
null: null
|
|
15
|
-
}
|
|
16
|
-
export function verifyType<
|
|
17
|
-
T extends object,
|
|
18
|
-
U extends Record<keyof T, keyof JSTypeMap>,
|
|
19
|
-
>(obj: T, typeMapping: U): obj is T & { [P in keyof U]: JSTypeMap[U[P]] } {
|
|
20
|
-
for (const key in typeMapping) {
|
|
21
|
-
const expected = typeMapping[key]
|
|
22
|
-
const val = (obj as any)[key]
|
|
23
|
-
if (typeof val !== expected) return false
|
|
24
|
-
}
|
|
25
|
-
return true
|
|
26
|
-
}
|
package/tsconfig.json
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"rootDir": "./src",
|
|
4
|
-
"outDir": "./dist",
|
|
5
|
-
"module": "esnext",
|
|
6
|
-
"target": "esnext",
|
|
7
|
-
"lib": [
|
|
8
|
-
"esnext"
|
|
9
|
-
],
|
|
10
|
-
"types": [
|
|
11
|
-
"node"
|
|
12
|
-
],
|
|
13
|
-
"sourceMap": false,
|
|
14
|
-
"declaration": true,
|
|
15
|
-
"declarationMap": false,
|
|
16
|
-
"noUncheckedIndexedAccess": true,
|
|
17
|
-
"exactOptionalPropertyTypes": true,
|
|
18
|
-
"allowJs": true,
|
|
19
|
-
"strict": true,
|
|
20
|
-
"moduleResolution": "bundler",
|
|
21
|
-
"verbatimModuleSyntax": false,
|
|
22
|
-
"isolatedModules": true,
|
|
23
|
-
"noUncheckedSideEffectImports": true,
|
|
24
|
-
"moduleDetection": "force",
|
|
25
|
-
"noEmit": true,
|
|
26
|
-
"skipLibCheck": true,
|
|
27
|
-
"declarationDir": "./dist/_tmp"
|
|
28
|
-
},
|
|
29
|
-
"include": [
|
|
30
|
-
"./src/**/*"
|
|
31
|
-
]
|
|
32
|
-
}
|