{
    "version";
    3, "file";
    "generate-preset-json.mjs", "sourceRoot";
    "", "sources";
    ["../../../../../src/components/dyne-slangroom-preset-loader/utils/generate-preset-json.mjs"], "names";
    [], "mappings";
    "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", "sourcesContent";
    ["import fs from 'node:fs';\nimport { fileURLToPath } from 'node:url';\nimport path from 'node:path';\nimport { glob } from 'glob';\nimport { Array as A, pipe, Record as R, String as S, Option as O } from 'effect';\nimport degit from 'degit';\n\n// -- Config -- //\n\nconst SLANGROOM_REPO = 'dyne/slangroom';\nconst SLANGROOM_DIR = 'slangroom';\nconst EXAMPLES_DIR = 'examples';\nconst PRESETS_FILE = 'slangroom-presets.json';\nconst BROWSER_LIB = 'pkg/browser/package.json';\n\n// -- Instructions -- //\n\nawait cloneRepo(SLANGROOM_REPO, getTempSlangroomPath());\n\nconst browserModules = getSlangroomBrowserModules();\npipe(\n  await getExamplesFilesPaths(browserModules),\n  processAndParseExamplesPaths,\n  serialize,\n  writePresetFile,\n);\n\ndeleteFolder(getTempSlangroomPath());\n\n// -- Functions -- //\n\n/**\n *\n * @param {string[]} paths\n * @returns\n */\nfunction processAndParseExamplesPaths(paths) {\n  return pipe(\n    paths,\n\n    A.filter(p => fs.lstatSync(p).isFile()),\n    A.groupBy(p => path.basename(p).split('.').at(0)),\n\n    R.map((paths, key) => ({\n      name: key,\n      contract: paths.find(S.includes('.slang')),\n      keys: paths.find(S.includes('.keys.')),\n      data: paths.find(S.includes('.data.')),\n      meta: paths.find(S.includes('.meta.')),\n    })),\n\n    R.map(contractData => ({\n      ...contractData,\n      group: path.dirname(contractData.contract).split('/').at(-1),\n    })),\n\n    R.map(contractData => ({\n      ...contractData,\n      contract: readFileAsString(contractData.contract),\n      keys: readFileAsString(contractData.keys),\n      data: readFileAsString(contractData.data),\n      meta: JSON.parse(readFileAsString(contractData.meta)),\n    })),\n\n    R.toEntries,\n    A.map(A.get(1)),\n    A.map(O.getOrThrow),\n  );\n}\n\n/** @param {string[]} folders */\nfunction getExamplesFilesPaths(folders = []) {\n  const f = folders.length === 0 ? '**' : `{${folders.join(',')}}`;\n  return glob(path.join(getTempSlangroomPath(), EXAMPLES_DIR, f, '*'));\n}\n\n/** @param {string} data */\nfunction writePresetFile(data) {\n  return fs.writeFileSync(getPresetFilePath(), data);\n}\n\nfunction getSlangroomBrowserModules() {\n  return pipe(\n    getSlangroomBrowserModulePackageJson(),\n    packageJson => packageJson.dependencies,\n    R.toEntries,\n    A.map(A.get(0)),\n    A.map(O.map(S.replace('@slangroom/', ''))),\n    A.map(O.getOrThrow),\n  );\n}\n\n/** @typedef {Object.<string, string>} StringRecord */\n/** @returns {{dependencies: StringRecord}} browserLibPackageJson */\nfunction getSlangroomBrowserModulePackageJson() {\n  return pipe(getBrowserLibFilePath(), readFileAsString, JSON.parse);\n}\n\n// -- Utils: fs, cloning -- //\n\n/**\n * @param {string} repo\n * @param {string} dest\n */\nfunction cloneRepo(repo, dest) {\n  return new Promise((resolve, reject) => {\n    const emitter = degit(repo, {\n      cache: false,\n      force: true,\n      verbose: true,\n    });\n\n    emitter.clone(dest).then(() => {\n      resolve();\n    });\n  });\n}\n\n/** @param {string} path */\nfunction readFileAsString(path) {\n  return fs.readFileSync(path).toString();\n}\n\n/** @param {string} data */\nfunction serialize(data) {\n  return JSON.stringify(data, null, 4);\n}\n\n/** @param {string} dir */\nfunction deleteFolder(dir) {\n  fs.rmSync(dir, { recursive: true, force: true });\n}\n\n// -- Paths -- //\n\nfunction cwd() {\n  const __filename = fileURLToPath(import.meta.url);\n  const __dirname = path.dirname(__filename);\n  return __dirname;\n}\n\nfunction getTempSlangroomPath() {\n  return path.join(cwd(), SLANGROOM_DIR);\n}\n\nfunction getPresetFilePath() {\n  return path.join(cwd(), PRESETS_FILE);\n}\n\nfunction getBrowserLibFilePath() {\n  return path.join(getTempSlangroomPath(), BROWSER_LIB);\n}\n"];
}
export {};
