fix: Error on HTTP import

Fixes a relative import path error when importing the package via HTTP. All dependencies
have been moved to `deps.ts`.
This commit is contained in:
Foster Hangdaan 2024-11-08 05:16:35 -05:00
parent 2b10ca41b3
commit 990cae20ed
Signed by: foster
GPG key ID: E48D7F49A852F112
6 changed files with 72 additions and 31 deletions

View file

@ -4,13 +4,5 @@
"tasks": { "tasks": {
"check": "deno fmt --check && deno lint && deno check .", "check": "deno fmt --check && deno lint && deno check .",
"test": "deno test --allow-read=. --allow-write=./tests/site/_site,./tests/__snapshots__ --deny-env" "test": "deno test --allow-read=. --allow-write=./tests/site/_site,./tests/__snapshots__ --deny-env"
},
"imports": {
"@/": "./",
"@std/assert": "jsr:@std/assert@1.0.7",
"@std/path": "jsr:@std/path@1.0.8",
"@std/testing": "jsr:@std/testing@1.0.4",
"@valibot/valibot": "jsr:@valibot/valibot@0.42.1",
"lume/": "https://deno.land/x/lume@v2.4.0/"
} }
} }

BIN
deno.lock

Binary file not shown.

43
deps.ts Normal file
View file

@ -0,0 +1,43 @@
/*
* Copyright 2024 Foster Hangdaan
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Lume
export {
default as LumeSite,
type SiteOptions as LumeSiteOptions,
} from "https://deno.land/x/lume@v2.4.0/core/site.ts";
export {
default as lume,
type PluginOptions as LumePluginOptions,
} from "https://deno.land/x/lume@v2.4.0/mod.ts";
export {
type DeepPartial as LumeDeepPartial,
} from "https://deno.land/x/lume@v2.4.0/core/utils/object.ts";
export {
type Writer as LumeWriter,
} from "https://deno.land/x/lume@v2.4.0/core/writer.ts";
// STD Assert
export { assertExists, assertInstanceOf } from "jsr:@std/assert@1.0.7";
// STD Testing
export { assertSnapshot } from "jsr:@std/testing@1.0.4/snapshot";
// STD Path
export { fromFileUrl, join } from "jsr:@std/path@1.0.8";
// Valibot
export * as valibot from "jsr:@valibot/valibot@0.42.1";

9
mod.ts
View file

@ -14,9 +14,8 @@
* limitations under the License. * limitations under the License.
*/ */
import * as v from "@valibot/valibot"; import diagrams from "./resources/diagrams.json" with { type: "json" };
import diagrams from "@/resources/diagrams.json" with { type: "json" }; import { LumeSite, valibot as v } from "./deps.ts";
import type Site from "lume/core/site.ts";
import { deflateSync } from "node:zlib"; import { deflateSync } from "node:zlib";
const textEncoder = new TextEncoder(); const textEncoder = new TextEncoder();
@ -67,10 +66,10 @@ const OptionsSchema = v.optional(
export type Options = v.InferInput<typeof OptionsSchema>; export type Options = v.InferInput<typeof OptionsSchema>;
export default function (options?: Options): (site: Site) => void { export default function (options?: Options): (site: LumeSite) => void {
const opts = v.parse(OptionsSchema, options); const opts = v.parse(OptionsSchema, options);
return (site: Site) => { return (site: LumeSite) => {
site.process([".html"], (pages) => { site.process([".html"], (pages) => {
pages.forEach((page) => { pages.forEach((page) => {
diagrams.forEach((diagram) => { diagrams.forEach((diagram) => {

View file

@ -14,11 +14,14 @@
* limitations under the License. * limitations under the License.
*/ */
import mod from "@/mod.ts"; import mod from "../mod.ts";
import { ValiError } from "@valibot/valibot"; import { getSite } from "./utils.ts";
import { assertExists, assertInstanceOf } from "@std/assert"; import {
import { assertSnapshot } from "@std/testing/snapshot"; assertExists,
import { getSite } from "@/tests/utils.ts"; assertInstanceOf,
assertSnapshot,
valibot,
} from "../deps.ts";
Deno.test("Error thrown on invalid options", async (t) => { Deno.test("Error thrown on invalid options", async (t) => {
await t.step("Invalid server", () => { await t.step("Invalid server", () => {
@ -29,7 +32,7 @@ Deno.test("Error thrown on invalid options", async (t) => {
error = err; error = err;
} }
assertExists(error); assertExists(error);
assertInstanceOf(error, ValiError); assertInstanceOf(error, valibot.ValiError);
}); });
await t.step("Invalid enabledDiagrams", () => { await t.step("Invalid enabledDiagrams", () => {
@ -40,7 +43,7 @@ Deno.test("Error thrown on invalid options", async (t) => {
error = err; error = err;
} }
assertExists(error); assertExists(error);
assertInstanceOf(error, ValiError); assertInstanceOf(error, valibot.ValiError);
}); });
await t.step("Invalid format", () => { await t.step("Invalid format", () => {
@ -52,7 +55,7 @@ Deno.test("Error thrown on invalid options", async (t) => {
error = err; error = err;
} }
assertExists(error); assertExists(error);
assertInstanceOf(error, ValiError); assertInstanceOf(error, valibot.ValiError);
}); });
}); });

View file

@ -14,16 +14,20 @@
* limitations under the License. * limitations under the License.
*/ */
import lume, { type PluginOptions } from "lume/mod.ts"; import {
import type Site from "lume/core/site.ts"; fromFileUrl,
import type { DeepPartial } from "lume/core/utils/object.ts"; join,
import type { SiteOptions } from "lume/core/site.ts"; lume,
import type { Writer } from "lume/core/writer.ts"; type LumeDeepPartial,
import { fromFileUrl, join } from "@std/path"; type LumePluginOptions,
LumeSite,
type LumeSiteOptions,
type LumeWriter,
} from "../deps.ts";
const cwd = fromFileUrl(import.meta.resolve("./")); const cwd = fromFileUrl(import.meta.resolve("./"));
class TestWriter implements Writer { class TestWriter implements LumeWriter {
savePages() { savePages() {
return Promise.resolve([]); return Promise.resolve([]);
} }
@ -42,9 +46,9 @@ class TestWriter implements Writer {
} }
export function getSite( export function getSite(
siteOptions: DeepPartial<SiteOptions> = {}, siteOptions: LumeDeepPartial<LumeSiteOptions> = {},
pluginOptions: PluginOptions = {}, pluginOptions: LumePluginOptions = {},
): Site { ): LumeSite {
siteOptions.cwd = join(cwd, "site"); siteOptions.cwd = join(cwd, "site");
const site = lume( const site = lume(