Skip to content
This repository was archived by the owner on Jul 30, 2024. It is now read-only.

Commit 13dcb3e

Browse files
authored
Merge pull request #461 from exoego/drop-factory
Drop Factory macro
2 parents 71c71ab + 8f86654 commit 13dcb3e

File tree

75 files changed

+2701
-282
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+2701
-282
lines changed

README.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,3 @@ for {
103103
console.log("output3 =", output3)
104104
}
105105
```
106-
107-
## Note
108-
109-
This facade leverages [`@Factory` marcro](https://github.com/exoego/scalajs-types-util#factory-macro) to create highly-optimized factory method without boilerplate.

app/nodejs-v16/src/main/scala/io/scalajs/nodejs/Require.scala

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package io.scalajs.nodejs
22

3-
import _root_.net.exoego.scalajs.types.util.Factory
4-
53
import scala.scalajs.js
64
import scala.scalajs.js.annotation.JSGlobal
75

@@ -26,7 +24,16 @@ trait RequireResolver extends js.Object {
2624
def paths(requiest: String): js.Array[String] = js.native
2725
}
2826

29-
@Factory
3027
trait ResolveOptions extends js.Object {
3128
var paths: js.UndefOr[js.Array[String]] = js.undefined
3229
}
30+
object ResolveOptions {
31+
def apply(
32+
paths: js.UndefOr[js.Array[String]] = js.undefined
33+
): ResolveOptions = {
34+
val _obj$ = js.Dynamic.literal(
35+
)
36+
paths.foreach(_v => _obj$.updateDynamic("paths")(_v.asInstanceOf[js.Any]))
37+
_obj$.asInstanceOf[ResolveOptions]
38+
}
39+
}

app/nodejs-v16/src/main/scala/io/scalajs/nodejs/buffer/Blob.scala

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package io.scalajs.nodejs.buffer
22

33
import com.thoughtworks.enableMembersIf
44
import io.scalajs.nodejs.webstream
5-
import net.exoego.scalajs.types.util.Factory
65

76
import scala.scalajs.js
87
import scala.scalajs.js.annotation.{JSImport, JSName}
@@ -36,8 +35,19 @@ class Blob() extends js.Object {
3635
def stream(): webstream.ReadableStream = js.native
3736
}
3837

39-
@Factory
4038
trait BlobOptions extends js.Object {
4139
var encoding: js.UndefOr[String] = js.undefined
4240
var `type`: js.UndefOr[String] = js.undefined
4341
}
42+
object BlobOptions {
43+
def apply(
44+
encoding: js.UndefOr[String] = js.undefined,
45+
`type`: js.UndefOr[String] = js.undefined
46+
): BlobOptions = {
47+
val _obj$ = js.Dynamic.literal(
48+
)
49+
encoding.foreach(_v => _obj$.updateDynamic("encoding")(_v.asInstanceOf[js.Any]))
50+
`type`.foreach(_v => _obj$.updateDynamic("type")(_v.asInstanceOf[js.Any]))
51+
_obj$.asInstanceOf[BlobOptions]
52+
}
53+
}

app/nodejs-v16/src/main/scala/io/scalajs/nodejs/child_process/ExecFileSyncOptions.scala

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package io.scalajs.nodejs.child_process
22

33
import io.scalajs.nodejs.{GID, UID}
4-
import net.exoego.scalajs.types.util.Factory
54

65
import scala.scalajs.js
76
import scala.scalajs.js.|
@@ -11,7 +10,6 @@ import scala.scalajs.js.|
1110
* Note: Never pass unsanitized user input to this function. Any input containing shell meta-characters may be used to
1211
* trigger arbitrary command execution.
1312
*/
14-
@Factory
1513
trait ExecFileSyncOptions extends js.Object {
1614

1715
/** Current working directory of the child process
@@ -65,3 +63,36 @@ trait ExecFileSyncOptions extends js.Object {
6563
*/
6664
var windowsHide: js.UndefOr[Boolean] = js.undefined
6765
}
66+
67+
object ExecFileSyncOptions {
68+
def apply(
69+
cwd: js.UndefOr[String] = js.undefined,
70+
input: js.UndefOr[Input] = js.undefined,
71+
stdio: js.UndefOr[StdIo] = js.undefined,
72+
env: js.UndefOr[js.Object] = js.undefined,
73+
encoding: js.UndefOr[String] = js.undefined,
74+
shell: js.UndefOr[Boolean | String] = js.undefined,
75+
timeout: js.UndefOr[Int] = js.undefined,
76+
maxBuffer: js.UndefOr[Int] = js.undefined,
77+
killSignal: js.UndefOr[KillSignal] = js.undefined,
78+
uid: js.UndefOr[UID] = js.undefined,
79+
gid: js.UndefOr[GID] = js.undefined,
80+
windowsHide: js.UndefOr[Boolean] = js.undefined
81+
): ExecFileSyncOptions = {
82+
val _obj$ = js.Dynamic.literal(
83+
)
84+
cwd.foreach(_v => _obj$.updateDynamic("cwd")(_v.asInstanceOf[js.Any]))
85+
input.foreach(_v => _obj$.updateDynamic("input")(_v.asInstanceOf[js.Any]))
86+
stdio.foreach(_v => _obj$.updateDynamic("stdio")(_v.asInstanceOf[js.Any]))
87+
env.foreach(_v => _obj$.updateDynamic("env")(_v.asInstanceOf[js.Any]))
88+
encoding.foreach(_v => _obj$.updateDynamic("encoding")(_v.asInstanceOf[js.Any]))
89+
shell.foreach(_v => _obj$.updateDynamic("shell")(_v.asInstanceOf[js.Any]))
90+
timeout.foreach(_v => _obj$.updateDynamic("timeout")(_v.asInstanceOf[js.Any]))
91+
maxBuffer.foreach(_v => _obj$.updateDynamic("maxBuffer")(_v.asInstanceOf[js.Any]))
92+
killSignal.foreach(_v => _obj$.updateDynamic("killSignal")(_v.asInstanceOf[js.Any]))
93+
uid.foreach(_v => _obj$.updateDynamic("uid")(_v.asInstanceOf[js.Any]))
94+
gid.foreach(_v => _obj$.updateDynamic("gid")(_v.asInstanceOf[js.Any]))
95+
windowsHide.foreach(_v => _obj$.updateDynamic("windowsHide")(_v.asInstanceOf[js.Any]))
96+
_obj$.asInstanceOf[ExecFileSyncOptions]
97+
}
98+
}

app/nodejs-v16/src/main/scala/io/scalajs/nodejs/child_process/ExecOptions.scala

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package io.scalajs.nodejs
22
package child_process
33

4-
import _root_.net.exoego.scalajs.types.util.Factory
5-
64
import scala.scalajs.js
75
import scala.scalajs.js.|
86

@@ -11,7 +9,6 @@ import scala.scalajs.js.|
119
* Note: Never pass unsanitized user input to this function. Any input containing shell meta-characters may be used to
1210
* trigger arbitrary command execution.
1311
*/
14-
@Factory
1512
trait ExecOptions extends js.Object {
1613

1714
/** Current working directory of the child process
@@ -61,3 +58,33 @@ trait ExecOptions extends js.Object {
6158
*/
6259
var windowsVerbatimArguments: js.UndefOr[Boolean] = js.undefined
6360
}
61+
object ExecOptions {
62+
def apply(
63+
cwd: js.UndefOr[String] = js.undefined,
64+
env: js.UndefOr[js.Object] = js.undefined,
65+
encoding: js.UndefOr[String] = js.undefined,
66+
shell: js.UndefOr[Boolean | String] = js.undefined,
67+
timeout: js.UndefOr[Int] = js.undefined,
68+
maxBuffer: js.UndefOr[Int] = js.undefined,
69+
killSignal: js.UndefOr[KillSignal] = js.undefined,
70+
uid: js.UndefOr[UID] = js.undefined,
71+
gid: js.UndefOr[GID] = js.undefined,
72+
windowsHide: js.UndefOr[Boolean] = js.undefined,
73+
windowsVerbatimArguments: js.UndefOr[Boolean] = js.undefined
74+
): ExecOptions = {
75+
val _obj$ = js.Dynamic.literal(
76+
)
77+
cwd.foreach(_v => _obj$.updateDynamic("cwd")(_v.asInstanceOf[js.Any]))
78+
env.foreach(_v => _obj$.updateDynamic("env")(_v.asInstanceOf[js.Any]))
79+
encoding.foreach(_v => _obj$.updateDynamic("encoding")(_v.asInstanceOf[js.Any]))
80+
shell.foreach(_v => _obj$.updateDynamic("shell")(_v.asInstanceOf[js.Any]))
81+
timeout.foreach(_v => _obj$.updateDynamic("timeout")(_v.asInstanceOf[js.Any]))
82+
maxBuffer.foreach(_v => _obj$.updateDynamic("maxBuffer")(_v.asInstanceOf[js.Any]))
83+
killSignal.foreach(_v => _obj$.updateDynamic("killSignal")(_v.asInstanceOf[js.Any]))
84+
uid.foreach(_v => _obj$.updateDynamic("uid")(_v.asInstanceOf[js.Any]))
85+
gid.foreach(_v => _obj$.updateDynamic("gid")(_v.asInstanceOf[js.Any]))
86+
windowsHide.foreach(_v => _obj$.updateDynamic("windowsHide")(_v.asInstanceOf[js.Any]))
87+
windowsVerbatimArguments.foreach(_v => _obj$.updateDynamic("windowsVerbatimArguments")(_v.asInstanceOf[js.Any]))
88+
_obj$.asInstanceOf[ExecOptions]
89+
}
90+
}
Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
package io.scalajs.nodejs.child_process
22

3-
import net.exoego.scalajs.types.util.Factory
4-
53
import scala.scalajs.js
64

7-
@Factory
85
trait SendOptions extends js.Object {
96
var keepOpen: js.UndefOr[Boolean] = js.undefined
107
}
8+
object SendOptions {
9+
def apply(
10+
keepOpen: js.UndefOr[Boolean] = js.undefined
11+
): SendOptions = {
12+
val _obj$ = js.Dynamic.literal(
13+
)
14+
keepOpen.foreach(_v => _obj$.updateDynamic("keepOpen")(_v.asInstanceOf[js.Any]))
15+
_obj$.asInstanceOf[SendOptions]
16+
}
17+
}
Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
package io.scalajs.nodejs.child_process
22

3-
import net.exoego.scalajs.types.util.Factory
4-
53
import scala.scalajs.js
64
import scala.scalajs.js.|
75

8-
@Factory
96
trait SpawnSyncResult extends js.Object {
107
var pid: Int
118
var output: js.Array[Output]
@@ -15,3 +12,26 @@ trait SpawnSyncResult extends js.Object {
1512
var signal: String | Null
1613
var error: js.UndefOr[js.Error] = js.undefined
1714
}
15+
16+
object SpawnSyncResult {
17+
def apply(
18+
pid: Int,
19+
output: js.Array[Output],
20+
stdout: Output,
21+
stderr: Output,
22+
status: Int | Null = null,
23+
signal: String | Null = null,
24+
error: js.UndefOr[js.Error] = js.undefined
25+
): SpawnSyncResult = {
26+
val _obj$ = js.Dynamic.literal(
27+
"pid" -> pid.asInstanceOf[js.Any],
28+
"output" -> output.asInstanceOf[js.Any],
29+
"stdout" -> stdout.asInstanceOf[js.Any],
30+
"stderr" -> stderr.asInstanceOf[js.Any],
31+
"status" -> status.asInstanceOf[js.Any],
32+
"signal" -> signal.asInstanceOf[js.Any]
33+
)
34+
error.foreach(_v => _obj$.updateDynamic("error")(_v.asInstanceOf[js.Any]))
35+
_obj$.asInstanceOf[SpawnSyncResult]
36+
}
37+
}
Lines changed: 42 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,75 @@
11
package io.scalajs.nodejs.cluster
22

3-
import net.exoego.scalajs.types.util.Factory
4-
53
import io.scalajs.nodejs.{GID, UID}
64

75
import scala.scalajs.js
86
import scala.scalajs.js.|
97

108
/** Cluster Settings
119
*/
12-
@Factory
13-
@js.native
1410
trait ClusterSettings extends js.Object {
1511

1612
/** <Array> list of string arguments passed to the Node.js executable. (Default=process.execArgv) */
17-
var execArgv: js.Array[String] = js.native
13+
var execArgv: js.Array[String]
1814

1915
/** <String> file path to worker file. (Default=process.argv[1]) */
20-
var exec: String = js.native
16+
var exec: String
2117

2218
/** <Array> string arguments passed to worker. (Default=process.argv.slice(2)) */
23-
var args: js.Array[String] = js.native
19+
var args: js.Array[String]
2420

2521
/** <Boolean> whether or not to send output to parent's stdio. (Default=false) */
26-
var silent: Boolean = js.native
22+
var silent: Boolean
2723

2824
/** Specify the kind of serialization used for sending messages between processes. Possible values are 'json' and
2925
* 'advanced'. See Advanced Serialization for more details. Default: 'json'.
3026
*
3127
* From Node.js v13.2.0, v12.16.0.
3228
*/
33-
var serialization: js.UndefOr[String] = js.native
29+
var serialization: js.UndefOr[String]
3430

3531
/** <Number> Sets the user identity of the process. (See setuid(2).) */
36-
var uid: UID = js.native
32+
var uid: UID
3733

3834
/** <Number> Sets the group identity of the process. (See setgid(2).) */
39-
var gid: GID = js.native
35+
var gid: GID
36+
37+
var stdio: js.Array[js.Any]
4038

41-
var stdio: js.Array[js.Any] = js.native
39+
var inspectPort: Int | js.Function
4240

43-
var inspectPort: Int | js.Function = js.native
41+
var cwd: String
4442

45-
var cwd: String = js.native
43+
var windowsHide: Boolean
44+
}
4645

47-
var windowsHide: Boolean = js.native
46+
object ClusterSettings {
47+
def apply(
48+
execArgv: js.Array[String],
49+
exec: String,
50+
args: js.Array[String],
51+
silent: Boolean,
52+
uid: UID,
53+
gid: GID,
54+
stdio: js.Array[js.Any],
55+
inspectPort: Int | js.Function,
56+
cwd: String,
57+
windowsHide: Boolean,
58+
serialization: js.UndefOr[String] = js.undefined
59+
): ClusterSettings = {
60+
val _obj$ = js.Dynamic.literal(
61+
"execArgv" -> execArgv.asInstanceOf[js.Any],
62+
"exec" -> exec.asInstanceOf[js.Any],
63+
"args" -> args.asInstanceOf[js.Any],
64+
"silent" -> silent.asInstanceOf[js.Any],
65+
"serialization" -> serialization.asInstanceOf[js.Any],
66+
"uid" -> uid.asInstanceOf[js.Any],
67+
"gid" -> gid.asInstanceOf[js.Any],
68+
"stdio" -> stdio.asInstanceOf[js.Any],
69+
"inspectPort" -> inspectPort.asInstanceOf[js.Any],
70+
"cwd" -> cwd.asInstanceOf[js.Any],
71+
"windowsHide" -> windowsHide.asInstanceOf[js.Any]
72+
)
73+
_obj$.asInstanceOf[ClusterSettings]
74+
}
4875
}

app/nodejs-v16/src/main/scala/io/scalajs/nodejs/console_module/ConsoleDirOptions.scala

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package io.scalajs.nodejs.console_module
22

3-
import net.exoego.scalajs.types.util.Factory
4-
53
import scala.scalajs.js
64

7-
@Factory
85
trait ConsoleDirOptions extends js.Object {
96

107
/** if true then the object's non-enumerable and symbol properties will be shown too. Defaults to `false`.
@@ -21,3 +18,18 @@ trait ConsoleDirOptions extends js.Object {
2118
*/
2219
var colors: js.UndefOr[Boolean] = js.undefined
2320
}
21+
22+
object ConsoleDirOptions {
23+
def apply(
24+
showHidden: js.UndefOr[Boolean] = js.undefined,
25+
depth: js.UndefOr[Int] = js.undefined,
26+
colors: js.UndefOr[Boolean] = js.undefined
27+
): ConsoleDirOptions = {
28+
val _obj$ = js.Dynamic.literal(
29+
)
30+
showHidden.foreach(_v => _obj$.updateDynamic("showHidden")(_v.asInstanceOf[js.Any]))
31+
depth.foreach(_v => _obj$.updateDynamic("depth")(_v.asInstanceOf[js.Any]))
32+
colors.foreach(_v => _obj$.updateDynamic("colors")(_v.asInstanceOf[js.Any]))
33+
_obj$.asInstanceOf[ConsoleDirOptions]
34+
}
35+
}

app/nodejs-v16/src/main/scala/io/scalajs/nodejs/console_module/ConsoleOptions.scala

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,10 @@ package io.scalajs.nodejs.console_module
22

33
import io.scalajs.nodejs.stream.IWritable
44
import io.scalajs.nodejs.util.InspectOptions
5-
import net.exoego.scalajs.types.util.Factory
65

76
import scala.scalajs.js
87
import scala.scalajs.js.|
98

10-
@Factory
119
trait ConsoleOptions extends js.Object {
1210
var stdout: IWritable
1311
var stderr: js.UndefOr[IWritable] = js.undefined
@@ -31,3 +29,24 @@ trait ConsoleOptions extends js.Object {
3129
*/
3230
var groupIndentation: js.UndefOr[Int] = js.undefined
3331
}
32+
33+
object ConsoleOptions {
34+
def apply(
35+
stdout: IWritable,
36+
stderr: js.UndefOr[IWritable] = js.undefined,
37+
ignoreErrors: js.UndefOr[Boolean] = js.undefined,
38+
colorMode: js.UndefOr[Boolean | String] = js.undefined,
39+
inspectOptions: js.UndefOr[InspectOptions] = js.undefined,
40+
groupIndentation: js.UndefOr[Int] = js.undefined
41+
): ConsoleOptions = {
42+
val _obj$ = js.Dynamic.literal(
43+
"stdout" -> stdout.asInstanceOf[js.Any]
44+
)
45+
stderr.foreach(_v => _obj$.updateDynamic("stderr")(_v.asInstanceOf[js.Any]))
46+
ignoreErrors.foreach(_v => _obj$.updateDynamic("ignoreErrors")(_v.asInstanceOf[js.Any]))
47+
colorMode.foreach(_v => _obj$.updateDynamic("colorMode")(_v.asInstanceOf[js.Any]))
48+
inspectOptions.foreach(_v => _obj$.updateDynamic("inspectOptions")(_v.asInstanceOf[js.Any]))
49+
groupIndentation.foreach(_v => _obj$.updateDynamic("groupIndentation")(_v.asInstanceOf[js.Any]))
50+
_obj$.asInstanceOf[ConsoleOptions]
51+
}
52+
}

0 commit comments

Comments
 (0)