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

[module] Move Module object to dedicated package, Various updates on Module object #243

Merged
merged 1 commit into from
May 28, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 1 addition & 18 deletions app/current/src/main/scala/io/scalajs/nodejs/Module.scala
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
package io.scalajs.nodejs

import com.thoughtworks.enableIf

import scala.scalajs.js
import scala.scalajs.js.annotation.JSImport

/**
* In each module, the module free variable is a reference to the object representing the current module.
Expand All @@ -27,7 +24,7 @@ trait Module extends js.Object {
* the local exports variable, which is probably not what you want to do.
* @example module.exports
*/
var exports: js.Dictionary[js.Any] = js.native
var exports: js.Object = js.native

/**
* The fully resolved filename to the module.
Expand Down Expand Up @@ -62,19 +59,5 @@ trait Module extends js.Object {
* explicitly exported in order to be used.
*/
def require[T <: js.Any](id: String): T = js.native
}

/**
* Module Companion
*/
@js.native
@JSImport("module", JSImport.Namespace)
object Module extends Module {
var builtinModules: js.Array[String] = js.native

@enableIf(io.scalajs.nodejs.internal.CompilerSwitches.gteNodeJs12)
def createRequire(filename: String): Require = js.native

@enableIf(io.scalajs.nodejs.internal.CompilerSwitches.gteNodeJs12)
def createRequire(filename: io.scalajs.nodejs.url.URL): Require = js.native
}
31 changes: 31 additions & 0 deletions app/current/src/main/scala/io/scalajs/nodejs/module/Module.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package io.scalajs.nodejs.module

import com.thoughtworks.enableIf
import io.scalajs.nodejs.Require

import scala.scalajs.js
import scala.scalajs.js.annotation.JSImport

@js.native
@JSImport("module", JSImport.Namespace)
object Module extends js.Object {
var builtinModules: js.Array[String] = js.native

@enableIf(io.scalajs.nodejs.internal.CompilerSwitches.gteNodeJs12)
def createRequire(filename: String): Require = js.native

@enableIf(io.scalajs.nodejs.internal.CompilerSwitches.gteNodeJs12)
def createRequire(filename: io.scalajs.nodejs.url.URL): Require = js.native

@enableIf(io.scalajs.nodejs.internal.CompilerSwitches.gteNodeJs12)
def syncBuiltinESMExports(): Unit = js.native

@deprecated("Use createRequire", "Node.js v12.2.0")
def createRequireFromPath(filename: String): Require = js.native

@enableIf(io.scalajs.nodejs.internal.CompilerSwitches.gteNodeJs14)
def findSourceMap(path: String): SourceMap = js.native

@enableIf(io.scalajs.nodejs.internal.CompilerSwitches.gteNodeJs14)
def findSourceMap(path: String, error: io.scalajs.nodejs.Error): SourceMap = js.native
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package io.scalajs.nodejs.module

import com.thoughtworks.enableMembersIf
import net.exoego.scalajs.types.util.Factory

import scala.scalajs.js
import scala.scalajs.js.annotation.JSImport

@js.native
@enableMembersIf(io.scalajs.nodejs.internal.CompilerSwitches.gteNodeJs14)
@JSImport("module", "SourceMap")
class SourceMap(payload: SourceMapPayload) extends js.Object {
def payload: SourceMapPayload = js.native
def findEntry(lineNumber: Int, columnNumber: Int): SourceMapEntry = js.native
}

@Factory
trait SourceMapPayload extends js.Object {
var file: String
var version: Double
var sources: js.Array[String]
var sourcesContent: js.Array[String]
var names: js.Array[String]
var mappings: String
var sourceRoot: String
}

@Factory
trait SourceMapEntry extends js.Object {
var generatedLine: Int
var generatedColumn: Int
var originalSource: String
var originalLine: Int
var originalColumn: Int
}
7 changes: 7 additions & 0 deletions app/current/src/main/scala/io/scalajs/nodejs/package.scala
Original file line number Diff line number Diff line change
Expand Up @@ -102,4 +102,11 @@ package object nodejs {
@inline
def toException(): Exception = js.JavaScriptException(error.message)
}

@js.native
@JSGlobal("module")
object moduleObject extends io.scalajs.nodejs.Module

@deprecated("Use io.scalajs.nodejs.module.Module", "v0.13.0")
val Module = io.scalajs.nodejs.module.Module
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package io.scalajs.nodejs.module

import org.scalatest.funspec.AnyFunSpec

import scala.scalajs.js

class ModuleTest extends AnyFunSpec {
describe("Module Object (module module)") {
it("builtinModules") {
assert(io.scalajs.nodejs.module.Module.builtinModules.length >= 30)
}
}

describe("module Object") {
it("children") {
// contents vary on runtime
assert(io.scalajs.nodejs.moduleObject.children.isInstanceOf[js.Array[_]])
}
it("filename") {
// contents vary on runtime
assert(io.scalajs.nodejs.moduleObject.filename.nonEmpty)
}
}
}