Skip to content

Commit c4e983a

Browse files
authored
feat: support bytes and text imports (#18)
1 parent 24530e7 commit c4e983a

File tree

13 files changed

+313
-200
lines changed

13 files changed

+313
-200
lines changed

deno

Submodule deno updated 535 files

src/mod.test.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
import { MediaType, ResolutionMode, Workspace } from "./mod.ts";
1+
import {
2+
MediaType,
3+
RequestedModuleType,
4+
ResolutionMode,
5+
Workspace,
6+
} from "./mod.ts";
27
import { assert, assertEquals } from "@std/assert";
38

49
Deno.test("should resolve and load", async () => {
@@ -16,7 +21,10 @@ Deno.test("should resolve and load", async () => {
1621
);
1722
assertEquals(resolvedUrl, import.meta.url);
1823
{
19-
const loadResponse = await loader.load(import.meta.url);
24+
const loadResponse = await loader.load(
25+
import.meta.url,
26+
RequestedModuleType.Default,
27+
);
2028
if (loadResponse.kind !== "module") {
2129
throw new Error("Fail");
2230
}
@@ -26,7 +34,10 @@ Deno.test("should resolve and load", async () => {
2634
}
2735
// node: specifier
2836
{
29-
const loadResponse = await loader.load("node:events");
37+
const loadResponse = await loader.load(
38+
"node:events",
39+
RequestedModuleType.Default,
40+
);
3041
if (loadResponse.kind !== "external") {
3142
throw new Error("Fail");
3243
}

src/mod.ts

Lines changed: 41 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*
66
* @example
77
* ```ts
8-
* import { Workspace, ResolutionMode, type LoadResponse } from "@deno/loader";
8+
* import { Workspace, ResolutionMode, type LoadResponse, RequestedModuleType } from "@deno/loader";
99
*
1010
* const workspace = new Workspace({
1111
* // optional options
@@ -18,7 +18,7 @@
1818
* "https://deno.land/mod.ts", // referrer
1919
* ResolutionMode.Import,
2020
* );
21-
* const response = await loader.load(resolvedUrl);
21+
* const response = await loader.load(resolvedUrl, RequestedModuleType.Default);
2222
* if (response.kind === "module") {
2323
* console.log(response.specifier);
2424
* console.log(response.code);
@@ -52,16 +52,16 @@ export interface WorkspaceOptions {
5252
cachedOnly?: boolean;
5353
/** Enable debug logs. */
5454
debug?: boolean;
55+
/** Whether to preserve JSX syntax in the loaded output. */
56+
preserveJsx?: boolean;
57+
/** Skip transpiling TypeScript and JSX. */
58+
noTranspile?: boolean;
5559
}
5660

5761
/** Options for loading. */
5862
export interface LoaderOptions {
5963
/** Entrypoints to create the loader for. */
6064
entrypoints: string[];
61-
/** Whether to preserve JSX syntax in the loaded output. */
62-
preserveJsx?: boolean;
63-
/** Skip transpiling TypeScript and JSX. */
64-
noTranspile?: boolean;
6565
}
6666

6767
/** File type. */
@@ -154,12 +154,19 @@ export class Workspace implements Disposable {
154154
}`,
155155
);
156156
}
157-
const wasmLoader = await this.#inner.create_loader(options);
157+
const wasmLoader = await this.#inner.create_loader();
158158
await wasmLoader.add_roots(options.entrypoints);
159159
return new Loader(wasmLoader, this.#debug);
160160
}
161161
}
162162

163+
export enum RequestedModuleType {
164+
Default = 0,
165+
Json = 1,
166+
Text = 2,
167+
Bytes = 3,
168+
}
169+
163170
/** A loader for resolving and loading urls. */
164171
export class Loader implements Disposable {
165172
#inner: WasmLoader;
@@ -199,11 +206,35 @@ export class Loader implements Disposable {
199206
}
200207

201208
/** Loads a specifier. */
202-
load(specifier: string): Promise<LoadResponse> {
209+
load(
210+
specifier: string,
211+
requestedModuleType: RequestedModuleType,
212+
): Promise<LoadResponse> {
203213
if (this.#debug) {
204-
console.error(`Loading '${specifier}'`);
214+
console.error(
215+
`Loading '${specifier}' with type '${
216+
requestedModuleTypeToString(requestedModuleType) ?? "<default>"
217+
}'`,
218+
);
219+
}
220+
return this.#inner.load(specifier, requestedModuleType);
221+
}
222+
}
223+
224+
function requestedModuleTypeToString(moduleType: RequestedModuleType) {
225+
switch (moduleType) {
226+
case RequestedModuleType.Bytes:
227+
return "bytes";
228+
case RequestedModuleType.Text:
229+
return "text";
230+
case RequestedModuleType.Json:
231+
return "json";
232+
case RequestedModuleType.Default:
233+
return undefined;
234+
default: {
235+
const _never: never = moduleType;
236+
return undefined;
205237
}
206-
return this.#inner.load(specifier);
207238
}
208239
}
209240

src/rs_lib/Cargo.lock

Lines changed: 10 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/rs_lib/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ deno_semver = "=0.8.1"
2323
url = "2.5"
2424

2525
[dependencies.deno_ast]
26-
version = "=0.48.0"
26+
version = "=0.48.1"
2727
features = ["transpiling"]
2828

2929
[dependencies.deno_cache_dir]

0 commit comments

Comments
 (0)