commandkit 0.1.11-dev.20250128162628 → 0.1.11-dev.20250131152354
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{CommandKit-B3EDajLJ.d.mts → CommandKit-BRxmnywX.d.mts} +5 -0
- package/dist/{CommandKit-BO77LFI2.d.ts → CommandKit-BhFmurtb.d.ts} +5 -0
- package/dist/CommandKit.d.mts +4 -1
- package/dist/CommandKit.d.ts +4 -1
- package/dist/CommandKit.js +1 -1
- package/dist/CommandKit.js.map +1 -1
- package/dist/CommandKit.mjs +1 -1
- package/dist/{async-context-DnJSN785.d.ts → async-context-B5Gze_ie.d.mts} +3 -2
- package/dist/{async-context-C5FJOAIU.d.mts → async-context-BW1JD1Dt.d.ts} +3 -2
- package/dist/cache/cache.d.mts +5 -2
- package/dist/cache/cache.d.ts +5 -2
- package/dist/cache/cache.js +1 -1
- package/dist/cache/cache.js.map +1 -1
- package/dist/cache/cache.mjs +1 -1
- package/dist/cache/index.d.mts +5 -2
- package/dist/cache/index.d.ts +5 -2
- package/dist/cache/index.js +1 -1
- package/dist/cache/index.js.map +1 -1
- package/dist/cache/index.mjs +1 -1
- package/dist/chunk-6EE35LXH.mjs +2 -0
- package/dist/chunk-6EE35LXH.mjs.map +1 -0
- package/dist/chunk-75Q5UTDQ.mjs +2 -0
- package/dist/chunk-75Q5UTDQ.mjs.map +1 -0
- package/dist/chunk-ALRJWLOC.mjs +2 -0
- package/dist/chunk-ALRJWLOC.mjs.map +1 -0
- package/dist/{chunk-ULPF2QCW.mjs → chunk-D4IIOMFB.mjs} +1 -1
- package/dist/{chunk-B5T552SB.mjs → chunk-DMNZASZO.mjs} +2 -2
- package/dist/chunk-HFOCTXRX.mjs +2 -0
- package/dist/chunk-HFOCTXRX.mjs.map +1 -0
- package/dist/chunk-HN3WQT6R.mjs +2 -0
- package/dist/chunk-HN3WQT6R.mjs.map +1 -0
- package/dist/{chunk-LQPVE73I.mjs → chunk-JPMIJRUL.mjs} +2 -2
- package/dist/{chunk-WZU7OSUV.mjs → chunk-P7PNFSAC.mjs} +3 -3
- package/dist/chunk-P7PNFSAC.mjs.map +1 -0
- package/dist/{chunk-UP6ACDGE.mjs → chunk-PNNFEI4V.mjs} +2 -2
- package/dist/chunk-VKCZYHEQ.mjs +2 -0
- package/dist/chunk-VKCZYHEQ.mjs.map +1 -0
- package/dist/cli/build.js +2 -2
- package/dist/cli/build.js.map +1 -1
- package/dist/cli/build.mjs +1 -1
- package/dist/cli/development.js +2 -2
- package/dist/cli/development.js.map +1 -1
- package/dist/cli/development.mjs +2 -2
- package/dist/cli/development.mjs.map +1 -1
- package/dist/cli/esbuild-plugins/plugin.d.mts +1 -0
- package/dist/cli/esbuild-plugins/plugin.d.ts +1 -0
- package/dist/cli/esbuild-plugins/plugin.js +1 -1
- package/dist/cli/esbuild-plugins/plugin.js.map +1 -1
- package/dist/cli/esbuild-plugins/plugin.mjs +1 -1
- package/dist/cli/init.js +3 -3
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/init.mjs +1 -1
- package/dist/components/action-row/ActionRow.d.mts +17 -0
- package/dist/components/action-row/ActionRow.d.ts +17 -0
- package/dist/components/action-row/ActionRow.js +2 -0
- package/dist/components/action-row/ActionRow.js.map +1 -0
- package/dist/components/action-row/ActionRow.mjs +2 -0
- package/dist/components/button/Button.d.mts +28 -0
- package/dist/components/button/Button.d.ts +28 -0
- package/dist/components/button/Button.js +11 -0
- package/dist/components/button/Button.js.map +1 -0
- package/dist/components/button/Button.mjs +2 -0
- package/dist/components/{ButtonKit.d.mts → button/ButtonKit.d.mts} +25 -21
- package/dist/components/{ButtonKit.d.ts → button/ButtonKit.d.ts} +25 -21
- package/dist/components/button/ButtonKit.js +11 -0
- package/dist/components/button/ButtonKit.js.map +1 -0
- package/dist/components/button/ButtonKit.mjs +2 -0
- package/dist/components/button/ButtonKit.mjs.map +1 -0
- package/dist/components/common/EventInterceptor.d.mts +73 -0
- package/dist/components/common/EventInterceptor.d.ts +73 -0
- package/dist/components/common/EventInterceptor.js +2 -0
- package/dist/components/common/EventInterceptor.js.map +1 -0
- package/dist/components/common/EventInterceptor.mjs +2 -0
- package/dist/components/common/EventInterceptor.mjs.map +1 -0
- package/dist/components/common/element.d.mts +24 -0
- package/dist/components/common/element.d.ts +24 -0
- package/dist/components/common/element.js +2 -0
- package/dist/components/common/element.js.map +1 -0
- package/dist/components/common/element.mjs +2 -0
- package/dist/components/common/element.mjs.map +1 -0
- package/dist/components/index.d.mts +5 -1
- package/dist/components/index.d.ts +5 -1
- package/dist/components/index.js +10 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +1 -1
- package/dist/context/async-context.d.mts +5 -2
- package/dist/context/async-context.d.ts +5 -2
- package/dist/context/async-context.js +2 -2
- package/dist/context/async-context.js.map +1 -1
- package/dist/context/async-context.mjs +1 -1
- package/dist/context/environment.d.mts +5 -2
- package/dist/context/environment.d.ts +5 -2
- package/dist/context/environment.js +1 -1
- package/dist/context/environment.js.map +1 -1
- package/dist/context/environment.mjs +1 -1
- package/dist/handlers/command-handler/CommandHandler.d.mts +4 -1
- package/dist/handlers/command-handler/CommandHandler.d.ts +4 -1
- package/dist/handlers/command-handler/CommandHandler.js +1 -1
- package/dist/handlers/command-handler/CommandHandler.js.map +1 -1
- package/dist/handlers/command-handler/CommandHandler.mjs +1 -1
- package/dist/handlers/command-handler/functions/loadCommandsWithRest.d.mts +4 -1
- package/dist/handlers/command-handler/functions/loadCommandsWithRest.d.ts +4 -1
- package/dist/handlers/command-handler/functions/registerCommands.d.mts +4 -1
- package/dist/handlers/command-handler/functions/registerCommands.d.ts +4 -1
- package/dist/handlers/command-handler/typings.d.mts +4 -1
- package/dist/handlers/command-handler/typings.d.ts +4 -1
- package/dist/handlers/command-handler/validations/devOnly.d.mts +4 -1
- package/dist/handlers/command-handler/validations/devOnly.d.ts +4 -1
- package/dist/handlers/command-handler/validations/index.d.mts +4 -1
- package/dist/handlers/command-handler/validations/index.d.ts +4 -1
- package/dist/handlers/command-handler/validations/permissions.d.mts +4 -1
- package/dist/handlers/command-handler/validations/permissions.d.ts +4 -1
- package/dist/handlers/event-handler/EventHandler.d.mts +4 -1
- package/dist/handlers/event-handler/EventHandler.d.ts +4 -1
- package/dist/handlers/event-handler/EventHandler.mjs +1 -1
- package/dist/handlers/event-handler/typings.d.mts +4 -1
- package/dist/handlers/event-handler/typings.d.ts +4 -1
- package/dist/handlers/index.d.mts +4 -1
- package/dist/handlers/index.d.ts +4 -1
- package/dist/handlers/index.js +1 -1
- package/dist/handlers/index.js.map +1 -1
- package/dist/handlers/index.mjs +1 -1
- package/dist/handlers/validation-handler/ValidationHandler.mjs +1 -1
- package/dist/index.d.mts +9 -4
- package/dist/index.d.ts +9 -4
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/types.d.mts +4 -1
- package/dist/types.d.ts +4 -1
- package/dist/utils/warn-unstable.mjs +1 -1
- package/dist/utils/warn-unstable.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-KAJRRZVI.mjs +0 -2
- package/dist/chunk-KAJRRZVI.mjs.map +0 -1
- package/dist/chunk-M5FMJETI.mjs +0 -1
- package/dist/chunk-TEL2J6LT.mjs +0 -2
- package/dist/chunk-TEL2J6LT.mjs.map +0 -1
- package/dist/chunk-WZU7OSUV.mjs.map +0 -1
- package/dist/chunk-ZCUZ5ENB.mjs +0 -2
- package/dist/chunk-ZCUZ5ENB.mjs.map +0 -1
- package/dist/components/ButtonKit.js +0 -2
- package/dist/components/ButtonKit.js.map +0 -1
- package/dist/components/ButtonKit.mjs +0 -2
- /package/dist/{chunk-ULPF2QCW.mjs.map → chunk-D4IIOMFB.mjs.map} +0 -0
- /package/dist/{chunk-B5T552SB.mjs.map → chunk-DMNZASZO.mjs.map} +0 -0
- /package/dist/{chunk-LQPVE73I.mjs.map → chunk-JPMIJRUL.mjs.map} +0 -0
- /package/dist/{chunk-UP6ACDGE.mjs.map → chunk-PNNFEI4V.mjs.map} +0 -0
- /package/dist/{chunk-M5FMJETI.mjs.map → components/action-row/ActionRow.mjs.map} +0 -0
- /package/dist/components/{ButtonKit.mjs.map → button/Button.mjs.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/development.ts","../../src/cli/common.ts","../../src/cli/parse-env.ts","../../src/cli/build.ts","../../src/cli/esbuild-plugins/plugin.ts","../../src/cli/esbuild-plugins/use-cache.ts"],"sourcesContent":["// @ts-check\nimport { config as dotenv } from 'dotenv';\nimport { join } from 'node:path';\nimport { build } from 'tsup';\nimport { Colors, erase, findCommandKitConfig, panic, write } from './common';\nimport { parseEnv } from './parse-env';\nimport child_process from 'node:child_process';\nimport ora from 'ora';\nimport { injectShims } from './build';\nimport { commandkitPlugin } from './esbuild-plugins/plugin';\n\nconst RESTARTING_MSG_PATTERN = /^Restarting '|\".+'|\"\\n?$/;\nconst FAILED_RUNNING_PATTERN = /^Failed running '.+'|\"\\n?$/;\n\nexport async function bootstrapDevelopmentServer(opts: any) {\n const {\n src,\n main,\n watch = Boolean(opts.noWatch),\n nodeOptions = [],\n envExtra = true,\n clearRestartLogs = true,\n outDir,\n requirePolyfill\n } = await findCommandKitConfig(opts.config);\n\n if (!src) {\n panic('Could not find src in commandkit.json');\n }\n\n if (!main) {\n panic('Could not find main in commandkit.json');\n }\n\n const watchMode = watch;\n const status = ora(\n Colors.green('Starting a development server...\\n')\n ).start();\n const start = performance.now();\n\n if (watchMode && !nodeOptions.includes('--watch')) {\n nodeOptions.push('--watch');\n } else if (!watchMode && nodeOptions.includes('--watch')) {\n nodeOptions.splice(nodeOptions.indexOf('--watch'), 1);\n }\n\n if (!nodeOptions.includes('--enable-source-maps')) {\n nodeOptions.push('--enable-source-maps');\n }\n\n erase('.commandkit');\n\n try {\n await build({\n clean: true,\n format: ['esm'],\n dts: false,\n skipNodeModulesBundle: true,\n minify: false,\n shims: true,\n sourcemap: 'inline',\n keepNames: true,\n outDir: '.commandkit',\n silent: true,\n entry: [src, '!dist', '!.commandkit', `!${outDir}`].filter(Boolean),\n watch: watchMode,\n cjsInterop: true,\n async onSuccess() {\n return await injectShims('.commandkit', main, false, requirePolyfill);\n },\n esbuildPlugins: [\n commandkitPlugin({\n 'use-macro': false\n })]\n\n });\n\n status.succeed(\n Colors.green(\n `Dev server started in ${(performance.now() - start).toFixed(2)}ms!\\n`\n )\n );\n\n if (watchMode) write(Colors.cyan('Watching for file changes...\\n'));\n\n const processEnv = {};\n\n const env = dotenv({\n path: join(process.cwd(), '.env'),\n processEnv\n });\n\n if (envExtra) {\n parseEnv(processEnv);\n }\n\n if (env.error) {\n write(Colors.yellow(`[DOTENV] Warning: ${env.error.message}`));\n }\n\n if (env.parsed) {\n write(Colors.blue('[DOTENV] Loaded .env file!'));\n }\n\n const ps: child_process.ChildProcessWithoutNullStreams =\n child_process.spawn(\n 'node',\n [...nodeOptions, join(process.cwd(), '.commandkit', main)],\n {\n env: {\n ...process.env,\n ...processEnv,\n NODE_ENV: 'development',\n // @ts-expect-error\n COMMANDKIT_DEV: true,\n // @ts-expect-error\n COMMANDKIT_PRODUCTION: false\n },\n cwd: process.cwd()\n }\n );\n\n let isLastLogRestarting = false,\n hasStarted = false;\n\n ps.stdout.on('data', (data) => {\n const message = data.toString();\n\n if (FAILED_RUNNING_PATTERN.test(message)) {\n write(Colors.cyan('Failed running the bot, waiting for changes...'));\n isLastLogRestarting = false;\n if (!hasStarted) hasStarted = true;\n return;\n }\n\n if (clearRestartLogs && !RESTARTING_MSG_PATTERN.test(message)) {\n write(message);\n isLastLogRestarting = false;\n } else {\n if (isLastLogRestarting || !hasStarted) {\n if (!hasStarted) hasStarted = true;\n return;\n }\n write(Colors.cyan('⌀ Restarting the bot...'));\n isLastLogRestarting = true;\n }\n\n if (!hasStarted) hasStarted = true;\n });\n\n ps.stderr.on('data', (data) => {\n const message = data.toString();\n\n if (\n message.includes(\n 'ExperimentalWarning: Watch mode is an experimental feature and might change at any time'\n ))\n\n return;\n\n write(Colors.red(message));\n });\n\n ps.on('close', (code) => {\n write('\\n');\n process.exit(code ?? 0);\n });\n\n ps.on('error', (err) => {\n panic(err);\n });\n } catch (e) {\n status.fail(\n `Error occurred after ${(performance.now() - start).toFixed(2)}ms!\\n`\n );\n panic(e instanceof Error ? e.stack : e);\n }\n}","// @ts-check\n\nimport { rimrafSync } from 'rimraf';\nimport { join } from 'node:path';\nimport fs from 'node:fs';\n\nconst resetColor = '\\x1b[0m';\n\nexport const Colors = {\n reset: (text: string) => `${text}${resetColor}`,\n bright: (text: string) => `\\x1b[1m${text}${resetColor}`,\n dim: (text: string) => `\\x1b[2m${text}${resetColor}`,\n underscore: (text: string) => `\\x1b[4m${text}${resetColor}`,\n blink: (text: string) => `\\x1b[5m${text}${resetColor}`,\n reverse: (text: string) => `\\x1b[7m${text}${resetColor}`,\n hidden: (text: string) => `\\x1b[8m${text}${resetColor}`,\n\n black: (text: string) => `\\x1b[30m${text}${resetColor}`,\n red: (text: string) => `\\x1b[31m${text}${resetColor}`,\n green: (text: string) => `\\x1b[32m${text}${resetColor}`,\n yellow: (text: string) => `\\x1b[33m${text}${resetColor}`,\n blue: (text: string) => `\\x1b[34m${text}${resetColor}`,\n magenta: (text: string) => `\\x1b[35m${text}${resetColor}`,\n cyan: (text: string) => `\\x1b[36m${text}${resetColor}`,\n white: (text: string) => `\\x1b[37m${text}${resetColor}`,\n\n bgBlack: (text: string) => `\\x1b[40m${text}${resetColor}`,\n bgRed: (text: string) => `\\x1b[41m${text}${resetColor}`,\n bgGreen: (text: string) => `\\x1b[42m${text}${resetColor}`,\n bgYellow: (text: string) => `\\x1b[43m${text}${resetColor}`,\n bgBlue: (text: string) => `\\x1b[44m${text}${resetColor}`,\n bgMagenta: (text: string) => `\\x1b[45m${text}${resetColor}`,\n bgCyan: (text: string) => `\\x1b[46m${text}${resetColor}`,\n bgWhite: (text: string) => `\\x1b[47m${text}${resetColor}`\n};\n\nexport function write(message: any) {\n process.stdout.write(message);\n process.stdout.write('\\n');\n}\n\n/**\n * @returns {never}\n */\nexport function panic(message: any) {\n write(Colors.red(`Error: ${message}`));\n process.exit(1);\n}\n\nexport function findPackageJSON() {\n const cwd = process.cwd();\n const target = join(cwd, 'package.json');\n\n if (!fs.existsSync(target)) {\n panic('Could not find package.json in current directory.');\n }\n\n return JSON.parse(fs.readFileSync(target, 'utf8'));\n}\n\nconst possibleFileNames = [\n'commandkit.json',\n'commandkit.config.json',\n'commandkit.js',\n'commandkit.config.js',\n'commandkit.mjs',\n'commandkit.config.mjs',\n'commandkit.cjs',\n'commandkit.config.cjs',\n'commandkit.ts',\n'commandkit.mts',\n'commandkit.cts'];\n\n\nexport async function findCommandKitConfig(src: string) {\n const cwd = process.cwd();\n const locations = src ?\n [join(cwd, src)] :\n possibleFileNames.map((name) => join(cwd, name));\n\n for (const location of locations) {\n try {\n return await loadConfigInner(location);\n } catch (e) {\n continue;\n }\n }\n\n panic(`Could not locate commandkit config from ${cwd}`);\n}\n\nfunction ensureTypeScript(target: string) {\n const isTypeScript = /\\.(c|m)tsx?$/.test(target);\n\n if (isTypeScript && !process.features.typescript) {\n panic(\n 'You are trying to load commandkit config file that is written in typescript. The current Node.js version does not have TypeScript feature enabled.'\n );\n }\n}\n\nasync function loadConfigInner(target: string) {\n const isJSON = target.endsWith('.json');\n\n await ensureExists(target);\n\n ensureTypeScript(target);\n\n /**\n * @type {import('..').CommandKitConfig}\n */\n // @ts-ignore\n const config = await import(`file://${target}`, {\n assert: isJSON ? { type: 'json' } : undefined\n }).then((conf) => conf.default || conf);\n\n return config;\n}\n\nasync function ensureExists(loc: string) {\n await fs.promises.access(loc, fs.constants.F_OK);\n}\n\nexport function erase(dir: string) {\n rimrafSync(dir);\n}","// @ts-check\n\nimport { randomUUID } from 'node:crypto';\n\nconst valuesMap = {\n true: true,\n false: false,\n null: null,\n undefined: undefined,\n __UUIDv4__: () => randomUUID()\n};\n\nconst VALUE_PREFIXES = {\n JSON: 'JSON::',\n DATE: 'DATE::'\n};\n\nfunction catcher(fn: Function) {\n try {\n fn();\n return true;\n } catch {\n return false;\n }\n}\n\nexport function parseEnv(src: any) {\n for (const key in src) {\n const value = src[key];\n\n if (typeof value !== 'string') continue;\n\n if (value.startsWith(VALUE_PREFIXES.JSON)) {\n catcher(\n () => src[key] = JSON.parse(value.replace(VALUE_PREFIXES.JSON, ''))\n );\n continue;\n }\n\n if (value.startsWith(VALUE_PREFIXES.DATE)) {\n src[key] = new Date(value.replace(VALUE_PREFIXES.DATE, ''));\n continue;\n }\n\n if (value.includes(',')) {\n src[key] = value.split(',').map((v) => v.trim());\n continue;\n }\n\n if (/^[0-9]+n$/.test(value)) {\n src[key] = BigInt(value);\n continue;\n }\n\n if (value in valuesMap) {\n src[key] =\n // @ts-ignore\n typeof valuesMap[value] === 'function' ?\n // @ts-ignore\n valuesMap[value]() :\n // @ts-ignore\n valuesMap[value];\n continue;\n }\n }\n\n return src;\n}","// @ts-check\n\nimport { readFile, writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { build } from 'tsup';\nimport { Colors, erase, findCommandKitConfig, panic, write } from './common.js';\nimport ora from 'ora';\nimport { commandkitPlugin } from './esbuild-plugins/plugin';\n\nexport async function bootstrapProductionBuild(config: any) {\n const {\n sourcemap = false,\n minify = false,\n outDir = 'dist',\n antiCrash = true,\n src,\n main,\n requirePolyfill: polyfillRequire\n } = await findCommandKitConfig(config);\n\n const status = ora('Creating optimized production build...\\n').start();\n const start = performance.now();\n\n erase(outDir);\n\n try {\n await build({\n clean: true,\n format: ['esm'],\n dts: false,\n skipNodeModulesBundle: true,\n minify,\n shims: true,\n banner: {\n js: '/* Optimized production build generated by CommandKit */'\n },\n sourcemap,\n keepNames: true,\n outDir,\n silent: true,\n watch: false,\n cjsInterop: true,\n entry: [src, '!dist', '!.commandkit', `!${outDir}`],\n esbuildPlugins: [commandkitPlugin()]\n });\n\n await injectShims(outDir, main, antiCrash, polyfillRequire);\n\n status.succeed(\n Colors.green(\n `Build completed in ${(performance.now() - start).toFixed(2)}ms!`\n )\n );\n write(\n Colors.green(\n `\\nRun ${Colors.magenta(`commandkit start`)} ${Colors.green(\n 'to start your bot.'\n )}`\n )\n );\n } catch (e) {\n status.fail(\n `Build failed after ${(performance.now() - start).toFixed(2)}ms!`\n );\n panic(e);\n }\n}\n\nexport async function injectShims(\noutDir: string,\nmain: string,\nantiCrash: boolean,\npolyfillRequire: boolean)\n{\n const path = join(process.cwd(), outDir, main);\n\n const head = ['\\n\\n;await (async()=>{', \" 'use strict';\"].join('\\n');\n const tail = '\\n})();';\n const requireScript = polyfillRequire ?\n [\n '// --- CommandKit require() polyfill ---',\n ' if (typeof require === \"undefined\") {',\n ' const { createRequire } = await import(\"node:module\");',\n ' const __require = createRequire(import.meta.url);',\n ' Object.defineProperty(globalThis, \"require\", {',\n ' value: (id) => {',\n ' return __require(id);',\n ' },',\n ' configurable: true,',\n ' enumerable: false,',\n ' writable: true,',\n ' });',\n ' }',\n '// --- CommandKit require() polyfill ---'].\n join('\\n') :\n '';\n\n const antiCrashScript = antiCrash ?\n [\n '// --- CommandKit Anti-Crash Monitor ---',\n \" // 'uncaughtException' event is supposed to be used to perform synchronous cleanup before shutting down the process\",\n ' // instead of using it as a means to resume operation.',\n ' // But it exists here due to compatibility reasons with discord bot ecosystem.',\n \" const p = (t) => `\\\\x1b[33m${t}\\\\x1b[0m`, b = '[CommandKit Anti-Crash Monitor]', l = console.log, e1 = 'uncaughtException', e2 = 'unhandledRejection';\",\n ' if (!process.eventNames().includes(e1)) // skip if it is already handled',\n ' process.on(e1, (e) => {',\n ' l(p(`${b} Uncaught Exception`)); l(p(b), p(e.stack || e));',\n ' })',\n ' if (!process.eventNames().includes(e2)) // skip if it is already handled',\n ' process.on(e2, (r) => {',\n ' l(p(`${b} Unhandled promise rejection`)); l(p(`${b} ${r.stack || r}`));',\n ' });',\n '// --- CommandKit Anti-Crash Monitor ---'].\n join('\\n') :\n '';\n\n const contents = await readFile(path, 'utf-8');\n const finalScript = [\n head,\n requireScript,\n antiCrashScript,\n tail,\n '\\n\\n',\n contents].\n join('\\n');\n\n return writeFile(path, finalScript);\n}","import { MacroTransformer } from 'use-macro';\nimport { cacheDirectivePlugin } from './use-cache';\nimport { readFile } from 'node:fs/promises';\n\nconst defaultConfig = {\n 'use-macro': true,\n 'use-cache': true\n};\n\ninterface CommandKitEsbuildPluginConfig {\n 'use-macro'?: boolean;\n 'use-cache'?: boolean;\n}\n\nexport const commandkitPlugin = (config?: CommandKitEsbuildPluginConfig) => {\n config = Object.assign({}, defaultConfig, config);\n\n const plugins = [\n {\n name: 'use-macro',\n plugin: async (content: string, args: any) => {\n const transformer = new MacroTransformer();\n const { contents } = await transformer.transform(content, args.path);\n return contents;\n }\n },\n {\n name: 'use-cache',\n plugin: async (content: string, args: any) => {\n const { contents } = await cacheDirectivePlugin(content, args);\n return contents;\n }\n }].\n filter((p) => {\n return !!config[p.name as keyof CommandKitEsbuildPluginConfig];\n });\n\n return {\n name: 'commandkit-transformer-plugin',\n setup(build: any) {\n if (!plugins.length) return;\n\n const fileFilter = /\\.(c|m)?(t|j)sx?$/;\n\n build.onLoad({ filter: fileFilter }, async (args: any) => {\n const source = await readFile(args.path, 'utf8');\n const loader = args.path.split('.').pop();\n\n let contents = source;\n\n for (const _plugin of plugins) {\n const { plugin, name } = _plugin;\n try {\n contents = await plugin(contents, args);\n } catch (e) {\n const err = new Error(`Plugin ${name} failed with ${e}`);\n err.stack = e instanceof Error ? e.stack : '';\n\n throw err;\n }\n }\n\n return {\n contents,\n loader\n };\n });\n }\n };\n};","import * as parser from '@babel/parser';\nimport _traverse from '@babel/traverse';\nimport _generate from '@babel/generator';\nimport * as t from '@babel/types';\n\n// @ts-ignore\nconst traverse = _traverse.default || _traverse;\n// @ts-ignore\nconst generate = _generate.default || _generate;\n\nconst IMPORT_PATH = 'commandkit';\nconst DIRECTIVE = 'use cache';\nconst CACHE_IDENTIFIER =\n'super_duper_secret_internal_for_use_cache_directive_of_commandkit_cli_do_not_use_it_directly_or_you_will_be_fired_from_your_job_kthxbai';\n\nconst generateRandomString = (length = 6) => {\n const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n return Array.from(\n { length },\n () => chars[Math.floor(Math.random() * chars.length)]\n ).join('');\n};\n\nexport const cacheDirectivePlugin = async (source: string, args: any) => {\n const ast = parser.parse(source, {\n sourceType: 'module',\n plugins: ['typescript', 'jsx']\n });\n\n let state = {\n needsImport: false,\n hasExistingImport: false,\n cacheIdentifierName: CACHE_IDENTIFIER,\n modifications: []\n };\n\n // First pass: check for naming collisions and collect modifications\n traverse(ast, {\n Program: {\n enter(path: any) {\n const binding = path.scope.getBinding(CACHE_IDENTIFIER);\n if (binding) {\n state.cacheIdentifierName = `${CACHE_IDENTIFIER}_${generateRandomString()}`;\n }\n }\n },\n\n ImportDeclaration(path: any) {\n if (\n path.node.source.value === IMPORT_PATH &&\n path.node.specifiers.some(\n (spec: any) =>\n t.isImportSpecifier(spec) &&\n // @ts-ignore\n spec.imported.name === CACHE_IDENTIFIER\n ))\n {\n state.hasExistingImport = true;\n if (state.cacheIdentifierName !== CACHE_IDENTIFIER) {\n // @ts-ignore\n state.modifications.push(() => {\n path.node.specifiers.forEach((spec: any) => {\n if (\n t.isImportSpecifier(spec) &&\n // @ts-ignore\n spec.imported.name === CACHE_IDENTIFIER)\n {\n spec.local.name = state.cacheIdentifierName;\n }\n });\n });\n }\n }\n },\n\n 'FunctionDeclaration|FunctionExpression|ArrowFunctionExpression'(\n path: any)\n {\n const body = t.isBlockStatement(path.node.body) ? path.node.body : null;\n const hasUseCache = body?.directives?.some(\n (d: any) => d.value.value === DIRECTIVE\n );\n\n if (!hasUseCache && !t.isBlockStatement(path.node.body)) {\n const parentFunction = path.findParent(\n (p: any) =>\n (p.isFunction() || p.isProgram()) && 'directives' in p.node\n );\n if (\n !parentFunction?.node.directives?.some(\n (d: any) => d.value.value === DIRECTIVE\n ))\n {\n return;\n }\n }\n\n if (hasUseCache || !t.isBlockStatement(path.node.body)) {\n // Check if the function is async\n if (!path.node.async) {\n throw new Error(\n `\"${DIRECTIVE}\" directive may only be used in async functions at ${args.path}`\n );\n }\n\n state.needsImport = true;\n const isDeclaration = t.isFunctionDeclaration(path.node);\n const name = isDeclaration ? path.node.id?.name : undefined;\n\n // Create a new body without the 'use cache' directive\n const newBody = t.isBlockStatement(path.node.body) ?\n t.blockStatement(\n path.node.body.body,\n path.node.body.directives.filter(\n (d: any) => d.value.value !== DIRECTIVE\n )\n ) :\n path.node.body;\n\n const wrapped = t.callExpression(\n t.identifier(state.cacheIdentifierName),\n [t.arrowFunctionExpression(path.node.params, newBody, true)]\n );\n\n // @ts-ignore\n state.modifications.push(() => {\n if (name) {\n path.replaceWith(\n t.variableDeclaration('const', [\n t.variableDeclarator(t.identifier(name), wrapped)]\n )\n );\n } else if (!t.isVariableDeclarator(path.parent)) {\n path.replaceWith(wrapped);\n } else {\n path.parent.init = wrapped;\n }\n });\n }\n }\n });\n\n // Apply all collected modifications\n if (state.modifications.length > 0) {\n // Add import if needed\n if (state.needsImport && !state.hasExistingImport) {\n ast.program.body.unshift(\n t.importDeclaration(\n [\n t.importSpecifier(\n t.identifier(state.cacheIdentifierName),\n t.identifier(CACHE_IDENTIFIER)\n )],\n\n t.stringLiteral(IMPORT_PATH)\n )\n );\n }\n\n // Apply collected modifications\n // @ts-ignore\n state.modifications.forEach((modify) => modify());\n }\n\n const { code } = generate(ast);\n return {\n contents: code,\n loader: args.path.split('.').pop()\n };\n};"],"mappings":"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","names":["import_node_path","import_tsup","fs","import_ora","import_promises","import_node_path","_traverse","_generate","build","ora","dotenv","child_process"]}
|
|
1
|
+
{"version":3,"sources":["../../src/cli/development.ts","../../src/cli/common.ts","../../src/cli/parse-env.ts","../../src/cli/build.ts","../../src/cli/esbuild-plugins/plugin.ts","../../src/cli/esbuild-plugins/use-cache.ts"],"sourcesContent":["// @ts-check\nimport { config as dotenv } from 'dotenv';\nimport { join } from 'node:path';\nimport { build } from 'tsup';\nimport { Colors, erase, findCommandKitConfig, panic, write } from './common';\nimport { parseEnv } from './parse-env';\nimport child_process from 'node:child_process';\nimport ora from 'ora';\nimport { injectShims } from './build';\nimport { commandkitPlugin } from './esbuild-plugins/plugin';\n\nconst RESTARTING_MSG_PATTERN = /^Restarting '|\".+'|\"\\n?$/;\nconst FAILED_RUNNING_PATTERN = /^Failed running '.+'|\"\\n?$/;\n\nexport async function bootstrapDevelopmentServer(opts: any) {\n const {\n src,\n main,\n watch = Boolean(opts.noWatch),\n nodeOptions = [],\n envExtra = true,\n clearRestartLogs = true,\n outDir,\n requirePolyfill\n } = await findCommandKitConfig(opts.config);\n\n if (!src) {\n panic('Could not find src in commandkit.json');\n }\n\n if (!main) {\n panic('Could not find main in commandkit.json');\n }\n\n const watchMode = watch;\n const status = ora(\n Colors.green('Starting a development server...\\n')\n ).start();\n const start = performance.now();\n\n if (watchMode && !nodeOptions.includes('--watch')) {\n nodeOptions.push('--watch');\n } else if (!watchMode && nodeOptions.includes('--watch')) {\n nodeOptions.splice(nodeOptions.indexOf('--watch'), 1);\n }\n\n if (!nodeOptions.includes('--enable-source-maps')) {\n nodeOptions.push('--enable-source-maps');\n }\n\n erase('.commandkit');\n\n try {\n await build({\n clean: true,\n format: ['esm'],\n dts: false,\n skipNodeModulesBundle: true,\n minify: false,\n shims: true,\n sourcemap: 'inline',\n keepNames: true,\n outDir: '.commandkit',\n silent: true,\n entry: [src, '!dist', '!.commandkit', `!${outDir}`].filter(Boolean),\n watch: watchMode,\n cjsInterop: true,\n jsxFactory: 'CommandKit.createElement',\n jsxFragment: 'CommandKit.Fragment',\n async onSuccess() {\n return await injectShims('.commandkit', main, false, requirePolyfill);\n },\n esbuildPlugins: [\n commandkitPlugin({\n 'use-macro': false\n })]\n\n });\n\n status.succeed(\n Colors.green(\n `Dev server started in ${(performance.now() - start).toFixed(2)}ms!\\n`\n )\n );\n\n if (watchMode) write(Colors.cyan('Watching for file changes...\\n'));\n\n const processEnv = {};\n\n const env = dotenv({\n path: join(process.cwd(), '.env'),\n processEnv\n });\n\n if (envExtra) {\n parseEnv(processEnv);\n }\n\n if (env.error) {\n write(Colors.yellow(`[DOTENV] Warning: ${env.error.message}`));\n }\n\n if (env.parsed) {\n write(Colors.blue('[DOTENV] Loaded .env file!'));\n }\n\n const ps: child_process.ChildProcessWithoutNullStreams =\n child_process.spawn(\n 'node',\n [...nodeOptions, join(process.cwd(), '.commandkit', main)],\n {\n env: {\n ...process.env,\n ...processEnv,\n NODE_ENV: 'development',\n // @ts-expect-error\n COMMANDKIT_DEV: true,\n // @ts-expect-error\n COMMANDKIT_PRODUCTION: false\n },\n cwd: process.cwd()\n }\n );\n\n let isLastLogRestarting = false,\n hasStarted = false;\n\n ps.stdout.on('data', (data) => {\n const message = data.toString();\n\n if (FAILED_RUNNING_PATTERN.test(message)) {\n write(Colors.cyan('Failed running the bot, waiting for changes...'));\n isLastLogRestarting = false;\n if (!hasStarted) hasStarted = true;\n return;\n }\n\n if (clearRestartLogs && !RESTARTING_MSG_PATTERN.test(message)) {\n write(message);\n isLastLogRestarting = false;\n } else {\n if (isLastLogRestarting || !hasStarted) {\n if (!hasStarted) hasStarted = true;\n return;\n }\n write(Colors.cyan('⌀ Restarting the bot...'));\n isLastLogRestarting = true;\n }\n\n if (!hasStarted) hasStarted = true;\n });\n\n ps.stderr.on('data', (data) => {\n const message = data.toString();\n\n if (\n message.includes(\n 'ExperimentalWarning: Watch mode is an experimental feature and might change at any time'\n ))\n\n return;\n\n write(Colors.red(message));\n });\n\n ps.on('close', (code) => {\n write('\\n');\n process.exit(code ?? 0);\n });\n\n ps.on('error', (err) => {\n panic(err);\n });\n } catch (e) {\n status.fail(\n `Error occurred after ${(performance.now() - start).toFixed(2)}ms!\\n`\n );\n panic(e instanceof Error ? e.stack : e);\n }\n}","// @ts-check\n\nimport { rimrafSync } from 'rimraf';\nimport { join } from 'node:path';\nimport fs from 'node:fs';\n\nconst resetColor = '\\x1b[0m';\n\nexport const Colors = {\n reset: (text: string) => `${text}${resetColor}`,\n bright: (text: string) => `\\x1b[1m${text}${resetColor}`,\n dim: (text: string) => `\\x1b[2m${text}${resetColor}`,\n underscore: (text: string) => `\\x1b[4m${text}${resetColor}`,\n blink: (text: string) => `\\x1b[5m${text}${resetColor}`,\n reverse: (text: string) => `\\x1b[7m${text}${resetColor}`,\n hidden: (text: string) => `\\x1b[8m${text}${resetColor}`,\n\n black: (text: string) => `\\x1b[30m${text}${resetColor}`,\n red: (text: string) => `\\x1b[31m${text}${resetColor}`,\n green: (text: string) => `\\x1b[32m${text}${resetColor}`,\n yellow: (text: string) => `\\x1b[33m${text}${resetColor}`,\n blue: (text: string) => `\\x1b[34m${text}${resetColor}`,\n magenta: (text: string) => `\\x1b[35m${text}${resetColor}`,\n cyan: (text: string) => `\\x1b[36m${text}${resetColor}`,\n white: (text: string) => `\\x1b[37m${text}${resetColor}`,\n\n bgBlack: (text: string) => `\\x1b[40m${text}${resetColor}`,\n bgRed: (text: string) => `\\x1b[41m${text}${resetColor}`,\n bgGreen: (text: string) => `\\x1b[42m${text}${resetColor}`,\n bgYellow: (text: string) => `\\x1b[43m${text}${resetColor}`,\n bgBlue: (text: string) => `\\x1b[44m${text}${resetColor}`,\n bgMagenta: (text: string) => `\\x1b[45m${text}${resetColor}`,\n bgCyan: (text: string) => `\\x1b[46m${text}${resetColor}`,\n bgWhite: (text: string) => `\\x1b[47m${text}${resetColor}`\n};\n\nexport function write(message: any) {\n process.stdout.write(message);\n process.stdout.write('\\n');\n}\n\n/**\n * @returns {never}\n */\nexport function panic(message: any) {\n write(Colors.red(`Error: ${message}`));\n process.exit(1);\n}\n\nexport function findPackageJSON() {\n const cwd = process.cwd();\n const target = join(cwd, 'package.json');\n\n if (!fs.existsSync(target)) {\n panic('Could not find package.json in current directory.');\n }\n\n return JSON.parse(fs.readFileSync(target, 'utf8'));\n}\n\nconst possibleFileNames = [\n'commandkit.json',\n'commandkit.config.json',\n'commandkit.js',\n'commandkit.config.js',\n'commandkit.mjs',\n'commandkit.config.mjs',\n'commandkit.cjs',\n'commandkit.config.cjs',\n'commandkit.ts',\n'commandkit.mts',\n'commandkit.cts'];\n\n\nexport async function findCommandKitConfig(src: string) {\n const cwd = process.cwd();\n const locations = src ?\n [join(cwd, src)] :\n possibleFileNames.map((name) => join(cwd, name));\n\n for (const location of locations) {\n try {\n return await loadConfigInner(location);\n } catch (e) {\n continue;\n }\n }\n\n panic(`Could not locate commandkit config from ${cwd}`);\n}\n\nfunction ensureTypeScript(target: string) {\n const isTypeScript = /\\.(c|m)tsx?$/.test(target);\n\n if (isTypeScript && !process.features.typescript) {\n panic(\n 'You are trying to load commandkit config file that is written in typescript. The current Node.js version does not have TypeScript feature enabled.'\n );\n }\n}\n\nasync function loadConfigInner(target: string) {\n const isJSON = target.endsWith('.json');\n\n await ensureExists(target);\n\n ensureTypeScript(target);\n\n /**\n * @type {import('..').CommandKitConfig}\n */\n // @ts-ignore\n const config = await import(`file://${target}`, {\n assert: isJSON ? { type: 'json' } : undefined\n }).then((conf) => conf.default || conf);\n\n return config;\n}\n\nasync function ensureExists(loc: string) {\n await fs.promises.access(loc, fs.constants.F_OK);\n}\n\nexport function erase(dir: string) {\n rimrafSync(dir);\n}","// @ts-check\n\nimport { randomUUID } from 'node:crypto';\n\nconst valuesMap = {\n true: true,\n false: false,\n null: null,\n undefined: undefined,\n __UUIDv4__: () => randomUUID()\n};\n\nconst VALUE_PREFIXES = {\n JSON: 'JSON::',\n DATE: 'DATE::'\n};\n\nfunction catcher(fn: Function) {\n try {\n fn();\n return true;\n } catch {\n return false;\n }\n}\n\nexport function parseEnv(src: any) {\n for (const key in src) {\n const value = src[key];\n\n if (typeof value !== 'string') continue;\n\n if (value.startsWith(VALUE_PREFIXES.JSON)) {\n catcher(\n () => src[key] = JSON.parse(value.replace(VALUE_PREFIXES.JSON, ''))\n );\n continue;\n }\n\n if (value.startsWith(VALUE_PREFIXES.DATE)) {\n src[key] = new Date(value.replace(VALUE_PREFIXES.DATE, ''));\n continue;\n }\n\n if (value.includes(',')) {\n src[key] = value.split(',').map((v) => v.trim());\n continue;\n }\n\n if (/^[0-9]+n$/.test(value)) {\n src[key] = BigInt(value);\n continue;\n }\n\n if (value in valuesMap) {\n src[key] =\n // @ts-ignore\n typeof valuesMap[value] === 'function' ?\n // @ts-ignore\n valuesMap[value]() :\n // @ts-ignore\n valuesMap[value];\n continue;\n }\n }\n\n return src;\n}","// @ts-check\n\nimport { readFile, writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { build } from 'tsup';\nimport { Colors, erase, findCommandKitConfig, panic, write } from './common.js';\nimport ora from 'ora';\nimport { commandkitPlugin } from './esbuild-plugins/plugin';\n\nexport async function bootstrapProductionBuild(config: any) {\n const {\n sourcemap = false,\n minify = false,\n outDir = 'dist',\n antiCrash = true,\n src,\n main,\n requirePolyfill: polyfillRequire\n } = await findCommandKitConfig(config);\n\n const status = ora('Creating optimized production build...\\n').start();\n const start = performance.now();\n\n erase(outDir);\n\n try {\n await build({\n clean: true,\n format: ['esm'],\n dts: false,\n skipNodeModulesBundle: true,\n minify,\n shims: true,\n banner: {\n js: '/* Optimized production build generated by CommandKit */'\n },\n sourcemap,\n keepNames: true,\n outDir,\n silent: true,\n watch: false,\n cjsInterop: true,\n entry: [src, '!dist', '!.commandkit', `!${outDir}`],\n esbuildPlugins: [commandkitPlugin()],\n jsxFactory: 'CommandKit.createElement',\n jsxFragment: 'CommandKit.Fragment'\n });\n\n await injectShims(outDir, main, antiCrash, polyfillRequire);\n\n status.succeed(\n Colors.green(\n `Build completed in ${(performance.now() - start).toFixed(2)}ms!`\n )\n );\n write(\n Colors.green(\n `\\nRun ${Colors.magenta(`commandkit start`)} ${Colors.green(\n 'to start your bot.'\n )}`\n )\n );\n } catch (e) {\n status.fail(\n `Build failed after ${(performance.now() - start).toFixed(2)}ms!`\n );\n panic(e);\n }\n}\n\nexport async function injectShims(\noutDir: string,\nmain: string,\nantiCrash: boolean,\npolyfillRequire: boolean)\n{\n const path = join(process.cwd(), outDir, main);\n\n const head = ['\\n\\n;await (async()=>{', \" 'use strict';\"].join('\\n');\n const tail = '\\n})();';\n const requireScript = polyfillRequire ?\n [\n '// --- CommandKit require() polyfill ---',\n ' if (typeof require === \"undefined\") {',\n ' const { createRequire } = await import(\"node:module\");',\n ' const __require = createRequire(import.meta.url);',\n ' Object.defineProperty(globalThis, \"require\", {',\n ' value: (id) => {',\n ' return __require(id);',\n ' },',\n ' configurable: true,',\n ' enumerable: false,',\n ' writable: true,',\n ' });',\n ' }',\n '// --- CommandKit require() polyfill ---'].\n join('\\n') :\n '';\n\n const antiCrashScript = antiCrash ?\n [\n '// --- CommandKit Anti-Crash Monitor ---',\n \" // 'uncaughtException' event is supposed to be used to perform synchronous cleanup before shutting down the process\",\n ' // instead of using it as a means to resume operation.',\n ' // But it exists here due to compatibility reasons with discord bot ecosystem.',\n \" const p = (t) => `\\\\x1b[33m${t}\\\\x1b[0m`, b = '[CommandKit Anti-Crash Monitor]', l = console.log, e1 = 'uncaughtException', e2 = 'unhandledRejection';\",\n ' if (!process.eventNames().includes(e1)) // skip if it is already handled',\n ' process.on(e1, (e) => {',\n ' l(p(`${b} Uncaught Exception`)); l(p(b), p(e.stack || e));',\n ' })',\n ' if (!process.eventNames().includes(e2)) // skip if it is already handled',\n ' process.on(e2, (r) => {',\n ' l(p(`${b} Unhandled promise rejection`)); l(p(`${b} ${r.stack || r}`));',\n ' });',\n '// --- CommandKit Anti-Crash Monitor ---'].\n join('\\n') :\n '';\n\n const contents = await readFile(path, 'utf-8');\n const finalScript = [\n head,\n requireScript,\n antiCrashScript,\n tail,\n '\\n\\n',\n contents].\n join('\\n');\n\n return writeFile(path, finalScript);\n}","import { MacroTransformer } from 'use-macro';\nimport { cacheDirectivePlugin } from './use-cache';\nimport { readFile } from 'node:fs/promises';\n\nconst defaultConfig = {\n 'use-macro': true,\n 'use-cache': true,\n 'jsx-importsource': true\n};\n\ninterface CommandKitEsbuildPluginConfig {\n 'use-macro'?: boolean;\n 'jsx-importsource'?: boolean;\n 'use-cache'?: boolean;\n}\n\nexport const commandkitPlugin = (config?: CommandKitEsbuildPluginConfig) => {\n config = Object.assign({}, defaultConfig, config);\n\n const plugins = [\n {\n name: 'use-macro',\n plugin: async (content: string, args: any) => {\n const transformer = new MacroTransformer();\n const { contents } = await transformer.transform(content, args.path);\n return contents;\n }\n },\n {\n name: 'use-cache',\n plugin: async (content: string, args: any) => {\n const { contents } = await cacheDirectivePlugin(content, args);\n return contents;\n }\n }].\n filter((p) => {\n return !!config[p.name as keyof CommandKitEsbuildPluginConfig];\n });\n\n return {\n name: 'commandkit-transformer-plugin',\n setup(build: any) {\n if (!plugins.length) return;\n\n const fileFilter = /\\.(c|m)?(t|j)sx?$/;\n\n build.onLoad({ filter: fileFilter }, async (args: any) => {\n const source = await readFile(args.path, 'utf8');\n const loader = args.path.split('.').pop();\n\n let contents = source;\n\n for (const _plugin of plugins) {\n const { plugin, name } = _plugin;\n try {\n contents = await plugin(contents, args);\n } catch (e) {\n const err = new Error(`Plugin ${name} failed with ${e}`);\n err.stack = e instanceof Error ? e.stack : '';\n\n throw err;\n }\n }\n\n return {\n contents,\n loader\n };\n });\n }\n };\n};","import * as parser from '@babel/parser';\nimport _traverse from '@babel/traverse';\nimport _generate from '@babel/generator';\nimport * as t from '@babel/types';\n\n// @ts-ignore\nconst traverse = _traverse.default || _traverse;\n// @ts-ignore\nconst generate = _generate.default || _generate;\n\nconst IMPORT_PATH = 'commandkit';\nconst DIRECTIVE = 'use cache';\nconst CACHE_IDENTIFIER =\n'super_duper_secret_internal_for_use_cache_directive_of_commandkit_cli_do_not_use_it_directly_or_you_will_be_fired_from_your_job_kthxbai';\n\nconst generateRandomString = (length = 6) => {\n const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n return Array.from(\n { length },\n () => chars[Math.floor(Math.random() * chars.length)]\n ).join('');\n};\n\nexport const cacheDirectivePlugin = async (source: string, args: any) => {\n const ast = parser.parse(source, {\n sourceType: 'module',\n plugins: ['typescript', 'jsx']\n });\n\n let state = {\n needsImport: false,\n hasExistingImport: false,\n cacheIdentifierName: CACHE_IDENTIFIER,\n modifications: []\n };\n\n // First pass: check for naming collisions and collect modifications\n traverse(ast, {\n Program: {\n enter(path: any) {\n const binding = path.scope.getBinding(CACHE_IDENTIFIER);\n if (binding) {\n state.cacheIdentifierName = `${CACHE_IDENTIFIER}_${generateRandomString()}`;\n }\n }\n },\n\n ImportDeclaration(path: any) {\n if (\n path.node.source.value === IMPORT_PATH &&\n path.node.specifiers.some(\n (spec: any) =>\n t.isImportSpecifier(spec) &&\n // @ts-ignore\n spec.imported.name === CACHE_IDENTIFIER\n ))\n {\n state.hasExistingImport = true;\n if (state.cacheIdentifierName !== CACHE_IDENTIFIER) {\n // @ts-ignore\n state.modifications.push(() => {\n path.node.specifiers.forEach((spec: any) => {\n if (\n t.isImportSpecifier(spec) &&\n // @ts-ignore\n spec.imported.name === CACHE_IDENTIFIER)\n {\n spec.local.name = state.cacheIdentifierName;\n }\n });\n });\n }\n }\n },\n\n 'FunctionDeclaration|FunctionExpression|ArrowFunctionExpression'(\n path: any)\n {\n const body = t.isBlockStatement(path.node.body) ? path.node.body : null;\n const hasUseCache = body?.directives?.some(\n (d: any) => d.value.value === DIRECTIVE\n );\n\n if (!hasUseCache && !t.isBlockStatement(path.node.body)) {\n const parentFunction = path.findParent(\n (p: any) =>\n (p.isFunction() || p.isProgram()) && 'directives' in p.node\n );\n if (\n !parentFunction?.node.directives?.some(\n (d: any) => d.value.value === DIRECTIVE\n ))\n {\n return;\n }\n }\n\n if (hasUseCache || !t.isBlockStatement(path.node.body)) {\n // Check if the function is async\n if (!path.node.async) {\n throw new Error(\n `\"${DIRECTIVE}\" directive may only be used in async functions at ${args.path}`\n );\n }\n\n state.needsImport = true;\n const isDeclaration = t.isFunctionDeclaration(path.node);\n const name = isDeclaration ? path.node.id?.name : undefined;\n\n // Create a new body without the 'use cache' directive\n const newBody = t.isBlockStatement(path.node.body) ?\n t.blockStatement(\n path.node.body.body,\n path.node.body.directives.filter(\n (d: any) => d.value.value !== DIRECTIVE\n )\n ) :\n path.node.body;\n\n const wrapped = t.callExpression(\n t.identifier(state.cacheIdentifierName),\n [t.arrowFunctionExpression(path.node.params, newBody, true)]\n );\n\n // @ts-ignore\n state.modifications.push(() => {\n if (name) {\n path.replaceWith(\n t.variableDeclaration('const', [\n t.variableDeclarator(t.identifier(name), wrapped)]\n )\n );\n } else if (!t.isVariableDeclarator(path.parent)) {\n path.replaceWith(wrapped);\n } else {\n path.parent.init = wrapped;\n }\n });\n }\n }\n });\n\n // Apply all collected modifications\n if (state.modifications.length > 0) {\n // Add import if needed\n if (state.needsImport && !state.hasExistingImport) {\n ast.program.body.unshift(\n t.importDeclaration(\n [\n t.importSpecifier(\n t.identifier(state.cacheIdentifierName),\n t.identifier(CACHE_IDENTIFIER)\n )],\n\n t.stringLiteral(IMPORT_PATH)\n )\n );\n }\n\n // Apply collected modifications\n // @ts-ignore\n state.modifications.forEach((modify) => modify());\n }\n\n const { code } = generate(ast);\n return {\n contents: code,\n loader: args.path.split('.').pop()\n };\n};"],"mappings":"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","names":["import_node_path","import_tsup","fs","import_ora","import_promises","import_node_path","_traverse","_generate","build","ora","dotenv","child_process"]}
|
package/dist/cli/development.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{injectShims}from"../chunk-
|
|
2
|
-
`)).start(),start=performance.now();watchMode&&!nodeOptions.includes("--watch")?nodeOptions.push("--watch"):!watchMode&&nodeOptions.includes("--watch")&&nodeOptions.splice(nodeOptions.indexOf("--watch"),1),nodeOptions.includes("--enable-source-maps")||nodeOptions.push("--enable-source-maps"),erase(".commandkit");try{await build({clean:!0,format:["esm"],dts:!1,skipNodeModulesBundle:!0,minify:!1,shims:!0,sourcemap:"inline",keepNames:!0,outDir:".commandkit",silent:!0,entry:[src,"!dist","!.commandkit",`!${outDir}`].filter(Boolean),watch:watchMode,cjsInterop:!0,async onSuccess(){return await injectShims(".commandkit",main,!1,requirePolyfill)},esbuildPlugins:[commandkitPlugin({"use-macro":!1})]}),status.succeed(Colors.green(`Dev server started in ${(performance.now()-start).toFixed(2)}ms!
|
|
1
|
+
import{injectShims}from"../chunk-P7PNFSAC.mjs";import{commandkitPlugin}from"../chunk-HFOCTXRX.mjs";import"../chunk-Y522NY4J.mjs";import{Colors,erase,findCommandKitConfig,panic,write}from"../chunk-FC5WQLBI.mjs";import{parseEnv}from"../chunk-RQ3ABUE3.mjs";import{__name}from"../chunk-35OSBS47.mjs";import{config as dotenv}from"dotenv";import{join}from"node:path";import{build}from"tsup";import child_process from"node:child_process";import ora from"ora";var RESTARTING_MSG_PATTERN=/^Restarting '|".+'|"\n?$/,FAILED_RUNNING_PATTERN=/^Failed running '.+'|"\n?$/;async function bootstrapDevelopmentServer(opts){let{src,main,watch=!!opts.noWatch,nodeOptions=[],envExtra=!0,clearRestartLogs=!0,outDir,requirePolyfill}=await findCommandKitConfig(opts.config);src||panic("Could not find src in commandkit.json"),main||panic("Could not find main in commandkit.json");let watchMode=watch,status=ora(Colors.green(`Starting a development server...
|
|
2
|
+
`)).start(),start=performance.now();watchMode&&!nodeOptions.includes("--watch")?nodeOptions.push("--watch"):!watchMode&&nodeOptions.includes("--watch")&&nodeOptions.splice(nodeOptions.indexOf("--watch"),1),nodeOptions.includes("--enable-source-maps")||nodeOptions.push("--enable-source-maps"),erase(".commandkit");try{await build({clean:!0,format:["esm"],dts:!1,skipNodeModulesBundle:!0,minify:!1,shims:!0,sourcemap:"inline",keepNames:!0,outDir:".commandkit",silent:!0,entry:[src,"!dist","!.commandkit",`!${outDir}`].filter(Boolean),watch:watchMode,cjsInterop:!0,jsxFactory:"CommandKit.createElement",jsxFragment:"CommandKit.Fragment",async onSuccess(){return await injectShims(".commandkit",main,!1,requirePolyfill)},esbuildPlugins:[commandkitPlugin({"use-macro":!1})]}),status.succeed(Colors.green(`Dev server started in ${(performance.now()-start).toFixed(2)}ms!
|
|
3
3
|
`)),watchMode&&write(Colors.cyan(`Watching for file changes...
|
|
4
4
|
`));let processEnv={},env=dotenv({path:join(process.cwd(),".env"),processEnv});envExtra&&parseEnv(processEnv),env.error&&write(Colors.yellow(`[DOTENV] Warning: ${env.error.message}`)),env.parsed&&write(Colors.blue("[DOTENV] Loaded .env file!"));let ps=child_process.spawn("node",[...nodeOptions,join(process.cwd(),".commandkit",main)],{env:{...process.env,...processEnv,NODE_ENV:"development",COMMANDKIT_DEV:!0,COMMANDKIT_PRODUCTION:!1},cwd:process.cwd()}),isLastLogRestarting=!1,hasStarted=!1;ps.stdout.on("data",data=>{let message=data.toString();if(FAILED_RUNNING_PATTERN.test(message)){write(Colors.cyan("Failed running the bot, waiting for changes...")),isLastLogRestarting=!1,hasStarted||(hasStarted=!0);return}if(clearRestartLogs&&!RESTARTING_MSG_PATTERN.test(message))write(message),isLastLogRestarting=!1;else{if(isLastLogRestarting||!hasStarted){hasStarted||(hasStarted=!0);return}write(Colors.cyan("\u2300 Restarting the bot...")),isLastLogRestarting=!0}hasStarted||(hasStarted=!0)}),ps.stderr.on("data",data=>{let message=data.toString();message.includes("ExperimentalWarning: Watch mode is an experimental feature and might change at any time")||write(Colors.red(message))}),ps.on("close",code=>{write(`
|
|
5
5
|
`),process.exit(code??0)}),ps.on("error",err=>{panic(err)})}catch(e){status.fail(`Error occurred after ${(performance.now()-start).toFixed(2)}ms!
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/development.ts"],"sourcesContent":["// @ts-check\nimport { config as dotenv } from 'dotenv';\nimport { join } from 'node:path';\nimport { build } from 'tsup';\nimport { Colors, erase, findCommandKitConfig, panic, write } from './common';\nimport { parseEnv } from './parse-env';\nimport child_process from 'node:child_process';\nimport ora from 'ora';\nimport { injectShims } from './build';\nimport { commandkitPlugin } from './esbuild-plugins/plugin';\n\nconst RESTARTING_MSG_PATTERN = /^Restarting '|\".+'|\"\\n?$/;\nconst FAILED_RUNNING_PATTERN = /^Failed running '.+'|\"\\n?$/;\n\nexport async function bootstrapDevelopmentServer(opts: any) {\n const {\n src,\n main,\n watch = Boolean(opts.noWatch),\n nodeOptions = [],\n envExtra = true,\n clearRestartLogs = true,\n outDir,\n requirePolyfill\n } = await findCommandKitConfig(opts.config);\n\n if (!src) {\n panic('Could not find src in commandkit.json');\n }\n\n if (!main) {\n panic('Could not find main in commandkit.json');\n }\n\n const watchMode = watch;\n const status = ora(\n Colors.green('Starting a development server...\\n')\n ).start();\n const start = performance.now();\n\n if (watchMode && !nodeOptions.includes('--watch')) {\n nodeOptions.push('--watch');\n } else if (!watchMode && nodeOptions.includes('--watch')) {\n nodeOptions.splice(nodeOptions.indexOf('--watch'), 1);\n }\n\n if (!nodeOptions.includes('--enable-source-maps')) {\n nodeOptions.push('--enable-source-maps');\n }\n\n erase('.commandkit');\n\n try {\n await build({\n clean: true,\n format: ['esm'],\n dts: false,\n skipNodeModulesBundle: true,\n minify: false,\n shims: true,\n sourcemap: 'inline',\n keepNames: true,\n outDir: '.commandkit',\n silent: true,\n entry: [src, '!dist', '!.commandkit', `!${outDir}`].filter(Boolean),\n watch: watchMode,\n cjsInterop: true,\n async onSuccess() {\n return await injectShims('.commandkit', main, false, requirePolyfill);\n },\n esbuildPlugins: [\n commandkitPlugin({\n 'use-macro': false\n })]\n\n });\n\n status.succeed(\n Colors.green(\n `Dev server started in ${(performance.now() - start).toFixed(2)}ms!\\n`\n )\n );\n\n if (watchMode) write(Colors.cyan('Watching for file changes...\\n'));\n\n const processEnv = {};\n\n const env = dotenv({\n path: join(process.cwd(), '.env'),\n processEnv\n });\n\n if (envExtra) {\n parseEnv(processEnv);\n }\n\n if (env.error) {\n write(Colors.yellow(`[DOTENV] Warning: ${env.error.message}`));\n }\n\n if (env.parsed) {\n write(Colors.blue('[DOTENV] Loaded .env file!'));\n }\n\n const ps: child_process.ChildProcessWithoutNullStreams =\n child_process.spawn(\n 'node',\n [...nodeOptions, join(process.cwd(), '.commandkit', main)],\n {\n env: {\n ...process.env,\n ...processEnv,\n NODE_ENV: 'development',\n // @ts-expect-error\n COMMANDKIT_DEV: true,\n // @ts-expect-error\n COMMANDKIT_PRODUCTION: false\n },\n cwd: process.cwd()\n }\n );\n\n let isLastLogRestarting = false,\n hasStarted = false;\n\n ps.stdout.on('data', (data) => {\n const message = data.toString();\n\n if (FAILED_RUNNING_PATTERN.test(message)) {\n write(Colors.cyan('Failed running the bot, waiting for changes...'));\n isLastLogRestarting = false;\n if (!hasStarted) hasStarted = true;\n return;\n }\n\n if (clearRestartLogs && !RESTARTING_MSG_PATTERN.test(message)) {\n write(message);\n isLastLogRestarting = false;\n } else {\n if (isLastLogRestarting || !hasStarted) {\n if (!hasStarted) hasStarted = true;\n return;\n }\n write(Colors.cyan('⌀ Restarting the bot...'));\n isLastLogRestarting = true;\n }\n\n if (!hasStarted) hasStarted = true;\n });\n\n ps.stderr.on('data', (data) => {\n const message = data.toString();\n\n if (\n message.includes(\n 'ExperimentalWarning: Watch mode is an experimental feature and might change at any time'\n ))\n\n return;\n\n write(Colors.red(message));\n });\n\n ps.on('close', (code) => {\n write('\\n');\n process.exit(code ?? 0);\n });\n\n ps.on('error', (err) => {\n panic(err);\n });\n } catch (e) {\n status.fail(\n `Error occurred after ${(performance.now() - start).toFixed(2)}ms!\\n`\n );\n panic(e instanceof Error ? e.stack : e);\n }\n}"],"mappings":"wSACA,OAAS,UAAU,WAAc,SACjC,OAAS,SAAY,YACrB,OAAS,UAAa,OAGtB,OAAO,kBAAmB,qBAC1B,OAAO,QAAS,MAIhB,IAAM,uBAAyB,2BACzB,uBAAyB,6BAE/B,eAAsB,2BAA2B,KAAW,CAC1D,GAAM,CACJ,IACA,KACA,MAAQ,EAAQ,KAAK,QACrB,YAAc,CAAC,EACf,SAAW,GACX,iBAAmB,GACnB,OACA,eACF,EAAI,MAAM,qBAAqB,KAAK,MAAM,EAErC,KACH,MAAM,uCAAuC,EAG1C,MACH,MAAM,wCAAwC,EAGhD,IAAM,UAAY,MACZ,OAAS,IACb,OAAO,MAAM;AAAA,CAAoC,CACnD,EAAE,MAAM,EACF,MAAQ,YAAY,IAAI,EAE1B,WAAa,CAAC,YAAY,SAAS,SAAS,EAC9C,YAAY,KAAK,SAAS,EACjB,CAAC,WAAa,YAAY,SAAS,SAAS,GACrD,YAAY,OAAO,YAAY,QAAQ,SAAS,EAAG,CAAC,EAGjD,YAAY,SAAS,sBAAsB,GAC9C,YAAY,KAAK,sBAAsB,EAGzC,MAAM,aAAa,EAEnB,GAAI,CACF,MAAM,MAAM,CACV,MAAO,GACP,OAAQ,CAAC,KAAK,EACd,IAAK,GACL,sBAAuB,GACvB,OAAQ,GACR,MAAO,GACP,UAAW,SACX,UAAW,GACX,OAAQ,cACR,OAAQ,GACR,MAAO,CAAC,IAAK,QAAS,eAAgB,IAAI,MAAM,EAAE,EAAE,OAAO,OAAO,EAClE,MAAO,UACP,WAAY,GACZ,MAAM,WAAY,CAChB,OAAO,MAAM,YAAY,cAAe,KAAM,GAAO,eAAe,CACtE,EACA,eAAgB,CAChB,iBAAiB,CACf,YAAa,EACf,CAAC,CAAC,CAEJ,CAAC,EAED,OAAO,QACL,OAAO,MACL,0BAA0B,YAAY,IAAI,EAAI,OAAO,QAAQ,CAAC,CAAC;AAAA,CACjE,CACF,EAEI,WAAW,MAAM,OAAO,KAAK;AAAA,CAAgC,CAAC,EAElE,IAAM,WAAa,CAAC,EAEd,IAAM,OAAO,CACjB,KAAM,KAAK,QAAQ,IAAI,EAAG,MAAM,EAChC,UACF,CAAC,EAEG,UACF,SAAS,UAAU,EAGjB,IAAI,OACN,MAAM,OAAO,OAAO,qBAAqB,IAAI,MAAM,OAAO,EAAE,CAAC,EAG3D,IAAI,QACN,MAAM,OAAO,KAAK,4BAA4B,CAAC,EAGjD,IAAM,GACN,cAAc,MACZ,OACA,CAAC,GAAG,YAAa,KAAK,QAAQ,IAAI,EAAG,cAAe,IAAI,CAAC,EACzD,CACE,IAAK,CACH,GAAG,QAAQ,IACX,GAAG,WACH,SAAU,cAEV,eAAgB,GAEhB,sBAAuB,EACzB,EACA,IAAK,QAAQ,IAAI,CACnB,CACF,EAEI,oBAAsB,GACxB,WAAa,GAEf,GAAG,OAAO,GAAG,OAAS,MAAS,CAC7B,IAAM,QAAU,KAAK,SAAS,EAE9B,GAAI,uBAAuB,KAAK,OAAO,EAAG,CACxC,MAAM,OAAO,KAAK,gDAAgD,CAAC,EACnE,oBAAsB,GACjB,aAAY,WAAa,IAC9B,MACF,CAEA,GAAI,kBAAoB,CAAC,uBAAuB,KAAK,OAAO,EAC1D,MAAM,OAAO,EACb,oBAAsB,OACjB,CACL,GAAI,qBAAuB,CAAC,WAAY,CACjC,aAAY,WAAa,IAC9B,MACF,CACA,MAAM,OAAO,KAAK,8BAAyB,CAAC,EAC5C,oBAAsB,EACxB,CAEK,aAAY,WAAa,GAChC,CAAC,EAED,GAAG,OAAO,GAAG,OAAS,MAAS,CAC7B,IAAM,QAAU,KAAK,SAAS,EAG9B,QAAQ,SACN,yFACF,GAIA,MAAM,OAAO,IAAI,OAAO,CAAC,CAC3B,CAAC,EAED,GAAG,GAAG,QAAU,MAAS,CACvB,MAAM;AAAA,CAAI,EACV,QAAQ,KAAK,MAAQ,CAAC,CACxB,CAAC,EAED,GAAG,GAAG,QAAU,KAAQ,CACtB,MAAM,GAAG,CACX,CAAC,CACH,OAAS,EAAG,CACV,OAAO,KACL,yBAAyB,YAAY,IAAI,EAAI,OAAO,QAAQ,CAAC,CAAC;AAAA,CAChE,EACA,MAAM,aAAa,MAAQ,EAAE,MAAQ,CAAC,CACxC,CACF,
|
|
1
|
+
{"version":3,"sources":["../../src/cli/development.ts"],"sourcesContent":["// @ts-check\nimport { config as dotenv } from 'dotenv';\nimport { join } from 'node:path';\nimport { build } from 'tsup';\nimport { Colors, erase, findCommandKitConfig, panic, write } from './common';\nimport { parseEnv } from './parse-env';\nimport child_process from 'node:child_process';\nimport ora from 'ora';\nimport { injectShims } from './build';\nimport { commandkitPlugin } from './esbuild-plugins/plugin';\n\nconst RESTARTING_MSG_PATTERN = /^Restarting '|\".+'|\"\\n?$/;\nconst FAILED_RUNNING_PATTERN = /^Failed running '.+'|\"\\n?$/;\n\nexport async function bootstrapDevelopmentServer(opts: any) {\n const {\n src,\n main,\n watch = Boolean(opts.noWatch),\n nodeOptions = [],\n envExtra = true,\n clearRestartLogs = true,\n outDir,\n requirePolyfill\n } = await findCommandKitConfig(opts.config);\n\n if (!src) {\n panic('Could not find src in commandkit.json');\n }\n\n if (!main) {\n panic('Could not find main in commandkit.json');\n }\n\n const watchMode = watch;\n const status = ora(\n Colors.green('Starting a development server...\\n')\n ).start();\n const start = performance.now();\n\n if (watchMode && !nodeOptions.includes('--watch')) {\n nodeOptions.push('--watch');\n } else if (!watchMode && nodeOptions.includes('--watch')) {\n nodeOptions.splice(nodeOptions.indexOf('--watch'), 1);\n }\n\n if (!nodeOptions.includes('--enable-source-maps')) {\n nodeOptions.push('--enable-source-maps');\n }\n\n erase('.commandkit');\n\n try {\n await build({\n clean: true,\n format: ['esm'],\n dts: false,\n skipNodeModulesBundle: true,\n minify: false,\n shims: true,\n sourcemap: 'inline',\n keepNames: true,\n outDir: '.commandkit',\n silent: true,\n entry: [src, '!dist', '!.commandkit', `!${outDir}`].filter(Boolean),\n watch: watchMode,\n cjsInterop: true,\n jsxFactory: 'CommandKit.createElement',\n jsxFragment: 'CommandKit.Fragment',\n async onSuccess() {\n return await injectShims('.commandkit', main, false, requirePolyfill);\n },\n esbuildPlugins: [\n commandkitPlugin({\n 'use-macro': false\n })]\n\n });\n\n status.succeed(\n Colors.green(\n `Dev server started in ${(performance.now() - start).toFixed(2)}ms!\\n`\n )\n );\n\n if (watchMode) write(Colors.cyan('Watching for file changes...\\n'));\n\n const processEnv = {};\n\n const env = dotenv({\n path: join(process.cwd(), '.env'),\n processEnv\n });\n\n if (envExtra) {\n parseEnv(processEnv);\n }\n\n if (env.error) {\n write(Colors.yellow(`[DOTENV] Warning: ${env.error.message}`));\n }\n\n if (env.parsed) {\n write(Colors.blue('[DOTENV] Loaded .env file!'));\n }\n\n const ps: child_process.ChildProcessWithoutNullStreams =\n child_process.spawn(\n 'node',\n [...nodeOptions, join(process.cwd(), '.commandkit', main)],\n {\n env: {\n ...process.env,\n ...processEnv,\n NODE_ENV: 'development',\n // @ts-expect-error\n COMMANDKIT_DEV: true,\n // @ts-expect-error\n COMMANDKIT_PRODUCTION: false\n },\n cwd: process.cwd()\n }\n );\n\n let isLastLogRestarting = false,\n hasStarted = false;\n\n ps.stdout.on('data', (data) => {\n const message = data.toString();\n\n if (FAILED_RUNNING_PATTERN.test(message)) {\n write(Colors.cyan('Failed running the bot, waiting for changes...'));\n isLastLogRestarting = false;\n if (!hasStarted) hasStarted = true;\n return;\n }\n\n if (clearRestartLogs && !RESTARTING_MSG_PATTERN.test(message)) {\n write(message);\n isLastLogRestarting = false;\n } else {\n if (isLastLogRestarting || !hasStarted) {\n if (!hasStarted) hasStarted = true;\n return;\n }\n write(Colors.cyan('⌀ Restarting the bot...'));\n isLastLogRestarting = true;\n }\n\n if (!hasStarted) hasStarted = true;\n });\n\n ps.stderr.on('data', (data) => {\n const message = data.toString();\n\n if (\n message.includes(\n 'ExperimentalWarning: Watch mode is an experimental feature and might change at any time'\n ))\n\n return;\n\n write(Colors.red(message));\n });\n\n ps.on('close', (code) => {\n write('\\n');\n process.exit(code ?? 0);\n });\n\n ps.on('error', (err) => {\n panic(err);\n });\n } catch (e) {\n status.fail(\n `Error occurred after ${(performance.now() - start).toFixed(2)}ms!\\n`\n );\n panic(e instanceof Error ? e.stack : e);\n }\n}"],"mappings":"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","names":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0});var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var plugin_exports={};__export(plugin_exports,{commandkitPlugin:()=>commandkitPlugin});module.exports=__toCommonJS(plugin_exports);var import_use_macro=require("use-macro");var parser=__toESM(require("@babel/parser")),import_traverse=__toESM(require("@babel/traverse")),import_generator=__toESM(require("@babel/generator")),t=__toESM(require("@babel/types"));var traverse=import_traverse.default.default||import_traverse.default,generate=import_generator.default.default||import_generator.default,IMPORT_PATH="commandkit",DIRECTIVE="use cache",CACHE_IDENTIFIER="super_duper_secret_internal_for_use_cache_directive_of_commandkit_cli_do_not_use_it_directly_or_you_will_be_fired_from_your_job_kthxbai",generateRandomString=__name((length=6)=>{let chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";return Array.from({length},()=>chars[Math.floor(Math.random()*chars.length)]).join("")},"generateRandomString"),cacheDirectivePlugin=__name(async(source,args)=>{let ast=parser.parse(source,{sourceType:"module",plugins:["typescript","jsx"]}),state={needsImport:!1,hasExistingImport:!1,cacheIdentifierName:CACHE_IDENTIFIER,modifications:[]};traverse(ast,{Program:{enter(path){path.scope.getBinding(CACHE_IDENTIFIER)&&(state.cacheIdentifierName=`${CACHE_IDENTIFIER}_${generateRandomString()}`)}},ImportDeclaration(path){path.node.source.value===IMPORT_PATH&&path.node.specifiers.some(spec=>t.isImportSpecifier(spec)&&spec.imported.name===CACHE_IDENTIFIER)&&(state.hasExistingImport=!0,state.cacheIdentifierName!==CACHE_IDENTIFIER&&state.modifications.push(()=>{path.node.specifiers.forEach(spec=>{t.isImportSpecifier(spec)&&spec.imported.name===CACHE_IDENTIFIER&&(spec.local.name=state.cacheIdentifierName)})}))},"FunctionDeclaration|FunctionExpression|ArrowFunctionExpression"(path){var _a,_b,_c;let body=t.isBlockStatement(path.node.body)?path.node.body:null,hasUseCache=(_a=body==null?void 0:body.directives)==null?void 0:_a.some(d=>d.value.value===DIRECTIVE);if(!hasUseCache&&!t.isBlockStatement(path.node.body)){let parentFunction=path.findParent(p=>(p.isFunction()||p.isProgram())&&"directives"in p.node);if(!((_b=parentFunction==null?void 0:parentFunction.node.directives)!=null&&_b.some(d=>d.value.value===DIRECTIVE)))return}if(hasUseCache||!t.isBlockStatement(path.node.body)){if(!path.node.async)throw new Error(`"${DIRECTIVE}" directive may only be used in async functions at ${args.path}`);state.needsImport=!0;let name=t.isFunctionDeclaration(path.node)?(_c=path.node.id)==null?void 0:_c.name:void 0,newBody=t.isBlockStatement(path.node.body)?t.blockStatement(path.node.body.body,path.node.body.directives.filter(d=>d.value.value!==DIRECTIVE)):path.node.body,wrapped=t.callExpression(t.identifier(state.cacheIdentifierName),[t.arrowFunctionExpression(path.node.params,newBody,!0)]);state.modifications.push(()=>{name?path.replaceWith(t.variableDeclaration("const",[t.variableDeclarator(t.identifier(name),wrapped)])):t.isVariableDeclarator(path.parent)?path.parent.init=wrapped:path.replaceWith(wrapped)})}}}),state.modifications.length>0&&(state.needsImport&&!state.hasExistingImport&&ast.program.body.unshift(t.importDeclaration([t.importSpecifier(t.identifier(state.cacheIdentifierName),t.identifier(CACHE_IDENTIFIER))],t.stringLiteral(IMPORT_PATH))),state.modifications.forEach(modify=>modify()));let{code}=generate(ast);return{contents:code,loader:args.path.split(".").pop()}},"cacheDirectivePlugin");var import_promises=require("fs/promises");var defaultConfig={"use-macro":!0,"use-cache":!0},commandkitPlugin=__name(config=>{config=Object.assign({},defaultConfig,config);let plugins=[{name:"use-macro",plugin:__name(async(content,args)=>{let transformer=new import_use_macro.MacroTransformer,{contents}=await transformer.transform(content,args.path);return contents},"plugin")},{name:"use-cache",plugin:__name(async(content,args)=>{let{contents}=await cacheDirectivePlugin(content,args);return contents},"plugin")}].filter(p=>!!config[p.name]);return{name:"commandkit-transformer-plugin",setup(build){if(!plugins.length)return;let fileFilter=/\.(c|m)?(t|j)sx?$/;build.onLoad({filter:fileFilter},async args=>{let source=await(0,import_promises.readFile)(args.path,"utf8"),loader=args.path.split(".").pop(),contents=source;for(let _plugin of plugins){let{plugin,name}=_plugin;try{contents=await plugin(contents,args)}catch(e){let err=new Error(`Plugin ${name} failed with ${e}`);throw err.stack=e instanceof Error?e.stack:"",err}}return{contents,loader}})}}},"commandkitPlugin");0&&(module.exports={commandkitPlugin});
|
|
1
|
+
"use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0});var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var plugin_exports={};__export(plugin_exports,{commandkitPlugin:()=>commandkitPlugin});module.exports=__toCommonJS(plugin_exports);var import_use_macro=require("use-macro");var parser=__toESM(require("@babel/parser")),import_traverse=__toESM(require("@babel/traverse")),import_generator=__toESM(require("@babel/generator")),t=__toESM(require("@babel/types"));var traverse=import_traverse.default.default||import_traverse.default,generate=import_generator.default.default||import_generator.default,IMPORT_PATH="commandkit",DIRECTIVE="use cache",CACHE_IDENTIFIER="super_duper_secret_internal_for_use_cache_directive_of_commandkit_cli_do_not_use_it_directly_or_you_will_be_fired_from_your_job_kthxbai",generateRandomString=__name((length=6)=>{let chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";return Array.from({length},()=>chars[Math.floor(Math.random()*chars.length)]).join("")},"generateRandomString"),cacheDirectivePlugin=__name(async(source,args)=>{let ast=parser.parse(source,{sourceType:"module",plugins:["typescript","jsx"]}),state={needsImport:!1,hasExistingImport:!1,cacheIdentifierName:CACHE_IDENTIFIER,modifications:[]};traverse(ast,{Program:{enter(path){path.scope.getBinding(CACHE_IDENTIFIER)&&(state.cacheIdentifierName=`${CACHE_IDENTIFIER}_${generateRandomString()}`)}},ImportDeclaration(path){path.node.source.value===IMPORT_PATH&&path.node.specifiers.some(spec=>t.isImportSpecifier(spec)&&spec.imported.name===CACHE_IDENTIFIER)&&(state.hasExistingImport=!0,state.cacheIdentifierName!==CACHE_IDENTIFIER&&state.modifications.push(()=>{path.node.specifiers.forEach(spec=>{t.isImportSpecifier(spec)&&spec.imported.name===CACHE_IDENTIFIER&&(spec.local.name=state.cacheIdentifierName)})}))},"FunctionDeclaration|FunctionExpression|ArrowFunctionExpression"(path){var _a,_b,_c;let body=t.isBlockStatement(path.node.body)?path.node.body:null,hasUseCache=(_a=body==null?void 0:body.directives)==null?void 0:_a.some(d=>d.value.value===DIRECTIVE);if(!hasUseCache&&!t.isBlockStatement(path.node.body)){let parentFunction=path.findParent(p=>(p.isFunction()||p.isProgram())&&"directives"in p.node);if(!((_b=parentFunction==null?void 0:parentFunction.node.directives)!=null&&_b.some(d=>d.value.value===DIRECTIVE)))return}if(hasUseCache||!t.isBlockStatement(path.node.body)){if(!path.node.async)throw new Error(`"${DIRECTIVE}" directive may only be used in async functions at ${args.path}`);state.needsImport=!0;let name=t.isFunctionDeclaration(path.node)?(_c=path.node.id)==null?void 0:_c.name:void 0,newBody=t.isBlockStatement(path.node.body)?t.blockStatement(path.node.body.body,path.node.body.directives.filter(d=>d.value.value!==DIRECTIVE)):path.node.body,wrapped=t.callExpression(t.identifier(state.cacheIdentifierName),[t.arrowFunctionExpression(path.node.params,newBody,!0)]);state.modifications.push(()=>{name?path.replaceWith(t.variableDeclaration("const",[t.variableDeclarator(t.identifier(name),wrapped)])):t.isVariableDeclarator(path.parent)?path.parent.init=wrapped:path.replaceWith(wrapped)})}}}),state.modifications.length>0&&(state.needsImport&&!state.hasExistingImport&&ast.program.body.unshift(t.importDeclaration([t.importSpecifier(t.identifier(state.cacheIdentifierName),t.identifier(CACHE_IDENTIFIER))],t.stringLiteral(IMPORT_PATH))),state.modifications.forEach(modify=>modify()));let{code}=generate(ast);return{contents:code,loader:args.path.split(".").pop()}},"cacheDirectivePlugin");var import_promises=require("fs/promises");var defaultConfig={"use-macro":!0,"use-cache":!0,"jsx-importsource":!0},commandkitPlugin=__name(config=>{config=Object.assign({},defaultConfig,config);let plugins=[{name:"use-macro",plugin:__name(async(content,args)=>{let transformer=new import_use_macro.MacroTransformer,{contents}=await transformer.transform(content,args.path);return contents},"plugin")},{name:"use-cache",plugin:__name(async(content,args)=>{let{contents}=await cacheDirectivePlugin(content,args);return contents},"plugin")}].filter(p=>!!config[p.name]);return{name:"commandkit-transformer-plugin",setup(build){if(!plugins.length)return;let fileFilter=/\.(c|m)?(t|j)sx?$/;build.onLoad({filter:fileFilter},async args=>{let source=await(0,import_promises.readFile)(args.path,"utf8"),loader=args.path.split(".").pop(),contents=source;for(let _plugin of plugins){let{plugin,name}=_plugin;try{contents=await plugin(contents,args)}catch(e){let err=new Error(`Plugin ${name} failed with ${e}`);throw err.stack=e instanceof Error?e.stack:"",err}}return{contents,loader}})}}},"commandkitPlugin");0&&(module.exports={commandkitPlugin});
|
|
2
2
|
//# sourceMappingURL=plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/esbuild-plugins/plugin.ts","../../../src/cli/esbuild-plugins/use-cache.ts"],"sourcesContent":["import { MacroTransformer } from 'use-macro';\nimport { cacheDirectivePlugin } from './use-cache';\nimport { readFile } from 'node:fs/promises';\n\nconst defaultConfig = {\n 'use-macro': true,\n 'use-cache': true\n};\n\ninterface CommandKitEsbuildPluginConfig {\n 'use-macro'?: boolean;\n 'use-cache'?: boolean;\n}\n\nexport const commandkitPlugin = (config?: CommandKitEsbuildPluginConfig) => {\n config = Object.assign({}, defaultConfig, config);\n\n const plugins = [\n {\n name: 'use-macro',\n plugin: async (content: string, args: any) => {\n const transformer = new MacroTransformer();\n const { contents } = await transformer.transform(content, args.path);\n return contents;\n }\n },\n {\n name: 'use-cache',\n plugin: async (content: string, args: any) => {\n const { contents } = await cacheDirectivePlugin(content, args);\n return contents;\n }\n }].\n filter((p) => {\n return !!config[p.name as keyof CommandKitEsbuildPluginConfig];\n });\n\n return {\n name: 'commandkit-transformer-plugin',\n setup(build: any) {\n if (!plugins.length) return;\n\n const fileFilter = /\\.(c|m)?(t|j)sx?$/;\n\n build.onLoad({ filter: fileFilter }, async (args: any) => {\n const source = await readFile(args.path, 'utf8');\n const loader = args.path.split('.').pop();\n\n let contents = source;\n\n for (const _plugin of plugins) {\n const { plugin, name } = _plugin;\n try {\n contents = await plugin(contents, args);\n } catch (e) {\n const err = new Error(`Plugin ${name} failed with ${e}`);\n err.stack = e instanceof Error ? e.stack : '';\n\n throw err;\n }\n }\n\n return {\n contents,\n loader\n };\n });\n }\n };\n};","import * as parser from '@babel/parser';\nimport _traverse from '@babel/traverse';\nimport _generate from '@babel/generator';\nimport * as t from '@babel/types';\n\n// @ts-ignore\nconst traverse = _traverse.default || _traverse;\n// @ts-ignore\nconst generate = _generate.default || _generate;\n\nconst IMPORT_PATH = 'commandkit';\nconst DIRECTIVE = 'use cache';\nconst CACHE_IDENTIFIER =\n'super_duper_secret_internal_for_use_cache_directive_of_commandkit_cli_do_not_use_it_directly_or_you_will_be_fired_from_your_job_kthxbai';\n\nconst generateRandomString = (length = 6) => {\n const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n return Array.from(\n { length },\n () => chars[Math.floor(Math.random() * chars.length)]\n ).join('');\n};\n\nexport const cacheDirectivePlugin = async (source: string, args: any) => {\n const ast = parser.parse(source, {\n sourceType: 'module',\n plugins: ['typescript', 'jsx']\n });\n\n let state = {\n needsImport: false,\n hasExistingImport: false,\n cacheIdentifierName: CACHE_IDENTIFIER,\n modifications: []\n };\n\n // First pass: check for naming collisions and collect modifications\n traverse(ast, {\n Program: {\n enter(path: any) {\n const binding = path.scope.getBinding(CACHE_IDENTIFIER);\n if (binding) {\n state.cacheIdentifierName = `${CACHE_IDENTIFIER}_${generateRandomString()}`;\n }\n }\n },\n\n ImportDeclaration(path: any) {\n if (\n path.node.source.value === IMPORT_PATH &&\n path.node.specifiers.some(\n (spec: any) =>\n t.isImportSpecifier(spec) &&\n // @ts-ignore\n spec.imported.name === CACHE_IDENTIFIER\n ))\n {\n state.hasExistingImport = true;\n if (state.cacheIdentifierName !== CACHE_IDENTIFIER) {\n // @ts-ignore\n state.modifications.push(() => {\n path.node.specifiers.forEach((spec: any) => {\n if (\n t.isImportSpecifier(spec) &&\n // @ts-ignore\n spec.imported.name === CACHE_IDENTIFIER)\n {\n spec.local.name = state.cacheIdentifierName;\n }\n });\n });\n }\n }\n },\n\n 'FunctionDeclaration|FunctionExpression|ArrowFunctionExpression'(\n path: any)\n {\n const body = t.isBlockStatement(path.node.body) ? path.node.body : null;\n const hasUseCache = body?.directives?.some(\n (d: any) => d.value.value === DIRECTIVE\n );\n\n if (!hasUseCache && !t.isBlockStatement(path.node.body)) {\n const parentFunction = path.findParent(\n (p: any) =>\n (p.isFunction() || p.isProgram()) && 'directives' in p.node\n );\n if (\n !parentFunction?.node.directives?.some(\n (d: any) => d.value.value === DIRECTIVE\n ))\n {\n return;\n }\n }\n\n if (hasUseCache || !t.isBlockStatement(path.node.body)) {\n // Check if the function is async\n if (!path.node.async) {\n throw new Error(\n `\"${DIRECTIVE}\" directive may only be used in async functions at ${args.path}`\n );\n }\n\n state.needsImport = true;\n const isDeclaration = t.isFunctionDeclaration(path.node);\n const name = isDeclaration ? path.node.id?.name : undefined;\n\n // Create a new body without the 'use cache' directive\n const newBody = t.isBlockStatement(path.node.body) ?\n t.blockStatement(\n path.node.body.body,\n path.node.body.directives.filter(\n (d: any) => d.value.value !== DIRECTIVE\n )\n ) :\n path.node.body;\n\n const wrapped = t.callExpression(\n t.identifier(state.cacheIdentifierName),\n [t.arrowFunctionExpression(path.node.params, newBody, true)]\n );\n\n // @ts-ignore\n state.modifications.push(() => {\n if (name) {\n path.replaceWith(\n t.variableDeclaration('const', [\n t.variableDeclarator(t.identifier(name), wrapped)]\n )\n );\n } else if (!t.isVariableDeclarator(path.parent)) {\n path.replaceWith(wrapped);\n } else {\n path.parent.init = wrapped;\n }\n });\n }\n }\n });\n\n // Apply all collected modifications\n if (state.modifications.length > 0) {\n // Add import if needed\n if (state.needsImport && !state.hasExistingImport) {\n ast.program.body.unshift(\n t.importDeclaration(\n [\n t.importSpecifier(\n t.identifier(state.cacheIdentifierName),\n t.identifier(CACHE_IDENTIFIER)\n )],\n\n t.stringLiteral(IMPORT_PATH)\n )\n );\n }\n\n // Apply collected modifications\n // @ts-ignore\n state.modifications.forEach((modify) => modify());\n }\n\n const { code } = generate(ast);\n return {\n contents: code,\n loader: args.path.split('.').pop()\n };\n};"],"mappings":"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","names":["_traverse","_generate"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/esbuild-plugins/plugin.ts","../../../src/cli/esbuild-plugins/use-cache.ts"],"sourcesContent":["import { MacroTransformer } from 'use-macro';\nimport { cacheDirectivePlugin } from './use-cache';\nimport { readFile } from 'node:fs/promises';\n\nconst defaultConfig = {\n 'use-macro': true,\n 'use-cache': true,\n 'jsx-importsource': true\n};\n\ninterface CommandKitEsbuildPluginConfig {\n 'use-macro'?: boolean;\n 'jsx-importsource'?: boolean;\n 'use-cache'?: boolean;\n}\n\nexport const commandkitPlugin = (config?: CommandKitEsbuildPluginConfig) => {\n config = Object.assign({}, defaultConfig, config);\n\n const plugins = [\n {\n name: 'use-macro',\n plugin: async (content: string, args: any) => {\n const transformer = new MacroTransformer();\n const { contents } = await transformer.transform(content, args.path);\n return contents;\n }\n },\n {\n name: 'use-cache',\n plugin: async (content: string, args: any) => {\n const { contents } = await cacheDirectivePlugin(content, args);\n return contents;\n }\n }].\n filter((p) => {\n return !!config[p.name as keyof CommandKitEsbuildPluginConfig];\n });\n\n return {\n name: 'commandkit-transformer-plugin',\n setup(build: any) {\n if (!plugins.length) return;\n\n const fileFilter = /\\.(c|m)?(t|j)sx?$/;\n\n build.onLoad({ filter: fileFilter }, async (args: any) => {\n const source = await readFile(args.path, 'utf8');\n const loader = args.path.split('.').pop();\n\n let contents = source;\n\n for (const _plugin of plugins) {\n const { plugin, name } = _plugin;\n try {\n contents = await plugin(contents, args);\n } catch (e) {\n const err = new Error(`Plugin ${name} failed with ${e}`);\n err.stack = e instanceof Error ? e.stack : '';\n\n throw err;\n }\n }\n\n return {\n contents,\n loader\n };\n });\n }\n };\n};","import * as parser from '@babel/parser';\nimport _traverse from '@babel/traverse';\nimport _generate from '@babel/generator';\nimport * as t from '@babel/types';\n\n// @ts-ignore\nconst traverse = _traverse.default || _traverse;\n// @ts-ignore\nconst generate = _generate.default || _generate;\n\nconst IMPORT_PATH = 'commandkit';\nconst DIRECTIVE = 'use cache';\nconst CACHE_IDENTIFIER =\n'super_duper_secret_internal_for_use_cache_directive_of_commandkit_cli_do_not_use_it_directly_or_you_will_be_fired_from_your_job_kthxbai';\n\nconst generateRandomString = (length = 6) => {\n const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n return Array.from(\n { length },\n () => chars[Math.floor(Math.random() * chars.length)]\n ).join('');\n};\n\nexport const cacheDirectivePlugin = async (source: string, args: any) => {\n const ast = parser.parse(source, {\n sourceType: 'module',\n plugins: ['typescript', 'jsx']\n });\n\n let state = {\n needsImport: false,\n hasExistingImport: false,\n cacheIdentifierName: CACHE_IDENTIFIER,\n modifications: []\n };\n\n // First pass: check for naming collisions and collect modifications\n traverse(ast, {\n Program: {\n enter(path: any) {\n const binding = path.scope.getBinding(CACHE_IDENTIFIER);\n if (binding) {\n state.cacheIdentifierName = `${CACHE_IDENTIFIER}_${generateRandomString()}`;\n }\n }\n },\n\n ImportDeclaration(path: any) {\n if (\n path.node.source.value === IMPORT_PATH &&\n path.node.specifiers.some(\n (spec: any) =>\n t.isImportSpecifier(spec) &&\n // @ts-ignore\n spec.imported.name === CACHE_IDENTIFIER\n ))\n {\n state.hasExistingImport = true;\n if (state.cacheIdentifierName !== CACHE_IDENTIFIER) {\n // @ts-ignore\n state.modifications.push(() => {\n path.node.specifiers.forEach((spec: any) => {\n if (\n t.isImportSpecifier(spec) &&\n // @ts-ignore\n spec.imported.name === CACHE_IDENTIFIER)\n {\n spec.local.name = state.cacheIdentifierName;\n }\n });\n });\n }\n }\n },\n\n 'FunctionDeclaration|FunctionExpression|ArrowFunctionExpression'(\n path: any)\n {\n const body = t.isBlockStatement(path.node.body) ? path.node.body : null;\n const hasUseCache = body?.directives?.some(\n (d: any) => d.value.value === DIRECTIVE\n );\n\n if (!hasUseCache && !t.isBlockStatement(path.node.body)) {\n const parentFunction = path.findParent(\n (p: any) =>\n (p.isFunction() || p.isProgram()) && 'directives' in p.node\n );\n if (\n !parentFunction?.node.directives?.some(\n (d: any) => d.value.value === DIRECTIVE\n ))\n {\n return;\n }\n }\n\n if (hasUseCache || !t.isBlockStatement(path.node.body)) {\n // Check if the function is async\n if (!path.node.async) {\n throw new Error(\n `\"${DIRECTIVE}\" directive may only be used in async functions at ${args.path}`\n );\n }\n\n state.needsImport = true;\n const isDeclaration = t.isFunctionDeclaration(path.node);\n const name = isDeclaration ? path.node.id?.name : undefined;\n\n // Create a new body without the 'use cache' directive\n const newBody = t.isBlockStatement(path.node.body) ?\n t.blockStatement(\n path.node.body.body,\n path.node.body.directives.filter(\n (d: any) => d.value.value !== DIRECTIVE\n )\n ) :\n path.node.body;\n\n const wrapped = t.callExpression(\n t.identifier(state.cacheIdentifierName),\n [t.arrowFunctionExpression(path.node.params, newBody, true)]\n );\n\n // @ts-ignore\n state.modifications.push(() => {\n if (name) {\n path.replaceWith(\n t.variableDeclaration('const', [\n t.variableDeclarator(t.identifier(name), wrapped)]\n )\n );\n } else if (!t.isVariableDeclarator(path.parent)) {\n path.replaceWith(wrapped);\n } else {\n path.parent.init = wrapped;\n }\n });\n }\n }\n });\n\n // Apply all collected modifications\n if (state.modifications.length > 0) {\n // Add import if needed\n if (state.needsImport && !state.hasExistingImport) {\n ast.program.body.unshift(\n t.importDeclaration(\n [\n t.importSpecifier(\n t.identifier(state.cacheIdentifierName),\n t.identifier(CACHE_IDENTIFIER)\n )],\n\n t.stringLiteral(IMPORT_PATH)\n )\n );\n }\n\n // Apply collected modifications\n // @ts-ignore\n state.modifications.forEach((modify) => modify());\n }\n\n const { code } = generate(ast);\n return {\n contents: code,\n loader: args.path.split('.').pop()\n };\n};"],"mappings":"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","names":["_traverse","_generate"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{commandkitPlugin}from"../../chunk-
|
|
1
|
+
import{commandkitPlugin}from"../../chunk-HFOCTXRX.mjs";import"../../chunk-Y522NY4J.mjs";import"../../chunk-35OSBS47.mjs";export{commandkitPlugin};
|
|
2
2
|
//# sourceMappingURL=plugin.mjs.map
|
package/dist/cli/init.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0});var __esm=(fn,res)=>function(){return fn&&(res=(0,fn[__getOwnPropNames(fn)[0]])(fn=0)),res};var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var init_cjs_shims=__esm({"../../node_modules/.pnpm/tsup@8.3.5_jiti@1.21.7_postcss@8.4.49_tsx@4.19.2_typescript@5.7.3_yaml@2.7.0/node_modules/tsup/assets/cjs_shims.js"(){"use strict"}});function write(message){process.stdout.write(message),process.stdout.write(`
|
|
2
|
-
`)}function panic(message){write(Colors.red(`Error: ${message}`)),process.exit(1)}async function findCommandKitConfig(src){let cwd=process.cwd(),locations=src?[(0,import_node_path.join)(cwd,src)]:possibleFileNames.map(name=>(0,import_node_path.join)(cwd,name));for(let location of locations)try{return await loadConfigInner(location)}catch{continue}panic(`Could not locate commandkit config from ${cwd}`)}function ensureTypeScript(target){/\.(c|m)tsx?$/.test(target)&&!process.features.typescript&&panic("You are trying to load commandkit config file that is written in typescript. The current Node.js version does not have TypeScript feature enabled.")}async function loadConfigInner(target){let isJSON=target.endsWith(".json");return await ensureExists(target),ensureTypeScript(target),await import(`file://${target}`).then(conf=>conf.default||conf)}async function ensureExists(loc){await import_node_fs.default.promises.access(loc,import_node_fs.default.constants.F_OK)}function erase(dir){(0,import_rimraf.rimrafSync)(dir)}var import_rimraf,import_node_path,import_node_fs,resetColor,Colors,possibleFileNames,init_common=__esm({"src/cli/common.ts"(){"use strict";init_cjs_shims();import_rimraf=require("rimraf"),import_node_path=require("path"),import_node_fs=__toESM(require("fs")),resetColor="\x1B[0m",Colors={reset:__name(text=>`${text}${resetColor}`,"reset"),bright:__name(text=>`\x1B[1m${text}${resetColor}`,"bright"),dim:__name(text=>`\x1B[2m${text}${resetColor}`,"dim"),underscore:__name(text=>`\x1B[4m${text}${resetColor}`,"underscore"),blink:__name(text=>`\x1B[5m${text}${resetColor}`,"blink"),reverse:__name(text=>`\x1B[7m${text}${resetColor}`,"reverse"),hidden:__name(text=>`\x1B[8m${text}${resetColor}`,"hidden"),black:__name(text=>`\x1B[30m${text}${resetColor}`,"black"),red:__name(text=>`\x1B[31m${text}${resetColor}`,"red"),green:__name(text=>`\x1B[32m${text}${resetColor}`,"green"),yellow:__name(text=>`\x1B[33m${text}${resetColor}`,"yellow"),blue:__name(text=>`\x1B[34m${text}${resetColor}`,"blue"),magenta:__name(text=>`\x1B[35m${text}${resetColor}`,"magenta"),cyan:__name(text=>`\x1B[36m${text}${resetColor}`,"cyan"),white:__name(text=>`\x1B[37m${text}${resetColor}`,"white"),bgBlack:__name(text=>`\x1B[40m${text}${resetColor}`,"bgBlack"),bgRed:__name(text=>`\x1B[41m${text}${resetColor}`,"bgRed"),bgGreen:__name(text=>`\x1B[42m${text}${resetColor}`,"bgGreen"),bgYellow:__name(text=>`\x1B[43m${text}${resetColor}`,"bgYellow"),bgBlue:__name(text=>`\x1B[44m${text}${resetColor}`,"bgBlue"),bgMagenta:__name(text=>`\x1B[45m${text}${resetColor}`,"bgMagenta"),bgCyan:__name(text=>`\x1B[46m${text}${resetColor}`,"bgCyan"),bgWhite:__name(text=>`\x1B[47m${text}${resetColor}`,"bgWhite")};__name(write,"write");__name(panic,"panic");possibleFileNames=["commandkit.json","commandkit.config.json","commandkit.js","commandkit.config.js","commandkit.mjs","commandkit.config.mjs","commandkit.cjs","commandkit.config.cjs","commandkit.ts","commandkit.mts","commandkit.cts"];__name(findCommandKitConfig,"findCommandKitConfig");__name(ensureTypeScript,"ensureTypeScript");__name(loadConfigInner,"loadConfigInner");__name(ensureExists,"ensureExists");__name(erase,"erase")}});function catcher(fn){try{return fn(),!0}catch{return!1}}function parseEnv(src){for(let key in src){let value=src[key];if(typeof value=="string"){if(value.startsWith(VALUE_PREFIXES.JSON)){catcher(()=>src[key]=JSON.parse(value.replace(VALUE_PREFIXES.JSON,"")));continue}if(value.startsWith(VALUE_PREFIXES.DATE)){src[key]=new Date(value.replace(VALUE_PREFIXES.DATE,""));continue}if(value.includes(",")){src[key]=value.split(",").map(v=>v.trim());continue}if(/^[0-9]+n$/.test(value)){src[key]=BigInt(value);continue}if(value in valuesMap){src[key]=typeof valuesMap[value]=="function"?valuesMap[value]():valuesMap[value];continue}}}return src}var import_node_crypto,valuesMap,VALUE_PREFIXES,init_parse_env=__esm({"src/cli/parse-env.ts"(){"use strict";init_cjs_shims();import_node_crypto=require("crypto"),valuesMap={true:!0,false:!1,null:null,undefined:void 0,__UUIDv4__:__name(()=>(0,import_node_crypto.randomUUID)(),"__UUIDv4__")},VALUE_PREFIXES={JSON:"JSON::",DATE:"DATE::"};__name(catcher,"catcher");__name(parseEnv,"parseEnv")}});var parser,import_traverse,import_generator,t,traverse,generate,IMPORT_PATH,DIRECTIVE,CACHE_IDENTIFIER,generateRandomString,cacheDirectivePlugin,init_use_cache=__esm({"src/cli/esbuild-plugins/use-cache.ts"(){"use strict";init_cjs_shims();parser=__toESM(require("@babel/parser")),import_traverse=__toESM(require("@babel/traverse")),import_generator=__toESM(require("@babel/generator")),t=__toESM(require("@babel/types")),traverse=import_traverse.default.default||import_traverse.default,generate=import_generator.default.default||import_generator.default,IMPORT_PATH="commandkit",DIRECTIVE="use cache",CACHE_IDENTIFIER="super_duper_secret_internal_for_use_cache_directive_of_commandkit_cli_do_not_use_it_directly_or_you_will_be_fired_from_your_job_kthxbai",generateRandomString=__name((length=6)=>{let chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";return Array.from({length},()=>chars[Math.floor(Math.random()*chars.length)]).join("")},"generateRandomString"),cacheDirectivePlugin=__name(async(source,args)=>{let ast=parser.parse(source,{sourceType:"module",plugins:["typescript","jsx"]}),state={needsImport:!1,hasExistingImport:!1,cacheIdentifierName:CACHE_IDENTIFIER,modifications:[]};traverse(ast,{Program:{enter(path){path.scope.getBinding(CACHE_IDENTIFIER)&&(state.cacheIdentifierName=`${CACHE_IDENTIFIER}_${generateRandomString()}`)}},ImportDeclaration(path){path.node.source.value===IMPORT_PATH&&path.node.specifiers.some(spec=>t.isImportSpecifier(spec)&&spec.imported.name===CACHE_IDENTIFIER)&&(state.hasExistingImport=!0,state.cacheIdentifierName!==CACHE_IDENTIFIER&&state.modifications.push(()=>{path.node.specifiers.forEach(spec=>{t.isImportSpecifier(spec)&&spec.imported.name===CACHE_IDENTIFIER&&(spec.local.name=state.cacheIdentifierName)})}))},"FunctionDeclaration|FunctionExpression|ArrowFunctionExpression"(path){var _a,_b,_c;let body=t.isBlockStatement(path.node.body)?path.node.body:null,hasUseCache=(_a=body==null?void 0:body.directives)==null?void 0:_a.some(d=>d.value.value===DIRECTIVE);if(!hasUseCache&&!t.isBlockStatement(path.node.body)){let parentFunction=path.findParent(p=>(p.isFunction()||p.isProgram())&&"directives"in p.node);if(!((_b=parentFunction==null?void 0:parentFunction.node.directives)!=null&&_b.some(d=>d.value.value===DIRECTIVE)))return}if(hasUseCache||!t.isBlockStatement(path.node.body)){if(!path.node.async)throw new Error(`"${DIRECTIVE}" directive may only be used in async functions at ${args.path}`);state.needsImport=!0;let name=t.isFunctionDeclaration(path.node)?(_c=path.node.id)==null?void 0:_c.name:void 0,newBody=t.isBlockStatement(path.node.body)?t.blockStatement(path.node.body.body,path.node.body.directives.filter(d=>d.value.value!==DIRECTIVE)):path.node.body,wrapped=t.callExpression(t.identifier(state.cacheIdentifierName),[t.arrowFunctionExpression(path.node.params,newBody,!0)]);state.modifications.push(()=>{name?path.replaceWith(t.variableDeclaration("const",[t.variableDeclarator(t.identifier(name),wrapped)])):t.isVariableDeclarator(path.parent)?path.parent.init=wrapped:path.replaceWith(wrapped)})}}}),state.modifications.length>0&&(state.needsImport&&!state.hasExistingImport&&ast.program.body.unshift(t.importDeclaration([t.importSpecifier(t.identifier(state.cacheIdentifierName),t.identifier(CACHE_IDENTIFIER))],t.stringLiteral(IMPORT_PATH))),state.modifications.forEach(modify=>modify()));let{code}=generate(ast);return{contents:code,loader:args.path.split(".").pop()}},"cacheDirectivePlugin")}});var import_use_macro,import_promises,defaultConfig,commandkitPlugin,init_plugin=__esm({"src/cli/esbuild-plugins/plugin.ts"(){"use strict";init_cjs_shims();import_use_macro=require("use-macro");init_use_cache();import_promises=require("fs/promises"),defaultConfig={"use-macro":!0,"use-cache":!0},commandkitPlugin=__name(config=>{config=Object.assign({},defaultConfig,config);let plugins=[{name:"use-macro",plugin:__name(async(content,args)=>{let transformer=new import_use_macro.MacroTransformer,{contents}=await transformer.transform(content,args.path);return contents},"plugin")},{name:"use-cache",plugin:__name(async(content,args)=>{let{contents}=await cacheDirectivePlugin(content,args);return contents},"plugin")}].filter(p=>!!config[p.name]);return{name:"commandkit-transformer-plugin",setup(build3){if(!plugins.length)return;let fileFilter=/\.(c|m)?(t|j)sx?$/;build3.onLoad({filter:fileFilter},async args=>{let source=await(0,import_promises.readFile)(args.path,"utf8"),loader=args.path.split(".").pop(),contents=source;for(let _plugin of plugins){let{plugin,name}=_plugin;try{contents=await plugin(contents,args)}catch(e){let err=new Error(`Plugin ${name} failed with ${e}`);throw err.stack=e instanceof Error?e.stack:"",err}}return{contents,loader}})}}},"commandkitPlugin")}});var build_exports={};__export(build_exports,{bootstrapProductionBuild:()=>bootstrapProductionBuild,injectShims:()=>injectShims});async function bootstrapProductionBuild(config){let{sourcemap=!1,minify=!1,outDir="dist",antiCrash=!0,src,main,requirePolyfill:polyfillRequire}=await findCommandKitConfig(config),status=(0,import_ora.default)(`Creating optimized production build...
|
|
3
|
-
`).start(),start=performance.now();erase(outDir);try{await(0,import_tsup.build)({clean:!0,format:["esm"],dts:!1,skipNodeModulesBundle:!0,minify,shims:!0,banner:{js:"/* Optimized production build generated by CommandKit */"},sourcemap,keepNames:!0,outDir,silent:!0,watch:!1,cjsInterop:!0,entry:[src,"!dist","!.commandkit",`!${outDir}`],esbuildPlugins:[commandkitPlugin()]}),await injectShims(outDir,main,antiCrash,polyfillRequire),status.succeed(Colors.green(`Build completed in ${(performance.now()-start).toFixed(2)}ms!`)),write(Colors.green(`
|
|
2
|
+
`)}function panic(message){write(Colors.red(`Error: ${message}`)),process.exit(1)}async function findCommandKitConfig(src){let cwd=process.cwd(),locations=src?[(0,import_node_path.join)(cwd,src)]:possibleFileNames.map(name=>(0,import_node_path.join)(cwd,name));for(let location of locations)try{return await loadConfigInner(location)}catch{continue}panic(`Could not locate commandkit config from ${cwd}`)}function ensureTypeScript(target){/\.(c|m)tsx?$/.test(target)&&!process.features.typescript&&panic("You are trying to load commandkit config file that is written in typescript. The current Node.js version does not have TypeScript feature enabled.")}async function loadConfigInner(target){let isJSON=target.endsWith(".json");return await ensureExists(target),ensureTypeScript(target),await import(`file://${target}`).then(conf=>conf.default||conf)}async function ensureExists(loc){await import_node_fs.default.promises.access(loc,import_node_fs.default.constants.F_OK)}function erase(dir){(0,import_rimraf.rimrafSync)(dir)}var import_rimraf,import_node_path,import_node_fs,resetColor,Colors,possibleFileNames,init_common=__esm({"src/cli/common.ts"(){"use strict";init_cjs_shims();import_rimraf=require("rimraf"),import_node_path=require("path"),import_node_fs=__toESM(require("fs")),resetColor="\x1B[0m",Colors={reset:__name(text=>`${text}${resetColor}`,"reset"),bright:__name(text=>`\x1B[1m${text}${resetColor}`,"bright"),dim:__name(text=>`\x1B[2m${text}${resetColor}`,"dim"),underscore:__name(text=>`\x1B[4m${text}${resetColor}`,"underscore"),blink:__name(text=>`\x1B[5m${text}${resetColor}`,"blink"),reverse:__name(text=>`\x1B[7m${text}${resetColor}`,"reverse"),hidden:__name(text=>`\x1B[8m${text}${resetColor}`,"hidden"),black:__name(text=>`\x1B[30m${text}${resetColor}`,"black"),red:__name(text=>`\x1B[31m${text}${resetColor}`,"red"),green:__name(text=>`\x1B[32m${text}${resetColor}`,"green"),yellow:__name(text=>`\x1B[33m${text}${resetColor}`,"yellow"),blue:__name(text=>`\x1B[34m${text}${resetColor}`,"blue"),magenta:__name(text=>`\x1B[35m${text}${resetColor}`,"magenta"),cyan:__name(text=>`\x1B[36m${text}${resetColor}`,"cyan"),white:__name(text=>`\x1B[37m${text}${resetColor}`,"white"),bgBlack:__name(text=>`\x1B[40m${text}${resetColor}`,"bgBlack"),bgRed:__name(text=>`\x1B[41m${text}${resetColor}`,"bgRed"),bgGreen:__name(text=>`\x1B[42m${text}${resetColor}`,"bgGreen"),bgYellow:__name(text=>`\x1B[43m${text}${resetColor}`,"bgYellow"),bgBlue:__name(text=>`\x1B[44m${text}${resetColor}`,"bgBlue"),bgMagenta:__name(text=>`\x1B[45m${text}${resetColor}`,"bgMagenta"),bgCyan:__name(text=>`\x1B[46m${text}${resetColor}`,"bgCyan"),bgWhite:__name(text=>`\x1B[47m${text}${resetColor}`,"bgWhite")};__name(write,"write");__name(panic,"panic");possibleFileNames=["commandkit.json","commandkit.config.json","commandkit.js","commandkit.config.js","commandkit.mjs","commandkit.config.mjs","commandkit.cjs","commandkit.config.cjs","commandkit.ts","commandkit.mts","commandkit.cts"];__name(findCommandKitConfig,"findCommandKitConfig");__name(ensureTypeScript,"ensureTypeScript");__name(loadConfigInner,"loadConfigInner");__name(ensureExists,"ensureExists");__name(erase,"erase")}});function catcher(fn){try{return fn(),!0}catch{return!1}}function parseEnv(src){for(let key in src){let value=src[key];if(typeof value=="string"){if(value.startsWith(VALUE_PREFIXES.JSON)){catcher(()=>src[key]=JSON.parse(value.replace(VALUE_PREFIXES.JSON,"")));continue}if(value.startsWith(VALUE_PREFIXES.DATE)){src[key]=new Date(value.replace(VALUE_PREFIXES.DATE,""));continue}if(value.includes(",")){src[key]=value.split(",").map(v=>v.trim());continue}if(/^[0-9]+n$/.test(value)){src[key]=BigInt(value);continue}if(value in valuesMap){src[key]=typeof valuesMap[value]=="function"?valuesMap[value]():valuesMap[value];continue}}}return src}var import_node_crypto,valuesMap,VALUE_PREFIXES,init_parse_env=__esm({"src/cli/parse-env.ts"(){"use strict";init_cjs_shims();import_node_crypto=require("crypto"),valuesMap={true:!0,false:!1,null:null,undefined:void 0,__UUIDv4__:__name(()=>(0,import_node_crypto.randomUUID)(),"__UUIDv4__")},VALUE_PREFIXES={JSON:"JSON::",DATE:"DATE::"};__name(catcher,"catcher");__name(parseEnv,"parseEnv")}});var parser,import_traverse,import_generator,t,traverse,generate,IMPORT_PATH,DIRECTIVE,CACHE_IDENTIFIER,generateRandomString,cacheDirectivePlugin,init_use_cache=__esm({"src/cli/esbuild-plugins/use-cache.ts"(){"use strict";init_cjs_shims();parser=__toESM(require("@babel/parser")),import_traverse=__toESM(require("@babel/traverse")),import_generator=__toESM(require("@babel/generator")),t=__toESM(require("@babel/types")),traverse=import_traverse.default.default||import_traverse.default,generate=import_generator.default.default||import_generator.default,IMPORT_PATH="commandkit",DIRECTIVE="use cache",CACHE_IDENTIFIER="super_duper_secret_internal_for_use_cache_directive_of_commandkit_cli_do_not_use_it_directly_or_you_will_be_fired_from_your_job_kthxbai",generateRandomString=__name((length=6)=>{let chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";return Array.from({length},()=>chars[Math.floor(Math.random()*chars.length)]).join("")},"generateRandomString"),cacheDirectivePlugin=__name(async(source,args)=>{let ast=parser.parse(source,{sourceType:"module",plugins:["typescript","jsx"]}),state={needsImport:!1,hasExistingImport:!1,cacheIdentifierName:CACHE_IDENTIFIER,modifications:[]};traverse(ast,{Program:{enter(path){path.scope.getBinding(CACHE_IDENTIFIER)&&(state.cacheIdentifierName=`${CACHE_IDENTIFIER}_${generateRandomString()}`)}},ImportDeclaration(path){path.node.source.value===IMPORT_PATH&&path.node.specifiers.some(spec=>t.isImportSpecifier(spec)&&spec.imported.name===CACHE_IDENTIFIER)&&(state.hasExistingImport=!0,state.cacheIdentifierName!==CACHE_IDENTIFIER&&state.modifications.push(()=>{path.node.specifiers.forEach(spec=>{t.isImportSpecifier(spec)&&spec.imported.name===CACHE_IDENTIFIER&&(spec.local.name=state.cacheIdentifierName)})}))},"FunctionDeclaration|FunctionExpression|ArrowFunctionExpression"(path){var _a,_b,_c;let body=t.isBlockStatement(path.node.body)?path.node.body:null,hasUseCache=(_a=body==null?void 0:body.directives)==null?void 0:_a.some(d=>d.value.value===DIRECTIVE);if(!hasUseCache&&!t.isBlockStatement(path.node.body)){let parentFunction=path.findParent(p=>(p.isFunction()||p.isProgram())&&"directives"in p.node);if(!((_b=parentFunction==null?void 0:parentFunction.node.directives)!=null&&_b.some(d=>d.value.value===DIRECTIVE)))return}if(hasUseCache||!t.isBlockStatement(path.node.body)){if(!path.node.async)throw new Error(`"${DIRECTIVE}" directive may only be used in async functions at ${args.path}`);state.needsImport=!0;let name=t.isFunctionDeclaration(path.node)?(_c=path.node.id)==null?void 0:_c.name:void 0,newBody=t.isBlockStatement(path.node.body)?t.blockStatement(path.node.body.body,path.node.body.directives.filter(d=>d.value.value!==DIRECTIVE)):path.node.body,wrapped=t.callExpression(t.identifier(state.cacheIdentifierName),[t.arrowFunctionExpression(path.node.params,newBody,!0)]);state.modifications.push(()=>{name?path.replaceWith(t.variableDeclaration("const",[t.variableDeclarator(t.identifier(name),wrapped)])):t.isVariableDeclarator(path.parent)?path.parent.init=wrapped:path.replaceWith(wrapped)})}}}),state.modifications.length>0&&(state.needsImport&&!state.hasExistingImport&&ast.program.body.unshift(t.importDeclaration([t.importSpecifier(t.identifier(state.cacheIdentifierName),t.identifier(CACHE_IDENTIFIER))],t.stringLiteral(IMPORT_PATH))),state.modifications.forEach(modify=>modify()));let{code}=generate(ast);return{contents:code,loader:args.path.split(".").pop()}},"cacheDirectivePlugin")}});var import_use_macro,import_promises,defaultConfig,commandkitPlugin,init_plugin=__esm({"src/cli/esbuild-plugins/plugin.ts"(){"use strict";init_cjs_shims();import_use_macro=require("use-macro");init_use_cache();import_promises=require("fs/promises"),defaultConfig={"use-macro":!0,"use-cache":!0,"jsx-importsource":!0},commandkitPlugin=__name(config=>{config=Object.assign({},defaultConfig,config);let plugins=[{name:"use-macro",plugin:__name(async(content,args)=>{let transformer=new import_use_macro.MacroTransformer,{contents}=await transformer.transform(content,args.path);return contents},"plugin")},{name:"use-cache",plugin:__name(async(content,args)=>{let{contents}=await cacheDirectivePlugin(content,args);return contents},"plugin")}].filter(p=>!!config[p.name]);return{name:"commandkit-transformer-plugin",setup(build3){if(!plugins.length)return;let fileFilter=/\.(c|m)?(t|j)sx?$/;build3.onLoad({filter:fileFilter},async args=>{let source=await(0,import_promises.readFile)(args.path,"utf8"),loader=args.path.split(".").pop(),contents=source;for(let _plugin of plugins){let{plugin,name}=_plugin;try{contents=await plugin(contents,args)}catch(e){let err=new Error(`Plugin ${name} failed with ${e}`);throw err.stack=e instanceof Error?e.stack:"",err}}return{contents,loader}})}}},"commandkitPlugin")}});var build_exports={};__export(build_exports,{bootstrapProductionBuild:()=>bootstrapProductionBuild,injectShims:()=>injectShims});async function bootstrapProductionBuild(config){let{sourcemap=!1,minify=!1,outDir="dist",antiCrash=!0,src,main,requirePolyfill:polyfillRequire}=await findCommandKitConfig(config),status=(0,import_ora.default)(`Creating optimized production build...
|
|
3
|
+
`).start(),start=performance.now();erase(outDir);try{await(0,import_tsup.build)({clean:!0,format:["esm"],dts:!1,skipNodeModulesBundle:!0,minify,shims:!0,banner:{js:"/* Optimized production build generated by CommandKit */"},sourcemap,keepNames:!0,outDir,silent:!0,watch:!1,cjsInterop:!0,entry:[src,"!dist","!.commandkit",`!${outDir}`],esbuildPlugins:[commandkitPlugin()],jsxFactory:"CommandKit.createElement",jsxFragment:"CommandKit.Fragment"}),await injectShims(outDir,main,antiCrash,polyfillRequire),status.succeed(Colors.green(`Build completed in ${(performance.now()-start).toFixed(2)}ms!`)),write(Colors.green(`
|
|
4
4
|
Run ${Colors.magenta("commandkit start")} ${Colors.green("to start your bot.")}`))}catch(e){status.fail(`Build failed after ${(performance.now()-start).toFixed(2)}ms!`),panic(e)}}async function injectShims(outDir,main,antiCrash,polyfillRequire){let path=(0,import_node_path2.join)(process.cwd(),outDir,main),head=[`
|
|
5
5
|
|
|
6
6
|
;await (async()=>{`," 'use strict';"].join(`
|
|
@@ -11,7 +11,7 @@ Run ${Colors.magenta("commandkit start")} ${Colors.green("to start your bot.")}`
|
|
|
11
11
|
|
|
12
12
|
`,contents].join(`
|
|
13
13
|
`);return(0,import_promises2.writeFile)(path,finalScript)}var import_promises2,import_node_path2,import_tsup,import_ora,init_build=__esm({"src/cli/build.ts"(){"use strict";init_cjs_shims();import_promises2=require("fs/promises"),import_node_path2=require("path"),import_tsup=require("tsup");init_common();import_ora=__toESM(require("ora"));init_plugin();__name(bootstrapProductionBuild,"bootstrapProductionBuild");__name(injectShims,"injectShims")}});var development_exports={};__export(development_exports,{bootstrapDevelopmentServer:()=>bootstrapDevelopmentServer});async function bootstrapDevelopmentServer(opts){let{src,main,watch=!!opts.noWatch,nodeOptions=[],envExtra=!0,clearRestartLogs=!0,outDir,requirePolyfill}=await findCommandKitConfig(opts.config);src||panic("Could not find src in commandkit.json"),main||panic("Could not find main in commandkit.json");let watchMode=watch,status=(0,import_ora2.default)(Colors.green(`Starting a development server...
|
|
14
|
-
`)).start(),start=performance.now();watchMode&&!nodeOptions.includes("--watch")?nodeOptions.push("--watch"):!watchMode&&nodeOptions.includes("--watch")&&nodeOptions.splice(nodeOptions.indexOf("--watch"),1),nodeOptions.includes("--enable-source-maps")||nodeOptions.push("--enable-source-maps"),erase(".commandkit");try{await(0,import_tsup2.build)({clean:!0,format:["esm"],dts:!1,skipNodeModulesBundle:!0,minify:!1,shims:!0,sourcemap:"inline",keepNames:!0,outDir:".commandkit",silent:!0,entry:[src,"!dist","!.commandkit",`!${outDir}`].filter(Boolean),watch:watchMode,cjsInterop:!0,async onSuccess(){return await injectShims(".commandkit",main,!1,requirePolyfill)},esbuildPlugins:[commandkitPlugin({"use-macro":!1})]}),status.succeed(Colors.green(`Dev server started in ${(performance.now()-start).toFixed(2)}ms!
|
|
14
|
+
`)).start(),start=performance.now();watchMode&&!nodeOptions.includes("--watch")?nodeOptions.push("--watch"):!watchMode&&nodeOptions.includes("--watch")&&nodeOptions.splice(nodeOptions.indexOf("--watch"),1),nodeOptions.includes("--enable-source-maps")||nodeOptions.push("--enable-source-maps"),erase(".commandkit");try{await(0,import_tsup2.build)({clean:!0,format:["esm"],dts:!1,skipNodeModulesBundle:!0,minify:!1,shims:!0,sourcemap:"inline",keepNames:!0,outDir:".commandkit",silent:!0,entry:[src,"!dist","!.commandkit",`!${outDir}`].filter(Boolean),watch:watchMode,cjsInterop:!0,jsxFactory:"CommandKit.createElement",jsxFragment:"CommandKit.Fragment",async onSuccess(){return await injectShims(".commandkit",main,!1,requirePolyfill)},esbuildPlugins:[commandkitPlugin({"use-macro":!1})]}),status.succeed(Colors.green(`Dev server started in ${(performance.now()-start).toFixed(2)}ms!
|
|
15
15
|
`)),watchMode&&write(Colors.cyan(`Watching for file changes...
|
|
16
16
|
`));let processEnv={},env=(0,import_dotenv.config)({path:(0,import_node_path3.join)(process.cwd(),".env"),processEnv});envExtra&&parseEnv(processEnv),env.error&&write(Colors.yellow(`[DOTENV] Warning: ${env.error.message}`)),env.parsed&&write(Colors.blue("[DOTENV] Loaded .env file!"));let ps=import_node_child_process.default.spawn("node",[...nodeOptions,(0,import_node_path3.join)(process.cwd(),".commandkit",main)],{env:{...process.env,...processEnv,NODE_ENV:"development",COMMANDKIT_DEV:!0,COMMANDKIT_PRODUCTION:!1},cwd:process.cwd()}),isLastLogRestarting=!1,hasStarted=!1;ps.stdout.on("data",data=>{let message=data.toString();if(FAILED_RUNNING_PATTERN.test(message)){write(Colors.cyan("Failed running the bot, waiting for changes...")),isLastLogRestarting=!1,hasStarted||(hasStarted=!0);return}if(clearRestartLogs&&!RESTARTING_MSG_PATTERN.test(message))write(message),isLastLogRestarting=!1;else{if(isLastLogRestarting||!hasStarted){hasStarted||(hasStarted=!0);return}write(Colors.cyan("\u2300 Restarting the bot...")),isLastLogRestarting=!0}hasStarted||(hasStarted=!0)}),ps.stderr.on("data",data=>{let message=data.toString();message.includes("ExperimentalWarning: Watch mode is an experimental feature and might change at any time")||write(Colors.red(message))}),ps.on("close",code=>{write(`
|
|
17
17
|
`),process.exit(code??0)}),ps.on("error",err=>{panic(err)})}catch(e){status.fail(`Error occurred after ${(performance.now()-start).toFixed(2)}ms!
|