diff --git a/.github/scripts/preview.mjs b/.github/scripts/preview.mjs index 0d631596..c2d61a56 100644 --- a/.github/scripts/preview.mjs +++ b/.github/scripts/preview.mjs @@ -19,7 +19,7 @@ const __preview_templates_ = paths.join(__preview, ".templates_") const __preview_about = paths.join(__preview, "about/.statics") //Extract from web server -const { conf, Templates } = await setup({ nosettings: true, log: false }) +const { conf, Templates } = await setup({ log: false }) const templates = Object.entries(Templates).map(([name]) => ({ name, enabled: true })) const metadata = Object.fromEntries( Object.entries(conf.metadata.plugins) diff --git a/source/app/action/index.mjs b/source/app/action/index.mjs index d2423bca..c639b1d5 100644 --- a/source/app/action/index.mjs +++ b/source/app/action/index.mjs @@ -88,7 +88,7 @@ async function retry(func, {retries = 1, delay = 0} = {}) { } //Load configuration - const {conf, Plugins, Templates} = await setup({log:false, nosettings:true, community:{templates:core.getInput("setup_community_templates")}}) + const {conf, Plugins, Templates} = await setup({log:false, community:{templates:core.getInput("setup_community_templates")}}) const {metadata} = conf conf.settings.extras = {default:true} info("Setup", "complete") @@ -288,7 +288,7 @@ async function retry(func, {retries = 1, delay = 0} = {}) { await new Promise(async (solve, reject) => { let stdout = "" setTimeout(() => reject("Timeout while waiting for Insights webserver"), 5 * 60 * 1000) - const web = await processes.spawn("node", ["/metrics/source/app/web/index.mjs"], {env:{...process.env, NO_SETTINGS:true}}) + const web = await processes.spawn("node", ["/metrics/source/app/web/index.mjs"], {env:{...process.env}}) web.stdout.on("data", data => (console.debug(`web > ${data}`), stdout += data, /Server ready !/.test(stdout) ? solve() : null)) web.stderr.on("data", data => console.debug(`web > ${data}`)) }) diff --git a/source/app/metrics/setup.mjs b/source/app/metrics/setup.mjs index 417ee693..aa942dea 100644 --- a/source/app/metrics/setup.mjs +++ b/source/app/metrics/setup.mjs @@ -13,7 +13,7 @@ const Templates = {} const Plugins = {} /**Setup */ -export default async function({log = true, nosettings = false, community = {}} = {}) { +export default async function({log = true, sandbox = false, community = {}} = {}) { //Paths const __metrics = path.join(path.dirname(url.fileURLToPath(import.meta.url)), "../../..") const __statics = path.join(__metrics, "source/app/web/statics") @@ -42,8 +42,8 @@ export default async function({log = true, nosettings = false, community = {}} = //Load settings logger("metrics/setup > load settings.json") if (fs.existsSync(__settings)) { - if (nosettings) - logger("metrics/setup > load settings.json > skipped because no settings is enabled") + if (sandbox) + logger("metrics/setup > load settings.json > skipped because in sandbox is enabled") else { conf.settings = JSON.parse(`${await fs.promises.readFile(__settings)}`) logger("metrics/setup > load settings.json > success") diff --git a/source/app/web/index.mjs b/source/app/web/index.mjs index 6b386eb7..6d18442d 100644 --- a/source/app/web/index.mjs +++ b/source/app/web/index.mjs @@ -1,4 +1,4 @@ import app from "./instance.mjs" ;(async function() { - await app({mock:process.env.USE_MOCKED_DATA, nosettings:process.env.NO_SETTINGS}) + await app({sandbox:process.env.SANDBOX}) })() diff --git a/source/app/web/instance.mjs b/source/app/web/instance.mjs index 01b18c40..8df66cd2 100644 --- a/source/app/web/instance.mjs +++ b/source/app/web/instance.mjs @@ -12,11 +12,20 @@ import presets from "../metrics/presets.mjs" import setup from "../metrics/setup.mjs" /**App */ -export default async function({mock, nosettings} = {}) { +export default async function({sandbox} = {}) { //Load configuration settings - const {conf, Plugins, Templates} = await setup({nosettings}) + const {conf, Plugins, Templates} = await setup({sandbox}) const {token, maxusers = 0, restricted = [], debug = false, cached = 30 * 60 * 1000, port = 3000, ratelimiter = null, plugins = null} = conf.settings - mock = mock || conf.settings.mocked + const mock = sandbox || conf.settings.mocked + + //Sandbox mode + if (sandbox) { + console.debug("metrics/app > sandbox mode is specified, enabling advanced features") + conf.settings.extras = conf.settings.extras ?? {} + conf.settings.extras.default = true + conf.settings["plugins.default"] = true + conf.settings.optimize = true + } //Process mocking and default plugin state for (const plugin of Object.keys(Plugins).filter(x => !["base", "core"].includes(x))) { diff --git a/source/plugins/languages/analyzers.mjs b/source/plugins/languages/analyzers.mjs index c280532a..e20f9574 100644 --- a/source/plugins/languages/analyzers.mjs +++ b/source/plugins/languages/analyzers.mjs @@ -229,7 +229,7 @@ if (/languages.analyzers.mjs$/.test(process.argv[1])) { process.exit(1) } const {default:setup} = await import("../../app/metrics/setup.mjs") - const {conf:{metadata}} = await setup({log:false, nosettings:true}) + const {conf:{metadata}} = await setup({log:false}) const {"commits.authoring":authoring} = await metadata.plugins.base.inputs({q:{"commits.authoring":_authoring}, account:"bypass"}) const data = {shared:{"commits.authoring":authoring}} diff --git a/tests/metrics.test.js b/tests/metrics.test.js index cd667e64..00c9f705 100644 --- a/tests/metrics.test.js +++ b/tests/metrics.test.js @@ -33,7 +33,7 @@ web.run = async vars => (await axios(`http://localhost:3000/lowlighter?${new url web.start = async () => new Promise(solve => { let stdout = "" - web.instance = processes.spawn("node", ["source/app/web/index.mjs"], { env: { ...process.env, USE_MOCKED_DATA: true, NO_SETTINGS: true } }) + web.instance = processes.spawn("node", ["source/app/web/index.mjs"], { env: { ...process.env, SANDBOX: true } }) web.instance.stdout.on("data", data => (stdout += data, /Server ready !/.test(stdout) ? solve() : null)) web.instance.stderr.on("data", data => console.error(`${data}`)) })