@rspack/binding 0.0.0-20220909025136

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/binding.d.ts ADDED
@@ -0,0 +1,137 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+
4
+ /* auto-generated by NAPI-RS */
5
+
6
+ export class ExternalObject<T> {
7
+ readonly '': {
8
+ readonly '': unique symbol
9
+ [K: symbol]: T
10
+ }
11
+ }
12
+ export interface RawCssPluginConfig {
13
+ /**
14
+ * ## Example
15
+ * ```rust,ignore
16
+ * RawCssOptions {
17
+ * preset_env: vec!["Firefox > 10".into(), "chrome >=20".into()],
18
+ * }
19
+ * ```
20
+ * The preset_env will finally pass into [`browserslist::resolve`](https://docs.rs/browserslist-rs/latest/browserslist/fn.resolve.html).
21
+ * For detailed configuration, see https://docs.rs/browserslist-rs/latest/browserslist/
22
+ */
23
+ presetEnv: Array<string>
24
+ }
25
+ /**
26
+ * It seems napi not support enum well
27
+ */
28
+ export interface RawHtmlPluginConfig {
29
+ /** emitted file name in output path */
30
+ filename?: string | void
31
+ /** template html file */
32
+ template?: string
33
+ /** `head`, `body` or None */
34
+ inject?: string | void
35
+ /** path or `auto` */
36
+ publicPath?: string
37
+ /** `blocking`, `defer`, or `module` */
38
+ scriptLoading?: string | void
39
+ /** entry_chunk_name (only entry chunks are supported) */
40
+ chunks?: Array<string>
41
+ excludedChunks?: Array<string>
42
+ sri?: string | void
43
+ }
44
+ export interface RawBuiltins {
45
+ html?: Array<RawHtmlPluginConfig>
46
+ css?: RawCssPluginConfig
47
+ }
48
+ /**
49
+ * `loader` is for js side loader, `builtin_loader` is for rust side loader,
50
+ * which is mapped to real rust side loader by [get_builtin_loader].
51
+ *
52
+ * `options` is
53
+ * - a `None` on rust side and handled by js side `getOptions` when
54
+ * using with `loader`.
55
+ * - a `Some(string)` on rust side, deserialized by `serde_json::from_str`
56
+ * and passed to rust side loader in [get_builtin_loader] when using with
57
+ * `builtin_loader`.
58
+ */
59
+ export interface RawModuleRuleUse {
60
+ loader?: (...args: any[]) => any
61
+ builtinLoader?: string
62
+ options?: string
63
+ loaderName?: string
64
+ }
65
+ export interface RawModuleRule {
66
+ test?: string
67
+ resource?: string
68
+ resourceQuery?: string
69
+ func?: (...args: any[]) => any
70
+ uses?: Array<RawModuleRuleUse>
71
+ type?: "js" | "jsx" | "ts" | "tsx" | "css" | "json" | "asset" | "asset/resource" | "asset/source" | "asset/inline"
72
+ }
73
+ export interface RawAssetParserDataUrlOption {
74
+ maxSize?: number
75
+ }
76
+ export interface RawAssetParserOptions {
77
+ dataUrlCondition?: RawAssetParserDataUrlOption
78
+ }
79
+ export interface RawParserOptions {
80
+ asset?: RawAssetParserOptions
81
+ }
82
+ export interface RawModuleOptions {
83
+ rules: Array<RawModuleRule>
84
+ parser?: RawParserOptions
85
+ }
86
+ export interface RawOutputOptions {
87
+ path?: string
88
+ publicPath?: string
89
+ assetModuleFilename?: string
90
+ filename?: string
91
+ chunkFilename?: string
92
+ uniqueName?: string
93
+ }
94
+ export interface RawResolveOptions {
95
+ preferRelative?: boolean
96
+ }
97
+ export interface RawOptions {
98
+ entry?: Record<string, string>
99
+ mode?: string
100
+ target?: string[]
101
+ context?: string
102
+ output?: RawOutputOptions
103
+ resolve?: RawResolveOptions
104
+ module?: RawModuleOptions
105
+ builtins?: RawBuiltins
106
+ define?: Record<string, string>
107
+ external?: Record<string, string>
108
+ }
109
+ export interface OnLoadContext {
110
+ id: string
111
+ }
112
+ export function initCustomTraceSubscriber(): void
113
+ export interface AssetContent {
114
+ buffer?: Buffer
115
+ source?: string
116
+ }
117
+ export interface UpdateAssetOptions {
118
+ asset: AssetContent
119
+ filename: string
120
+ }
121
+ export interface PluginCallbacks {
122
+ doneCallback: (...args: any[]) => any
123
+ processAssetsCallback: (...args: any[]) => any
124
+ }
125
+ export interface RspackError {
126
+ message: string
127
+ }
128
+ export interface Stats {
129
+ errors: Array<RspackError>
130
+ }
131
+ export function initTraceSubscriber(): void
132
+ export function newRspack(options: RawOptions, pluginCallbacks?: PluginCallbacks | undefined | null): ExternalObject<RspackInternal>
133
+ export function build(rspack: ExternalObject<RspackInternal>): Promise<Stats>
134
+ export function rebuild(rspack: ExternalObject<RspackInternal>, changedFile: string[]): Promise<Record<string, string>>
135
+ export interface RspackInternal {
136
+
137
+ }
package/binding.js ADDED
@@ -0,0 +1,221 @@
1
+ const { existsSync, readFileSync } = require('fs')
2
+ const { join } = require('path')
3
+
4
+ const { platform, arch } = process
5
+
6
+ let nativeBinding = null
7
+ let localFileExisted = false
8
+ let loadError = null
9
+
10
+ function isMusl() {
11
+ // For Node 10
12
+ if (!process.report || typeof process.report.getReport !== 'function') {
13
+ try {
14
+ return readFileSync('/usr/bin/ldd', 'utf8').includes('musl')
15
+ } catch (e) {
16
+ return true
17
+ }
18
+ } else {
19
+ const { glibcVersionRuntime } = process.report.getReport().header
20
+ return !glibcVersionRuntime
21
+ }
22
+ }
23
+
24
+ switch (platform) {
25
+ case 'android':
26
+ switch (arch) {
27
+ case 'arm64':
28
+ localFileExisted = existsSync(join(__dirname, 'rspack.android-arm64.node'))
29
+ try {
30
+ if (localFileExisted) {
31
+ nativeBinding = require('./rspack.android-arm64.node')
32
+ } else {
33
+ nativeBinding = require('@rspack/binding-android-arm64')
34
+ }
35
+ } catch (e) {
36
+ loadError = e
37
+ }
38
+ break
39
+ case 'arm':
40
+ localFileExisted = existsSync(join(__dirname, 'rspack.android-arm-eabi.node'))
41
+ try {
42
+ if (localFileExisted) {
43
+ nativeBinding = require('./rspack.android-arm-eabi.node')
44
+ } else {
45
+ nativeBinding = require('@rspack/binding-android-arm-eabi')
46
+ }
47
+ } catch (e) {
48
+ loadError = e
49
+ }
50
+ break
51
+ default:
52
+ throw new Error(`Unsupported architecture on Android ${arch}`)
53
+ }
54
+ break
55
+ case 'win32':
56
+ switch (arch) {
57
+ case 'x64':
58
+ localFileExisted = existsSync(join(__dirname, 'rspack.win32-x64-msvc.node'))
59
+ try {
60
+ if (localFileExisted) {
61
+ nativeBinding = require('./rspack.win32-x64-msvc.node')
62
+ } else {
63
+ nativeBinding = require('@rspack/binding-win32-x64-msvc')
64
+ }
65
+ } catch (e) {
66
+ loadError = e
67
+ }
68
+ break
69
+ case 'ia32':
70
+ localFileExisted = existsSync(join(__dirname, 'rspack.win32-ia32-msvc.node'))
71
+ try {
72
+ if (localFileExisted) {
73
+ nativeBinding = require('./rspack.win32-ia32-msvc.node')
74
+ } else {
75
+ nativeBinding = require('@rspack/binding-win32-ia32-msvc')
76
+ }
77
+ } catch (e) {
78
+ loadError = e
79
+ }
80
+ break
81
+ case 'arm64':
82
+ localFileExisted = existsSync(join(__dirname, 'rspack.win32-arm64-msvc.node'))
83
+ try {
84
+ if (localFileExisted) {
85
+ nativeBinding = require('./rspack.win32-arm64-msvc.node')
86
+ } else {
87
+ nativeBinding = require('@rspack/binding-win32-arm64-msvc')
88
+ }
89
+ } catch (e) {
90
+ loadError = e
91
+ }
92
+ break
93
+ default:
94
+ throw new Error(`Unsupported architecture on Windows: ${arch}`)
95
+ }
96
+ break
97
+ case 'darwin':
98
+ switch (arch) {
99
+ case 'x64':
100
+ localFileExisted = existsSync(join(__dirname, 'rspack.darwin-x64.node'))
101
+ try {
102
+ if (localFileExisted) {
103
+ nativeBinding = require('./rspack.darwin-x64.node')
104
+ } else {
105
+ nativeBinding = require('@rspack/binding-darwin-x64')
106
+ }
107
+ } catch (e) {
108
+ loadError = e
109
+ }
110
+ break
111
+ case 'arm64':
112
+ localFileExisted = existsSync(join(__dirname, 'rspack.darwin-arm64.node'))
113
+ try {
114
+ if (localFileExisted) {
115
+ nativeBinding = require('./rspack.darwin-arm64.node')
116
+ } else {
117
+ nativeBinding = require('@rspack/binding-darwin-arm64')
118
+ }
119
+ } catch (e) {
120
+ loadError = e
121
+ }
122
+ break
123
+ default:
124
+ throw new Error(`Unsupported architecture on macOS: ${arch}`)
125
+ }
126
+ break
127
+ case 'freebsd':
128
+ if (arch !== 'x64') {
129
+ throw new Error(`Unsupported architecture on FreeBSD: ${arch}`)
130
+ }
131
+ localFileExisted = existsSync(join(__dirname, 'rspack.freebsd-x64.node'))
132
+ try {
133
+ if (localFileExisted) {
134
+ nativeBinding = require('./rspack.freebsd-x64.node')
135
+ } else {
136
+ nativeBinding = require('@rspack/binding-freebsd-x64')
137
+ }
138
+ } catch (e) {
139
+ loadError = e
140
+ }
141
+ break
142
+ case 'linux':
143
+ switch (arch) {
144
+ case 'x64':
145
+ if (isMusl()) {
146
+ localFileExisted = existsSync(join(__dirname, 'rspack.linux-x64-musl.node'))
147
+ try {
148
+ if (localFileExisted) {
149
+ nativeBinding = require('./rspack.linux-x64-musl.node')
150
+ } else {
151
+ nativeBinding = require('@rspack/binding-linux-x64-musl')
152
+ }
153
+ } catch (e) {
154
+ loadError = e
155
+ }
156
+ } else {
157
+ localFileExisted = existsSync(join(__dirname, 'rspack.linux-x64-gnu.node'))
158
+ try {
159
+ if (localFileExisted) {
160
+ nativeBinding = require('./rspack.linux-x64-gnu.node')
161
+ } else {
162
+ nativeBinding = require('@rspack/binding-linux-x64-gnu')
163
+ }
164
+ } catch (e) {
165
+ loadError = e
166
+ }
167
+ }
168
+ break
169
+ case 'arm64':
170
+ if (isMusl()) {
171
+ localFileExisted = existsSync(join(__dirname, 'rspack.linux-arm64-musl.node'))
172
+ try {
173
+ if (localFileExisted) {
174
+ nativeBinding = require('./rspack.linux-arm64-musl.node')
175
+ } else {
176
+ nativeBinding = require('@rspack/binding-linux-arm64-musl')
177
+ }
178
+ } catch (e) {
179
+ loadError = e
180
+ }
181
+ } else {
182
+ localFileExisted = existsSync(join(__dirname, 'rspack.linux-arm64-gnu.node'))
183
+ try {
184
+ if (localFileExisted) {
185
+ nativeBinding = require('./rspack.linux-arm64-gnu.node')
186
+ } else {
187
+ nativeBinding = require('@rspack/binding-linux-arm64-gnu')
188
+ }
189
+ } catch (e) {
190
+ loadError = e
191
+ }
192
+ }
193
+ break
194
+ case 'arm':
195
+ localFileExisted = existsSync(join(__dirname, 'rspack.linux-arm-gnueabihf.node'))
196
+ try {
197
+ if (localFileExisted) {
198
+ nativeBinding = require('./rspack.linux-arm-gnueabihf.node')
199
+ } else {
200
+ nativeBinding = require('@rspack/binding-linux-arm-gnueabihf')
201
+ }
202
+ } catch (e) {
203
+ loadError = e
204
+ }
205
+ break
206
+ default:
207
+ throw new Error(`Unsupported architecture on Linux: ${arch}`)
208
+ }
209
+ break
210
+ default:
211
+ throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`)
212
+ }
213
+
214
+ if (!nativeBinding) {
215
+ if (loadError) {
216
+ throw loadError
217
+ }
218
+ throw new Error(`Failed to load native binding`)
219
+ }
220
+
221
+ module.exports.default = module.exports = nativeBinding
package/package.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "@rspack/binding",
3
+ "version": "0.0.0-20220909025136",
4
+ "description": "Node binding for rspack",
5
+ "main": "binding.js",
6
+ "types": "binding.d.ts",
7
+ "publishConfig": {
8
+ "access": "public"
9
+ },
10
+ "files": [
11
+ "binding.js",
12
+ "binding.d.ts",
13
+ "*.node"
14
+ ],
15
+ "keywords": [],
16
+ "author": "",
17
+ "license": "ISC",
18
+ "devDependencies": {
19
+ "@napi-rs/cli": "^2.6.2",
20
+ "why-is-node-running": "2.2.1"
21
+ },
22
+ "scripts": {
23
+ "build": "napi build --platform --js false --dts binding.d.ts --config napirs.rc.json",
24
+ "build:release": "napi build --release --platform --js false --dts binding.d.ts --config napirs.rc.json"
25
+ }
26
+ }
Binary file