Sukka Ruleset Server
Made by Sukka | Source @ GitHub | Licensed under AGPL-3.0
Last Build: ${new Date().toISOString()}
-
${walk(tree)}
'use strict';Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});const buildPublic=require('../_virtual/build-public.cjs'),require$$0$1=require('node:path'),require$$1=require('node:fs'),require$$2=require('node:fs/promises'),index=require('./trace/index.cjs'),treeDir=require('./lib/tree-dir.cjs'),dir=require('./constants/dir.cjs'),misc=require('./lib/misc.cjs'),require$$0=require('picocolors'),require$$8=require('foxts/tagged'),createFile=require('./lib/create-file.cjs');var hasRequiredBuildPublic; function requireBuildPublic () { if (hasRequiredBuildPublic) return buildPublic.__module.exports; hasRequiredBuildPublic = 1; (function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "buildPublic", { enumerable: true, get: function() { return buildPublic; } }); const _nodepath = /*#__PURE__*/ _interop_require_default(require$$0$1); const _nodefs = /*#__PURE__*/ _interop_require_default(require$$1); const _promises = /*#__PURE__*/ _interop_require_default(require$$2); const _trace = /*@__PURE__*/ index.__require(); const _treedir = /*@__PURE__*/ treeDir.__require(); const _dir = /*@__PURE__*/ dir.__require(); const _misc = /*@__PURE__*/ misc.__require(); const _picocolors = /*#__PURE__*/ _interop_require_default(require$$0); const _tagged = require$$8; const _createfile = /*@__PURE__*/ createFile.__require(); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const mockDir = _nodepath.default.join(_dir.ROOT_DIR, 'Mock'); const modulesDir = _nodepath.default.join(_dir.ROOT_DIR, 'Modules'); async function copyDirContents(srcDir, destDir) { const promises = []; for await (const entry of (await _promises.default.opendir(srcDir))){ const src = _nodepath.default.join(srcDir, entry.name); const dest = _nodepath.default.join(destDir, entry.name); if (entry.isDirectory()) { console.warn(_picocolors.default.red('[build public] cant copy directory'), src); } else { promises.push(_promises.default.copyFile(src, dest, _nodefs.default.constants.COPYFILE_FICLONE)); } } return Promise.all(promises); } const buildPublic = (0, _trace.task)(require.main === module, __filename)(async (span)=>{ await span.traceChildAsync('copy rest of the files', async ()=>{ await Promise.all([ // mkdirp(OUTPUT_MODULES_DIR), (0, _misc.mkdirp)(_dir.OUTPUT_MODULES_RULES_DIR), (0, _misc.mkdirp)(_dir.OUTPUT_MOCK_DIR) ]); await Promise.all([ copyDirContents(modulesDir, _dir.OUTPUT_MODULES_DIR), copyDirContents(mockDir, _dir.OUTPUT_MOCK_DIR) ]); }); const html = await span.traceChild('generate index.html').traceAsyncFn(()=>(0, _treedir.treeDir)(_dir.PUBLIC_DIR).then(generateHtml)); await (0, _createfile.compareAndWriteFile)(span, [ '/*', ' cache-control: public, max-age=240, stale-while-revalidate=60, stale-if-error=15', 'https://:project.pages.dev/*', ' X-Robots-Tag: noindex', '/Modules/*', ' content-type: text/plain; charset=utf-8', '/List/*', ' content-type: text/plain; charset=utf-8' ], _nodepath.default.join(_dir.PUBLIC_DIR, '_headers')); await (0, _createfile.compareAndWriteFile)(span, [ '#
', '#########################################', '# Sukka\'s Ruleset - 404 Not Found', '################## EOF ##################' ], _nodepath.default.join(_dir.PUBLIC_DIR, '404.html')); return (0, _misc.writeFile)(_nodepath.default.join(_dir.PUBLIC_DIR, 'index.html'), html); }); const priorityOrder = { domainset: 1, non_ip: 2, ip: 3, List: 10, Surge: 11, Clash: 12, 'sing-box': 13, Modules: 20, Script: 30, Mock: 40, Assets: 50, Internal: 60, LICENSE: 70, default: Number.MAX_VALUE }; const prioritySorter = (a, b)=>(priorityOrder[a.name] || priorityOrder.default) - (priorityOrder[b.name] || priorityOrder.default) || (0, _misc.fastStringCompare)(a.name, b.name); function walk(tree) { let result = ''; tree.sort(prioritySorter); for(let i = 0, len = tree.length; i < len; i++){ const entry = tree[i]; if (entry.type === _treedir.TreeFileType.DIRECTORY) { result += (0, _tagged.tagged)`
Made by Sukka | Source @ GitHub | Licensed under AGPL-3.0
Last Build: ${new Date().toISOString()}