Skip to content
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
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
workspaces: src/rs_lib

- name: build
run: deno task wasmbuild
run: deno task build

- name: fmt
run: deno fmt --check
Expand Down Expand Up @@ -58,6 +58,6 @@ jobs:
with:
workspaces: src/rs_lib
- name: build
run: deno task wasmbuild
run: deno task build
- name: Publish to JSR on tag
run: deno run -A jsr:@david/publish-on-tag@0.2.0
2 changes: 1 addition & 1 deletion deno
Submodule deno updated 40 files
+2 −2 cli/cache/check.rs
+1 −10 cli/factory.rs
+3 −1 cli/lib/worker.rs
+1 −1 cli/lsp/registries.rs
+1 −1 cli/lsp/resolver.rs
+5 −5 cli/tools/bundle/mod.rs
+1 −1 cli/tools/doc.rs
+1 −1 cli/tools/installer/mod.rs
+1 −1 cli/tools/run/hmr.rs
+3 −3 cli/tsc/mod.rs
+1 −1 ext/net/quic.rs
+1 −1 ext/node/ops/worker_threads.rs
+12 −1 ext/node/polyfills/_fs/_fs_readv.ts
+50 −19 ext/node/polyfills/_fs/_fs_rename.ts
+1 −0 ext/node/polyfills/internal/errors.ts
+16 −9 ext/node/polyfills/internal_binding/node_file.ts
+1 −1 ext/web/blob.rs
+91 −15 libs/node_resolver/errors.rs
+52 −28 libs/node_resolver/resolution.rs
+1 −1 libs/resolver/graph.rs
+3 −15 libs/resolver/lib.rs
+3 −3 libs/resolver/npm/mod.rs
+2 −0 tests/node_compat/config.toml
+12 −0 tests/specs/bundle/browser_platform_exports/__test__.jsonc
+5 −0 tests/specs/bundle/browser_platform_exports/browser.out
+4 −0 tests/specs/bundle/browser_platform_exports/main.ts
+5 −0 tests/specs/bundle/browser_platform_exports/node.out
+1 −0 tests/specs/bundle/browser_platform_exports/node_modules/package/browser.js
+1 −0 tests/specs/bundle/browser_platform_exports/node_modules/package/node.js
+14 −0 tests/specs/bundle/browser_platform_exports/node_modules/package/package.json
+2 −0 tests/specs/bundle/browser_platform_exports/package.json
+4 −0 tests/specs/bundle/cjs_dir_import_package_json/__test__.jsonc
+20 −0 tests/specs/bundle/cjs_dir_import_package_json/bundle.out
+2 −0 tests/specs/bundle/cjs_dir_import_package_json/main.cjs
+3 −0 tests/specs/bundle/cjs_dir_import_package_json/node_modules/package/constants/package.json
+1 −0 tests/specs/bundle/cjs_dir_import_package_json/node_modules/package/constants/sub.js
+2 −0 tests/specs/bundle/cjs_dir_import_package_json/node_modules/package/package.json
+2 −0 tests/specs/bundle/cjs_dir_import_package_json/package.json
+70 −0 tests/unit_node/_fs/_fs_rename_test.ts
+13 −14 tests/util/server/src/servers/mod.rs
2 changes: 1 addition & 1 deletion deno.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@deno/loader",
"tasks": {
"wasmbuild": "cd src/rs_lib && deno run -A jsr:@deno/wasmbuild@0.19.2 --out ../lib"
"build": "cd src/rs_lib && deno run -A jsr:@deno/wasmbuild@0.19.2 --out ../lib"
},
"lint": {
"rules": {
Expand Down
5 changes: 5 additions & 0 deletions src/mod.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,11 @@ export interface WorkspaceOptions {
configPath?: string;
/** Node resolution conditions to use for resolving package.json exports. */
nodeConditions?: string[];
/**
* Platform to bundle for.
* @default "node"
*/
platform?: "node" | "browser";
/** Whether to force using the cache. */
cachedOnly?: boolean;
/** Enable debug logs. */
Expand Down
19 changes: 16 additions & 3 deletions src/rs_lib/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,8 @@ pub struct DenoWorkspaceOptions {
#[serde(default)]
pub no_lock: Option<bool>,
#[serde(default)]
pub platform: Option<String>,
#[serde(default)]
pub config_path: Option<String>,
#[serde(default)]
pub node_conditions: Option<Vec<String>>,
Expand Down Expand Up @@ -162,8 +164,20 @@ impl DenoWorkspace {
}

fn new_inner(options: DenoWorkspaceOptions) -> Result<Self, anyhow::Error> {
fn resolve_is_browser_platform(
options: &DenoWorkspaceOptions,
) -> Result<bool, anyhow::Error> {
Ok(match options.platform.as_deref() {
Some("node" | "deno") => false,
Some("browser") => true,
Some(value) => bail!("Unknown platform '{}'", value),
None => false,
})
}

let sys = RealSys;
let cwd = sys.env_current_dir()?;
let is_browser_platform = resolve_is_browser_platform(&options)?;
let config_discovery = if options.no_config.unwrap_or_default() {
ConfigDiscoveryOption::Disabled
} else if let Some(config_path) = options.config_path {
Expand Down Expand Up @@ -213,9 +227,8 @@ impl DenoWorkspace {
unstable_sloppy_imports: true,
npm_system_info: npm_system_info()?,
node_resolver_options: NodeResolverOptions {
// todo: support these
prefer_browser_field: false,
bundle_mode: false,
is_browser_platform,
bundle_mode: true,
conditions: NodeConditionOptions {
conditions: options
.node_conditions
Expand Down
27 changes: 27 additions & 0 deletions tests/platform_browser/main.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { ResolutionMode } from "@deno/loader";
import { createLoader } from "../helpers.ts";
import { assert } from "@std/assert";

Deno.test("resolves to browser locations", async () => {
const { loader } = await createLoader({
configPath: import.meta.dirname + "/testdata/deno.json",
platform: "browser",
}, {
entrypoints: [],
});

assert(
loader.resolveSync(
"package",
import.meta.resolve("./testdata/main.js"),
ResolutionMode.Import,
).endsWith("browser.js"),
);
assert(
loader.resolveSync(
"browser-main",
import.meta.resolve("./testdata/main.js"),
ResolutionMode.Import,
).endsWith("browser.js"),
);
});
2 changes: 2 additions & 0 deletions tests/platform_browser/testdata/deno.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{
}
Empty file.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Empty file.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions tests/platform_browser/testdata/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{
}