From 12f33d3f0675fd1ae586963007debd65729607a4 Mon Sep 17 00:00:00 2001 From: terrablue <102580937+terrablue@users.noreply.github.com> Date: Mon, 22 Jul 2024 00:43:51 +0200 Subject: [PATCH] store: separate default and runtime --- packages/store/package.json | 5 ++++- packages/store/src/{ => default}/build.js | 0 packages/store/src/default/index.js | 27 +++++++++++++++++++++++ packages/store/src/{ => runtime}/index.js | 2 -- packages/store/src/{ => runtime}/route.js | 0 packages/store/src/{ => runtime}/serve.js | 0 6 files changed, 31 insertions(+), 3 deletions(-) rename packages/store/src/{ => default}/build.js (100%) create mode 100644 packages/store/src/default/index.js rename packages/store/src/{ => runtime}/index.js (90%) rename packages/store/src/{ => runtime}/route.js (100%) rename packages/store/src/{ => runtime}/serve.js (100%) diff --git a/packages/store/package.json b/packages/store/package.json index 944f77f4..bdbccae3 100644 --- a/packages/store/package.json +++ b/packages/store/package.json @@ -54,7 +54,10 @@ }, "type": "module", "exports": { - ".": "./src/index.js", + ".": { + "runtime": "./src/runtime/index.js", + "default": "./src/default/index.js" + }, "./*/common": "./src/server/*/common.js", "./base/*": "./src/base/*.js", "./sql/*": "./src/sql/*.js", diff --git a/packages/store/src/build.js b/packages/store/src/default/build.js similarity index 100% rename from packages/store/src/build.js rename to packages/store/src/default/build.js diff --git a/packages/store/src/default/index.js b/packages/store/src/default/index.js new file mode 100644 index 00000000..6e7c7f87 --- /dev/null +++ b/packages/store/src/default/index.js @@ -0,0 +1,27 @@ +import modes from "@primate/store/base/modes"; +import memory from "@primate/store/memory"; +import { assert } from "rcompat/invariant"; +import route from "../runtime/route.js"; +import serve from "../runtime/serve.js"; +import build from "./build.js"; + +export default ({ + // directory for stores + directory = "stores", + // default database driver + driver = memory(), + // loose: validate non-empty fields, accept empty/non-defined [default] + // strict: all fields must be non-empty before saving + mode = modes.loose, +} = {}) => { + assert(Object.values(modes).includes(mode), + "`mode` must be 'strict' or 'loose'"); + const env = {}; + + return { + name: "primate:store", + build: build(directory, driver.build), + serve: serve(directory, mode, driver.serve, env), + route: route(env), + }; +}; diff --git a/packages/store/src/index.js b/packages/store/src/runtime/index.js similarity index 90% rename from packages/store/src/index.js rename to packages/store/src/runtime/index.js index 41f53471..43763b95 100644 --- a/packages/store/src/index.js +++ b/packages/store/src/runtime/index.js @@ -1,7 +1,6 @@ import modes from "@primate/store/base/modes"; import memory from "@primate/store/memory"; import { assert } from "rcompat/invariant"; -import build from "./build.js"; import route from "./route.js"; import serve from "./serve.js"; @@ -20,7 +19,6 @@ export default ({ return { name: "primate:store", - build: build(directory, driver.build), serve: serve(directory, mode, driver.serve, env), route: route(env), }; diff --git a/packages/store/src/route.js b/packages/store/src/runtime/route.js similarity index 100% rename from packages/store/src/route.js rename to packages/store/src/runtime/route.js diff --git a/packages/store/src/serve.js b/packages/store/src/runtime/serve.js similarity index 100% rename from packages/store/src/serve.js rename to packages/store/src/runtime/serve.js