Skip to content

Commit

Permalink
refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
terrablue committed Aug 3, 2024
1 parent 3315bab commit 4ce8275
Show file tree
Hide file tree
Showing 436 changed files with 1,627 additions and 1,474 deletions.
16 changes: 12 additions & 4 deletions packages/binding/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@
"dependencies": {
"@primate/core": "workspace:^",
"@rcompat/build": "^0.3.0",
"@rcompat/cli": "^0.3.0",
"@rcompat/cli": "^0.5.0",
"@rcompat/env": "^0.3.0",
"@rcompat/fs": "^0.4.0",
"@rcompat/object": "^0.5.0",
"@rcompat/platform": "^0.3.0",
"@rcompat/stdio": "^0.3.0"
"@rcompat/stdio": "^0.4.0"
},
"peerDependencies": {
"@ruby/head-wasm-wasi": "2",
Expand All @@ -48,13 +48,21 @@
}
},
"type": "module",
"imports": {
"#*": {
"@primate/lt": "./src/private/*.js",
"default": "./src/private/*.js"
},
"#error/*": {
"@primate/lt": "./src/private/error/*.js",
"default": "./src/private/error/*.js"
}
},
"exports": {
"./*/common": "./src/server/*/common.js",
"./*/to-request": "./src/server/*/to-request.js",
"./*/to-response": "./src/server/*/to-response.js",
"./*/wrap": "./src/server/*/wrap.js",
"./#/*": "./lib/private/*/index.js",
"./errors/*": "./src/errors/*.js",
"./*": {
"runtime": "./src/server/*/runtime.js",
"default": "./src/server/*/default.js"
Expand Down
8 changes: 0 additions & 8 deletions packages/binding/src/errors/error-in-go-route.js

This file was deleted.

9 changes: 9 additions & 0 deletions packages/binding/src/private/error/faulty-go-route.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import log from "@primate/core/log";
import file from "@rcompat/fs/file";

export default (...params) => log.error({
params,
name: file(import.meta.url).base,
module: "@primate/binding",
message: "the Go route {0} contains the following error\n {1}",
});
7 changes: 4 additions & 3 deletions packages/binding/src/server/go/build.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import ErrorInGoRoute from "@primate/binding/errors/error-in-go-route";
import faulty_go_route from "#error/faulty-go-route";
import { name } from "@primate/binding/go/common";
import dim from "@rcompat/cli/color/dim";
import { user } from "@rcompat/env";
import file from "@rcompat/fs/file";
import platform from "@rcompat/platform";
import execute from "@rcompat/stdio/execute";
import log from "@primate/core/log";

const module = `@primate/binding/${name}`;
const command = "go";
Expand Down Expand Up @@ -159,13 +160,13 @@ export default ({ extension }) => (app, next) => {
await base.join(js).write(js_wrapper(wasm_route_path, routes));

try {
app.log.info(`compiling ${dim(file)} to WebAssembly`, { module });
log.info(`compiling ${dim(file)} to WebAssembly`, { module });
const cwd = `${base}`;
// compile .go to .wasm
await execute(run(wasm, go, includes.join(" ")),
{ cwd, env: { HOME: user.HOME, ...env } });
} catch (error) {
ErrorInGoRoute.throw(file, error);
faulty_go_route(file, error);
}
});

Expand Down
4 changes: 2 additions & 2 deletions packages/binding/src/server/python/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ const js_wrapper = async (path, routes, packages) => `
import { loadPyodide as load } from "pyodide";
const pyodide = await load({ indexURL: "./node_modules/pyodide" });
const file = await file(${JSON.stringify(path)}).text();
const python_route = await file(${JSON.stringify(path)}).text();
${packages.map(make_package)}
pyodide.runPython(wrap(file));
pyodide.runPython(wrap(python_route));
export default {
${routes.map(route => make_route(route)).join(",\n")}
};
Expand Down
2 changes: 1 addition & 1 deletion packages/binding/src/server/ruby/to-response.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import HANDLER_PROPERTY from "@primate/binding/#/handler-property";
import HANDLER_PROPERTY from "#handler-property";
import error from "@primate/core/handler/error";
import redirect from "@primate/core/handler/redirect";
import view from "@primate/core/handler/view";
Expand Down
3 changes: 2 additions & 1 deletion packages/binding/src/server/typescript/build.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import { name } from "@primate/binding/typescript/common";
import dim from "@rcompat/cli/color/dim";
import compile from "./compile.js";
import log from "@primate/core/log";

const module = `@primate/binding/${name}`;

export default ({ extension }) => (app, next) => {
app.bind(extension, async (directory, file) => {
app.log.info(`compiling ${dim(file)} to JavaScript`, { module });
log.info(`compiling ${dim(file)} to JavaScript`, { module });

const path = directory.join(file);
const base = path.directory;
Expand Down
3 changes: 3 additions & 0 deletions packages/binding/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"extends": "../../tsconfig.base.json"
}
29 changes: 17 additions & 12 deletions packages/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,30 +19,35 @@
"@rcompat/array": "^0.3.0",
"@rcompat/async": "^0.3.0",
"@rcompat/build": "^0.3.0",
"@rcompat/cli": "^0.3.0",
"@rcompat/cli": "^0.5.0",
"@rcompat/crypto": "^0.5.0",
"@rcompat/fs": "^0.4.0",
"@rcompat/function": "^0.4.0",
"@rcompat/http": "^0.4.0",
"@rcompat/http": "^0.5.0",
"@rcompat/invariant": "^0.5.0",
"@rcompat/object": "^0.5.0",
"@rcompat/package": "^0.3.0",
"@rcompat/platform": "^0.3.0",
"@rcompat/stdio": "^0.3.0",
"@rcompat/stdio": "^0.4.0",
"@rcompat/sync": "^0.3.0"
},
"type": "module",
"imports": {
"#*": {
"@primate/lt": "./src/private/*.js",
"default": "./src/private/*.js"
},
"#error/*": {
"@primate/lt": "./src/private/error/*.js",
"default": "./src/private/error/*.js"
}
},
"exports": {
"./serve": "./src/serve/index.js",
"./build": "./src/build/index.js",
"./errors": "./src/shared/errors.js",
"./logger": "./src/shared/Logger.js",
"./logger/print": "./src/shared/print.js",
"./logger/error": "./src/shared/error.js",
"./logger/warn": "./src/shared/warn.js",
"./depend": "./src/shared/depend.js",
"./dispatch": "./src/shared/dispatch.js",
"./config": "./src/shared/primate.config.js",
"./handler/*": "./src/serve/handlers/*.js"
"./error": "./src/error/index.js",
"./log": "./src/log/index.js",
"./dispatch": "./src/dispatch/index.js",
"./handler/*": "./src/serve/handler/*.js"
}
}
7 changes: 3 additions & 4 deletions packages/core/src/build/app.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import join from "@rcompat/fs/join";
import get from "@rcompat/object/get";
import valmap from "@rcompat/object/valmap";
import * as loaders from "./loaders/exports.js";
import module_loader from "./module_loader.js";
import { web } from "./targets/exports.js";

export default async (log, root, config) => {
export default async (root, config) => {
const path = valmap(config.location, value => root.join(value));
const error = await path.routes.join("+error.js");

Expand All @@ -17,7 +17,6 @@ export default async (log, root, config) => {
assets: [],
path,
root,
log,
// pseudostatic thus arrowbound
get: (config_key, fallback) => get(config, config_key) ?? fallback,
set: (key, value) => {
Expand All @@ -27,7 +26,7 @@ export default async (log, root, config) => {
default: await error.exists() ? await error.import("default") : undefined,
},
extensions: {},
modules: await loaders.modules(log, root, config.modules ?? []),
modules: await module_loader(root, config.modules ?? []),
fonts: [],
// copy files to build folder, potentially transforming them
async stage(source, directory, filter) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import config_filename from "#config-filename";
import log from "@primate/core/log";
import cascade from "@rcompat/async/cascade";
import Build from "@rcompat/build";
import dim from "@rcompat/cli/color/dim";
Expand All @@ -16,7 +18,7 @@ const pre = async (app, mode, target) => {
throw new Error(`target ${dim(target)} does not exist`);
}
app.build_target = target;
app.log.system(`starting ${dim(target)} build in ${dim(mode)} mode`);
log.system(`starting ${dim(target)} build in ${dim(mode)} mode`);

app.build = new Build({
...exclude(app.get("build"), ["includes", "index"]),
Expand Down Expand Up @@ -84,7 +86,7 @@ const write_bootstrap = async (build_number, app, mode) => {
const build_start_script = `
import file from "@rcompat/fs/file";
import serve from "@primate/core/serve";
import config from "./primate.config.js";
import config from "./${config_filename}";
const files = {};
${app.server_build.map(name =>
`import ${name} from "./${build_number}/${name}.js";
Expand Down Expand Up @@ -157,15 +159,14 @@ const post = async (app, mode, target) => {
await write_bootstrap(build_number, app, mode);

// copy config file
const config = "primate.config.js";
await app.root.join(config).copy(app.path.build.join(config));
await app.root.join(config_filename).copy(app.path.build.join(config_filename));

const manifest_data = await manifest();
// create package.json
const package_json = "package.json";
await app.path.build.join(package_json).write(stringify(manifest_data));

app.log.system(`build written to ${dim(app.path.build)}`);
log.system(`build written to ${dim(app.path.build)}`);

app.postbuild.forEach(fn => fn());
};
Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
import * as errors from "@primate/core/errors";
import double_route from "#error/double-route";
import optional_route from "#error/optional-route";
import rest_route from "#error/rest-route";
import Router from "@rcompat/fs/router";

const error_entries = Object.entries({
DoubleRoute: double_route,
OptionalRoute: optional_route,
RestRoute: rest_route,
});

export default async directory => {

try {
Expand All @@ -16,10 +24,8 @@ export default async directory => {
},
});
} catch (error) {
const { DoubleRoute, OptionalRoute, RestRoute } = Router.Error;
error instanceof DoubleRoute && errors.DoubleRoute.throw(error.route);
error instanceof OptionalRoute && errors.OptionalRoute.throw(error.route);
error instanceof RestRoute && errors.RestRoute.throw(error.route);
error_entries.forEach(([key, value]) =>
error instanceof Router.Error[key] && value(error.route));
// rethrow original error
throw error;
}
Expand Down
37 changes: 17 additions & 20 deletions packages/core/src/build/index.js
Original file line number Diff line number Diff line change
@@ -1,42 +1,39 @@
import defaults from "@primate/core/config";
import { EmptyConfigFile, ErrorInConfigFile } from "@primate/core/errors";
import Logger from "@primate/core/logger";
import bye from "#bye";
import config from "#config";
import config_filename from "#config-filename";
import empty_config_file from "#error/empty-config-file";
import error_in_config_file from "#error/error-in-config-file";
import log from "@primate/core/log";
import tryreturn from "@rcompat/async/tryreturn";
import empty from "@rcompat/object/empty";
import override from "@rcompat/object/override";
import root from "@rcompat/package/root";
import platform from "@rcompat/platform";
import { bye } from "../shared/Logger.js";
import app from "./app.js";
import { build, init } from "./hooks/exports.js";
import { build, init } from "./hook/exports.js";

let logger = new Logger({ level: Logger.Warn });
const config_filename = "primate.config.js";

const get_config = async root => {
const config = root.join(config_filename);
return await config.exists()
const get_config = async project_root => {
const local_config = project_root.join(config_filename);
return await local_config.exists()
? tryreturn(async _ => {
const imported = await config.import("default");
const imported = await local_config.import("default");

empty(imported) && EmptyConfigFile.warn(logger, config);
empty(imported) && empty_config_file(local_config);

return imported;
}).orelse(({ message }) =>
ErrorInConfigFile.throw(message, `${platform} ${config}`))
: defaults;
error_in_config_file(message, `${platform} ${local_config}`))
: config;
};

export default async (mode, target) => tryreturn(async _ => {
const package_root = await root();
const config = override(defaults, await get_config(package_root));
logger = new Logger(config.logger);
const $app = await app(logger, package_root, config);
const app_config = override(config, await get_config(package_root));
const $app = await app(package_root, app_config);
await build(await init($app), mode, target);
return true;
}).orelse(error => {
if (error.level === Logger.Error) {
logger.auto(error);
if (error.level === "error") {
bye();
return;
}
Expand Down
30 changes: 0 additions & 30 deletions packages/core/src/build/loaders/common.js

This file was deleted.

1 change: 0 additions & 1 deletion packages/core/src/build/loaders/exports.js

This file was deleted.

27 changes: 0 additions & 27 deletions packages/core/src/build/loaders/modules.js

This file was deleted.

Loading

0 comments on commit 4ce8275

Please sign in to comment.