@konomi-app/k2 2.1.5 → 3.0.0
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/index.js +278 -257
- package/dist/index.js.map +1 -1
- package/dist/plugin.js +346 -284
- package/dist/plugin.js.map +1 -1
- package/package.json +7 -21
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin.ts","../src/commands/plugin-build.ts","../src/lib/constants.ts","../src/lib/import.ts","../src/lib/tailwind.ts","../src/commands/build-base.ts","../src/lib/webpack.ts","../src/lib/lint.ts","../src/commands/plugin-esbuild.ts","../src/lib/esbuild.ts","../src/commands/plugin-dev/index.ts","../src/commands/dev-base-esbuild.ts","../src/lib/plugin-manifest.ts","../src/commands/plugin-dev/create-manifest.ts","../src/commands/plugin-dev/tailwind.ts","../src/commands/plugin-dev/upload.ts","../src/lib/plugin-contents.ts","../src/lib/zip.ts","../src/lib/kintone-api-client.ts","../src/lib/utils.ts","../src/commands/plugin-genkey.ts","../src/lib/exec.ts","../src/lib/cert.ts","../src/commands/genkey-base.ts","../src/commands/plugin-init.ts","../src/commands/manifest/index.ts","../src/commands/test/index.ts","../src/commands/plugin-zip.ts","../src/commands/lint.ts","../src/commands/plugin-tsup.ts","../src/lib/tsup.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { program } from 'commander';\nimport build from './commands/plugin-build.js';\nimport esbuild from './commands/plugin-esbuild.js';\nimport dev from './commands/plugin-dev/index.js';\nimport genkey from './commands/plugin-genkey.js';\nimport init from './commands/plugin-init.js';\nimport manifest from './commands/manifest/index.js';\nimport test from './commands/test/index.js';\nimport zip from './commands/plugin-zip.js';\nimport lint from './commands/lint.js';\nimport tsup from './commands/plugin-tsup.js';\n\nprogram.name('plugin').version('1.12.0').description('🍳 kintone kitchen 🍳 for kintone plugin');\n\nbuild();\nesbuild();\ndev();\ngenkey();\ninit();\nmanifest();\ntest();\nzip();\nlint();\ntsup();\n\nprogram.parse(process.argv);\n","import { program } from 'commander';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport { type Configuration } from 'webpack';\nimport { PLUGIN_CONTENTS_DIRECTORY } from '../lib/constants.js';\nimport { importK2PluginConfig } from '../lib/import.js';\nimport { getTailwindConfig, getTailwindInputCss, outputCss } from '../lib/tailwind.js';\nimport base from './build-base.js';\nimport { lint } from '../lib/lint.js';\n\nexport default function command() {\n program\n .command('build')\n .description(\"Build the project for production. (It's a wrapper of webpack build command.)\")\n .action(action);\n}\n\nexport async function action() {\n console.group('🍳 Build the project for production');\n\n try {\n const config = await importK2PluginConfig();\n\n if (config?.lint?.build) {\n await lint();\n console.log('✨ Lint success.');\n }\n\n if (!fs.existsSync(PLUGIN_CONTENTS_DIRECTORY)) {\n await fs.mkdir(PLUGIN_CONTENTS_DIRECTORY, { recursive: true });\n }\n\n const entries: Configuration['entry'] = {\n desktop: path.join('src', 'desktop', 'index.ts'),\n config: path.join('src', 'config', 'index.ts'),\n };\n\n if (config.tailwind?.css && config.tailwind?.config) {\n const tailwindConfig = await getTailwindConfig(config.tailwind);\n\n const inputFile = getTailwindInputCss(config.tailwind);\n\n await outputCss({\n inputPath: inputFile.config,\n outputPath: path.join(PLUGIN_CONTENTS_DIRECTORY, 'config.css'),\n config: tailwindConfig.config,\n minify: true,\n });\n console.log('✨ Built config.css');\n await outputCss({\n inputPath: inputFile.desktop,\n outputPath: path.join(PLUGIN_CONTENTS_DIRECTORY, 'desktop.css'),\n config: tailwindConfig.desktop,\n minify: true,\n });\n console.log('✨ Built desktop.css');\n }\n\n await base({ entries, outDir: PLUGIN_CONTENTS_DIRECTORY });\n console.log('✨ Built desktop.js and config.js');\n console.log('✨ Build success.');\n } catch (error) {\n throw error;\n } finally {\n console.groupEnd();\n }\n}\n","import path from 'path';\n\nexport const WORKSPACE_DIRECTORY = '.k2';\nexport const DEVELOPMENT_DIRECTORY = path.join(WORKSPACE_DIRECTORY, 'dev');\n\nexport const CONFIG_FILE_NAME = 'k2.config.mjs';\nexport const PLUGIN_CONFIG_FILE_NAME = 'plugin.config.mjs';\n\n/** kintoneプラグインの一時ファイルを管理するフォルダ */\nexport const PLUGIN_WORKSPACE_DIRECTORY = '.plugin';\n/** kintoneプラグインのcontents.zipに格納するファイルを管理するフォルダ */\nexport const PLUGIN_CONTENTS_DIRECTORY = path.join(PLUGIN_WORKSPACE_DIRECTORY, 'contents');\n/** kintoneプラグインの開発時、ローカルサーバーに反映するファイルを管理するフォルダ */\nexport const PLUGIN_DEVELOPMENT_DIRECTORY = path.join(PLUGIN_WORKSPACE_DIRECTORY, 'dev');\n\n/** ローカルサーバーのデフォルトポート番号 */\nexport const DEFAULT_PORT = 32767;\n","import { pathToFileURL } from 'url';\nimport { CONFIG_FILE_NAME, PLUGIN_CONFIG_FILE_NAME } from './constants.js';\nimport path from 'path';\n\nexport const esmImport = (path: string) => {\n if (process.platform === 'win32') {\n return import(pathToFileURL(path).toString());\n } else {\n return import(path);\n }\n};\n\nexport const importK2Config = async (configFileName?: string): Promise<K2.Config> => {\n return (await esmImport(path.resolve(configFileName ?? CONFIG_FILE_NAME))).default;\n};\n\nexport const importK2PluginConfig = async (\n configFileName?: string\n): Promise<Plugin.Meta.Config> => {\n return (await esmImport(path.resolve(configFileName ?? PLUGIN_CONFIG_FILE_NAME))).default;\n};\n","import chokidar from 'chokidar';\nimport cssnanoPlugin from 'cssnano';\nimport fs from 'fs-extra';\nimport { glob } from 'glob';\nimport path from 'path';\nimport postcss from 'postcss';\nimport { debounce } from 'remeda';\nimport tailwindcss, { type Config as TailwindConfig } from 'tailwindcss';\nimport invariant from 'tiny-invariant';\nimport { esmImport } from './import.js';\n\nexport const getTailwindConfigFromK2Config = async (\n k2Config: K2.Config['tailwind']\n): Promise<TailwindConfig> => {\n invariant(k2Config?.config, 'tailwind.config is required');\n const config = (await esmImport(path.resolve(k2Config?.config))).default;\n return config;\n};\n\nexport const getTailwindInputCss = (\n config: Plugin.Meta.Config['tailwind']\n): { desktop: string; config: string } => {\n invariant(config?.css, 'tailwind.css is required');\n const { css } = config;\n if (typeof css === 'string') {\n const resolved = path.resolve(css);\n return { desktop: resolved, config: resolved };\n }\n return {\n desktop: path.resolve(css.desktop),\n config: path.resolve(css.config),\n };\n};\n\nexport const getTailwindConfig = async (\n config: Plugin.Meta.Config['tailwind']\n): Promise<{\n desktop: TailwindConfig;\n config: TailwindConfig;\n}> => {\n invariant(config?.config, 'tailwind.config is required');\n\n const { config: configPath } = config;\n\n const configPathForDesktop = typeof configPath === 'string' ? configPath : configPath.desktop;\n const configPathForConfig = typeof configPath === 'string' ? configPath : configPath.config;\n\n const desktopConfig = (await esmImport(path.resolve(configPathForDesktop))).default;\n const configConfig = (await esmImport(path.resolve(configPathForConfig))).default;\n\n return { desktop: desktopConfig, config: configConfig };\n};\n\nexport const outputCss = async (params: {\n inputPath: string;\n outputPath: string;\n config: TailwindConfig;\n minify?: boolean;\n}) => {\n const { inputPath, outputPath, config, minify = false } = params;\n\n const css = await fs.readFile(inputPath, 'utf8');\n\n const result = await postcss([tailwindcss(config), ...(minify ? [cssnanoPlugin()] : [])]).process(\n css,\n {\n from: inputPath,\n to: outputPath,\n }\n );\n\n await fs.writeFile(outputPath, result.css);\n\n if (result.map) {\n await fs.writeFile(`${outputPath}.map`, result.map.toString());\n }\n};\n\ntype WatchType = 'init' | 'add' | 'change' | 'unlink';\n\nexport const watchTailwindCSS = async (params: {\n /** input path */\n input: string;\n /** output path */\n output: string;\n /** tailwindcss config file */\n config: TailwindConfig;\n /** callback function */\n onChanges?: (params: { input: string; output: string; type: WatchType }) => void;\n}) => {\n const { input, output, config } = params;\n\n const content = (config.content as string[] | undefined) ?? ['./src/**/*.{ts,tsx}'];\n\n const files = await glob([...content, input], { ignore: ['**/node_modules/**'] });\n\n const watcher = chokidar.watch(files, {\n persistent: true,\n ignoreInitial: true,\n });\n\n let isInitialized = false;\n\n const processChanges = async (type: WatchType) => {\n try {\n await outputCss({ inputPath: input, outputPath: output, config });\n params.onChanges?.({ input, output, type });\n } catch (error) {\n console.error('Error building Tailwind CSS:', error);\n }\n };\n\n const debouncedProcessChanges = debounce(processChanges, { waitMs: 1000 });\n\n watcher.on('ready', async () => {\n if (!isInitialized) {\n isInitialized = true;\n await processChanges('init');\n }\n });\n\n watcher.on('error', (error) => {\n console.error('Error watching Tailwind CSS:', error);\n });\n\n watcher.on('add', (path) => {\n debouncedProcessChanges.call('add');\n });\n watcher.on('change', (path) => {\n debouncedProcessChanges.call('change');\n });\n watcher.on('unlink', (path) => {\n debouncedProcessChanges.call('unlink');\n });\n watcher.on('unlinkDir', (path) => {\n debouncedProcessChanges.call('unlink');\n });\n\n return watcher;\n};\n","import { type Configuration } from 'webpack';\nimport { buildWithWebpack } from '../lib/webpack.js';\n\nexport default async function action(params: { entries: Configuration['entry']; outDir: string }) {\n const { entries, outDir } = params;\n return buildWithWebpack({ entries, outDir });\n}\n","import MiniCssExtractPlugin from 'mini-css-extract-plugin';\r\nimport path from 'path';\r\nimport { cwd } from 'process';\r\nimport TerserPlugin from 'terser-webpack-plugin';\r\nimport webpack, { type Configuration } from 'webpack';\r\nimport chalk from 'chalk';\r\nimport { TsconfigPathsPlugin } from 'tsconfig-paths-webpack-plugin';\r\n\r\nexport const buildWithWebpack = async (props: {\r\n entries: Configuration['entry'];\r\n outDir: string;\r\n}) => {\r\n const { entries, outDir } = props;\r\n\r\n const exclude = /node_modules/;\r\n const styleLoader = MiniCssExtractPlugin.loader;\r\n\r\n const tsConfigPath = path.join(cwd(), 'tsconfig.json');\r\n\r\n console.group(chalk.blue('🚀 Building with Webpack...'));\r\n console.log('🔧 tsconfig.json path:', tsConfigPath);\r\n console.groupEnd();\r\n\r\n return new Promise<void>((resolve, reject) => {\r\n webpack(\r\n {\r\n mode: 'production',\r\n target: ['web', 'es2023'],\r\n entry: entries,\r\n resolve: {\r\n extensions: ['.ts', '.tsx', '.js', '.json'],\r\n fallback: {\r\n path: false,\r\n },\r\n plugins: [new TsconfigPathsPlugin({ configFile: tsConfigPath })],\r\n },\r\n cache: { type: 'filesystem' },\r\n output: { filename: '[name].js', path: path.resolve(outDir) },\r\n module: {\r\n rules: [\r\n { test: /\\.tsx?$/, exclude, loader: 'ts-loader' },\r\n { test: /\\.css$/, use: [styleLoader, 'css-loader'] },\r\n {\r\n test: /\\.scss$/,\r\n use: [\r\n styleLoader,\r\n 'css-loader',\r\n { loader: 'sass-loader', options: { sassOptions: { outputStyle: 'expanded' } } },\r\n ],\r\n },\r\n ],\r\n },\r\n plugins: [new MiniCssExtractPlugin()],\r\n optimization: {\r\n minimize: true,\r\n minimizer: [\r\n new TerserPlugin({\r\n terserOptions: { format: { comments: false } },\r\n extractComments: false,\r\n }),\r\n ],\r\n },\r\n },\r\n (err, stats) => {\r\n if (err) {\r\n reject(err);\r\n } else {\r\n if (stats?.compilation.errors.length) {\r\n reject(\r\n [\r\n chalk.red('⚠ Build failed.'),\r\n ...stats.compilation.errors.map((error) => error.message),\r\n ].join('\\n')\r\n );\r\n } else {\r\n resolve();\r\n }\r\n }\r\n }\r\n );\r\n });\r\n};\r\n","import { ESLint } from 'eslint';\nimport globals from 'globals';\nimport pluginJs from '@eslint/js';\nimport tseslint from 'typescript-eslint';\nimport pluginReact from 'eslint-plugin-react';\n\nexport async function lint() {\n const eslint = new ESLint({\n baseConfig: [\n { files: ['**/*.{js,mjs,cjs,ts,jsx,tsx}'] },\n { languageOptions: { globals: globals.browser } },\n pluginJs.configs.recommended,\n // ...tseslint.configs.recommended,\n ...(pluginReact.configs.flat?.recommended ? [pluginReact.configs.flat.recommended] : []),\n ],\n });\n\n const results = await eslint.lintFiles(['src/**/*.{ts,tsx?}']);\n\n const formatter = await eslint.loadFormatter('stylish');\n const resultText = formatter.format(results);\n\n console.group('👕 Lint Results');\n console.log(resultText);\n console.groupEnd();\n\n const hasErrors = results.some((result) => result.errorCount > 0);\n if (hasErrors) {\n console.error('🚨 Lint errors found');\n process.exit(1);\n }\n}\n","import { program } from 'commander';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport { PLUGIN_CONTENTS_DIRECTORY } from '../lib/constants.js';\nimport { importK2PluginConfig } from '../lib/import.js';\nimport { getTailwindConfig, getTailwindInputCss, outputCss } from '../lib/tailwind.js';\nimport { type BuildOptions } from 'esbuild';\nimport { buildWithEsbuild } from '../lib/esbuild.js';\nimport { lint } from '../lib/lint.js';\n\nexport default function command() {\n program\n .command('esbuild')\n .description(\"Build the project for production. (It's a wrapper of webpack build command.)\")\n .action(action);\n}\n\nexport async function action() {\n console.group('🍳 Build the project for production');\n\n try {\n const config = await importK2PluginConfig();\n\n if (config?.lint?.build) {\n await lint();\n console.log('✨ Lint success.');\n }\n\n if (!fs.existsSync(PLUGIN_CONTENTS_DIRECTORY)) {\n await fs.mkdir(PLUGIN_CONTENTS_DIRECTORY, { recursive: true });\n }\n\n if (config.tailwind?.css && config.tailwind?.config) {\n const tailwindConfig = await getTailwindConfig(config.tailwind);\n\n const inputFile = getTailwindInputCss(config.tailwind);\n\n await outputCss({\n inputPath: inputFile.config,\n outputPath: path.join(PLUGIN_CONTENTS_DIRECTORY, 'config.css'),\n config: tailwindConfig.config,\n minify: true,\n });\n console.log('✨ Built config.css');\n await outputCss({\n inputPath: inputFile.desktop,\n outputPath: path.join(PLUGIN_CONTENTS_DIRECTORY, 'desktop.css'),\n config: tailwindConfig.desktop,\n minify: true,\n });\n console.log('✨ Built desktop.css');\n }\n\n const entryPoints: BuildOptions['entryPoints'] = ['desktop', 'config'].map((dir) => ({\n in: path.join('src', dir, 'index.ts'),\n out: dir,\n }));\n\n await buildWithEsbuild({\n entryPoints,\n outdir: PLUGIN_CONTENTS_DIRECTORY,\n minify: true,\n sourcemap: false,\n legalComments: 'none',\n });\n console.log('✨ Built desktop.js and config.js');\n console.log('✨ Build success.');\n } catch (error) {\n throw error;\n } finally {\n console.groupEnd();\n }\n}\n","import chalk from 'chalk';\nimport esbuild, { type BuildOptions } from 'esbuild';\n\nconst completeBuildOptions = (params: BuildOptions): BuildOptions => {\n return {\n bundle: true,\n platform: 'browser',\n ...params,\n plugins: [...(params.plugins ?? [])],\n };\n};\n\nconst completeDevBuildOptions = (params: BuildOptions): BuildOptions => {\n return completeBuildOptions({\n ...params,\n plugins: [\n ...(params.plugins ?? []),\n {\n name: 'on-end',\n setup: ({ onEnd }) =>\n onEnd(() =>\n console.log(\n chalk.hex('#e5e7eb')(`${new Date().toLocaleTimeString()} `) +\n chalk.cyan(`[js] `) +\n `rebuilt`\n )\n ),\n },\n ],\n });\n};\n\nexport const getEsbuildContext = async (params: BuildOptions) => {\n return esbuild.context(completeDevBuildOptions(params));\n};\n\nexport const buildWithEsbuild = async (params: BuildOptions & { watch?: boolean }) => {\n const { watch = false, ...rest } = params;\n if (watch) {\n const context = await getEsbuildContext(rest);\n context.watch();\n } else {\n const options = completeBuildOptions(rest);\n await esbuild.build(options);\n }\n};\n","import { program } from 'commander';\nimport { type BuildOptions } from 'esbuild';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport {\n DEFAULT_PORT,\n PLUGIN_DEVELOPMENT_DIRECTORY,\n PLUGIN_WORKSPACE_DIRECTORY,\n} from '../../lib/constants.js';\nimport { importK2PluginConfig } from '../../lib/import.js';\nimport base from '../dev-base-esbuild.js';\nimport { getManifest } from './create-manifest.js';\nimport { watchCss } from './tailwind.js';\nimport { watchContentsAndUploadZip } from './upload.js';\n\nexport default function command() {\n program\n .command('dev')\n .option(\n '-p, --ppk <ppk>',\n '.ppk file path',\n path.join(PLUGIN_WORKSPACE_DIRECTORY, 'private.ppk')\n )\n .option('-c, --cert-dir <certDir>', 'Certificate directory', PLUGIN_WORKSPACE_DIRECTORY)\n .description('Start development server.')\n .action(action);\n}\n\nexport async function action(options: { ppk: string; certDir: string }) {\n console.group('🍳 Start development server');\n try {\n const { ppk: ppkPath, certDir } = options;\n const config = await importK2PluginConfig();\n\n if (!fs.existsSync(PLUGIN_DEVELOPMENT_DIRECTORY)) {\n await fs.mkdir(PLUGIN_DEVELOPMENT_DIRECTORY, { recursive: true });\n }\n\n const port = config.server?.port ?? DEFAULT_PORT;\n\n const manifest = await getManifest({ config, port });\n console.log(`📝 manifest.json generated`);\n\n Promise.all([\n watchContentsAndUploadZip({ manifest, ppkPath }),\n watchCss(config),\n build(port, certDir),\n ]);\n } catch (error) {\n throw error;\n } finally {\n console.groupEnd();\n }\n}\n\nasync function build(\n port: number,\n certDir = PLUGIN_WORKSPACE_DIRECTORY,\n staticDir = PLUGIN_DEVELOPMENT_DIRECTORY\n) {\n const entryPoints: BuildOptions['entryPoints'] = ['desktop', 'config'].map((dir) => ({\n in: path.join('src', dir, 'index.ts'),\n out: dir,\n }));\n\n base({ port, entryPoints, certDir, staticDir });\n}\n","import { type BuildOptions } from 'esbuild';\nimport path from 'path';\nimport { getEsbuildContext } from '../lib/esbuild.js';\n\nexport default async function action(params: {\n entryPoints: BuildOptions['entryPoints'];\n staticDir: string;\n certDir: string;\n port: number;\n}) {\n const { entryPoints, staticDir: outdir, certDir, port } = params;\n\n const context = await getEsbuildContext({ sourcemap: 'inline', entryPoints, outdir });\n\n const [_, serveResult] = await Promise.all([\n context.watch(),\n context.serve({\n port,\n keyfile: path.join(certDir, 'localhost-key.pem'),\n certfile: path.join(certDir, 'localhost-cert.pem'),\n servedir: outdir,\n }),\n ]);\n\n console.log(`🚀 Start development server at https://localhost:${serveResult.port}`);\n}\n","import { PLUGIN_CONTENTS_DIRECTORY } from './constants.js';\nimport { importK2PluginConfig } from './import.js';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport merge from 'deepmerge';\n\nexport const outputManifest = async (\n env: 'dev' | 'prod' | 'standalone',\n options?: { config?: Plugin.Meta.Config }\n): Promise<Plugin.Meta.Manifest> => {\n const config = options?.config || (await importK2PluginConfig());\n\n const merged = merge(config.manifest.base, config.manifest[env] || {}) as Plugin.Meta.Manifest;\n\n await fs.mkdirs(PLUGIN_CONTENTS_DIRECTORY);\n await fs.writeJson(path.join(PLUGIN_CONTENTS_DIRECTORY, 'manifest.json'), merged);\n\n return merged;\n};\n","import { outputManifest } from '../../lib/plugin-manifest.js';\n\nexport const getManifest = async (params: { config: Plugin.Meta.Config; port: number }) => {\n const { config, port } = params;\n return outputManifest('dev', {\n config: {\n ...config,\n manifest: {\n ...config.manifest,\n dev: {\n config: {\n ...config.manifest?.dev?.config,\n js: [`https://localhost:${port}/config.js`],\n css: [`https://localhost:${port}/config.css`],\n },\n desktop: {\n ...config.manifest?.dev?.desktop,\n js: [`https://localhost:${port}/desktop.js`],\n css: [`https://localhost:${port}/desktop.css`],\n },\n mobile: {\n ...config.manifest?.dev?.mobile,\n js: [`https://localhost:${port}/desktop.js`],\n css: [`https://localhost:${port}/desktop.css`],\n },\n },\n },\n },\n });\n};\n","import path from 'path';\nimport { type Config as TailwindConfig } from 'tailwindcss';\nimport { PLUGIN_DEVELOPMENT_DIRECTORY } from '../../lib/constants.js';\nimport chalk from 'chalk';\nimport { getTailwindConfig, getTailwindInputCss, watchTailwindCSS } from '../../lib/tailwind.js';\n\nasync function buildTailwindCSS(params: {\n inputFile: string;\n outputFileName: string;\n config: TailwindConfig;\n}) {\n const { inputFile, outputFileName, config } = params;\n const inputPath = path.resolve(inputFile);\n const outputPath = path.join(PLUGIN_DEVELOPMENT_DIRECTORY, outputFileName);\n\n return watchTailwindCSS({\n input: inputPath,\n output: outputPath,\n config,\n onChanges: ({ output, type }) => {\n const outputFileName = path.basename(output);\n console.log(\n chalk.hex('#e5e7eb')(`${new Date().toLocaleTimeString()} `) +\n chalk.cyan(`[css] `) +\n outputFileName +\n (type === 'init' ? ' init' : ` rebuilt`)\n );\n },\n });\n}\n\nexport const watchCss = async (pluginConfig: Plugin.Meta.Config) => {\n if (!pluginConfig.tailwind?.css || !pluginConfig.tailwind?.config) {\n return;\n }\n\n const tailwindConfig = await getTailwindConfig(pluginConfig.tailwind);\n\n const inputFile = getTailwindInputCss(pluginConfig.tailwind);\n\n return Promise.all([\n buildTailwindCSS({\n inputFile: inputFile.desktop,\n outputFileName: 'desktop.css',\n config: tailwindConfig.desktop,\n }),\n buildTailwindCSS({\n inputFile: inputFile.config,\n outputFileName: 'config.css',\n config: tailwindConfig.config,\n }),\n ]);\n};\n","import packer from '@kintone/plugin-packer';\nimport { copyPluginContents } from '../../lib/plugin-contents.js';\nimport { getContentsZipBuffer, getZipFileNameSuffix, outputContentsZip } from '../../lib/zip.js';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport { PLUGIN_WORKSPACE_DIRECTORY } from '../../lib/constants.js';\nimport { apiUploadZip } from '../../lib/utils.js';\nimport chokider from 'chokidar';\nimport chalk from 'chalk';\n\nexport const watchContentsAndUploadZip = async (params: {\n manifest: Plugin.Meta.Manifest;\n ppkPath: string;\n}) => {\n const { manifest, ppkPath } = params;\n\n let initialScanComplete = false;\n\n const contentsListener = async () => {\n try {\n if (!initialScanComplete) {\n return;\n }\n await copyPluginContents();\n console.log(\n chalk.hex('#e5e7eb')(`${new Date().toLocaleTimeString()} `) +\n chalk.cyan(`[contents] `) +\n `updated`\n );\n } catch (error: any) {\n console.error('Error copying plugin contents:', error);\n return;\n }\n\n try {\n await outputContentsZip(manifest);\n const buffer = await getContentsZipBuffer();\n const pluginPrivateKey = await fs.readFile(path.resolve(ppkPath), 'utf8');\n\n const output = await packer(buffer, pluginPrivateKey);\n\n const zipFileName = `plugin${getZipFileNameSuffix('dev')}.zip`;\n\n await fs.writeFile(path.join(PLUGIN_WORKSPACE_DIRECTORY, zipFileName), output.plugin);\n\n const { method } = await apiUploadZip({ env: 'dev', pluginId: output.id });\n console.log(\n chalk.hex('#e5e7eb')(`${new Date().toLocaleTimeString()} `) +\n chalk.cyan(`[upload] `) +\n `uploaded ${method === 'POST' ? '(new)' : '(update)'}`\n );\n } catch (error: any) {\n console.log(\n chalk.hex('#e5e7eb')(`${new Date().toLocaleTimeString()} `) +\n chalk.cyan(`[upload] `) +\n chalk.red(`failed`) +\n chalk.hex('#e5e7eb')(`: ${error?.message ?? 'Unknown error'}`)\n );\n }\n };\n\n const contentsWatcher = chokider.watch(['src/contents/**/*'], {\n ignored: /node_modules/,\n persistent: true,\n });\n\n contentsWatcher.on('ready', () => {\n initialScanComplete = true;\n contentsListener();\n });\n\n contentsWatcher.on('change', contentsListener);\n contentsWatcher.on('add', contentsListener);\n contentsWatcher.on('unlink', contentsListener);\n};\n","import fs from 'fs-extra';\nimport path from 'path';\nimport { PLUGIN_CONTENTS_DIRECTORY } from './constants.js';\nimport htmlMinifier from 'html-minifier';\n\nexport const copyPluginContents = async (\n params: { inputDir?: string; outputDir?: string } = {}\n) => {\n const { inputDir = path.join('src', 'contents'), outputDir = PLUGIN_CONTENTS_DIRECTORY } = params;\n if (!fs.existsSync(inputDir)) {\n await fs.mkdir(inputDir, { recursive: true });\n }\n\n await fs.copy(inputDir, outputDir, { overwrite: true });\n\n const configHtmlPath = path.join(outputDir, 'config.html');\n\n if (!fs.existsSync(configHtmlPath)) {\n throw new Error(`Plugin HTML file not found. Create \"config.html\" in ${inputDir}.`);\n }\n\n const html = await fs.readFile(configHtmlPath, 'utf8');\n\n const minified = htmlMinifier.minify(html, {\n minifyCSS: true,\n collapseWhitespace: true,\n removeComments: true,\n removeOptionalTags: true,\n removeRedundantAttributes: true,\n removeScriptTypeAttributes: true,\n removeTagWhitespace: true,\n useShortDoctype: true,\n });\n\n await fs.writeFile(configHtmlPath, minified);\n};\n","import archiver from 'archiver';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport invariant from 'tiny-invariant';\nimport { PLUGIN_CONTENTS_DIRECTORY, PLUGIN_WORKSPACE_DIRECTORY } from './constants.js';\n\nexport const outputContentsZip = async (manifest: Plugin.Meta.Manifest) => {\n const archive = archiver('zip', { zlib: { level: 9 } });\n archive.on('warning', (error) => {\n if (error.code === 'ENOENT') {\n console.warn(error);\n } else {\n throw error;\n }\n });\n\n const outputZipPath = path.join(PLUGIN_WORKSPACE_DIRECTORY, 'contents.zip');\n const outputZipStream = fs.createWriteStream(outputZipPath);\n outputZipStream.on('close', () => {\n console.log(`📦 ${archive.pointer()} total bytes`);\n });\n outputZipStream.on('end', function () {\n console.log('📦 Data has been drained');\n });\n\n const filterLocalContent = (file: string) => {\n return !/^https?:\\/\\//.test(file);\n };\n\n invariant(manifest.config?.html, 'manifest.config.html is required');\n\n const targetFiles = [\n 'manifest.json',\n ...new Set([\n manifest.icon,\n manifest.config.html,\n ...(manifest.desktop?.js || []).filter(filterLocalContent),\n ...(manifest.desktop?.css || []).filter(filterLocalContent),\n ...(manifest.mobile?.js || []).filter(filterLocalContent),\n ...(manifest.mobile?.css || []).filter(filterLocalContent),\n ...(manifest.config.js || []).filter(filterLocalContent),\n ...(manifest.config.css || []).filter(filterLocalContent),\n ]),\n ];\n\n console.group('📁 Target files');\n targetFiles.forEach((file, i) => {\n const prefix = i === targetFiles.length - 1 ? '└─' : '├─';\n console.log(`${prefix} 📄 ${file}`);\n });\n console.groupEnd();\n\n for (const file of targetFiles) {\n const filePath = path.join(PLUGIN_CONTENTS_DIRECTORY, file);\n if (!fs.existsSync(filePath)) {\n throw new Error(`${filePath} does not exist`);\n }\n archive.file(filePath, { name: file });\n }\n\n archive.pipe(outputZipStream);\n await archive.finalize();\n await new Promise<void>((resolve) => outputZipStream.on('close', resolve));\n};\n\nexport const getContentsZipBuffer = async () => {\n const outputZipPath = path.join(PLUGIN_WORKSPACE_DIRECTORY, 'contents.zip');\n return fs.readFile(outputZipPath);\n};\n\nexport const getZipFileNameSuffix = (env: string) => {\n return env === 'prod' ? '' : `-${env}`;\n};\n","import { config } from 'dotenv';\n\ntype GetPluginsParams = {\n offset?: number;\n limit?: number;\n};\ntype Plugin = {\n id: string;\n name: string;\n isMarketplace: boolean;\n version: string;\n};\n\ntype GetPluginsSuccessResponse = {\n plugins: Plugin[];\n};\ntype GetPluginResponse = GetPluginsSuccessResponse;\n\ntype AddPluginSuccessResponse = {\n id: string;\n revision: string;\n};\ntype AddPluginErrorResponse = {\n code: string;\n id: string;\n message: string;\n};\ntype AddPluginResponse = AddPluginSuccessResponse | AddPluginErrorResponse;\n\ntype UpdatePluginSuccessResponse = {\n id: string;\n revision: string;\n};\ntype UpdatePluginErrorResponse = {\n code: string;\n id: string;\n message: string;\n errors?: Record<string, { messages: string[] }>;\n};\ntype UpdatePluginResponse = UpdatePluginSuccessResponse | UpdatePluginErrorResponse;\n\nexport class KintoneApiClient {\n #baseUrl: string;\n #authHeader: Record<string, string>;\n\n public constructor() {\n config();\n\n const {\n KINTONE_BASE_URL,\n KINTONE_USERNAME,\n KINTONE_PASSWORD,\n KINTONE_BASIC_AUTH_USERNAME = '',\n KINTONE_BASIC_AUTH_PASSWORD = '',\n } = process.env;\n if (!KINTONE_BASE_URL || !KINTONE_USERNAME || !KINTONE_PASSWORD) {\n throw new Error(`.envの設定が不十分です。以下のパラメータは必須です\nKINTONE_BASE_URL\nKINTONE_USERNAME\nKINTONE_PASSWORD`);\n }\n\n const authHeader = {\n 'X-Cybozu-Authorization': Buffer.from(`${KINTONE_USERNAME}:${KINTONE_PASSWORD}`).toString(\n 'base64'\n ),\n ...(KINTONE_BASIC_AUTH_USERNAME &&\n KINTONE_BASIC_AUTH_PASSWORD && {\n Authorization: `Basic ${Buffer.from(\n `${KINTONE_BASIC_AUTH_USERNAME}:${KINTONE_BASIC_AUTH_PASSWORD}`\n ).toString('base64')}`,\n }),\n };\n this.#baseUrl = KINTONE_BASE_URL;\n this.#authHeader = authHeader;\n }\n\n private getEndpointUrl(path: string): string {\n return `${this.#baseUrl}${path}`;\n }\n\n public async upload(params: { blob: Blob; fileName: string }): Promise<string> {\n const { blob, fileName } = params;\n\n const form = new FormData();\n form.append('file', blob, fileName);\n\n const uploadResult = await fetch(this.getEndpointUrl('/k/v1/file.json'), {\n method: 'POST',\n headers: this.#authHeader,\n body: form,\n });\n\n const { fileKey }: { fileKey: string } = await uploadResult.json();\n\n return fileKey;\n }\n\n public async getPlugins(params: GetPluginsParams = {}): Promise<GetPluginResponse> {\n const url = new URL(this.getEndpointUrl('/k/v1/plugins.json'));\n if (params.offset) {\n url.searchParams.set('offset', String(params.offset));\n }\n if (params.limit) {\n url.searchParams.set('limit', String(params.limit));\n }\n\n const pluginResponse = await fetch(url.toString(), {\n headers: this.#authHeader,\n });\n\n return pluginResponse.json();\n }\n\n public async getAllPlugins(): Promise<Plugin[]> {\n const plugins: Plugin[] = [];\n let offset = 0;\n let limit = 100;\n let hasMore = true;\n\n while (hasMore) {\n const { plugins: currentPlugins } = await this.getPlugins({ offset, limit });\n plugins.push(...currentPlugins);\n\n if (currentPlugins.length < limit) {\n hasMore = false;\n } else {\n offset += limit;\n }\n }\n\n return plugins;\n }\n\n public async addPlugin(params: { fileKey: string }): Promise<AddPluginResponse> {\n const { fileKey } = params;\n\n const pluginResponse = await fetch(this.getEndpointUrl('/k/v1/plugin.json'), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...this.#authHeader,\n },\n body: JSON.stringify({\n fileKey,\n }),\n });\n\n return pluginResponse.json();\n }\n\n public async updatePlugin(params: {\n id: string;\n fileKey: string;\n }): Promise<UpdatePluginResponse> {\n const pluginResponse = await fetch(this.getEndpointUrl('/k/v1/plugin.json'), {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n ...this.#authHeader,\n },\n body: JSON.stringify(params),\n });\n\n return pluginResponse.json();\n }\n}\n","import { PLUGIN_WORKSPACE_DIRECTORY } from './constants.js';\nimport { KintoneApiClient } from './kintone-api-client.js';\nimport { getZipFileNameSuffix } from './zip.js';\nimport fs from 'fs-extra';\nimport path from 'path';\n\nexport const isEnv = (env: string): env is Plugin.Meta.Env => {\n return ['prod', 'dev', 'standalone'].includes(env);\n};\n\n/**\n * プラグインを追加・更新するAPIを利用してプラグインをアップロードします\n */\nexport const apiUploadZip = async (params: {\n env: Plugin.Meta.Env;\n pluginId: string;\n}): Promise<{ method: 'PUT' | 'POST' }> => {\n const { env, pluginId } = params;\n\n const kc = new KintoneApiClient();\n\n const zipFileName = `plugin${getZipFileNameSuffix(env)}.zip`;\n\n const zipFile = new Blob([await fs.readFile(path.join(PLUGIN_WORKSPACE_DIRECTORY, zipFileName))]);\n\n const fileKey = await kc.upload({ blob: zipFile, fileName: zipFileName });\n\n const plugins = await kc.getAllPlugins();\n\n const plugin = plugins.find((p) => p.id === pluginId);\n if (plugin) {\n const json = await kc.updatePlugin({ id: pluginId, fileKey });\n if ('errors' in json && json.errors) {\n console.error((json.errors.id?.messages ?? []).map((m: string) => `Error: ${m}`).join('\\n'));\n }\n return { method: 'PUT' };\n }\n const result = await kc.addPlugin({ fileKey });\n if ('code' in result) {\n console.error(`Error: ${result.message}`);\n }\n return { method: 'POST' };\n};\n\n/**\n * @kintone/plugin-uploaderを利用してプラグインをアップロードします\n * APIを使用した方が高速ですが、2024年11月までは設定により無効になる可能性があるため、暫定的に残しています\n * 使用するには@kintone/plugin-uploaderがインストールされている必要があります\n */\n/*\nexport const uploadZip = async (env: Plugin.Meta.Env) => {\n config();\n\n const {\n KINTONE_BASE_URL,\n KINTONE_USERNAME,\n KINTONE_PASSWORD,\n KINTONE_BASIC_AUTH_USERNAME = '',\n KINTONE_BASIC_AUTH_PASSWORD = '',\n } = process.env;\n if (!KINTONE_BASE_URL || !KINTONE_USERNAME || !KINTONE_PASSWORD) {\n throw new Error(`.envの設定が不十分です。以下のパラメータは必須です\nKINTONE_BASE_URL\nKINTONE_USERNAME\nKINTONE_PASSWORD`);\n }\n\n const zipFileName = `plugin${getZipFileNameSuffix(env)}.zip`;\n\n let command = `kintone-plugin-uploader ${PLUGIN_WORKSPACE_DIRECTORY}/${zipFileName} --base-url ${KINTONE_BASE_URL} --username ${KINTONE_USERNAME} --password ${KINTONE_PASSWORD}`;\n if (KINTONE_BASIC_AUTH_USERNAME && KINTONE_BASIC_AUTH_PASSWORD) {\n command += ` --basic-auth-username ${KINTONE_BASIC_AUTH_USERNAME} --basic-auth-password ${KINTONE_BASIC_AUTH_PASSWORD}`;\n }\n\n return exec(command);\n};\n*/\n","import { program } from 'commander';\nimport base from './genkey-base.js';\nimport { PLUGIN_WORKSPACE_DIRECTORY } from '../lib/constants.js';\n\nexport default function command() {\n program\n .command('genkey')\n .description('Generate SSL key for localhost. (Require mkcert)')\n .action(action);\n}\n\nexport async function action() {\n await base({ output: PLUGIN_WORKSPACE_DIRECTORY });\n}\n","import { exec as defaultExec } from 'child_process';\nimport { promisify } from 'util';\n\nexport const exec = promisify(defaultExec);\n","import { exec } from './exec.js';\nimport fs from 'fs-extra';\nimport path from 'path';\n\nexport const generateCert = async (outDir: string) => {\n const { stdout } = await exec(`mkcert localhost 127.0.0.1 ::1`);\n [\n { input: 'localhost+2.pem', output: 'localhost-cert.pem' },\n { input: 'localhost+2-key.pem', output: 'localhost-key.pem' },\n ].forEach(({ input, output }) => {\n fs.moveSync(`./${input}`, path.join(outDir, output), {\n overwrite: true,\n });\n });\n return { stdout };\n};\n","import { generateCert } from '../lib/cert.js';\n\nexport default async function action(options: { output: string }) {\n const { output } = options;\n\n console.group('🍳 Generate SSL key for localhost');\n try {\n const { stdout } = await generateCert(output);\n if (stdout) {\n console.log(stdout);\n }\n console.log(`🔑 key generation success. Output to ./${output}`);\n } catch (error) {\n throw error;\n } finally {\n console.groupEnd();\n }\n}\n","import { program } from 'commander';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport packer from '@kintone/plugin-packer';\nimport { outputManifest } from '../lib/plugin-manifest.js';\nimport { PLUGIN_WORKSPACE_DIRECTORY } from '../lib/constants.js';\nimport { getContentsZipBuffer, outputContentsZip } from '../lib/zip.js';\nimport { copyPluginContents } from '../lib/plugin-contents.js';\n\nexport default function command() {\n program.command('init').description('generate private.ppk and kitting config').action(action);\n}\n\nexport async function action() {\n console.group('🍳 Executing plugin initialization setup');\n try {\n const manifest = await outputManifest('dev');\n console.log('📝 manifest.json generated');\n\n await copyPluginContents();\n console.log('📁 contents copied');\n\n let privateKey: string | undefined;\n const keyPath = path.join(PLUGIN_WORKSPACE_DIRECTORY, 'private.ppk');\n if (fs.existsSync(keyPath)) {\n privateKey = await fs.readFile(keyPath, 'utf8');\n }\n\n await outputContentsZip(manifest);\n const buffer = await getContentsZipBuffer();\n\n const output = await packer(buffer, privateKey);\n\n if (!privateKey) {\n await fs.writeFile(path.join(PLUGIN_WORKSPACE_DIRECTORY, 'private.ppk'), output.privateKey);\n console.log('🔑 private.ppk generated');\n } else {\n console.log('🔑 private.ppk already exists. The existing private.ppk will be used.');\n }\n await fs.writeFile(path.join(PLUGIN_WORKSPACE_DIRECTORY, 'plugin.zip'), output.plugin);\n console.log('📦 plugin.zip generated');\n console.log('✨ Plugin initialization setup completed! zip file path is ./.plugin/plugin.zip');\n } catch (error) {\n throw error;\n } finally {\n console.groupEnd();\n }\n}\n","import { program } from 'commander';\nimport { outputManifest } from '../../lib/plugin-manifest.js';\nimport { copyPluginContents } from '../../lib/plugin-contents.js';\n\nexport default function command(): void {\n program\n .command('manifest')\n .option('-e, --env <env>', 'create manifest', 'prod')\n .action(action);\n}\n\nasync function action(options: { env: string }): Promise<void> {\n console.group('🚀 Executing manifest generation');\n try {\n const { env } = options;\n if (env !== 'prod' && env !== 'dev' && env !== 'standalone') {\n throw new Error('Invalid environment');\n }\n\n await copyPluginContents();\n console.log('📁 contents copied');\n\n await outputManifest(env);\n console.log(`📝 manifest.json generated (${env})`);\n } catch (error) {\n throw error;\n } finally {\n console.groupEnd();\n }\n}\n","import { program } from 'commander';\nimport fs from 'fs-extra';\nimport { esmImport } from '../../lib/import.js';\n\nexport default function command() {\n program.command('test').description('test').action(action);\n}\n\nexport async function action() {\n console.group('package.json');\n const packageJson = fs.readJSONSync('package.json');\n console.log('package.json detected');\n console.groupEnd();\n\n console.group('Config');\n const config = await esmImport('plugin.config.mjs');\n console.log('plugin.config.mjs detected', config);\n console.groupEnd();\n}\n","import { program } from 'commander';\nimport { outputManifest } from '../lib/plugin-manifest.js';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport { PLUGIN_WORKSPACE_DIRECTORY } from '../lib/constants.js';\nimport packer from '@kintone/plugin-packer';\nimport { getContentsZipBuffer, getZipFileNameSuffix, outputContentsZip } from '../lib/zip.js';\nimport { copyPluginContents } from '../lib/plugin-contents.js';\nimport { isEnv } from '../lib/utils.js';\n\nexport default function command(): void {\n program\n .command('zip')\n .description('generate plugin zip')\n .option('-e, --env <env>', 'plugin environment (dev, prod, standalone)', 'prod')\n .option(\n '-p, --ppk <ppk>',\n '.ppk file path',\n path.join(PLUGIN_WORKSPACE_DIRECTORY, 'private.ppk')\n )\n .action(action);\n}\n\nasync function action(options: { env: string; ppk: string }): Promise<void> {\n console.group('🍳 Executing plugin zip generation');\n try {\n const { env, ppk: ppkPath } = options;\n if (!isEnv(env)) {\n throw new Error('Invalid environment');\n }\n\n await copyPluginContents();\n console.log('📁 contents copied');\n\n const manifest = await outputManifest(env);\n console.log(`📝 manifest.json generated (${env})`);\n\n await outputContentsZip(manifest);\n console.log('📦 contents.zip generated');\n\n const buffer = await getContentsZipBuffer();\n const privateKey = await fs.readFile(path.resolve(ppkPath), 'utf8');\n\n const output = await packer(buffer, privateKey);\n\n const zipFileName = `plugin${getZipFileNameSuffix(env)}.zip`;\n\n await fs.writeFile(path.join(PLUGIN_WORKSPACE_DIRECTORY, zipFileName), output.plugin);\n console.log('📦 plugin.zip generated');\n\n // version ファイルを出力\n const version = String(manifest.version);\n await fs.writeFile(path.join(PLUGIN_WORKSPACE_DIRECTORY, 'version'), version);\n console.log(`📝 version file generated (${version})`);\n\n console.log(`✨ Plugin zip generation completed! zip file path is ./.plugin/${zipFileName}`);\n } catch (error) {\n throw error;\n } finally {\n console.groupEnd();\n }\n}\n","import { program } from 'commander';\nimport { lint } from '../lib/lint.js';\n\nexport default function command() {\n program\n .command('lint')\n .description('Lint source files')\n .option('-c, --config <config>', 'Config file path')\n .action(action);\n}\n\nexport async function action(options: {\n outdir: string;\n certdir: string;\n port: string;\n input: string;\n}) {\n try {\n lint();\n } catch (error) {\n throw error;\n } finally {\n }\n}\n","import { program } from 'commander';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport type { Options } from 'tsup';\nimport { PLUGIN_CONTENTS_DIRECTORY } from '../lib/constants.js';\nimport { importK2PluginConfig } from '../lib/import.js';\nimport { lint } from '../lib/lint.js';\nimport { getTailwindConfig, getTailwindInputCss, outputCss } from '../lib/tailwind.js';\nimport { buildWithTsup } from '../lib/tsup.js';\n\nexport default function command() {\n program\n .command('tsup')\n .description(\"Build the project for production. (It's a wrapper of webpack build command.)\")\n .action(action);\n}\n\nexport async function action() {\n console.group('🍳 Build the project for production');\n\n try {\n const config = await importK2PluginConfig();\n\n if (config?.lint?.build) {\n await lint();\n console.log('✨ Lint success.');\n }\n\n if (!fs.existsSync(PLUGIN_CONTENTS_DIRECTORY)) {\n await fs.mkdir(PLUGIN_CONTENTS_DIRECTORY, { recursive: true });\n }\n\n if (config.tailwind?.css && config.tailwind?.config) {\n const tailwindConfig = await getTailwindConfig(config.tailwind);\n\n const inputFile = getTailwindInputCss(config.tailwind);\n\n await outputCss({\n inputPath: inputFile.config,\n outputPath: path.join(PLUGIN_CONTENTS_DIRECTORY, 'config.css'),\n config: tailwindConfig.config,\n minify: true,\n });\n console.log('✨ Built config.css');\n await outputCss({\n inputPath: inputFile.desktop,\n outputPath: path.join(PLUGIN_CONTENTS_DIRECTORY, 'desktop.css'),\n config: tailwindConfig.desktop,\n minify: true,\n });\n console.log('✨ Built desktop.css');\n }\n\n const entryPoints: Options['entry'] = ['desktop', 'config'].reduce(\n (acc, dir) => ({\n ...acc,\n [dir]: path.join('src', dir, 'index.ts'),\n }),\n {}\n );\n\n await buildWithTsup({\n entryPoints,\n outDir: PLUGIN_CONTENTS_DIRECTORY,\n minify: true,\n treeshake: true,\n sourcemap: false,\n });\n console.log('✨ Built desktop.js and config.js');\n console.log('✨ Build success.');\n } catch (error) {\n throw error;\n } finally {\n console.groupEnd();\n }\n}\n","import { type Options, build } from 'tsup';\n\n/**\n * 受け取ったビルドオプションに対して、共通するビルドオプションを補完します\n *\n * @param params\n * @returns\n */\nconst completeBuildOptions = (params: Options): Options => {\n return {\n bundle: true,\n minify: 'terser',\n splitting: false,\n noExternal: [/.*/],\n platform: 'browser',\n dts: true,\n ...params,\n esbuildOptions(options, context) {\n options.legalComments = 'none';\n },\n };\n};\n\nexport const buildWithTsup = async (buildOptions: Options) => {\n const options = completeBuildOptions(buildOptions);\n await build(options);\n};\n"],"mappings":";;;AACA,SAAS,WAAAA,iBAAe;;;ACDxB,SAAS,eAAe;AACxB,OAAOC,SAAQ;AACf,OAAOC,WAAU;AACjB,OAAmC;;;ACHnC,OAAO,UAAU;AAEV,IAAM,sBAAsB;AAC5B,IAAM,wBAAwB,KAAK,KAAK,qBAAqB,KAAK;AAGlE,IAAM,0BAA0B;AAGhC,IAAM,6BAA6B;AAEnC,IAAM,4BAA4B,KAAK,KAAK,4BAA4B,UAAU;AAElF,IAAM,+BAA+B,KAAK,KAAK,4BAA4B,KAAK;AAGhF,IAAM,eAAe;;;AChB5B,SAAS,qBAAqB;AAE9B,OAAOC,WAAU;AAEV,IAAM,YAAY,CAACA,WAAiB;AACzC,MAAI,QAAQ,aAAa,SAAS;AAChC,WAAO,OAAO,cAAcA,MAAI,EAAE,SAAS;AAAA,EAC7C,OAAO;AACL,WAAO,OAAOA;AAAA,EAChB;AACF;AAMO,IAAM,uBAAuB,OAClC,mBACgC;AAChC,UAAQ,MAAM,UAAUC,MAAK,QAAQ,kBAAkB,uBAAuB,CAAC,GAAG;AACpF;;;ACpBA,OAAO,cAAc;AACrB,OAAO,mBAAmB;AAC1B,OAAO,QAAQ;AACf,SAAS,YAAY;AACrB,OAAOC,WAAU;AACjB,OAAO,aAAa;AACpB,SAAS,gBAAgB;AACzB,OAAO,iBAAoD;AAC3D,OAAO,eAAe;AAWf,IAAM,sBAAsB,CACjCC,YACwC;AACxC,YAAUA,SAAQ,KAAK,0BAA0B;AACjD,QAAM,EAAE,IAAI,IAAIA;AAChB,MAAI,OAAO,QAAQ,UAAU;AAC3B,UAAM,WAAWC,MAAK,QAAQ,GAAG;AACjC,WAAO,EAAE,SAAS,UAAU,QAAQ,SAAS;AAAA,EAC/C;AACA,SAAO;AAAA,IACL,SAASA,MAAK,QAAQ,IAAI,OAAO;AAAA,IACjC,QAAQA,MAAK,QAAQ,IAAI,MAAM;AAAA,EACjC;AACF;AAEO,IAAM,oBAAoB,OAC/BD,YAII;AACJ,YAAUA,SAAQ,QAAQ,6BAA6B;AAEvD,QAAM,EAAE,QAAQ,WAAW,IAAIA;AAE/B,QAAM,uBAAuB,OAAO,eAAe,WAAW,aAAa,WAAW;AACtF,QAAM,sBAAsB,OAAO,eAAe,WAAW,aAAa,WAAW;AAErF,QAAM,iBAAiB,MAAM,UAAUC,MAAK,QAAQ,oBAAoB,CAAC,GAAG;AAC5E,QAAM,gBAAgB,MAAM,UAAUA,MAAK,QAAQ,mBAAmB,CAAC,GAAG;AAE1E,SAAO,EAAE,SAAS,eAAe,QAAQ,aAAa;AACxD;AAEO,IAAM,YAAY,OAAO,WAK1B;AACJ,QAAM,EAAE,WAAW,YAAY,QAAAD,SAAQ,SAAS,MAAM,IAAI;AAE1D,QAAM,MAAM,MAAM,GAAG,SAAS,WAAW,MAAM;AAE/C,QAAM,SAAS,MAAM,QAAQ,CAAC,YAAYA,OAAM,GAAG,GAAI,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAE,CAAC,EAAE;AAAA,IACxF;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,IAAI;AAAA,IACN;AAAA,EACF;AAEA,QAAM,GAAG,UAAU,YAAY,OAAO,GAAG;AAEzC,MAAI,OAAO,KAAK;AACd,UAAM,GAAG,UAAU,GAAG,UAAU,QAAQ,OAAO,IAAI,SAAS,CAAC;AAAA,EAC/D;AACF;AAIO,IAAM,mBAAmB,OAAO,WASjC;AACJ,QAAM,EAAE,OAAO,QAAQ,QAAAA,QAAO,IAAI;AAElC,QAAM,UAAWA,QAAO,WAAoC,CAAC,qBAAqB;AAElF,QAAM,QAAQ,MAAM,KAAK,CAAC,GAAG,SAAS,KAAK,GAAG,EAAE,QAAQ,CAAC,oBAAoB,EAAE,CAAC;AAEhF,QAAM,UAAU,SAAS,MAAM,OAAO;AAAA,IACpC,YAAY;AAAA,IACZ,eAAe;AAAA,EACjB,CAAC;AAED,MAAI,gBAAgB;AAEpB,QAAM,iBAAiB,OAAO,SAAoB;AAChD,QAAI;AACF,YAAM,UAAU,EAAE,WAAW,OAAO,YAAY,QAAQ,QAAAA,QAAO,CAAC;AAChE,aAAO,YAAY,EAAE,OAAO,QAAQ,KAAK,CAAC;AAAA,IAC5C,SAAS,OAAO;AACd,cAAQ,MAAM,gCAAgC,KAAK;AAAA,IACrD;AAAA,EACF;AAEA,QAAM,0BAA0B,SAAS,gBAAgB,EAAE,QAAQ,IAAK,CAAC;AAEzE,UAAQ,GAAG,SAAS,YAAY;AAC9B,QAAI,CAAC,eAAe;AAClB,sBAAgB;AAChB,YAAM,eAAe,MAAM;AAAA,IAC7B;AAAA,EACF,CAAC;AAED,UAAQ,GAAG,SAAS,CAAC,UAAU;AAC7B,YAAQ,MAAM,gCAAgC,KAAK;AAAA,EACrD,CAAC;AAED,UAAQ,GAAG,OAAO,CAACC,WAAS;AAC1B,4BAAwB,KAAK,KAAK;AAAA,EACpC,CAAC;AACD,UAAQ,GAAG,UAAU,CAACA,WAAS;AAC7B,4BAAwB,KAAK,QAAQ;AAAA,EACvC,CAAC;AACD,UAAQ,GAAG,UAAU,CAACA,WAAS;AAC7B,4BAAwB,KAAK,QAAQ;AAAA,EACvC,CAAC;AACD,UAAQ,GAAG,aAAa,CAACA,WAAS;AAChC,4BAAwB,KAAK,QAAQ;AAAA,EACvC,CAAC;AAED,SAAO;AACT;;;AC3IA,OAAmC;;;ACAnC,OAAO,0BAA0B;AACjC,OAAOC,WAAU;AACjB,SAAS,WAAW;AACpB,OAAO,kBAAkB;AACzB,OAAO,aAAqC;AAC5C,OAAO,WAAW;AAClB,SAAS,2BAA2B;AAE7B,IAAM,mBAAmB,OAAO,UAGjC;AACJ,QAAM,EAAE,SAAS,OAAO,IAAI;AAE5B,QAAM,UAAU;AAChB,QAAM,cAAc,qBAAqB;AAEzC,QAAM,eAAeA,MAAK,KAAK,IAAI,GAAG,eAAe;AAErD,UAAQ,MAAM,MAAM,KAAK,oCAA6B,CAAC;AACvD,UAAQ,IAAI,iCAA0B,YAAY;AAClD,UAAQ,SAAS;AAEjB,SAAO,IAAI,QAAc,CAAC,SAAS,WAAW;AAC5C;AAAA,MACE;AAAA,QACE,MAAM;AAAA,QACN,QAAQ,CAAC,OAAO,QAAQ;AAAA,QACxB,OAAO;AAAA,QACP,SAAS;AAAA,UACP,YAAY,CAAC,OAAO,QAAQ,OAAO,OAAO;AAAA,UAC1C,UAAU;AAAA,YACR,MAAM;AAAA,UACR;AAAA,UACA,SAAS,CAAC,IAAI,oBAAoB,EAAE,YAAY,aAAa,CAAC,CAAC;AAAA,QACjE;AAAA,QACA,OAAO,EAAE,MAAM,aAAa;AAAA,QAC5B,QAAQ,EAAE,UAAU,aAAa,MAAMA,MAAK,QAAQ,MAAM,EAAE;AAAA,QAC5D,QAAQ;AAAA,UACN,OAAO;AAAA,YACL,EAAE,MAAM,WAAW,SAAS,QAAQ,YAAY;AAAA,YAChD,EAAE,MAAM,UAAU,KAAK,CAAC,aAAa,YAAY,EAAE;AAAA,YACnD;AAAA,cACE,MAAM;AAAA,cACN,KAAK;AAAA,gBACH;AAAA,gBACA;AAAA,gBACA,EAAE,QAAQ,eAAe,SAAS,EAAE,aAAa,EAAE,aAAa,WAAW,EAAE,EAAE;AAAA,cACjF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA,SAAS,CAAC,IAAI,qBAAqB,CAAC;AAAA,QACpC,cAAc;AAAA,UACZ,UAAU;AAAA,UACV,WAAW;AAAA,YACT,IAAI,aAAa;AAAA,cACf,eAAe,EAAE,QAAQ,EAAE,UAAU,MAAM,EAAE;AAAA,cAC7C,iBAAiB;AAAA,YACnB,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,MACA,CAAC,KAAK,UAAU;AACd,YAAI,KAAK;AACP,iBAAO,GAAG;AAAA,QACZ,OAAO;AACL,cAAI,OAAO,YAAY,OAAO,QAAQ;AACpC;AAAA,cACE;AAAA,gBACE,MAAM,IAAI,sBAAiB;AAAA,gBAC3B,GAAG,MAAM,YAAY,OAAO,IAAI,CAAC,UAAU,MAAM,OAAO;AAAA,cAC1D,EAAE,KAAK,IAAI;AAAA,YACb;AAAA,UACF,OAAO;AACL,oBAAQ;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AD9EA,eAAO,OAA8B,QAA6D;AAChG,QAAM,EAAE,SAAS,OAAO,IAAI;AAC5B,SAAO,iBAAiB,EAAE,SAAS,OAAO,CAAC;AAC7C;;;AENA,SAAS,cAAc;AACvB,OAAO,aAAa;AACpB,OAAO,cAAc;AACrB,OAAqB;AACrB,OAAO,iBAAiB;AAExB,eAAsB,OAAO;AAC3B,QAAM,SAAS,IAAI,OAAO;AAAA,IACxB,YAAY;AAAA,MACV,EAAE,OAAO,CAAC,8BAA8B,EAAE;AAAA,MAC1C,EAAE,iBAAiB,EAAE,SAAS,QAAQ,QAAQ,EAAE;AAAA,MAChD,SAAS,QAAQ;AAAA;AAAA,MAEjB,GAAI,YAAY,QAAQ,MAAM,cAAc,CAAC,YAAY,QAAQ,KAAK,WAAW,IAAI,CAAC;AAAA,IACxF;AAAA,EACF,CAAC;AAED,QAAM,UAAU,MAAM,OAAO,UAAU,CAAC,oBAAoB,CAAC;AAE7D,QAAM,YAAY,MAAM,OAAO,cAAc,SAAS;AACtD,QAAM,aAAa,UAAU,OAAO,OAAO;AAE3C,UAAQ,MAAM,wBAAiB;AAC/B,UAAQ,IAAI,UAAU;AACtB,UAAQ,SAAS;AAEjB,QAAM,YAAY,QAAQ,KAAK,CAAC,WAAW,OAAO,aAAa,CAAC;AAChE,MAAI,WAAW;AACb,YAAQ,MAAM,6BAAsB;AACpC,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;;;ANrBe,SAAR,UAA2B;AAChC,UACG,QAAQ,OAAO,EACf,YAAY,8EAA8E,EAC1F,OAAOC,OAAM;AAClB;AAEA,eAAsBA,UAAS;AAC7B,UAAQ,MAAM,4CAAqC;AAEnD,MAAI;AACF,UAAMC,UAAS,MAAM,qBAAqB;AAE1C,QAAIA,SAAQ,MAAM,OAAO;AACvB,YAAM,KAAK;AACX,cAAQ,IAAI,sBAAiB;AAAA,IAC/B;AAEA,QAAI,CAACC,IAAG,WAAW,yBAAyB,GAAG;AAC7C,YAAMA,IAAG,MAAM,2BAA2B,EAAE,WAAW,KAAK,CAAC;AAAA,IAC/D;AAEA,UAAM,UAAkC;AAAA,MACtC,SAASC,MAAK,KAAK,OAAO,WAAW,UAAU;AAAA,MAC/C,QAAQA,MAAK,KAAK,OAAO,UAAU,UAAU;AAAA,IAC/C;AAEA,QAAIF,QAAO,UAAU,OAAOA,QAAO,UAAU,QAAQ;AACnD,YAAM,iBAAiB,MAAM,kBAAkBA,QAAO,QAAQ;AAE9D,YAAM,YAAY,oBAAoBA,QAAO,QAAQ;AAErD,YAAM,UAAU;AAAA,QACd,WAAW,UAAU;AAAA,QACrB,YAAYE,MAAK,KAAK,2BAA2B,YAAY;AAAA,QAC7D,QAAQ,eAAe;AAAA,QACvB,QAAQ;AAAA,MACV,CAAC;AACD,cAAQ,IAAI,yBAAoB;AAChC,YAAM,UAAU;AAAA,QACd,WAAW,UAAU;AAAA,QACrB,YAAYA,MAAK,KAAK,2BAA2B,aAAa;AAAA,QAC9D,QAAQ,eAAe;AAAA,QACvB,QAAQ;AAAA,MACV,CAAC;AACD,cAAQ,IAAI,0BAAqB;AAAA,IACnC;AAEA,UAAM,OAAK,EAAE,SAAS,QAAQ,0BAA0B,CAAC;AACzD,YAAQ,IAAI,uCAAkC;AAC9C,YAAQ,IAAI,uBAAkB;AAAA,EAChC,SAAS,OAAO;AACd,UAAM;AAAA,EACR,UAAE;AACA,YAAQ,SAAS;AAAA,EACnB;AACF;;;AOlEA,SAAS,WAAAC,gBAAe;AACxB,OAAOC,SAAQ;AACf,OAAOC,WAAU;AAIjB,OAAkC;;;ACNlC,OAAOC,YAAW;AAClB,OAAO,aAAoC;AAE3C,IAAM,uBAAuB,CAAC,WAAuC;AACnE,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,GAAG;AAAA,IACH,SAAS,CAAC,GAAI,OAAO,WAAW,CAAC,CAAE;AAAA,EACrC;AACF;AAEA,IAAM,0BAA0B,CAAC,WAAuC;AACtE,SAAO,qBAAqB;AAAA,IAC1B,GAAG;AAAA,IACH,SAAS;AAAA,MACP,GAAI,OAAO,WAAW,CAAC;AAAA,MACvB;AAAA,QACE,MAAM;AAAA,QACN,OAAO,CAAC,EAAE,MAAM,MACd;AAAA,UAAM,MACJ,QAAQ;AAAA,YACNA,OAAM,IAAI,SAAS,EAAE,IAAG,oBAAI,KAAK,GAAE,mBAAmB,CAAC,GAAG,IACxDA,OAAM,KAAK,OAAO,IAClB;AAAA,UACJ;AAAA,QACF;AAAA,MACJ;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,IAAM,oBAAoB,OAAO,WAAyB;AAC/D,SAAO,QAAQ,QAAQ,wBAAwB,MAAM,CAAC;AACxD;AAEO,IAAM,mBAAmB,OAAO,WAA+C;AACpF,QAAM,EAAE,QAAQ,OAAO,GAAG,KAAK,IAAI;AACnC,MAAI,OAAO;AACT,UAAM,UAAU,MAAM,kBAAkB,IAAI;AAC5C,YAAQ,MAAM;AAAA,EAChB,OAAO;AACL,UAAM,UAAU,qBAAqB,IAAI;AACzC,UAAM,QAAQ,MAAM,OAAO;AAAA,EAC7B;AACF;;;ADnCe,SAARC,WAA2B;AAChC,EAAAC,SACG,QAAQ,SAAS,EACjB,YAAY,8EAA8E,EAC1F,OAAOC,OAAM;AAClB;AAEA,eAAsBA,UAAS;AAC7B,UAAQ,MAAM,4CAAqC;AAEnD,MAAI;AACF,UAAMC,UAAS,MAAM,qBAAqB;AAE1C,QAAIA,SAAQ,MAAM,OAAO;AACvB,YAAM,KAAK;AACX,cAAQ,IAAI,sBAAiB;AAAA,IAC/B;AAEA,QAAI,CAACC,IAAG,WAAW,yBAAyB,GAAG;AAC7C,YAAMA,IAAG,MAAM,2BAA2B,EAAE,WAAW,KAAK,CAAC;AAAA,IAC/D;AAEA,QAAID,QAAO,UAAU,OAAOA,QAAO,UAAU,QAAQ;AACnD,YAAM,iBAAiB,MAAM,kBAAkBA,QAAO,QAAQ;AAE9D,YAAM,YAAY,oBAAoBA,QAAO,QAAQ;AAErD,YAAM,UAAU;AAAA,QACd,WAAW,UAAU;AAAA,QACrB,YAAYE,MAAK,KAAK,2BAA2B,YAAY;AAAA,QAC7D,QAAQ,eAAe;AAAA,QACvB,QAAQ;AAAA,MACV,CAAC;AACD,cAAQ,IAAI,yBAAoB;AAChC,YAAM,UAAU;AAAA,QACd,WAAW,UAAU;AAAA,QACrB,YAAYA,MAAK,KAAK,2BAA2B,aAAa;AAAA,QAC9D,QAAQ,eAAe;AAAA,QACvB,QAAQ;AAAA,MACV,CAAC;AACD,cAAQ,IAAI,0BAAqB;AAAA,IACnC;AAEA,UAAM,cAA2C,CAAC,WAAW,QAAQ,EAAE,IAAI,CAAC,SAAS;AAAA,MACnF,IAAIA,MAAK,KAAK,OAAO,KAAK,UAAU;AAAA,MACpC,KAAK;AAAA,IACP,EAAE;AAEF,UAAM,iBAAiB;AAAA,MACrB;AAAA,MACA,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,eAAe;AAAA,IACjB,CAAC;AACD,YAAQ,IAAI,uCAAkC;AAC9C,YAAQ,IAAI,uBAAkB;AAAA,EAChC,SAAS,OAAO;AACd,UAAM;AAAA,EACR,UAAE;AACA,YAAQ,SAAS;AAAA,EACnB;AACF;;;AExEA,SAAS,WAAAC,gBAAe;AACxB,OAAkC;AAClC,OAAOC,SAAQ;AACf,OAAOC,YAAU;;;ACHjB,OAAkC;AAClC,OAAOC,WAAU;AAGjB,eAAOC,QAA8B,QAKlC;AACD,QAAM,EAAE,aAAa,WAAW,QAAQ,SAAS,KAAK,IAAI;AAE1D,QAAM,UAAU,MAAM,kBAAkB,EAAE,WAAW,UAAU,aAAa,OAAO,CAAC;AAEpF,QAAM,CAAC,GAAG,WAAW,IAAI,MAAM,QAAQ,IAAI;AAAA,IACzC,QAAQ,MAAM;AAAA,IACd,QAAQ,MAAM;AAAA,MACZ;AAAA,MACA,SAASC,MAAK,KAAK,SAAS,mBAAmB;AAAA,MAC/C,UAAUA,MAAK,KAAK,SAAS,oBAAoB;AAAA,MACjD,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC;AAED,UAAQ,IAAI,2DAAoD,YAAY,IAAI,EAAE;AACpF;;;ACvBA,OAAOC,SAAQ;AACf,OAAOC,WAAU;AACjB,OAAO,WAAW;AAEX,IAAM,iBAAiB,OAC5B,KACA,YACkC;AAClC,QAAMC,UAAS,SAAS,UAAW,MAAM,qBAAqB;AAE9D,QAAM,SAAS,MAAMA,QAAO,SAAS,MAAMA,QAAO,SAAS,GAAG,KAAK,CAAC,CAAC;AAErE,QAAMF,IAAG,OAAO,yBAAyB;AACzC,QAAMA,IAAG,UAAUC,MAAK,KAAK,2BAA2B,eAAe,GAAG,MAAM;AAEhF,SAAO;AACT;;;AChBO,IAAM,cAAc,OAAO,WAAyD;AACzF,QAAM,EAAE,QAAAE,SAAQ,KAAK,IAAI;AACzB,SAAO,eAAe,OAAO;AAAA,IAC3B,QAAQ;AAAA,MACN,GAAGA;AAAA,MACH,UAAU;AAAA,QACR,GAAGA,QAAO;AAAA,QACV,KAAK;AAAA,UACH,QAAQ;AAAA,YACN,GAAGA,QAAO,UAAU,KAAK;AAAA,YACzB,IAAI,CAAC,qBAAqB,IAAI,YAAY;AAAA,YAC1C,KAAK,CAAC,qBAAqB,IAAI,aAAa;AAAA,UAC9C;AAAA,UACA,SAAS;AAAA,YACP,GAAGA,QAAO,UAAU,KAAK;AAAA,YACzB,IAAI,CAAC,qBAAqB,IAAI,aAAa;AAAA,YAC3C,KAAK,CAAC,qBAAqB,IAAI,cAAc;AAAA,UAC/C;AAAA,UACA,QAAQ;AAAA,YACN,GAAGA,QAAO,UAAU,KAAK;AAAA,YACzB,IAAI,CAAC,qBAAqB,IAAI,aAAa;AAAA,YAC3C,KAAK,CAAC,qBAAqB,IAAI,cAAc;AAAA,UAC/C;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AC7BA,OAAOC,WAAU;AACjB,OAA8C;AAE9C,OAAOC,YAAW;AAGlB,eAAe,iBAAiB,QAI7B;AACD,QAAM,EAAE,WAAW,gBAAgB,QAAAC,QAAO,IAAI;AAC9C,QAAM,YAAYC,MAAK,QAAQ,SAAS;AACxC,QAAM,aAAaA,MAAK,KAAK,8BAA8B,cAAc;AAEzE,SAAO,iBAAiB;AAAA,IACtB,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAAD;AAAA,IACA,WAAW,CAAC,EAAE,QAAQ,KAAK,MAAM;AAC/B,YAAME,kBAAiBD,MAAK,SAAS,MAAM;AAC3C,cAAQ;AAAA,QACNE,OAAM,IAAI,SAAS,EAAE,IAAG,oBAAI,KAAK,GAAE,mBAAmB,CAAC,GAAG,IACxDA,OAAM,KAAK,QAAQ,IACnBD,mBACC,SAAS,SAAS,UAAU;AAAA,MACjC;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,IAAM,WAAW,OAAO,iBAAqC;AAClE,MAAI,CAAC,aAAa,UAAU,OAAO,CAAC,aAAa,UAAU,QAAQ;AACjE;AAAA,EACF;AAEA,QAAM,iBAAiB,MAAM,kBAAkB,aAAa,QAAQ;AAEpE,QAAM,YAAY,oBAAoB,aAAa,QAAQ;AAE3D,SAAO,QAAQ,IAAI;AAAA,IACjB,iBAAiB;AAAA,MACf,WAAW,UAAU;AAAA,MACrB,gBAAgB;AAAA,MAChB,QAAQ,eAAe;AAAA,IACzB,CAAC;AAAA,IACD,iBAAiB;AAAA,MACf,WAAW,UAAU;AAAA,MACrB,gBAAgB;AAAA,MAChB,QAAQ,eAAe;AAAA,IACzB,CAAC;AAAA,EACH,CAAC;AACH;;;ACpDA,OAAO,YAAY;;;ACAnB,OAAOE,SAAQ;AACf,OAAOC,YAAU;AAEjB,OAAO,kBAAkB;AAElB,IAAM,qBAAqB,OAChC,SAAoD,CAAC,MAClD;AACH,QAAM,EAAE,WAAWC,OAAK,KAAK,OAAO,UAAU,GAAG,YAAY,0BAA0B,IAAI;AAC3F,MAAI,CAACC,IAAG,WAAW,QAAQ,GAAG;AAC5B,UAAMA,IAAG,MAAM,UAAU,EAAE,WAAW,KAAK,CAAC;AAAA,EAC9C;AAEA,QAAMA,IAAG,KAAK,UAAU,WAAW,EAAE,WAAW,KAAK,CAAC;AAEtD,QAAM,iBAAiBD,OAAK,KAAK,WAAW,aAAa;AAEzD,MAAI,CAACC,IAAG,WAAW,cAAc,GAAG;AAClC,UAAM,IAAI,MAAM,uDAAuD,QAAQ,GAAG;AAAA,EACpF;AAEA,QAAM,OAAO,MAAMA,IAAG,SAAS,gBAAgB,MAAM;AAErD,QAAM,WAAW,aAAa,OAAO,MAAM;AAAA,IACzC,WAAW;AAAA,IACX,oBAAoB;AAAA,IACpB,gBAAgB;AAAA,IAChB,oBAAoB;AAAA,IACpB,2BAA2B;AAAA,IAC3B,4BAA4B;AAAA,IAC5B,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB,CAAC;AAED,QAAMA,IAAG,UAAU,gBAAgB,QAAQ;AAC7C;;;ACnCA,OAAO,cAAc;AACrB,OAAOC,SAAQ;AACf,OAAOC,YAAU;AACjB,OAAOC,gBAAe;AAGf,IAAM,oBAAoB,OAAO,aAAmC;AACzE,QAAM,UAAU,SAAS,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;AACtD,UAAQ,GAAG,WAAW,CAAC,UAAU;AAC/B,QAAI,MAAM,SAAS,UAAU;AAC3B,cAAQ,KAAK,KAAK;AAAA,IACpB,OAAO;AACL,YAAM;AAAA,IACR;AAAA,EACF,CAAC;AAED,QAAM,gBAAgBC,OAAK,KAAK,4BAA4B,cAAc;AAC1E,QAAM,kBAAkBC,IAAG,kBAAkB,aAAa;AAC1D,kBAAgB,GAAG,SAAS,MAAM;AAChC,YAAQ,IAAI,aAAM,QAAQ,QAAQ,CAAC,cAAc;AAAA,EACnD,CAAC;AACD,kBAAgB,GAAG,OAAO,WAAY;AACpC,YAAQ,IAAI,iCAA0B;AAAA,EACxC,CAAC;AAED,QAAM,qBAAqB,CAAC,SAAiB;AAC3C,WAAO,CAAC,eAAe,KAAK,IAAI;AAAA,EAClC;AAEA,EAAAC,WAAU,SAAS,QAAQ,MAAM,kCAAkC;AAEnE,QAAM,cAAc;AAAA,IAClB;AAAA,IACA,GAAG,oBAAI,IAAI;AAAA,MACT,SAAS;AAAA,MACT,SAAS,OAAO;AAAA,MAChB,IAAI,SAAS,SAAS,MAAM,CAAC,GAAG,OAAO,kBAAkB;AAAA,MACzD,IAAI,SAAS,SAAS,OAAO,CAAC,GAAG,OAAO,kBAAkB;AAAA,MAC1D,IAAI,SAAS,QAAQ,MAAM,CAAC,GAAG,OAAO,kBAAkB;AAAA,MACxD,IAAI,SAAS,QAAQ,OAAO,CAAC,GAAG,OAAO,kBAAkB;AAAA,MACzD,IAAI,SAAS,OAAO,MAAM,CAAC,GAAG,OAAO,kBAAkB;AAAA,MACvD,IAAI,SAAS,OAAO,OAAO,CAAC,GAAG,OAAO,kBAAkB;AAAA,IAC1D,CAAC;AAAA,EACH;AAEA,UAAQ,MAAM,wBAAiB;AAC/B,cAAY,QAAQ,CAAC,MAAM,MAAM;AAC/B,UAAM,SAAS,MAAM,YAAY,SAAS,IAAI,iBAAO;AACrD,YAAQ,IAAI,GAAG,MAAM,cAAO,IAAI,EAAE;AAAA,EACpC,CAAC;AACD,UAAQ,SAAS;AAEjB,aAAW,QAAQ,aAAa;AAC9B,UAAM,WAAWF,OAAK,KAAK,2BAA2B,IAAI;AAC1D,QAAI,CAACC,IAAG,WAAW,QAAQ,GAAG;AAC5B,YAAM,IAAI,MAAM,GAAG,QAAQ,iBAAiB;AAAA,IAC9C;AACA,YAAQ,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AAAA,EACvC;AAEA,UAAQ,KAAK,eAAe;AAC5B,QAAM,QAAQ,SAAS;AACvB,QAAM,IAAI,QAAc,CAAC,YAAY,gBAAgB,GAAG,SAAS,OAAO,CAAC;AAC3E;AAEO,IAAM,uBAAuB,YAAY;AAC9C,QAAM,gBAAgBD,OAAK,KAAK,4BAA4B,cAAc;AAC1E,SAAOC,IAAG,SAAS,aAAa;AAClC;AAEO,IAAM,uBAAuB,CAAC,QAAgB;AACnD,SAAO,QAAQ,SAAS,KAAK,IAAI,GAAG;AACtC;;;AFrEA,OAAOE,SAAQ;AACf,OAAOC,YAAU;;;AGJjB,SAAS,cAAc;AAyChB,IAAM,mBAAN,MAAuB;AAAA,EAC5B;AAAA,EACA;AAAA,EAEO,cAAc;AACnB,WAAO;AAEP,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA,8BAA8B;AAAA,MAC9B,8BAA8B;AAAA,IAChC,IAAI,QAAQ;AACZ,QAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,kBAAkB;AAC/D,YAAM,IAAI,MAAM;AAAA;AAAA;AAAA,iBAGL;AAAA,IACb;AAEA,UAAM,aAAa;AAAA,MACjB,0BAA0B,OAAO,KAAK,GAAG,gBAAgB,IAAI,gBAAgB,EAAE,EAAE;AAAA,QAC/E;AAAA,MACF;AAAA,MACA,GAAI,+BACF,+BAA+B;AAAA,QAC7B,eAAe,SAAS,OAAO;AAAA,UAC7B,GAAG,2BAA2B,IAAI,2BAA2B;AAAA,QAC/D,EAAE,SAAS,QAAQ,CAAC;AAAA,MACtB;AAAA,IACJ;AACA,SAAK,WAAW;AAChB,SAAK,cAAc;AAAA,EACrB;AAAA,EAEQ,eAAeC,QAAsB;AAC3C,WAAO,GAAG,KAAK,QAAQ,GAAGA,MAAI;AAAA,EAChC;AAAA,EAEA,MAAa,OAAO,QAA2D;AAC7E,UAAM,EAAE,MAAM,SAAS,IAAI;AAE3B,UAAM,OAAO,IAAI,SAAS;AAC1B,SAAK,OAAO,QAAQ,MAAM,QAAQ;AAElC,UAAM,eAAe,MAAM,MAAM,KAAK,eAAe,iBAAiB,GAAG;AAAA,MACvE,QAAQ;AAAA,MACR,SAAS,KAAK;AAAA,MACd,MAAM;AAAA,IACR,CAAC;AAED,UAAM,EAAE,QAAQ,IAAyB,MAAM,aAAa,KAAK;AAEjE,WAAO;AAAA,EACT;AAAA,EAEA,MAAa,WAAW,SAA2B,CAAC,GAA+B;AACjF,UAAM,MAAM,IAAI,IAAI,KAAK,eAAe,oBAAoB,CAAC;AAC7D,QAAI,OAAO,QAAQ;AACjB,UAAI,aAAa,IAAI,UAAU,OAAO,OAAO,MAAM,CAAC;AAAA,IACtD;AACA,QAAI,OAAO,OAAO;AAChB,UAAI,aAAa,IAAI,SAAS,OAAO,OAAO,KAAK,CAAC;AAAA,IACpD;AAEA,UAAM,iBAAiB,MAAM,MAAM,IAAI,SAAS,GAAG;AAAA,MACjD,SAAS,KAAK;AAAA,IAChB,CAAC;AAED,WAAO,eAAe,KAAK;AAAA,EAC7B;AAAA,EAEA,MAAa,gBAAmC;AAC9C,UAAM,UAAoB,CAAC;AAC3B,QAAI,SAAS;AACb,QAAI,QAAQ;AACZ,QAAI,UAAU;AAEd,WAAO,SAAS;AACd,YAAM,EAAE,SAAS,eAAe,IAAI,MAAM,KAAK,WAAW,EAAE,QAAQ,MAAM,CAAC;AAC3E,cAAQ,KAAK,GAAG,cAAc;AAE9B,UAAI,eAAe,SAAS,OAAO;AACjC,kBAAU;AAAA,MACZ,OAAO;AACL,kBAAU;AAAA,MACZ;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAa,UAAU,QAAyD;AAC9E,UAAM,EAAE,QAAQ,IAAI;AAEpB,UAAM,iBAAiB,MAAM,MAAM,KAAK,eAAe,mBAAmB,GAAG;AAAA,MAC3E,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,GAAG,KAAK;AAAA,MACV;AAAA,MACA,MAAM,KAAK,UAAU;AAAA,QACnB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAED,WAAO,eAAe,KAAK;AAAA,EAC7B;AAAA,EAEA,MAAa,aAAa,QAGQ;AAChC,UAAM,iBAAiB,MAAM,MAAM,KAAK,eAAe,mBAAmB,GAAG;AAAA,MAC3E,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,GAAG,KAAK;AAAA,MACV;AAAA,MACA,MAAM,KAAK,UAAU,MAAM;AAAA,IAC7B,CAAC;AAED,WAAO,eAAe,KAAK;AAAA,EAC7B;AACF;;;ACnKA,OAAOC,SAAQ;AACf,OAAOC,YAAU;AAEV,IAAM,QAAQ,CAAC,QAAwC;AAC5D,SAAO,CAAC,QAAQ,OAAO,YAAY,EAAE,SAAS,GAAG;AACnD;AAKO,IAAM,eAAe,OAAO,WAGQ;AACzC,QAAM,EAAE,KAAK,SAAS,IAAI;AAE1B,QAAM,KAAK,IAAI,iBAAiB;AAEhC,QAAM,cAAc,SAAS,qBAAqB,GAAG,CAAC;AAEtD,QAAM,UAAU,IAAI,KAAK,CAAC,MAAMD,IAAG,SAASC,OAAK,KAAK,4BAA4B,WAAW,CAAC,CAAC,CAAC;AAEhG,QAAM,UAAU,MAAM,GAAG,OAAO,EAAE,MAAM,SAAS,UAAU,YAAY,CAAC;AAExE,QAAM,UAAU,MAAM,GAAG,cAAc;AAEvC,QAAM,SAAS,QAAQ,KAAK,CAAC,MAAM,EAAE,OAAO,QAAQ;AACpD,MAAI,QAAQ;AACV,UAAM,OAAO,MAAM,GAAG,aAAa,EAAE,IAAI,UAAU,QAAQ,CAAC;AAC5D,QAAI,YAAY,QAAQ,KAAK,QAAQ;AACnC,cAAQ,OAAO,KAAK,OAAO,IAAI,YAAY,CAAC,GAAG,IAAI,CAAC,MAAc,UAAU,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC;AAAA,IAC7F;AACA,WAAO,EAAE,QAAQ,MAAM;AAAA,EACzB;AACA,QAAM,SAAS,MAAM,GAAG,UAAU,EAAE,QAAQ,CAAC;AAC7C,MAAI,UAAU,QAAQ;AACpB,YAAQ,MAAM,UAAU,OAAO,OAAO,EAAE;AAAA,EAC1C;AACA,SAAO,EAAE,QAAQ,OAAO;AAC1B;;;AJnCA,OAAO,cAAc;AACrB,OAAOC,YAAW;AAEX,IAAM,4BAA4B,OAAO,WAG1C;AACJ,QAAM,EAAE,UAAU,QAAQ,IAAI;AAE9B,MAAI,sBAAsB;AAE1B,QAAM,mBAAmB,YAAY;AACnC,QAAI;AACF,UAAI,CAAC,qBAAqB;AACxB;AAAA,MACF;AACA,YAAM,mBAAmB;AACzB,cAAQ;AAAA,QACNA,OAAM,IAAI,SAAS,EAAE,IAAG,oBAAI,KAAK,GAAE,mBAAmB,CAAC,GAAG,IACxDA,OAAM,KAAK,aAAa,IACxB;AAAA,MACJ;AAAA,IACF,SAAS,OAAY;AACnB,cAAQ,MAAM,kCAAkC,KAAK;AACrD;AAAA,IACF;AAEA,QAAI;AACF,YAAM,kBAAkB,QAAQ;AAChC,YAAM,SAAS,MAAM,qBAAqB;AAC1C,YAAM,mBAAmB,MAAMC,IAAG,SAASC,OAAK,QAAQ,OAAO,GAAG,MAAM;AAExE,YAAM,SAAS,MAAM,OAAO,QAAQ,gBAAgB;AAEpD,YAAM,cAAc,SAAS,qBAAqB,KAAK,CAAC;AAExD,YAAMD,IAAG,UAAUC,OAAK,KAAK,4BAA4B,WAAW,GAAG,OAAO,MAAM;AAEpF,YAAM,EAAE,OAAO,IAAI,MAAM,aAAa,EAAE,KAAK,OAAO,UAAU,OAAO,GAAG,CAAC;AACzE,cAAQ;AAAA,QACNF,OAAM,IAAI,SAAS,EAAE,IAAG,oBAAI,KAAK,GAAE,mBAAmB,CAAC,GAAG,IACxDA,OAAM,KAAK,WAAW,IACtB,YAAY,WAAW,SAAS,UAAU,UAAU;AAAA,MACxD;AAAA,IACF,SAAS,OAAY;AACnB,cAAQ;AAAA,QACNA,OAAM,IAAI,SAAS,EAAE,IAAG,oBAAI,KAAK,GAAE,mBAAmB,CAAC,GAAG,IACxDA,OAAM,KAAK,WAAW,IACtBA,OAAM,IAAI,QAAQ,IAClBA,OAAM,IAAI,SAAS,EAAE,KAAK,OAAO,WAAW,eAAe,EAAE;AAAA,MACjE;AAAA,IACF;AAAA,EACF;AAEA,QAAM,kBAAkB,SAAS,MAAM,CAAC,mBAAmB,GAAG;AAAA,IAC5D,SAAS;AAAA,IACT,YAAY;AAAA,EACd,CAAC;AAED,kBAAgB,GAAG,SAAS,MAAM;AAChC,0BAAsB;AACtB,qBAAiB;AAAA,EACnB,CAAC;AAED,kBAAgB,GAAG,UAAU,gBAAgB;AAC7C,kBAAgB,GAAG,OAAO,gBAAgB;AAC1C,kBAAgB,GAAG,UAAU,gBAAgB;AAC/C;;;AL3De,SAARG,WAA2B;AAChC,EAAAC,SACG,QAAQ,KAAK,EACb;AAAA,IACC;AAAA,IACA;AAAA,IACAC,OAAK,KAAK,4BAA4B,aAAa;AAAA,EACrD,EACC,OAAO,4BAA4B,yBAAyB,0BAA0B,EACtF,YAAY,2BAA2B,EACvC,OAAOC,OAAM;AAClB;AAEA,eAAsBA,QAAO,SAA2C;AACtE,UAAQ,MAAM,oCAA6B;AAC3C,MAAI;AACF,UAAM,EAAE,KAAK,SAAS,QAAQ,IAAI;AAClC,UAAMC,UAAS,MAAM,qBAAqB;AAE1C,QAAI,CAACC,IAAG,WAAW,4BAA4B,GAAG;AAChD,YAAMA,IAAG,MAAM,8BAA8B,EAAE,WAAW,KAAK,CAAC;AAAA,IAClE;AAEA,UAAM,OAAOD,QAAO,QAAQ,QAAQ;AAEpC,UAAM,WAAW,MAAM,YAAY,EAAE,QAAAA,SAAQ,KAAK,CAAC;AACnD,YAAQ,IAAI,mCAA4B;AAExC,YAAQ,IAAI;AAAA,MACV,0BAA0B,EAAE,UAAU,QAAQ,CAAC;AAAA,MAC/C,SAASA,OAAM;AAAA,MACf,MAAM,MAAM,OAAO;AAAA,IACrB,CAAC;AAAA,EACH,SAAS,OAAO;AACd,UAAM;AAAA,EACR,UAAE;AACA,YAAQ,SAAS;AAAA,EACnB;AACF;AAEA,eAAe,MACb,MACA,UAAU,4BACV,YAAY,8BACZ;AACA,QAAM,cAA2C,CAAC,WAAW,QAAQ,EAAE,IAAI,CAAC,SAAS;AAAA,IACnF,IAAIF,OAAK,KAAK,OAAO,KAAK,UAAU;AAAA,IACpC,KAAK;AAAA,EACP,EAAE;AAEF,EAAAC,QAAK,EAAE,MAAM,aAAa,SAAS,UAAU,CAAC;AAChD;;;AUlEA,SAAS,WAAAG,gBAAe;;;ACAxB,SAAS,QAAQ,mBAAmB;AACpC,SAAS,iBAAiB;AAEnB,IAAM,OAAO,UAAU,WAAW;;;ACFzC,OAAOC,UAAQ;AACf,OAAOC,YAAU;AAEV,IAAM,eAAe,OAAO,WAAmB;AACpD,QAAM,EAAE,OAAO,IAAI,MAAM,KAAK,gCAAgC;AAC9D;AAAA,IACE,EAAE,OAAO,mBAAmB,QAAQ,qBAAqB;AAAA,IACzD,EAAE,OAAO,uBAAuB,QAAQ,oBAAoB;AAAA,EAC9D,EAAE,QAAQ,CAAC,EAAE,OAAO,OAAO,MAAM;AAC/B,IAAAD,KAAG,SAAS,KAAK,KAAK,IAAIC,OAAK,KAAK,QAAQ,MAAM,GAAG;AAAA,MACnD,WAAW;AAAA,IACb,CAAC;AAAA,EACH,CAAC;AACD,SAAO,EAAE,OAAO;AAClB;;;ACbA,eAAOC,QAA8B,SAA6B;AAChE,QAAM,EAAE,OAAO,IAAI;AAEnB,UAAQ,MAAM,0CAAmC;AACjD,MAAI;AACF,UAAM,EAAE,OAAO,IAAI,MAAM,aAAa,MAAM;AAC5C,QAAI,QAAQ;AACV,cAAQ,IAAI,MAAM;AAAA,IACpB;AACA,YAAQ,IAAI,iDAA0C,MAAM,EAAE;AAAA,EAChE,SAAS,OAAO;AACd,UAAM;AAAA,EACR,UAAE;AACA,YAAQ,SAAS;AAAA,EACnB;AACF;;;AHbe,SAARC,WAA2B;AAChC,EAAAC,SACG,QAAQ,QAAQ,EAChB,YAAY,kDAAkD,EAC9D,OAAOC,OAAM;AAClB;AAEA,eAAsBA,UAAS;AAC7B,QAAMA,QAAK,EAAE,QAAQ,2BAA2B,CAAC;AACnD;;;AIbA,SAAS,WAAAC,gBAAe;AACxB,OAAOC,UAAQ;AACf,OAAOC,YAAU;AACjB,OAAOC,aAAY;AAMJ,SAARC,WAA2B;AAChC,EAAAC,SAAQ,QAAQ,MAAM,EAAE,YAAY,yCAAyC,EAAE,OAAOC,OAAM;AAC9F;AAEA,eAAsBA,UAAS;AAC7B,UAAQ,MAAM,iDAA0C;AACxD,MAAI;AACF,UAAM,WAAW,MAAM,eAAe,KAAK;AAC3C,YAAQ,IAAI,mCAA4B;AAExC,UAAM,mBAAmB;AACzB,YAAQ,IAAI,2BAAoB;AAEhC,QAAI;AACJ,UAAM,UAAUC,OAAK,KAAK,4BAA4B,aAAa;AACnE,QAAIC,KAAG,WAAW,OAAO,GAAG;AAC1B,mBAAa,MAAMA,KAAG,SAAS,SAAS,MAAM;AAAA,IAChD;AAEA,UAAM,kBAAkB,QAAQ;AAChC,UAAM,SAAS,MAAM,qBAAqB;AAE1C,UAAM,SAAS,MAAMC,QAAO,QAAQ,UAAU;AAE9C,QAAI,CAAC,YAAY;AACf,YAAMD,KAAG,UAAUD,OAAK,KAAK,4BAA4B,aAAa,GAAG,OAAO,UAAU;AAC1F,cAAQ,IAAI,iCAA0B;AAAA,IACxC,OAAO;AACL,cAAQ,IAAI,8EAAuE;AAAA,IACrF;AACA,UAAMC,KAAG,UAAUD,OAAK,KAAK,4BAA4B,YAAY,GAAG,OAAO,MAAM;AACrF,YAAQ,IAAI,gCAAyB;AACrC,YAAQ,IAAI,qFAAgF;AAAA,EAC9F,SAAS,OAAO;AACd,UAAM;AAAA,EACR,UAAE;AACA,YAAQ,SAAS;AAAA,EACnB;AACF;;;AC/CA,SAAS,WAAAG,gBAAe;AAIT,SAARC,WAAiC;AACtC,EAAAC,SACG,QAAQ,UAAU,EAClB,OAAO,mBAAmB,mBAAmB,MAAM,EACnD,OAAOC,OAAM;AAClB;AAEA,eAAeA,QAAO,SAAyC;AAC7D,UAAQ,MAAM,yCAAkC;AAChD,MAAI;AACF,UAAM,EAAE,IAAI,IAAI;AAChB,QAAI,QAAQ,UAAU,QAAQ,SAAS,QAAQ,cAAc;AAC3D,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AAEA,UAAM,mBAAmB;AACzB,YAAQ,IAAI,2BAAoB;AAEhC,UAAM,eAAe,GAAG;AACxB,YAAQ,IAAI,sCAA+B,GAAG,GAAG;AAAA,EACnD,SAAS,OAAO;AACd,UAAM;AAAA,EACR,UAAE;AACA,YAAQ,SAAS;AAAA,EACnB;AACF;;;AC7BA,SAAS,WAAAC,gBAAe;AACxB,OAAOC,UAAQ;AAGA,SAARC,WAA2B;AAChC,EAAAC,SAAQ,QAAQ,MAAM,EAAE,YAAY,MAAM,EAAE,OAAOC,QAAM;AAC3D;AAEA,eAAsBA,WAAS;AAC7B,UAAQ,MAAM,cAAc;AAC5B,QAAM,cAAcC,KAAG,aAAa,cAAc;AAClD,UAAQ,IAAI,uBAAuB;AACnC,UAAQ,SAAS;AAEjB,UAAQ,MAAM,QAAQ;AACtB,QAAMC,UAAS,MAAM,UAAU,mBAAmB;AAClD,UAAQ,IAAI,8BAA8BA,OAAM;AAChD,UAAQ,SAAS;AACnB;;;AClBA,SAAS,WAAAC,gBAAe;AAExB,OAAOC,UAAQ;AACf,OAAOC,YAAU;AAEjB,OAAOC,aAAY;AAKJ,SAARC,WAAiC;AACtC,EAAAC,SACG,QAAQ,KAAK,EACb,YAAY,qBAAqB,EACjC,OAAO,mBAAmB,8CAA8C,MAAM,EAC9E;AAAA,IACC;AAAA,IACA;AAAA,IACAC,OAAK,KAAK,4BAA4B,aAAa;AAAA,EACrD,EACC,OAAOC,QAAM;AAClB;AAEA,eAAeA,SAAO,SAAsD;AAC1E,UAAQ,MAAM,2CAAoC;AAClD,MAAI;AACF,UAAM,EAAE,KAAK,KAAK,QAAQ,IAAI;AAC9B,QAAI,CAAC,MAAM,GAAG,GAAG;AACf,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AAEA,UAAM,mBAAmB;AACzB,YAAQ,IAAI,2BAAoB;AAEhC,UAAM,WAAW,MAAM,eAAe,GAAG;AACzC,YAAQ,IAAI,sCAA+B,GAAG,GAAG;AAEjD,UAAM,kBAAkB,QAAQ;AAChC,YAAQ,IAAI,kCAA2B;AAEvC,UAAM,SAAS,MAAM,qBAAqB;AAC1C,UAAM,aAAa,MAAMC,KAAG,SAASF,OAAK,QAAQ,OAAO,GAAG,MAAM;AAElE,UAAM,SAAS,MAAMG,QAAO,QAAQ,UAAU;AAE9C,UAAM,cAAc,SAAS,qBAAqB,GAAG,CAAC;AAEtD,UAAMD,KAAG,UAAUF,OAAK,KAAK,4BAA4B,WAAW,GAAG,OAAO,MAAM;AACpF,YAAQ,IAAI,gCAAyB;AAGrC,UAAM,UAAU,OAAO,SAAS,OAAO;AACvC,UAAME,KAAG,UAAUF,OAAK,KAAK,4BAA4B,SAAS,GAAG,OAAO;AAC5E,YAAQ,IAAI,qCAA8B,OAAO,GAAG;AAEpD,YAAQ,IAAI,sEAAiE,WAAW,EAAE;AAAA,EAC5F,SAAS,OAAO;AACd,UAAM;AAAA,EACR,UAAE;AACA,YAAQ,SAAS;AAAA,EACnB;AACF;;;AC7DA,SAAS,WAAAI,gBAAe;AAGT,SAARC,WAA2B;AAChC,EAAAC,SACG,QAAQ,MAAM,EACd,YAAY,mBAAmB,EAC/B,OAAO,yBAAyB,kBAAkB,EAClD,OAAOC,QAAM;AAClB;AAEA,eAAsBA,SAAO,SAK1B;AACD,MAAI;AACF,SAAK;AAAA,EACP,SAAS,OAAO;AACd,UAAM;AAAA,EACR,UAAE;AAAA,EACF;AACF;;;ACvBA,SAAS,WAAAC,iBAAe;AACxB,OAAOC,UAAQ;AACf,OAAOC,YAAU;;;ACFjB,SAAuB,SAAAC,cAAa;AAQpC,IAAMC,wBAAuB,CAAC,WAA6B;AACzD,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,YAAY,CAAC,IAAI;AAAA,IACjB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,GAAG;AAAA,IACH,eAAe,SAAS,SAAS;AAC/B,cAAQ,gBAAgB;AAAA,IAC1B;AAAA,EACF;AACF;AAEO,IAAM,gBAAgB,OAAO,iBAA0B;AAC5D,QAAM,UAAUA,sBAAqB,YAAY;AACjD,QAAMD,OAAM,OAAO;AACrB;;;ADhBe,SAARE,YAA2B;AAChC,EAAAC,UACG,QAAQ,MAAM,EACd,YAAY,8EAA8E,EAC1F,OAAOC,QAAM;AAClB;AAEA,eAAsBA,WAAS;AAC7B,UAAQ,MAAM,4CAAqC;AAEnD,MAAI;AACF,UAAMC,UAAS,MAAM,qBAAqB;AAE1C,QAAIA,SAAQ,MAAM,OAAO;AACvB,YAAM,KAAK;AACX,cAAQ,IAAI,sBAAiB;AAAA,IAC/B;AAEA,QAAI,CAACC,KAAG,WAAW,yBAAyB,GAAG;AAC7C,YAAMA,KAAG,MAAM,2BAA2B,EAAE,WAAW,KAAK,CAAC;AAAA,IAC/D;AAEA,QAAID,QAAO,UAAU,OAAOA,QAAO,UAAU,QAAQ;AACnD,YAAM,iBAAiB,MAAM,kBAAkBA,QAAO,QAAQ;AAE9D,YAAM,YAAY,oBAAoBA,QAAO,QAAQ;AAErD,YAAM,UAAU;AAAA,QACd,WAAW,UAAU;AAAA,QACrB,YAAYE,OAAK,KAAK,2BAA2B,YAAY;AAAA,QAC7D,QAAQ,eAAe;AAAA,QACvB,QAAQ;AAAA,MACV,CAAC;AACD,cAAQ,IAAI,yBAAoB;AAChC,YAAM,UAAU;AAAA,QACd,WAAW,UAAU;AAAA,QACrB,YAAYA,OAAK,KAAK,2BAA2B,aAAa;AAAA,QAC9D,QAAQ,eAAe;AAAA,QACvB,QAAQ;AAAA,MACV,CAAC;AACD,cAAQ,IAAI,0BAAqB;AAAA,IACnC;AAEA,UAAM,cAAgC,CAAC,WAAW,QAAQ,EAAE;AAAA,MAC1D,CAAC,KAAK,SAAS;AAAA,QACb,GAAG;AAAA,QACH,CAAC,GAAG,GAAGA,OAAK,KAAK,OAAO,KAAK,UAAU;AAAA,MACzC;AAAA,MACA,CAAC;AAAA,IACH;AAEA,UAAM,cAAc;AAAA,MAClB;AAAA,MACA,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,WAAW;AAAA,IACb,CAAC;AACD,YAAQ,IAAI,uCAAkC;AAC9C,YAAQ,IAAI,uBAAkB;AAAA,EAChC,SAAS,OAAO;AACd,UAAM;AAAA,EACR,UAAE;AACA,YAAQ,SAAS;AAAA,EACnB;AACF;;;A7B9DAC,UAAQ,KAAK,QAAQ,EAAE,QAAQ,QAAQ,EAAE,YAAY,wDAA0C;AAE/F,QAAM;AACNC,SAAQ;AACRA,SAAI;AACJA,SAAO;AACPA,SAAK;AACLA,SAAS;AACTA,SAAK;AACLA,SAAI;AACJA,SAAK;AACLA,UAAK;AAELD,UAAQ,MAAM,QAAQ,IAAI;","names":["program","fs","path","path","path","path","config","path","path","action","config","fs","path","program","fs","path","chalk","command","program","action","config","fs","path","program","fs","path","path","action","path","fs","path","config","config","path","chalk","config","path","outputFileName","chalk","fs","path","path","fs","fs","path","invariant","path","fs","invariant","fs","path","path","fs","path","chalk","fs","path","command","program","path","action","config","fs","program","fs","path","action","command","program","action","program","fs","path","packer","command","program","action","path","fs","packer","program","command","program","action","program","fs","command","program","action","fs","config","program","fs","path","packer","command","program","path","action","fs","packer","program","command","program","action","program","fs","path","build","completeBuildOptions","command","program","action","config","fs","path","program","command"]}
|
|
1
|
+
{"version":3,"sources":["../src/plugin.ts","../src/commands/plugin-build.ts","../src/lib/constants.ts","../src/lib/import.ts","../src/lib/tailwind.ts","../src/lib/lint.ts","../src/lib/vite.ts","../src/commands/plugin-esbuild.ts","../src/commands/plugin-dev/index.ts","../src/lib/exec.ts","../src/lib/cert.ts","../src/lib/plugin-manifest.ts","../src/commands/plugin-dev/create-manifest.ts","../src/commands/plugin-dev/tailwind.ts","../src/commands/plugin-dev/upload.ts","../src/lib/plugin-contents.ts","../src/lib/zip.ts","../src/lib/kintone-api-client.ts","../src/lib/utils.ts","../src/commands/plugin-genkey.ts","../src/commands/genkey-base.ts","../src/commands/plugin-init.ts","../src/commands/manifest/index.ts","../src/commands/test/index.ts","../src/commands/plugin-zip.ts","../src/commands/lint.ts","../src/commands/plugin-tsup.ts","../src/lib/tsup.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { program } from 'commander';\nimport build from './commands/plugin-build.js';\nimport esbuild from './commands/plugin-esbuild.js';\nimport dev from './commands/plugin-dev/index.js';\nimport genkey from './commands/plugin-genkey.js';\nimport init from './commands/plugin-init.js';\nimport manifest from './commands/manifest/index.js';\nimport test from './commands/test/index.js';\nimport zip from './commands/plugin-zip.js';\nimport lint from './commands/lint.js';\nimport tsup from './commands/plugin-tsup.js';\n\nprogram.name('plugin').version('1.12.0').description('🍳 kintone kitchen 🍳 for kintone plugin');\n\nbuild();\nesbuild();\ndev();\ngenkey();\ninit();\nmanifest();\ntest();\nzip();\nlint();\ntsup();\n\nprogram.parse(process.argv);\n","import { program } from 'commander';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport chalk from 'chalk';\nimport { PLUGIN_CONTENTS_DIRECTORY } from '../lib/constants.js';\nimport { importK2PluginConfig } from '../lib/import.js';\nimport { getTailwindConfig, getTailwindInputCss, outputCss } from '../lib/tailwind.js';\nimport { lint } from '../lib/lint.js';\nimport { buildEntriesWithVite, getPluginEntryPoints } from '../lib/vite.js';\n\nexport default function command() {\n program\n .command('build')\n .description('Build the project for production with Vite.')\n .action(action);\n}\n\nexport async function action() {\n console.group('🍳 Build the project for production');\n\n try {\n const config = await importK2PluginConfig();\n\n if (config?.lint?.build) {\n await lint();\n console.log('✨ Lint success.');\n }\n\n if (!fs.existsSync(PLUGIN_CONTENTS_DIRECTORY)) {\n await fs.mkdir(PLUGIN_CONTENTS_DIRECTORY, { recursive: true });\n }\n\n // 出力ディレクトリをクリア\n await fs.emptyDir(PLUGIN_CONTENTS_DIRECTORY);\n\n const entries = getPluginEntryPoints({\n configEntry: path.resolve('src', 'config'),\n desktopEntry: path.resolve('src', 'desktop'),\n });\n\n const entryNames = Object.keys(entries);\n if (entryNames.length === 0) {\n throw new Error('No entry points found for plugin. Check src/config and src/desktop paths.');\n }\n\n console.log(chalk.gray(` Entry points: ${entryNames.join(', ')}`));\n\n if (config.tailwind?.css && config.tailwind?.config) {\n const tailwindConfig = await getTailwindConfig(config.tailwind);\n\n const inputFile = getTailwindInputCss(config.tailwind);\n\n await outputCss({\n inputPath: inputFile.config,\n outputPath: path.join(PLUGIN_CONTENTS_DIRECTORY, 'config.css'),\n config: tailwindConfig.config,\n minify: true,\n });\n console.log('✨ Built config.css');\n await outputCss({\n inputPath: inputFile.desktop,\n outputPath: path.join(PLUGIN_CONTENTS_DIRECTORY, 'desktop.css'),\n config: tailwindConfig.desktop,\n minify: true,\n });\n console.log('✨ Built desktop.css');\n }\n\n await buildEntriesWithVite({\n entries,\n outDir: PLUGIN_CONTENTS_DIRECTORY,\n mode: 'production',\n sourcemap: false,\n minify: true,\n });\n\n console.log('✨ Built desktop.js and config.js');\n console.log('✨ Build success.');\n } catch (error) {\n throw error;\n } finally {\n console.groupEnd();\n }\n}\n","import path from 'path';\n\nexport const WORKSPACE_DIRECTORY = '.k2';\nexport const DEVELOPMENT_DIRECTORY = path.join(WORKSPACE_DIRECTORY, 'dev');\nexport const PRODUCTION_DIRECTORY = path.join(WORKSPACE_DIRECTORY, 'prod');\n\nexport const CONFIG_FILE_NAME = 'k2.config.mjs';\nexport const PLUGIN_CONFIG_FILE_NAME = 'plugin.config.mjs';\n\n/** kintoneプラグインの一時ファイルを管理するフォルダ */\nexport const PLUGIN_WORKSPACE_DIRECTORY = '.plugin';\n/** kintoneプラグインのcontents.zipに格納するファイルを管理するフォルダ */\nexport const PLUGIN_CONTENTS_DIRECTORY = path.join(PLUGIN_WORKSPACE_DIRECTORY, 'contents');\n/** kintoneプラグインの開発時、ローカルサーバーに反映するファイルを管理するフォルダ */\nexport const PLUGIN_DEVELOPMENT_DIRECTORY = path.join(PLUGIN_WORKSPACE_DIRECTORY, 'dev');\n/** kintoneプラグインの本番ビルド出力ディレクトリ */\nexport const PLUGIN_PRODUCTION_DIRECTORY = path.join(PLUGIN_WORKSPACE_DIRECTORY, 'prod');\n\n/** ローカルサーバーのデフォルトポート番号 */\nexport const DEFAULT_PORT = 32767;\n","import { pathToFileURL } from 'url';\nimport { CONFIG_FILE_NAME, PLUGIN_CONFIG_FILE_NAME } from './constants.js';\nimport path from 'path';\n\nexport const esmImport = (path: string) => {\n if (process.platform === 'win32') {\n return import(pathToFileURL(path).toString());\n } else {\n return import(path);\n }\n};\n\nexport const importK2Config = async (configFileName?: string): Promise<K2.Config> => {\n return (await esmImport(path.resolve(configFileName ?? CONFIG_FILE_NAME))).default;\n};\n\nexport const importK2PluginConfig = async (\n configFileName?: string\n): Promise<Plugin.Meta.Config> => {\n return (await esmImport(path.resolve(configFileName ?? PLUGIN_CONFIG_FILE_NAME))).default;\n};\n","import chokidar from 'chokidar';\nimport cssnanoPlugin from 'cssnano';\nimport fs from 'fs-extra';\nimport { glob } from 'glob';\nimport path from 'path';\nimport postcss from 'postcss';\nimport { debounce } from 'remeda';\nimport tailwindcss, { type Config as TailwindConfig } from 'tailwindcss';\nimport invariant from 'tiny-invariant';\nimport { esmImport } from './import.js';\n\nexport const getTailwindConfigFromK2Config = async (\n k2Config: K2.Config['tailwind']\n): Promise<TailwindConfig> => {\n invariant(k2Config?.config, 'tailwind.config is required');\n const config = (await esmImport(path.resolve(k2Config?.config))).default;\n return config;\n};\n\nexport const getTailwindInputCss = (\n config: Plugin.Meta.Config['tailwind']\n): { desktop: string; config: string } => {\n invariant(config?.css, 'tailwind.css is required');\n const { css } = config;\n if (typeof css === 'string') {\n const resolved = path.resolve(css);\n return { desktop: resolved, config: resolved };\n }\n return {\n desktop: path.resolve(css.desktop),\n config: path.resolve(css.config),\n };\n};\n\nexport const getTailwindConfig = async (\n config: Plugin.Meta.Config['tailwind']\n): Promise<{\n desktop: TailwindConfig;\n config: TailwindConfig;\n}> => {\n invariant(config?.config, 'tailwind.config is required');\n\n const { config: configPath } = config;\n\n const configPathForDesktop = typeof configPath === 'string' ? configPath : configPath.desktop;\n const configPathForConfig = typeof configPath === 'string' ? configPath : configPath.config;\n\n const desktopConfig = (await esmImport(path.resolve(configPathForDesktop))).default;\n const configConfig = (await esmImport(path.resolve(configPathForConfig))).default;\n\n return { desktop: desktopConfig, config: configConfig };\n};\n\nexport const outputCss = async (params: {\n inputPath: string;\n outputPath: string;\n config: TailwindConfig;\n minify?: boolean;\n}) => {\n const { inputPath, outputPath, config, minify = false } = params;\n\n const css = await fs.readFile(inputPath, 'utf8');\n\n const result = await postcss([tailwindcss(config), ...(minify ? [cssnanoPlugin()] : [])]).process(\n css,\n {\n from: inputPath,\n to: outputPath,\n }\n );\n\n await fs.writeFile(outputPath, result.css);\n\n if (result.map) {\n await fs.writeFile(`${outputPath}.map`, result.map.toString());\n }\n};\n\ntype WatchType = 'init' | 'add' | 'change' | 'unlink';\n\nexport const watchTailwindCSS = async (params: {\n /** input path */\n input: string;\n /** output path */\n output: string;\n /** tailwindcss config file */\n config: TailwindConfig;\n /** callback function */\n onChanges?: (params: { input: string; output: string; type: WatchType }) => void;\n}) => {\n const { input, output, config } = params;\n\n const content = (config.content as string[] | undefined) ?? ['./src/**/*.{ts,tsx}'];\n\n const files = await glob([...content, input], { ignore: ['**/node_modules/**'] });\n\n const watcher = chokidar.watch(files, {\n persistent: true,\n ignoreInitial: true,\n });\n\n let isInitialized = false;\n\n const processChanges = async (type: WatchType) => {\n try {\n await outputCss({ inputPath: input, outputPath: output, config });\n params.onChanges?.({ input, output, type });\n } catch (error) {\n console.error('Error building Tailwind CSS:', error);\n }\n };\n\n const debouncedProcessChanges = debounce(processChanges, { waitMs: 1000 });\n\n watcher.on('ready', async () => {\n if (!isInitialized) {\n isInitialized = true;\n await processChanges('init');\n }\n });\n\n watcher.on('error', (error) => {\n console.error('Error watching Tailwind CSS:', error);\n });\n\n watcher.on('add', (path) => {\n debouncedProcessChanges.call('add');\n });\n watcher.on('change', (path) => {\n debouncedProcessChanges.call('change');\n });\n watcher.on('unlink', (path) => {\n debouncedProcessChanges.call('unlink');\n });\n watcher.on('unlinkDir', (path) => {\n debouncedProcessChanges.call('unlink');\n });\n\n return watcher;\n};\n","import { ESLint } from 'eslint';\nimport globals from 'globals';\nimport pluginJs from '@eslint/js';\nimport tseslint from 'typescript-eslint';\nimport pluginReact from 'eslint-plugin-react';\n\nexport async function lint() {\n const eslint = new ESLint({\n baseConfig: [\n { files: ['**/*.{js,mjs,cjs,ts,jsx,tsx}'] },\n { languageOptions: { globals: globals.browser } },\n pluginJs.configs.recommended,\n // ...tseslint.configs.recommended,\n ...(pluginReact.configs.flat?.recommended ? [pluginReact.configs.flat.recommended] : []),\n ],\n });\n\n const results = await eslint.lintFiles(['src/**/*.{ts,tsx?}']);\n\n const formatter = await eslint.loadFormatter('stylish');\n const resultText = formatter.format(results);\n\n console.group('👕 Lint Results');\n console.log(resultText);\n console.groupEnd();\n\n const hasErrors = results.some((result) => result.errorCount > 0);\n if (hasErrors) {\n console.error('🚨 Lint errors found');\n process.exit(1);\n }\n}\n","import type { InlineConfig, RollupLog } from 'vite';\nimport path from 'path';\nimport fs from 'fs-extra';\nimport { build as viteBuild } from 'vite';\nimport chalk from 'chalk';\n\n/**\n * Vite設定を生成する\n */\nexport const createViteConfig = (config: Partial<InlineConfig> = {}): InlineConfig => {\n const plugins: InlineConfig['plugins'] = [...(config.plugins ?? [])];\n\n // vite-tsconfig-pathsがインストールされている場合は自動で追加\n try {\n const tsconfigPaths = require('vite-tsconfig-paths');\n plugins.push(tsconfigPaths.default ? tsconfigPaths.default() : tsconfigPaths());\n } catch {\n // vite-tsconfig-paths is optional\n }\n\n return {\n ...config,\n configFile: false,\n build: {\n ...config.build,\n cssCodeSplit: false,\n rollupOptions: {\n ...config.build?.rollupOptions,\n onwarn: (warning: RollupLog, warn: (warning: RollupLog) => void) => {\n // \"use client\"などのディレクティブ警告を無視\n if (['MODULE_LEVEL_DIRECTIVE'].includes(warning.code ?? '')) {\n return;\n }\n warn(warning);\n },\n },\n },\n plugins,\n resolve: {\n ...config.resolve,\n alias: {\n '@': path.resolve(process.cwd(), 'src'),\n ...config.resolve?.alias,\n },\n },\n };\n};\n\n/**\n * 各エントリーポイントを個別にビルドする(chunksを作らないため)\n */\nexport async function buildEntriesWithVite(params: {\n entries: Record<string, string>;\n outDir: string;\n mode?: 'development' | 'production';\n sourcemap?: boolean | 'inline';\n minify?: boolean;\n viteConfig?: Partial<InlineConfig>;\n}): Promise<void> {\n const {\n entries,\n outDir,\n mode = 'production',\n sourcemap = false,\n minify = true,\n viteConfig = {},\n } = params;\n\n for (const name of Object.keys(entries)) {\n const entryPath = entries[name];\n\n const config = createViteConfig({\n ...viteConfig,\n mode,\n build: {\n ...viteConfig.build,\n lib: {\n entry: entryPath,\n name,\n fileName: () => `${name}.js`,\n formats: ['iife'],\n },\n rollupOptions: {\n ...viteConfig.build?.rollupOptions,\n output: {\n assetFileNames: `${name}.[ext]`,\n ...viteConfig.build?.rollupOptions?.output,\n },\n },\n outDir,\n emptyOutDir: false,\n sourcemap,\n minify,\n cssCodeSplit: false,\n },\n });\n\n await viteBuild(config);\n }\n}\n\n/** エントリーポイントファイル名の候補 */\nconst ENTRY_FILE_NAMES = ['index.ts', 'index.tsx', 'index.js', 'index.jsx', 'index.mjs'];\n\n/**\n * ディレクトリからエントリーポイントを取得する\n */\nexport function getEntryPointsFromDir(inputDir: string): Record<string, string> {\n const entries: Record<string, string> = {};\n\n if (!fs.existsSync(inputDir)) {\n throw new Error(`Input directory not found: ${inputDir}`);\n }\n\n const dirs = fs.readdirSync(inputDir, { withFileTypes: true });\n\n for (const dirent of dirs) {\n if (!dirent.isDirectory()) continue;\n\n const dirName = dirent.name;\n const dirPath = path.join(inputDir, dirName);\n\n for (const filename of ENTRY_FILE_NAMES) {\n const entryPath = path.join(dirPath, filename);\n if (fs.existsSync(entryPath)) {\n entries[dirName] = entryPath;\n break;\n }\n }\n }\n\n return entries;\n}\n\n/**\n * エントリーポイントを探す(単一ディレクトリまたはファイル)\n */\nexport function findEntryPoint(basePath: string): string | null {\n for (const filename of ENTRY_FILE_NAMES) {\n const entryPath = path.join(basePath, filename);\n if (fs.existsSync(entryPath)) {\n return entryPath;\n }\n }\n // ディレクトリではなく直接ファイルが指定された場合\n if (fs.existsSync(basePath) && fs.statSync(basePath).isFile()) {\n return basePath;\n }\n return null;\n}\n\n/**\n * プラグイン用エントリーポイントを取得する\n */\nexport function getPluginEntryPoints(options: {\n configEntry: string;\n desktopEntry: string;\n}): Record<string, string> {\n const entries: Record<string, string> = {};\n\n const configPath = findEntryPoint(options.configEntry);\n if (configPath) {\n entries['config'] = configPath;\n } else {\n console.log(chalk.yellow(` ⚠ Config entry not found: ${options.configEntry}`));\n }\n\n const desktopPath = findEntryPoint(options.desktopEntry);\n if (desktopPath) {\n entries['desktop'] = desktopPath;\n } else {\n console.log(chalk.yellow(` ⚠ Desktop entry not found: ${options.desktopEntry}`));\n }\n\n return entries;\n}\n\nexport type { InlineConfig };\n","import { program } from 'commander';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport chalk from 'chalk';\nimport { PLUGIN_CONTENTS_DIRECTORY } from '../lib/constants.js';\nimport { importK2PluginConfig } from '../lib/import.js';\nimport { getTailwindConfig, getTailwindInputCss, outputCss } from '../lib/tailwind.js';\nimport { lint } from '../lib/lint.js';\nimport { buildEntriesWithVite, getPluginEntryPoints } from '../lib/vite.js';\n\nexport default function command() {\n program\n .command('esbuild')\n .description('Build the project for production with Vite. (Legacy command name, now uses Vite)')\n .action(action);\n}\n\nexport async function action() {\n console.group('🍳 Build the project for production');\n\n try {\n const config = await importK2PluginConfig();\n\n if (config?.lint?.build) {\n await lint();\n console.log('✨ Lint success.');\n }\n\n if (!fs.existsSync(PLUGIN_CONTENTS_DIRECTORY)) {\n await fs.mkdir(PLUGIN_CONTENTS_DIRECTORY, { recursive: true });\n }\n\n // 出力ディレクトリをクリア\n await fs.emptyDir(PLUGIN_CONTENTS_DIRECTORY);\n\n if (config.tailwind?.css && config.tailwind?.config) {\n const tailwindConfig = await getTailwindConfig(config.tailwind);\n\n const inputFile = getTailwindInputCss(config.tailwind);\n\n await outputCss({\n inputPath: inputFile.config,\n outputPath: path.join(PLUGIN_CONTENTS_DIRECTORY, 'config.css'),\n config: tailwindConfig.config,\n minify: true,\n });\n console.log('✨ Built config.css');\n await outputCss({\n inputPath: inputFile.desktop,\n outputPath: path.join(PLUGIN_CONTENTS_DIRECTORY, 'desktop.css'),\n config: tailwindConfig.desktop,\n minify: true,\n });\n console.log('✨ Built desktop.css');\n }\n\n const entries = getPluginEntryPoints({\n configEntry: path.resolve('src', 'config'),\n desktopEntry: path.resolve('src', 'desktop'),\n });\n\n const entryNames = Object.keys(entries);\n if (entryNames.length === 0) {\n throw new Error('No entry points found for plugin. Check src/config and src/desktop paths.');\n }\n\n console.log(chalk.gray(` Entry points: ${entryNames.join(', ')}`));\n\n await buildEntriesWithVite({\n entries,\n outDir: PLUGIN_CONTENTS_DIRECTORY,\n mode: 'production',\n sourcemap: false,\n minify: true,\n });\n\n console.log('✨ Built desktop.js and config.js');\n console.log('✨ Build success.');\n } catch (error) {\n throw error;\n } finally {\n console.groupEnd();\n }\n}\n","import { program } from 'commander';\nimport { createServer } from 'vite';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport chalk from 'chalk';\nimport {\n DEFAULT_PORT,\n PLUGIN_DEVELOPMENT_DIRECTORY,\n PLUGIN_WORKSPACE_DIRECTORY,\n} from '../../lib/constants.js';\nimport { importK2PluginConfig } from '../../lib/import.js';\nimport { generateCert, hasCertificates, loadCertificates } from '../../lib/cert.js';\nimport { createViteConfig, buildEntriesWithVite, getPluginEntryPoints } from '../../lib/vite.js';\nimport { getManifest } from './create-manifest.js';\nimport { watchCss } from './tailwind.js';\nimport { watchContentsAndUploadZip } from './upload.js';\n\nexport default function command() {\n program\n .command('dev')\n .option(\n '-p, --ppk <ppk>',\n '.ppk file path',\n path.join(PLUGIN_WORKSPACE_DIRECTORY, 'private.ppk')\n )\n .option('-c, --cert-dir <certDir>', 'Certificate directory', PLUGIN_WORKSPACE_DIRECTORY)\n .description('Start development server with Vite.')\n .action(action);\n}\n\nexport async function action(options: { ppk: string; certDir: string }) {\n console.group('🍳 Start development server');\n try {\n const { ppk: ppkPath, certDir } = options;\n const config = await importK2PluginConfig();\n\n const certDirPath = path.resolve(certDir);\n const outputDir = path.resolve(PLUGIN_DEVELOPMENT_DIRECTORY);\n\n if (!fs.existsSync(PLUGIN_DEVELOPMENT_DIRECTORY)) {\n await fs.mkdir(PLUGIN_DEVELOPMENT_DIRECTORY, { recursive: true });\n }\n\n const port = config.server?.port ?? DEFAULT_PORT;\n\n // SSL証明書の確認\n if (!hasCertificates(certDirPath)) {\n console.log(chalk.yellow('📜 SSL certificates not found. Generating...'));\n try {\n await generateCert(certDirPath);\n console.log(chalk.green('✅ SSL certificates generated successfully'));\n } catch (error) {\n console.log(\n chalk.red('❌ Failed to generate SSL certificates. Make sure mkcert is installed.')\n );\n console.log(chalk.gray(' Install mkcert: https://github.com/FiloSottile/mkcert'));\n throw error;\n }\n }\n\n const manifest = await getManifest({ config, port });\n console.log(`📝 manifest.json generated`);\n\n const entries = getPluginEntryPoints({\n configEntry: path.resolve('src', 'config'),\n desktopEntry: path.resolve('src', 'desktop'),\n });\n\n const entryNames = Object.keys(entries);\n if (entryNames.length === 0) {\n throw new Error('No entry points found for plugin. Check src/config and src/desktop paths.');\n }\n\n console.log(chalk.gray(` Entry points: ${entryNames.join(', ')}`));\n\n await fs.emptyDir(outputDir);\n\n const { key, cert } = loadCertificates(certDirPath);\n\n // 初回ビルド\n console.log(chalk.gray(' Building...'));\n await buildEntriesWithVite({\n entries,\n outDir: outputDir,\n mode: 'development',\n sourcemap: 'inline',\n minify: false,\n });\n\n // 開発サーバー起動\n const serverConfig = createViteConfig({\n root: outputDir,\n server: {\n port,\n https: { key, cert },\n },\n });\n\n const server = await createServer(serverConfig);\n await server.listen();\n\n console.log(chalk.green(`\\n✨ Plugin development server ready!`));\n console.log(chalk.cyan(` Local: https://localhost:${port}`));\n console.log(chalk.gray(` Output: ${outputDir}`));\n console.log(chalk.gray(` Files: config.js, desktop.js`));\n console.log(chalk.gray('\\n Watching for changes...\\n'));\n\n // ファイル監視してビルド\n const chokidar = await import('chokidar');\n const watchPaths = [\n 'src/config/**/*.{ts,tsx,js,jsx,css,scss}',\n 'src/desktop/**/*.{ts,tsx,js,jsx,css,scss}',\n ];\n\n const watcher = chokidar.watch(watchPaths, {\n ignored: /node_modules/,\n persistent: true,\n });\n\n const rebuild = async () => {\n console.log(chalk.gray(' Rebuilding...'));\n await buildEntriesWithVite({\n entries,\n outDir: outputDir,\n mode: 'development',\n sourcemap: 'inline',\n minify: false,\n });\n };\n\n watcher.on('change', rebuild);\n watcher.on('add', rebuild);\n watcher.on('unlink', rebuild);\n\n // 並列タスク\n Promise.all([watchContentsAndUploadZip({ manifest, ppkPath }), watchCss(config)]);\n } catch (error) {\n throw error;\n } finally {\n console.groupEnd();\n }\n}\n","import { exec as defaultExec } from 'child_process';\nimport { promisify } from 'util';\n\nexport const exec = promisify(defaultExec);\n","import { exec } from './exec.js';\nimport fs from 'fs-extra';\nimport path from 'path';\n\n/** SSL証明書のファイル名 */\nexport const CERT_KEY_FILENAME = 'localhost-key.pem';\nexport const CERT_FILENAME = 'localhost-cert.pem';\n\n/**\n * mkcertを使用してSSL証明書を生成する\n * @param outDir 証明書の出力先ディレクトリ\n */\nexport const generateCert = async (outDir: string): Promise<{ stdout: string }> => {\n await fs.ensureDir(outDir);\n const { stdout } = await exec(`mkcert localhost 127.0.0.1 ::1`);\n [\n { input: 'localhost+2.pem', output: CERT_FILENAME },\n { input: 'localhost+2-key.pem', output: CERT_KEY_FILENAME },\n ].forEach(({ input, output }) => {\n if (fs.existsSync(input)) {\n fs.moveSync(`./${input}`, path.join(outDir, output), {\n overwrite: true,\n });\n }\n });\n return { stdout };\n};\n\n/**\n * SSL証明書が存在するか確認する\n * @param certDir 証明書のディレクトリ\n */\nexport function hasCertificates(certDir: string): boolean {\n return (\n fs.existsSync(path.join(certDir, CERT_KEY_FILENAME)) &&\n fs.existsSync(path.join(certDir, CERT_FILENAME))\n );\n}\n\n/**\n * SSL証明書を読み込む\n * @param certDir 証明書のディレクトリ\n */\nexport function loadCertificates(certDir: string): { key: Buffer; cert: Buffer } {\n return {\n key: fs.readFileSync(path.join(certDir, CERT_KEY_FILENAME)),\n cert: fs.readFileSync(path.join(certDir, CERT_FILENAME)),\n };\n}\n","import { PLUGIN_CONTENTS_DIRECTORY } from './constants.js';\nimport { importK2PluginConfig } from './import.js';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport merge from 'deepmerge';\n\nexport const outputManifest = async (\n env: 'dev' | 'prod' | 'standalone',\n options?: { config?: Plugin.Meta.Config }\n): Promise<Plugin.Meta.Manifest> => {\n const config = options?.config || (await importK2PluginConfig());\n\n const merged = merge(config.manifest.base, config.manifest[env] || {}) as Plugin.Meta.Manifest;\n\n await fs.mkdirs(PLUGIN_CONTENTS_DIRECTORY);\n await fs.writeJson(path.join(PLUGIN_CONTENTS_DIRECTORY, 'manifest.json'), merged);\n\n return merged;\n};\n","import { outputManifest } from '../../lib/plugin-manifest.js';\n\nexport const getManifest = async (params: { config: Plugin.Meta.Config; port: number }) => {\n const { config, port } = params;\n return outputManifest('dev', {\n config: {\n ...config,\n manifest: {\n ...config.manifest,\n dev: {\n config: {\n ...config.manifest?.dev?.config,\n js: [`https://localhost:${port}/config.js`],\n css: [`https://localhost:${port}/config.css`],\n },\n desktop: {\n ...config.manifest?.dev?.desktop,\n js: [`https://localhost:${port}/desktop.js`],\n css: [`https://localhost:${port}/desktop.css`],\n },\n mobile: {\n ...config.manifest?.dev?.mobile,\n js: [`https://localhost:${port}/desktop.js`],\n css: [`https://localhost:${port}/desktop.css`],\n },\n },\n },\n },\n });\n};\n","import path from 'path';\nimport { type Config as TailwindConfig } from 'tailwindcss';\nimport { PLUGIN_DEVELOPMENT_DIRECTORY } from '../../lib/constants.js';\nimport chalk from 'chalk';\nimport { getTailwindConfig, getTailwindInputCss, watchTailwindCSS } from '../../lib/tailwind.js';\n\nasync function buildTailwindCSS(params: {\n inputFile: string;\n outputFileName: string;\n config: TailwindConfig;\n}) {\n const { inputFile, outputFileName, config } = params;\n const inputPath = path.resolve(inputFile);\n const outputPath = path.join(PLUGIN_DEVELOPMENT_DIRECTORY, outputFileName);\n\n return watchTailwindCSS({\n input: inputPath,\n output: outputPath,\n config,\n onChanges: ({ output, type }) => {\n const outputFileName = path.basename(output);\n console.log(\n chalk.hex('#e5e7eb')(`${new Date().toLocaleTimeString()} `) +\n chalk.cyan(`[css] `) +\n outputFileName +\n (type === 'init' ? ' init' : ` rebuilt`)\n );\n },\n });\n}\n\nexport const watchCss = async (pluginConfig: Plugin.Meta.Config) => {\n if (!pluginConfig.tailwind?.css || !pluginConfig.tailwind?.config) {\n return;\n }\n\n const tailwindConfig = await getTailwindConfig(pluginConfig.tailwind);\n\n const inputFile = getTailwindInputCss(pluginConfig.tailwind);\n\n return Promise.all([\n buildTailwindCSS({\n inputFile: inputFile.desktop,\n outputFileName: 'desktop.css',\n config: tailwindConfig.desktop,\n }),\n buildTailwindCSS({\n inputFile: inputFile.config,\n outputFileName: 'config.css',\n config: tailwindConfig.config,\n }),\n ]);\n};\n","import packer from '@kintone/plugin-packer';\nimport { copyPluginContents } from '../../lib/plugin-contents.js';\nimport { getContentsZipBuffer, getZipFileNameSuffix, outputContentsZip } from '../../lib/zip.js';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport { PLUGIN_WORKSPACE_DIRECTORY } from '../../lib/constants.js';\nimport { apiUploadZip } from '../../lib/utils.js';\nimport chokider from 'chokidar';\nimport chalk from 'chalk';\n\nexport const watchContentsAndUploadZip = async (params: {\n manifest: Plugin.Meta.Manifest;\n ppkPath: string;\n}) => {\n const { manifest, ppkPath } = params;\n\n let initialScanComplete = false;\n\n const contentsListener = async () => {\n try {\n if (!initialScanComplete) {\n return;\n }\n await copyPluginContents();\n console.log(\n chalk.hex('#e5e7eb')(`${new Date().toLocaleTimeString()} `) +\n chalk.cyan(`[contents] `) +\n `updated`\n );\n } catch (error: any) {\n console.error('Error copying plugin contents:', error);\n return;\n }\n\n try {\n await outputContentsZip(manifest);\n const buffer = await getContentsZipBuffer();\n const pluginPrivateKey = await fs.readFile(path.resolve(ppkPath), 'utf8');\n\n const output = await packer(buffer, pluginPrivateKey);\n\n const zipFileName = `plugin${getZipFileNameSuffix('dev')}.zip`;\n\n await fs.writeFile(path.join(PLUGIN_WORKSPACE_DIRECTORY, zipFileName), output.plugin);\n\n const { method } = await apiUploadZip({ env: 'dev', pluginId: output.id });\n console.log(\n chalk.hex('#e5e7eb')(`${new Date().toLocaleTimeString()} `) +\n chalk.cyan(`[upload] `) +\n `uploaded ${method === 'POST' ? '(new)' : '(update)'}`\n );\n } catch (error: any) {\n console.log(\n chalk.hex('#e5e7eb')(`${new Date().toLocaleTimeString()} `) +\n chalk.cyan(`[upload] `) +\n chalk.red(`failed`) +\n chalk.hex('#e5e7eb')(`: ${error?.message ?? 'Unknown error'}`)\n );\n }\n };\n\n const contentsWatcher = chokider.watch(['src/contents/**/*'], {\n ignored: /node_modules/,\n persistent: true,\n });\n\n contentsWatcher.on('ready', () => {\n initialScanComplete = true;\n contentsListener();\n });\n\n contentsWatcher.on('change', contentsListener);\n contentsWatcher.on('add', contentsListener);\n contentsWatcher.on('unlink', contentsListener);\n};\n","import fs from 'fs-extra';\nimport path from 'path';\nimport { PLUGIN_CONTENTS_DIRECTORY } from './constants.js';\nimport htmlMinifier from 'html-minifier';\n\nexport const copyPluginContents = async (\n params: { inputDir?: string; outputDir?: string } = {}\n) => {\n const { inputDir = path.join('src', 'contents'), outputDir = PLUGIN_CONTENTS_DIRECTORY } = params;\n if (!fs.existsSync(inputDir)) {\n await fs.mkdir(inputDir, { recursive: true });\n }\n\n await fs.copy(inputDir, outputDir, { overwrite: true });\n\n const configHtmlPath = path.join(outputDir, 'config.html');\n\n if (!fs.existsSync(configHtmlPath)) {\n throw new Error(`Plugin HTML file not found. Create \"config.html\" in ${inputDir}.`);\n }\n\n const html = await fs.readFile(configHtmlPath, 'utf8');\n\n const minified = htmlMinifier.minify(html, {\n minifyCSS: true,\n collapseWhitespace: true,\n removeComments: true,\n removeOptionalTags: true,\n removeRedundantAttributes: true,\n removeScriptTypeAttributes: true,\n removeTagWhitespace: true,\n useShortDoctype: true,\n });\n\n await fs.writeFile(configHtmlPath, minified);\n};\n","import archiver from 'archiver';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport invariant from 'tiny-invariant';\nimport { PLUGIN_CONTENTS_DIRECTORY, PLUGIN_WORKSPACE_DIRECTORY } from './constants.js';\n\nexport const outputContentsZip = async (manifest: Plugin.Meta.Manifest) => {\n const archive = archiver('zip', { zlib: { level: 9 } });\n archive.on('warning', (error) => {\n if (error.code === 'ENOENT') {\n console.warn(error);\n } else {\n throw error;\n }\n });\n\n const outputZipPath = path.join(PLUGIN_WORKSPACE_DIRECTORY, 'contents.zip');\n const outputZipStream = fs.createWriteStream(outputZipPath);\n outputZipStream.on('close', () => {\n console.log(`📦 ${archive.pointer()} total bytes`);\n });\n outputZipStream.on('end', function () {\n console.log('📦 Data has been drained');\n });\n\n const filterLocalContent = (file: string) => {\n return !/^https?:\\/\\//.test(file);\n };\n\n invariant(manifest.config?.html, 'manifest.config.html is required');\n\n const targetFiles = [\n 'manifest.json',\n ...new Set([\n manifest.icon,\n manifest.config.html,\n ...(manifest.desktop?.js || []).filter(filterLocalContent),\n ...(manifest.desktop?.css || []).filter(filterLocalContent),\n ...(manifest.mobile?.js || []).filter(filterLocalContent),\n ...(manifest.mobile?.css || []).filter(filterLocalContent),\n ...(manifest.config.js || []).filter(filterLocalContent),\n ...(manifest.config.css || []).filter(filterLocalContent),\n ]),\n ];\n\n console.group('📁 Target files');\n targetFiles.forEach((file, i) => {\n const prefix = i === targetFiles.length - 1 ? '└─' : '├─';\n console.log(`${prefix} 📄 ${file}`);\n });\n console.groupEnd();\n\n for (const file of targetFiles) {\n const filePath = path.join(PLUGIN_CONTENTS_DIRECTORY, file);\n if (!fs.existsSync(filePath)) {\n throw new Error(`${filePath} does not exist`);\n }\n archive.file(filePath, { name: file });\n }\n\n archive.pipe(outputZipStream);\n await archive.finalize();\n await new Promise<void>((resolve) => outputZipStream.on('close', resolve));\n};\n\nexport const getContentsZipBuffer = async () => {\n const outputZipPath = path.join(PLUGIN_WORKSPACE_DIRECTORY, 'contents.zip');\n return fs.readFile(outputZipPath);\n};\n\nexport const getZipFileNameSuffix = (env: string) => {\n return env === 'prod' ? '' : `-${env}`;\n};\n","import { config } from 'dotenv';\n\ntype GetPluginsParams = {\n offset?: number;\n limit?: number;\n};\ntype Plugin = {\n id: string;\n name: string;\n isMarketplace: boolean;\n version: string;\n};\n\ntype GetPluginsSuccessResponse = {\n plugins: Plugin[];\n};\ntype GetPluginResponse = GetPluginsSuccessResponse;\n\ntype AddPluginSuccessResponse = {\n id: string;\n revision: string;\n};\ntype AddPluginErrorResponse = {\n code: string;\n id: string;\n message: string;\n};\ntype AddPluginResponse = AddPluginSuccessResponse | AddPluginErrorResponse;\n\ntype UpdatePluginSuccessResponse = {\n id: string;\n revision: string;\n};\ntype UpdatePluginErrorResponse = {\n code: string;\n id: string;\n message: string;\n errors?: Record<string, { messages: string[] }>;\n};\ntype UpdatePluginResponse = UpdatePluginSuccessResponse | UpdatePluginErrorResponse;\n\nexport class KintoneApiClient {\n #baseUrl: string;\n #authHeader: Record<string, string>;\n\n public constructor() {\n config();\n\n const {\n KINTONE_BASE_URL,\n KINTONE_USERNAME,\n KINTONE_PASSWORD,\n KINTONE_BASIC_AUTH_USERNAME = '',\n KINTONE_BASIC_AUTH_PASSWORD = '',\n } = process.env;\n if (!KINTONE_BASE_URL || !KINTONE_USERNAME || !KINTONE_PASSWORD) {\n throw new Error(`.envの設定が不十分です。以下のパラメータは必須です\nKINTONE_BASE_URL\nKINTONE_USERNAME\nKINTONE_PASSWORD`);\n }\n\n const authHeader = {\n 'X-Cybozu-Authorization': Buffer.from(`${KINTONE_USERNAME}:${KINTONE_PASSWORD}`).toString(\n 'base64'\n ),\n ...(KINTONE_BASIC_AUTH_USERNAME &&\n KINTONE_BASIC_AUTH_PASSWORD && {\n Authorization: `Basic ${Buffer.from(\n `${KINTONE_BASIC_AUTH_USERNAME}:${KINTONE_BASIC_AUTH_PASSWORD}`\n ).toString('base64')}`,\n }),\n };\n this.#baseUrl = KINTONE_BASE_URL;\n this.#authHeader = authHeader;\n }\n\n private getEndpointUrl(path: string): string {\n return `${this.#baseUrl}${path}`;\n }\n\n public async upload(params: { blob: Blob; fileName: string }): Promise<string> {\n const { blob, fileName } = params;\n\n const form = new FormData();\n form.append('file', blob, fileName);\n\n const uploadResult = await fetch(this.getEndpointUrl('/k/v1/file.json'), {\n method: 'POST',\n headers: this.#authHeader,\n body: form,\n });\n\n const { fileKey }: { fileKey: string } = await uploadResult.json();\n\n return fileKey;\n }\n\n public async getPlugins(params: GetPluginsParams = {}): Promise<GetPluginResponse> {\n const url = new URL(this.getEndpointUrl('/k/v1/plugins.json'));\n if (params.offset) {\n url.searchParams.set('offset', String(params.offset));\n }\n if (params.limit) {\n url.searchParams.set('limit', String(params.limit));\n }\n\n const pluginResponse = await fetch(url.toString(), {\n headers: this.#authHeader,\n });\n\n return pluginResponse.json();\n }\n\n public async getAllPlugins(): Promise<Plugin[]> {\n const plugins: Plugin[] = [];\n let offset = 0;\n let limit = 100;\n let hasMore = true;\n\n while (hasMore) {\n const { plugins: currentPlugins } = await this.getPlugins({ offset, limit });\n plugins.push(...currentPlugins);\n\n if (currentPlugins.length < limit) {\n hasMore = false;\n } else {\n offset += limit;\n }\n }\n\n return plugins;\n }\n\n public async addPlugin(params: { fileKey: string }): Promise<AddPluginResponse> {\n const { fileKey } = params;\n\n const pluginResponse = await fetch(this.getEndpointUrl('/k/v1/plugin.json'), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...this.#authHeader,\n },\n body: JSON.stringify({\n fileKey,\n }),\n });\n\n return pluginResponse.json();\n }\n\n public async updatePlugin(params: {\n id: string;\n fileKey: string;\n }): Promise<UpdatePluginResponse> {\n const pluginResponse = await fetch(this.getEndpointUrl('/k/v1/plugin.json'), {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n ...this.#authHeader,\n },\n body: JSON.stringify(params),\n });\n\n return pluginResponse.json();\n }\n}\n","import { PLUGIN_WORKSPACE_DIRECTORY } from './constants.js';\nimport { KintoneApiClient } from './kintone-api-client.js';\nimport { getZipFileNameSuffix } from './zip.js';\nimport fs from 'fs-extra';\nimport path from 'path';\n\nexport const isEnv = (env: string): env is Plugin.Meta.Env => {\n return ['prod', 'dev', 'standalone'].includes(env);\n};\n\n/**\n * プラグインを追加・更新するAPIを利用してプラグインをアップロードします\n */\nexport const apiUploadZip = async (params: {\n env: Plugin.Meta.Env;\n pluginId: string;\n}): Promise<{ method: 'PUT' | 'POST' }> => {\n const { env, pluginId } = params;\n\n const kc = new KintoneApiClient();\n\n const zipFileName = `plugin${getZipFileNameSuffix(env)}.zip`;\n\n const zipFile = new Blob([await fs.readFile(path.join(PLUGIN_WORKSPACE_DIRECTORY, zipFileName))]);\n\n const fileKey = await kc.upload({ blob: zipFile, fileName: zipFileName });\n\n const plugins = await kc.getAllPlugins();\n\n const plugin = plugins.find((p) => p.id === pluginId);\n if (plugin) {\n const json = await kc.updatePlugin({ id: pluginId, fileKey });\n if ('errors' in json && json.errors) {\n console.error((json.errors.id?.messages ?? []).map((m: string) => `Error: ${m}`).join('\\n'));\n }\n return { method: 'PUT' };\n }\n const result = await kc.addPlugin({ fileKey });\n if ('code' in result) {\n console.error(`Error: ${result.message}`);\n }\n return { method: 'POST' };\n};\n\n/**\n * @kintone/plugin-uploaderを利用してプラグインをアップロードします\n * APIを使用した方が高速ですが、2024年11月までは設定により無効になる可能性があるため、暫定的に残しています\n * 使用するには@kintone/plugin-uploaderがインストールされている必要があります\n */\n/*\nexport const uploadZip = async (env: Plugin.Meta.Env) => {\n config();\n\n const {\n KINTONE_BASE_URL,\n KINTONE_USERNAME,\n KINTONE_PASSWORD,\n KINTONE_BASIC_AUTH_USERNAME = '',\n KINTONE_BASIC_AUTH_PASSWORD = '',\n } = process.env;\n if (!KINTONE_BASE_URL || !KINTONE_USERNAME || !KINTONE_PASSWORD) {\n throw new Error(`.envの設定が不十分です。以下のパラメータは必須です\nKINTONE_BASE_URL\nKINTONE_USERNAME\nKINTONE_PASSWORD`);\n }\n\n const zipFileName = `plugin${getZipFileNameSuffix(env)}.zip`;\n\n let command = `kintone-plugin-uploader ${PLUGIN_WORKSPACE_DIRECTORY}/${zipFileName} --base-url ${KINTONE_BASE_URL} --username ${KINTONE_USERNAME} --password ${KINTONE_PASSWORD}`;\n if (KINTONE_BASIC_AUTH_USERNAME && KINTONE_BASIC_AUTH_PASSWORD) {\n command += ` --basic-auth-username ${KINTONE_BASIC_AUTH_USERNAME} --basic-auth-password ${KINTONE_BASIC_AUTH_PASSWORD}`;\n }\n\n return exec(command);\n};\n*/\n","import { program } from 'commander';\nimport base from './genkey-base.js';\nimport { PLUGIN_WORKSPACE_DIRECTORY } from '../lib/constants.js';\n\nexport default function command() {\n program\n .command('genkey')\n .description('Generate SSL key for localhost. (Require mkcert)')\n .action(action);\n}\n\nexport async function action() {\n await base({ output: PLUGIN_WORKSPACE_DIRECTORY });\n}\n","import { generateCert } from '../lib/cert.js';\n\nexport default async function action(options: { output: string }) {\n const { output } = options;\n\n console.group('🍳 Generate SSL key for localhost');\n try {\n const { stdout } = await generateCert(output);\n if (stdout) {\n console.log(stdout);\n }\n console.log(`🔑 key generation success. Output to ./${output}`);\n } catch (error) {\n throw error;\n } finally {\n console.groupEnd();\n }\n}\n","import { program } from 'commander';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport packer from '@kintone/plugin-packer';\nimport { outputManifest } from '../lib/plugin-manifest.js';\nimport { PLUGIN_WORKSPACE_DIRECTORY } from '../lib/constants.js';\nimport { getContentsZipBuffer, outputContentsZip } from '../lib/zip.js';\nimport { copyPluginContents } from '../lib/plugin-contents.js';\n\nexport default function command() {\n program.command('init').description('generate private.ppk and kitting config').action(action);\n}\n\nexport async function action() {\n console.group('🍳 Executing plugin initialization setup');\n try {\n const manifest = await outputManifest('dev');\n console.log('📝 manifest.json generated');\n\n await copyPluginContents();\n console.log('📁 contents copied');\n\n let privateKey: string | undefined;\n const keyPath = path.join(PLUGIN_WORKSPACE_DIRECTORY, 'private.ppk');\n if (fs.existsSync(keyPath)) {\n privateKey = await fs.readFile(keyPath, 'utf8');\n }\n\n await outputContentsZip(manifest);\n const buffer = await getContentsZipBuffer();\n\n const output = await packer(buffer, privateKey);\n\n if (!privateKey) {\n await fs.writeFile(path.join(PLUGIN_WORKSPACE_DIRECTORY, 'private.ppk'), output.privateKey);\n console.log('🔑 private.ppk generated');\n } else {\n console.log('🔑 private.ppk already exists. The existing private.ppk will be used.');\n }\n await fs.writeFile(path.join(PLUGIN_WORKSPACE_DIRECTORY, 'plugin.zip'), output.plugin);\n console.log('📦 plugin.zip generated');\n console.log('✨ Plugin initialization setup completed! zip file path is ./.plugin/plugin.zip');\n } catch (error) {\n throw error;\n } finally {\n console.groupEnd();\n }\n}\n","import { program } from 'commander';\nimport { outputManifest } from '../../lib/plugin-manifest.js';\nimport { copyPluginContents } from '../../lib/plugin-contents.js';\n\nexport default function command(): void {\n program\n .command('manifest')\n .option('-e, --env <env>', 'create manifest', 'prod')\n .action(action);\n}\n\nasync function action(options: { env: string }): Promise<void> {\n console.group('🚀 Executing manifest generation');\n try {\n const { env } = options;\n if (env !== 'prod' && env !== 'dev' && env !== 'standalone') {\n throw new Error('Invalid environment');\n }\n\n await copyPluginContents();\n console.log('📁 contents copied');\n\n await outputManifest(env);\n console.log(`📝 manifest.json generated (${env})`);\n } catch (error) {\n throw error;\n } finally {\n console.groupEnd();\n }\n}\n","import { program } from 'commander';\nimport fs from 'fs-extra';\nimport { esmImport } from '../../lib/import.js';\n\nexport default function command() {\n program.command('test').description('test').action(action);\n}\n\nexport async function action() {\n console.group('package.json');\n const packageJson = fs.readJSONSync('package.json');\n console.log('package.json detected');\n console.groupEnd();\n\n console.group('Config');\n const config = await esmImport('plugin.config.mjs');\n console.log('plugin.config.mjs detected', config);\n console.groupEnd();\n}\n","import { program } from 'commander';\nimport { outputManifest } from '../lib/plugin-manifest.js';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport { PLUGIN_WORKSPACE_DIRECTORY } from '../lib/constants.js';\nimport packer from '@kintone/plugin-packer';\nimport { getContentsZipBuffer, getZipFileNameSuffix, outputContentsZip } from '../lib/zip.js';\nimport { copyPluginContents } from '../lib/plugin-contents.js';\nimport { isEnv } from '../lib/utils.js';\n\nexport default function command(): void {\n program\n .command('zip')\n .description('generate plugin zip')\n .option('-e, --env <env>', 'plugin environment (dev, prod, standalone)', 'prod')\n .option(\n '-p, --ppk <ppk>',\n '.ppk file path',\n path.join(PLUGIN_WORKSPACE_DIRECTORY, 'private.ppk')\n )\n .action(action);\n}\n\nasync function action(options: { env: string; ppk: string }): Promise<void> {\n console.group('🍳 Executing plugin zip generation');\n try {\n const { env, ppk: ppkPath } = options;\n if (!isEnv(env)) {\n throw new Error('Invalid environment');\n }\n\n await copyPluginContents();\n console.log('📁 contents copied');\n\n const manifest = await outputManifest(env);\n console.log(`📝 manifest.json generated (${env})`);\n\n await outputContentsZip(manifest);\n console.log('📦 contents.zip generated');\n\n const buffer = await getContentsZipBuffer();\n const privateKey = await fs.readFile(path.resolve(ppkPath), 'utf8');\n\n const output = await packer(buffer, privateKey);\n\n const zipFileName = `plugin${getZipFileNameSuffix(env)}.zip`;\n\n await fs.writeFile(path.join(PLUGIN_WORKSPACE_DIRECTORY, zipFileName), output.plugin);\n console.log('📦 plugin.zip generated');\n\n // version ファイルを出力\n const version = String(manifest.version);\n await fs.writeFile(path.join(PLUGIN_WORKSPACE_DIRECTORY, 'version'), version);\n console.log(`📝 version file generated (${version})`);\n\n console.log(`✨ Plugin zip generation completed! zip file path is ./.plugin/${zipFileName}`);\n } catch (error) {\n throw error;\n } finally {\n console.groupEnd();\n }\n}\n","import { program } from 'commander';\nimport { lint } from '../lib/lint.js';\n\nexport default function command() {\n program\n .command('lint')\n .description('Lint source files')\n .option('-c, --config <config>', 'Config file path')\n .action(action);\n}\n\nexport async function action(options: {\n outdir: string;\n certdir: string;\n port: string;\n input: string;\n}) {\n try {\n lint();\n } catch (error) {\n throw error;\n } finally {\n }\n}\n","import { program } from 'commander';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport type { Options } from 'tsup';\nimport { PLUGIN_CONTENTS_DIRECTORY } from '../lib/constants.js';\nimport { importK2PluginConfig } from '../lib/import.js';\nimport { lint } from '../lib/lint.js';\nimport { getTailwindConfig, getTailwindInputCss, outputCss } from '../lib/tailwind.js';\nimport { buildWithTsup } from '../lib/tsup.js';\n\nexport default function command() {\n program\n .command('tsup')\n .description(\"Build the project for production. (It's a wrapper of webpack build command.)\")\n .action(action);\n}\n\nexport async function action() {\n console.group('🍳 Build the project for production');\n\n try {\n const config = await importK2PluginConfig();\n\n if (config?.lint?.build) {\n await lint();\n console.log('✨ Lint success.');\n }\n\n if (!fs.existsSync(PLUGIN_CONTENTS_DIRECTORY)) {\n await fs.mkdir(PLUGIN_CONTENTS_DIRECTORY, { recursive: true });\n }\n\n if (config.tailwind?.css && config.tailwind?.config) {\n const tailwindConfig = await getTailwindConfig(config.tailwind);\n\n const inputFile = getTailwindInputCss(config.tailwind);\n\n await outputCss({\n inputPath: inputFile.config,\n outputPath: path.join(PLUGIN_CONTENTS_DIRECTORY, 'config.css'),\n config: tailwindConfig.config,\n minify: true,\n });\n console.log('✨ Built config.css');\n await outputCss({\n inputPath: inputFile.desktop,\n outputPath: path.join(PLUGIN_CONTENTS_DIRECTORY, 'desktop.css'),\n config: tailwindConfig.desktop,\n minify: true,\n });\n console.log('✨ Built desktop.css');\n }\n\n const entryPoints: Options['entry'] = ['desktop', 'config'].reduce(\n (acc, dir) => ({\n ...acc,\n [dir]: path.join('src', dir, 'index.ts'),\n }),\n {}\n );\n\n await buildWithTsup({\n entryPoints,\n outDir: PLUGIN_CONTENTS_DIRECTORY,\n minify: true,\n treeshake: true,\n sourcemap: false,\n });\n console.log('✨ Built desktop.js and config.js');\n console.log('✨ Build success.');\n } catch (error) {\n throw error;\n } finally {\n console.groupEnd();\n }\n}\n","import { type Options, build } from 'tsup';\n\n/**\n * 受け取ったビルドオプションに対して、共通するビルドオプションを補完します\n *\n * @param params\n * @returns\n */\nconst completeBuildOptions = (params: Options): Options => {\n return {\n bundle: true,\n minify: 'terser',\n splitting: false,\n noExternal: [/.*/],\n platform: 'browser',\n dts: true,\n ...params,\n esbuildOptions(options, context) {\n options.legalComments = 'none';\n },\n };\n};\n\nexport const buildWithTsup = async (buildOptions: Options) => {\n const options = completeBuildOptions(buildOptions);\n await build(options);\n};\n"],"mappings":"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","names":["program","fs","path","chalk","path","path","path","config","path","path","fs","config","path","fs","config","fs","path","chalk","program","fs","path","chalk","command","program","action","config","fs","path","chalk","program","fs","path","chalk","fs","path","fs","path","config","config","path","chalk","config","path","outputFileName","chalk","fs","path","path","fs","fs","path","invariant","path","fs","invariant","fs","path","path","fs","path","chalk","fs","path","command","program","path","action","config","fs","chalk","chokidar","program","action","command","program","action","program","fs","path","packer","command","program","action","path","fs","packer","program","command","program","action","program","fs","command","program","action","fs","config","program","fs","path","packer","command","program","path","action","fs","packer","program","command","program","action","program","fs","path","command","program","action","config","fs","path","program","command"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@konomi-app/k2",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "kintone sdk",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -29,11 +29,9 @@
|
|
|
29
29
|
"@kintone/plugin-packer": "^7.0.0 || ^8.0.0",
|
|
30
30
|
"archiver": "^6.0.0 || ^7.0.0",
|
|
31
31
|
"chokidar": "^3.0.0 || ^4.0.0",
|
|
32
|
-
"css-loader": "^6.0.0 || ^7.0.0",
|
|
33
32
|
"cssnano": "^6.0.0 || ^7.0.0",
|
|
34
33
|
"deepmerge": "^4.0.0",
|
|
35
34
|
"dotenv": "^16.0.0 || ^17.0.0",
|
|
36
|
-
"esbuild": ">=0.20.0",
|
|
37
35
|
"eslint": "^8.0.0 || ^9.0.0",
|
|
38
36
|
"eslint-config-prettier": "^9.0.0 || ^10.0.0",
|
|
39
37
|
"eslint-plugin-import": "^2.25.0",
|
|
@@ -43,18 +41,13 @@
|
|
|
43
41
|
"glob": "^10.0.0 || ^11.0.0",
|
|
44
42
|
"globals": "^14.0.0 || ^15.0.0 || ^16.0.0",
|
|
45
43
|
"html-minifier": "^4.0.0",
|
|
46
|
-
"mini-css-extract-plugin": "^2.0.0",
|
|
47
44
|
"postcss": "^8.0.0",
|
|
48
45
|
"remeda": "^1.0.0 || ^2.0.0",
|
|
49
46
|
"sass": "^1.50.0",
|
|
50
|
-
"sass-loader": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0",
|
|
51
|
-
"style-loader": "^3.0.0 || ^4.0.0",
|
|
52
|
-
"terser-webpack-plugin": "^5.0.0",
|
|
53
|
-
"ts-loader": "^9.0.0",
|
|
54
|
-
"tsconfig-paths-webpack-plugin": "^4.0.0",
|
|
55
47
|
"tsup": "^7.0.0 || ^8.0.0",
|
|
56
48
|
"typescript-eslint": "^7.0.0 || ^8.0.0",
|
|
57
|
-
"
|
|
49
|
+
"vite": "^5.0.0 || ^6.0.0",
|
|
50
|
+
"vite-tsconfig-paths": "^4.0.0 || ^5.0.0"
|
|
58
51
|
},
|
|
59
52
|
"peerDependenciesMeta": {
|
|
60
53
|
"eslint-config-prettier": {
|
|
@@ -69,10 +62,10 @@
|
|
|
69
62
|
"eslint-plugin-promise": {
|
|
70
63
|
"optional": true
|
|
71
64
|
},
|
|
72
|
-
"
|
|
65
|
+
"tailwindcss": {
|
|
73
66
|
"optional": true
|
|
74
67
|
},
|
|
75
|
-
"
|
|
68
|
+
"vite-tsconfig-paths": {
|
|
76
69
|
"optional": true
|
|
77
70
|
}
|
|
78
71
|
},
|
|
@@ -88,11 +81,9 @@
|
|
|
88
81
|
"@typescript-eslint/parser": "^8.44.0",
|
|
89
82
|
"archiver": "^7.0.1",
|
|
90
83
|
"chokidar": "^4.0.3",
|
|
91
|
-
"css-loader": "^7.1.2",
|
|
92
84
|
"cssnano": "^7.1.1",
|
|
93
85
|
"deepmerge": "^4.3.1",
|
|
94
86
|
"dotenv": "^17.2.2",
|
|
95
|
-
"esbuild": "^0.25.10",
|
|
96
87
|
"eslint": "^9.36.0",
|
|
97
88
|
"eslint-config-prettier": "^10.1.8",
|
|
98
89
|
"eslint-plugin-import": "^2.32.0",
|
|
@@ -102,20 +93,15 @@
|
|
|
102
93
|
"glob": "^11.0.3",
|
|
103
94
|
"globals": "^16.4.0",
|
|
104
95
|
"html-minifier": "^4.0.0",
|
|
105
|
-
"mini-css-extract-plugin": "^2.9.4",
|
|
106
96
|
"postcss": "^8.5.6",
|
|
107
97
|
"remeda": "^2.32.0",
|
|
108
98
|
"sass": "^1.93.0",
|
|
109
|
-
"sass-loader": "^16.0.5",
|
|
110
|
-
"style-loader": "^4.0.0",
|
|
111
99
|
"tailwindcss": "^3",
|
|
112
|
-
"terser-webpack-plugin": "^5.3.14",
|
|
113
|
-
"ts-loader": "^9.5.4",
|
|
114
|
-
"tsconfig-paths-webpack-plugin": "^4.2.0",
|
|
115
100
|
"tsup": "^8.5.0",
|
|
116
101
|
"typescript": "^5.9.2",
|
|
117
102
|
"typescript-eslint": "^8.44.0",
|
|
118
|
-
"
|
|
103
|
+
"vite": "^6.3.4",
|
|
104
|
+
"vite-tsconfig-paths": "^5.1.4"
|
|
119
105
|
},
|
|
120
106
|
"scripts": {
|
|
121
107
|
"build": "tsup",
|