@rpcbase/vite 0.134.0 → 0.136.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.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAA;AAKvB,OAAO,EACL,YAAY,IAAI,gBAAgB,EAGjC,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAyB,gBAAgB,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAOjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AAI9E,OAAO,EAAE,0BAA0B,EAAE,CAAA;AA6DrC,QAAA,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM1C,CAAA;AA4BD,OAAO,EAAE,cAAc,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAA;AAKvB,OAAO,EACL,YAAY,IAAI,gBAAgB,EAGjC,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAyB,gBAAgB,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAOjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AAI9E,OAAO,EAAE,0BAA0B,EAAE,CAAA;AA6DrC,QAAA,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM1C,CAAA;AA4BD,OAAO,EAAE,cAAc,EAAE,CAAA;AAsIzB,eAAO,MAAM,YAAY,GAAI,YAAY,gBAAgB,KAAG,YAW3D,CAAA;AAqCD,eAAO,MAAM,gBAAgB,GAAI,YAAY,gBAAgB,KAAG,YAW/D,CAAA;AAED,eAAO,MAAM,YAAY,yBAAmB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -598,7 +598,13 @@ const getBaseConfig = (configEnv) => {
|
|
|
598
598
|
clearScreen: false,
|
|
599
599
|
plugins: [
|
|
600
600
|
pruneModelsForClientPlugin(),
|
|
601
|
-
react(
|
|
601
|
+
react({
|
|
602
|
+
babel: {
|
|
603
|
+
plugins: [
|
|
604
|
+
["babel-plugin-react-compiler", { target: "19" }]
|
|
605
|
+
]
|
|
606
|
+
}
|
|
607
|
+
}),
|
|
602
608
|
createHtmlPlugin({
|
|
603
609
|
// IMPORTANT: minify removes comments by default, which are used by the app ssr
|
|
604
610
|
minify: htmlMinifyOptions
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/dotEnvExpand.ts","../src/resolveIntegratedPackagePath.ts","../src/plugins/posthog-sourcemaps/index.ts","../src/plugins/prune-models-for-client/transformSource.ts","../src/plugins/prune-models-for-client/index.ts","../src/plugins/spec-inputs/index.ts","../src/index.ts"],"sourcesContent":["import fs from \"node:fs\"\nimport path from \"path\"\n\nimport dotenv from \"dotenv\"\nimport { expand } from \"dotenv-expand\"\n\n\nconst envFilePath = path.resolve(process.cwd(), \".env\")\n\nif (fs.existsSync(envFilePath)) {\n const parsedFile = dotenv.parse(fs.readFileSync(envFilePath))\n const expanded = expand({ parsed: parsedFile }).parsed || {}\n Object.assign(process.env, expanded)\n}\n","import path from \"path\"\nimport { createRequire } from \"node:module\"\nimport { existsSync, readFileSync } from \"node:fs\"\n\n\nconst require = createRequire(import.meta.url)\n\nconst splitPackageSpecifier = (specifier: string) => {\n if (!specifier) return { pkgName: specifier, subpath: \"\" }\n\n if (specifier.startsWith(\"@\")) {\n const segments = specifier.split(\"/\")\n if (segments.length < 2) return { pkgName: specifier, subpath: \"\" }\n return {\n pkgName: `${segments[0]}/${segments[1]}`,\n subpath: segments.slice(2).join(\"/\"),\n }\n }\n\n const [pkgName, ...rest] = specifier.split(\"/\")\n return { pkgName, subpath: rest.join(\"/\") }\n}\n\nconst withTrailingSep = (p: string) => (p.endsWith(path.sep) ? p : p + path.sep)\n\nconst resolvePackageRoot = (pkg: string) => {\n const { pkgName } = splitPackageSpecifier(pkg)\n if (!pkgName) return pkg\n\n // 1) chemin rapide: si le package exporte son package.json\n try {\n const pkgJson = require.resolve(`${pkgName}/package.json`)\n return path.dirname(pkgJson)\n } catch (err) {\n // 2) fallback: résoudre l'entrée du package puis remonter jusqu'à sa racine\n const entry = require.resolve(pkgName) // ex: .../node_modules/<pkg>/dist/...\n let dir = path.dirname(entry)\n\n // remonter jusqu'à un package.json dont \"name\" === pkg\n while (true) {\n const pkgJsonPath = path.join(dir, \"package.json\")\n if (existsSync(pkgJsonPath)) {\n try {\n const json = JSON.parse(readFileSync(pkgJsonPath, \"utf8\"))\n if (json && json.name === pkgName) return dir\n } catch {\n // ignore parsing errors\n }\n }\n const parent = path.dirname(dir)\n if (parent === dir) break\n dir = parent\n }\n\n // 3) dernier recours: reconstruire depuis le segment node_modules (ok avec pnpm)\n const nmMarker = `${path.sep}node_modules${path.sep}`\n const idx = entry.lastIndexOf(nmMarker)\n if (idx !== -1) {\n const nmRoot = entry.slice(0, idx + nmMarker.length)\n return path.join(nmRoot, pkgName)\n }\n\n // si vraiment rien trouvé, relancer l'erreur d'origine\n throw err\n }\n}\n\nexport const resolveIntegratedPackagePath = (specifier: string) => {\n const { pkgName, subpath } = splitPackageSpecifier(specifier)\n if (!pkgName) return specifier\n\n const root = resolvePackageRoot(pkgName)\n if (!subpath) {\n return withTrailingSep(root)\n }\n\n const subDir = path.join(root, subpath)\n const pkgJsonPath = path.join(subDir, \"package.json\")\n if (existsSync(pkgJsonPath)) {\n try {\n const pkgJson = JSON.parse(readFileSync(pkgJsonPath, \"utf8\"))\n const entry = pkgJson.module || pkgJson.main\n if (entry) {\n return path.join(subDir, entry)\n }\n } catch {\n // ignore parsing errors\n }\n }\n\n try {\n return require.resolve(specifier)\n } catch {\n return withTrailingSep(subDir)\n }\n}\n","import { spawn } from \"node:child_process\"\nimport path from \"node:path\"\nimport fs from \"node:fs\"\nimport { fileURLToPath } from \"node:url\"\n\nimport type { Plugin } from \"vite\"\n\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url))\n\nfunction run(bin: string, args: string[]) {\n return new Promise<void>((resolve, reject) => {\n const p = spawn(bin, args, { stdio: \"inherit\" })\n p.on(\"close\", (code) => code === 0 ? resolve() : reject(new Error(`posthog-cli exited ${code}`)))\n })\n}\n\nfunction resolvePosthogCliBin() {\n const binName = \"posthog-cli\"\n\n const fromCwd = path.join(process.cwd(), \"node_modules\", \".bin\", binName)\n if (fs.existsSync(fromCwd)) return fromCwd\n\n let dir = __dirname\n while (true) {\n const candidate = path.join(dir, \"node_modules\", \".bin\", binName)\n if (fs.existsSync(candidate)) return candidate\n\n const parent = path.dirname(dir)\n if (parent === dir) break\n dir = parent\n }\n\n return binName\n}\n\nexport function posthogSourcemapsPlugin(opts: {\n directory?: string\n version?: string\n host?: string\n deleteAfterUpload?: boolean\n} = {}): Plugin {\n const {\n directory = \"build/dist\",\n version,\n host = process.env.RB_PUBLIC_POSTHOG_HOST || \"https://eu.posthog.com\",\n deleteAfterUpload = true\n } = opts\n\n const bin = resolvePosthogCliBin()\n const globalArgs = [\"--host\", host]\n\n return {\n name: \"posthog-sourcemaps\",\n apply: \"build\",\n closeBundle: async () => {\n const orange = \"\\x1b[38;5;208m\"\n const reset = \"\\x1b[0m\"\n\n const envId = process.env.POSTHOG_CLI_ENV_ID\n const token = process.env.POSTHOG_CLI_TOKEN\n if (!envId || !token) {\n\n console.warn(`${orange}posthog-sourcemaps: plugin is enabled but no env vars for auth configured (POSTHOG_CLI_ENV_ID/POSTHOG_CLI_TOKEN). Skipping without failing.${reset}`)\n return\n }\n\n // if (!process.env.CI) {\n // console.warn(`${orange}posthog-sourcemaps: plugin has correct configuration, but refusing to run when process.env.CI is not set. Skipping without failing.${reset}`)\n // return\n // }\n\n const injectArgs = [\"sourcemap\", \"inject\", \"--directory\", directory]\n if (version) injectArgs.push(\"--version\", version)\n\n const uploadArgs = [\"sourcemap\", \"upload\", \"--directory\", directory]\n if (deleteAfterUpload) uploadArgs.push(\"--delete-after\")\n\n await run(bin, [...globalArgs, ...injectArgs])\n await run(bin, [...globalArgs, ...uploadArgs])\n }\n }\n}\n","import path from \"node:path\"\n\nimport MagicString from \"magic-string\"\nimport type { SourceMapInput } from \"rollup\"\nimport * as ts from \"typescript\"\n\n\nexport type PruneModelsForClientTransformResult = { code: string; map: SourceMapInput }\nexport type PruneModelsForClientTransform = (args: { code: string; filePath: string }) => PruneModelsForClientTransformResult | null\n\nfunction isForbiddenModuleSource(source: string): boolean {\n if (source === \"mongoose\") return true\n if (source.startsWith(\"node:\")) return true\n if (source.endsWith(\"/extendMongooseSchema\") || source.endsWith(\"./extendMongooseSchema\") || source.endsWith(\"extendMongooseSchema\")) {\n return true\n }\n return false\n}\n\nfunction getModuleSpecifierValue(importDeclaration: ts.ImportDeclaration): string | null {\n const moduleSpecifier = importDeclaration.moduleSpecifier\n if (!ts.isStringLiteralLike(moduleSpecifier)) return null\n return moduleSpecifier.text\n}\n\nfunction isTypeOnlyImport(importDeclaration: ts.ImportDeclaration): boolean {\n const importClause = importDeclaration.importClause\n if (!importClause) return false\n return importClause.isTypeOnly === true\n}\n\nfunction getImportValueLocals(importDeclaration: ts.ImportDeclaration): string[] {\n if (isTypeOnlyImport(importDeclaration)) return []\n\n const importClause = importDeclaration.importClause\n if (!importClause) return []\n\n const locals: string[] = []\n\n if (importClause.name) locals.push(importClause.name.text)\n\n const namedBindings = importClause.namedBindings\n if (namedBindings) {\n if (ts.isNamespaceImport(namedBindings)) {\n locals.push(namedBindings.name.text)\n } else if (ts.isNamedImports(namedBindings)) {\n for (const specifier of namedBindings.elements) {\n if (specifier.isTypeOnly) continue\n locals.push(specifier.name.text)\n }\n }\n }\n\n return locals\n}\n\nfunction getNamedImportSpecifiers(importDeclaration: ts.ImportDeclaration): ts.NodeArray<ts.ImportSpecifier> | null {\n const importClause = importDeclaration.importClause\n if (!importClause) return null\n if (!importClause.namedBindings) return null\n if (!ts.isNamedImports(importClause.namedBindings)) return null\n return importClause.namedBindings.elements\n}\n\nfunction rewriteRpcbaseDbImport(importDeclaration: ts.ImportDeclaration, forbiddenIdentifiers: Set<string>): {\n rewriteText: string | null\n remainingValueLocals: string[]\n} {\n const valueLocals = getImportValueLocals(importDeclaration)\n\n const zLocals = new Set<string>()\n\n const namedImports = getNamedImportSpecifiers(importDeclaration)\n if (namedImports && !isTypeOnlyImport(importDeclaration)) {\n for (const specifier of namedImports) {\n if (specifier.isTypeOnly) continue\n const imported = specifier.propertyName?.text ?? specifier.name.text\n if (imported !== \"z\") continue\n zLocals.add(specifier.name.text)\n }\n }\n\n for (const local of valueLocals) {\n if (!zLocals.has(local)) forbiddenIdentifiers.add(local)\n }\n\n if (zLocals.size === 0) {\n return { rewriteText: null, remainingValueLocals: [] }\n }\n\n const specifierText = Array.from(zLocals)\n .map((local) => (local === \"z\" ? \"z\" : `z as ${local}`))\n .join(\", \")\n\n return {\n rewriteText: `import { ${specifierText} } from \"@rpcbase/db\"`,\n remainingValueLocals: Array.from(zLocals),\n }\n}\n\nfunction collectBindingNames(name: ts.BindingName, out: string[]): void {\n if (ts.isIdentifier(name)) {\n out.push(name.text)\n return\n }\n\n for (const element of name.elements) {\n if (ts.isOmittedExpression(element)) continue\n collectBindingNames(element.name, out)\n }\n}\n\nfunction getTopLevelBindings(statement: ts.Statement): string[] {\n if (ts.isVariableStatement(statement)) {\n const names: string[] = []\n for (const decl of statement.declarationList.declarations) {\n collectBindingNames(decl.name, names)\n }\n return names\n }\n\n if (ts.isFunctionDeclaration(statement) || ts.isClassDeclaration(statement) || ts.isEnumDeclaration(statement)) {\n return statement.name ? [statement.name.text] : []\n }\n\n return []\n}\n\nfunction isRuntimeReferenceIdentifier(identifier: ts.Identifier): boolean {\n const parent = identifier.parent\n if (!parent) return true\n\n if (ts.isVariableDeclaration(parent) && parent.name === identifier) return false\n if (ts.isParameter(parent) && parent.name === identifier) return false\n\n if ((ts.isFunctionDeclaration(parent) || ts.isFunctionExpression(parent)) && parent.name === identifier) return false\n if ((ts.isClassDeclaration(parent) || ts.isClassExpression(parent)) && parent.name === identifier) return false\n if (ts.isEnumDeclaration(parent) && parent.name === identifier) return false\n\n if (ts.isTypeAliasDeclaration(parent) && parent.name === identifier) return false\n if (ts.isInterfaceDeclaration(parent) && parent.name === identifier) return false\n if (ts.isModuleDeclaration(parent) && parent.name === identifier) return false\n if (ts.isTypeParameterDeclaration(parent) && parent.name === identifier) return false\n\n if (ts.isImportClause(parent) && parent.name === identifier) return false\n if (ts.isNamespaceImport(parent) && parent.name === identifier) return false\n if (ts.isImportSpecifier(parent) && parent.name === identifier) return false\n if (ts.isImportEqualsDeclaration(parent) && parent.name === identifier) return false\n\n if (ts.isBindingElement(parent)) {\n if (parent.name === identifier) return false\n if (parent.propertyName === identifier) return false\n }\n\n if (ts.isPropertyAccessExpression(parent) && parent.name === identifier) return false\n if (ts.isQualifiedName(parent)) return false\n\n if (ts.isPropertyAssignment(parent) && parent.name === identifier) return false\n if (ts.isPropertyDeclaration(parent) && parent.name === identifier) return false\n if (ts.isPropertySignature(parent) && parent.name === identifier) return false\n\n if (ts.isMethodDeclaration(parent) && parent.name === identifier) return false\n if (ts.isMethodSignature(parent) && parent.name === identifier) return false\n if (ts.isGetAccessorDeclaration(parent) && parent.name === identifier) return false\n if (ts.isSetAccessorDeclaration(parent) && parent.name === identifier) return false\n\n if (ts.isShorthandPropertyAssignment(parent) && parent.name === identifier) return true\n\n if (ts.isExportSpecifier(parent)) {\n const local = parent.propertyName ?? parent.name\n return identifier === local\n }\n\n if (ts.isLabeledStatement(parent) && parent.label === identifier) return false\n if ((ts.isBreakStatement(parent) || ts.isContinueStatement(parent)) && parent.label === identifier) return false\n\n return true\n}\n\nfunction referencesForbiddenRuntime(statement: ts.Statement, forbidden: Set<string>): boolean {\n if (forbidden.size === 0) return false\n\n if (ts.isInterfaceDeclaration(statement) || ts.isTypeAliasDeclaration(statement)) return false\n\n let found = false\n\n const visit = (node: ts.Node): void => {\n if (found) return\n\n if (ts.isTypeNode(node)) return\n\n if (ts.isHeritageClause(node) && node.token === ts.SyntaxKind.ImplementsKeyword) return\n\n if (ts.isIdentifier(node)) {\n if (forbidden.has(node.text) && isRuntimeReferenceIdentifier(node)) {\n found = true\n return\n }\n }\n\n ts.forEachChild(node, visit)\n }\n\n visit(statement)\n\n return found\n}\n\nfunction scriptKindFromFilePath(filePath: string): ts.ScriptKind {\n const ext = path.extname(filePath).toLowerCase()\n if (ext === \".tsx\") return ts.ScriptKind.TSX\n return ts.ScriptKind.TS\n}\n\nfunction collectRuntimeIdentifierReferences(statement: ts.Statement, out: Set<string>): void {\n const visit = (node: ts.Node): void => {\n if (ts.isTypeNode(node)) return\n if (ts.isHeritageClause(node) && node.token === ts.SyntaxKind.ImplementsKeyword) return\n\n if (ts.isIdentifier(node) && isRuntimeReferenceIdentifier(node)) {\n out.add(node.text)\n }\n\n ts.forEachChild(node, visit)\n }\n\n visit(statement)\n}\n\nexport function createTransformSource(): PruneModelsForClientTransform {\n return ({ code, filePath }) => {\n const forbiddenIdentifiers = new Set<string>()\n const scriptKind = scriptKindFromFilePath(filePath)\n const sourceFile = ts.createSourceFile(filePath, code, ts.ScriptTarget.Latest, true, scriptKind)\n\n const importActions = new Map<ts.ImportDeclaration, { type: \"remove\" } | { type: \"overwrite\"; text: string; remainingValueLocals: string[] }>()\n\n for (const statement of sourceFile.statements) {\n if (!ts.isImportDeclaration(statement)) continue\n\n const source = getModuleSpecifierValue(statement)\n if (!source) continue\n\n if (source === \"@rpcbase/db\") {\n const { rewriteText, remainingValueLocals } = rewriteRpcbaseDbImport(statement, forbiddenIdentifiers)\n if (!rewriteText) importActions.set(statement, { type: \"remove\" })\n else importActions.set(statement, { type: \"overwrite\", text: rewriteText, remainingValueLocals })\n continue\n }\n\n if (!isForbiddenModuleSource(source)) continue\n\n getImportValueLocals(statement).forEach((local) => forbiddenIdentifiers.add(local))\n importActions.set(statement, { type: \"remove\" })\n }\n\n let changed = true\n const statementsToRemove = new Set<ts.Statement>()\n while (changed) {\n changed = false\n\n for (const statement of sourceFile.statements) {\n if (ts.isImportDeclaration(statement)) continue\n if (statementsToRemove.has(statement)) continue\n if (!referencesForbiddenRuntime(statement, forbiddenIdentifiers)) continue\n\n getTopLevelBindings(statement).forEach((name) => forbiddenIdentifiers.add(name))\n statementsToRemove.add(statement)\n changed = true\n }\n }\n\n const usedRuntimeIdentifiers = new Set<string>()\n for (const statement of sourceFile.statements) {\n if (ts.isImportDeclaration(statement)) continue\n if (statementsToRemove.has(statement)) continue\n collectRuntimeIdentifierReferences(statement, usedRuntimeIdentifiers)\n }\n\n for (const statement of sourceFile.statements) {\n if (!ts.isImportDeclaration(statement)) continue\n\n const currentAction = importActions.get(statement)\n if (currentAction?.type === \"remove\") continue\n\n const remainingValueLocals = currentAction?.type === \"overwrite\"\n ? currentAction.remainingValueLocals\n : getImportValueLocals(statement)\n\n if (remainingValueLocals.length === 0) continue\n if (remainingValueLocals.some((local) => usedRuntimeIdentifiers.has(local))) continue\n\n importActions.set(statement, { type: \"remove\" })\n }\n\n const s = new MagicString(code)\n\n for (const [importDeclaration, action] of importActions) {\n if (action.type === \"remove\") {\n s.remove(importDeclaration.pos, importDeclaration.end)\n continue\n }\n\n const start = importDeclaration.getStart(sourceFile)\n s.overwrite(start, importDeclaration.end, action.text)\n }\n\n for (const statement of statementsToRemove) {\n s.remove(statement.pos, statement.end)\n }\n\n if (!s.hasChanged()) return null\n\n const map = JSON.parse(s.generateMap({ hires: true, includeContent: true, source: filePath, file: filePath }).toString())\n map.file = filePath\n map.sources = [filePath]\n\n return {\n code: s.toString(),\n map: JSON.stringify(map),\n }\n }\n}\n","import path from \"node:path\"\n\nimport type { Plugin } from \"vite\"\n\nimport { createTransformSource } from \"./transformSource\"\n\n\ntype TransformOptionsLike = boolean | { ssr?: boolean } | undefined\n\nfunction inferIsSsrTransform(transformOptions: TransformOptionsLike): boolean {\n if (typeof transformOptions === \"boolean\") return transformOptions\n if (!transformOptions || typeof transformOptions !== \"object\") return false\n return transformOptions.ssr === true\n}\n\nfunction isPrunableModelsFilePath(filePath: string): boolean {\n const normalized = filePath.replaceAll(\"\\\\\", \"/\")\n\n const parts = normalized.split(\"/\")\n if (parts.includes(\"node_modules\")) return false\n if (parts.length < 2) return false\n if (!parts.some((part, index) => part === \"models\" && index < parts.length - 1)) return false\n\n if (normalized.endsWith(\".d.ts\")) return false\n\n const ext = path.posix.extname(normalized)\n return ext === \".ts\" || ext === \".tsx\"\n}\n\nexport function pruneModelsForClientPlugin(): Plugin {\n const prune = createTransformSource()\n\n return {\n name: \"lz-models-prune-for-browser\",\n enforce: \"pre\",\n transform(code, id, transformOptions) {\n if (inferIsSsrTransform(transformOptions as TransformOptionsLike)) return\n\n const filePath = id.split(\"?\", 1)[0] ?? id\n if (!isPrunableModelsFilePath(filePath)) return\n\n const result = prune({ code, filePath })\n if (!result) return\n return result\n },\n }\n}\n","import fs from \"node:fs\"\nimport path from \"node:path\"\n\nimport { globSync } from \"glob\"\nimport type { Plugin } from \"vite\"\n\n\ntype SpecInputsPluginOpts = {\n pattern?: string\n specDir?: string\n}\n\nconst toPosixPath = (p: string) => p.split(path.sep).join(\"/\")\n\nconst computeInputs = (args: { root: string; pattern: string; specDir: string }) => {\n const { root, pattern, specDir } = args\n const specDirAbs = path.resolve(root, specDir)\n\n const filesAbs = globSync(pattern, {\n cwd: root,\n absolute: true,\n nodir: true,\n })\n\n const inputs: Record<string, string> = {}\n for (const fileAbs of filesAbs) {\n const relFromSpec = path.relative(specDirAbs, fileAbs)\n const outputName = toPosixPath(relFromSpec).replace(/\\.ts$/, \"\")\n inputs[outputName] = fileAbs\n }\n\n return inputs\n}\n\nconst inputsKey = (inputs: Record<string, string>) => Object.keys(inputs).sort().join(\"\\n\")\n\nconst hasRollupInput = (input: unknown) => {\n if (!input) return false\n if (typeof input === \"string\") return true\n if (Array.isArray(input)) return input.length > 0\n if (typeof input === \"object\") return Object.keys(input as any).length > 0\n return false\n}\n\nexport function specInputsPlugin(opts: SpecInputsPluginOpts = {}): Plugin {\n const { pattern = \"spec/**/*.spec{,.desktop,.mobile}.ts\", specDir = \"spec\" } = opts\n\n let rootAbs: string | undefined\n let specDirAbs: string | undefined\n let outDirAbs: string | undefined\n\n let active = false\n let inputsDirty = true\n let currentInputs: Record<string, string> | undefined\n let lastInputsKey: string | undefined\n\n return {\n name: \"rb-spec-inputs\",\n apply: \"build\",\n configResolved(config) {\n rootAbs = config.root\n specDirAbs = path.resolve(rootAbs, specDir)\n outDirAbs = path.resolve(rootAbs, config.build.outDir)\n },\n options(inputOptions) {\n if (!rootAbs) return\n\n active = !hasRollupInput((inputOptions as any).input)\n if (!active) return\n\n if (!currentInputs || inputsDirty) {\n currentInputs = computeInputs({ root: rootAbs, pattern, specDir })\n inputsDirty = false\n }\n ;(inputOptions as any).input = currentInputs\n\n return inputOptions\n },\n watchChange(id, change) {\n if (!active) return\n if (!rootAbs || !specDirAbs) return\n\n const absId = path.isAbsolute(id) ? id : path.resolve(rootAbs, id)\n\n if (absId === specDirAbs) {\n inputsDirty = true\n return\n }\n\n if (!absId.startsWith(specDirAbs + path.sep)) return\n if (!/\\.spec(?:\\.(?:desktop|mobile))?\\.ts$/.test(absId)) return\n if (change.event === \"create\" || change.event === \"delete\") {\n inputsDirty = true\n }\n if (change.event === \"update\") {\n const relFromSpec = path.relative(specDirAbs, absId)\n const outputName = toPosixPath(relFromSpec).replace(/\\.ts$/, \"\")\n if (!currentInputs || currentInputs[outputName] !== absId) {\n inputsDirty = true\n }\n }\n },\n buildStart() {\n if (!active) return\n if (!specDirAbs) return\n\n this.addWatchFile(specDirAbs)\n\n if (!outDirAbs || !currentInputs) return\n\n const key = inputsKey(currentInputs)\n if (lastInputsKey && lastInputsKey !== key) {\n fs.rmSync(outDirAbs, { recursive: true, force: true })\n }\n lastInputsKey = key\n },\n }\n}\n","import \"./dotEnvExpand\"\n\nimport path from \"path\"\nimport fs from \"node:fs\"\n\nimport {\n createServer as viteCreateServer,\n mergeConfig,\n loadEnv,\n} from \"vite\"\nimport type { ConfigEnv, UserConfig, UserConfigExport, UserConfigFn } from \"vite\"\nimport { viteSingleFile } from \"vite-plugin-singlefile\"\nimport react from \"@vitejs/plugin-react\"\nimport { createHtmlPlugin } from \"vite-plugin-html\"\n\nimport { resolveIntegratedPackagePath } from \"./resolveIntegratedPackagePath\"\nimport { posthogSourcemapsPlugin } from \"./plugins/posthog-sourcemaps\"\nimport { pruneModelsForClientPlugin } from \"./plugins/prune-models-for-client\"\nimport { specInputsPlugin } from \"./plugins/spec-inputs\"\n\n\nexport { pruneModelsForClientPlugin }\n\n\nconst ensureEnvPolyfillInjectPath = () => {\n const injectDir = path.resolve(process.cwd(), \"node_modules/.rpcbase\")\n const injectPath = path.join(injectDir, \"rb-env-polyfill-inject.js\")\n const injectContents = \"import \\\"@rpcbase/env/polyfill\\\"\\n\"\n\n fs.mkdirSync(injectDir, { recursive: true })\n try {\n const existing = fs.readFileSync(injectPath, \"utf8\")\n if (existing === injectContents) {\n return injectPath\n }\n } catch {\n // file does not exist yet\n }\n\n fs.writeFileSync(injectPath, injectContents, \"utf8\")\n return injectPath\n}\n\nconst esbuildInjectPath = ensureEnvPolyfillInjectPath()\nconst esbuildInject = [esbuildInjectPath]\nconst esbuildInjectPlugins: any[] = [\n {\n name: \"rb-env-polyfill-inject\",\n setup(build: any) {\n build.onResolve({ filter: /.*/ }, (args: any) => {\n if (args.path === esbuildInjectPath) {\n return { path: esbuildInjectPath, namespace: \"file\" }\n }\n\n return undefined\n })\n },\n },\n]\n\nconst isCI = [\"true\", \"yes\", \"1\"].includes((process.env.CI as string)?.trim())\nconst isProduction = process.env.NODE_ENV === \"production\"\n\nconst ALLOWED_DEV_ENV = [\"NODE_ENV\", \"APP_NAME\"]\n// workaround vite.ssrLoadModule not setting ssrBuild properly\nconst ALLOWED_ENV_PREFIXES = [\n \"RB_PUBLIC_\",\n ...(isProduction ? [] : ALLOWED_DEV_ENV),\n]\n\n// https://github.com/vbenjs/vite-plugin-html?tab=readme-ov-file#minifyoptions\nconst htmlMinifyOptions = {\n collapseWhitespace: true,\n keepClosingSlash: true,\n removeComments: false,\n removeRedundantAttributes: true,\n removeScriptTypeAttributes: true,\n removeStyleLinkTypeAttributes: true,\n useShortDoctype: true,\n minifyCSS: true,\n}\n\nconst resolveAliases: Record<string, string> = {\n \"@/api\": path.resolve(process.cwd(), \"./src/api/\"),\n \"@/models\": path.resolve(process.cwd(), \"./src/models/\"),\n \"@/shared\": path.resolve(process.cwd(), \"./src/shared/\"),\n \"@/types\": path.resolve(process.cwd(), \"./src/types/\"),\n \"@\": path.resolve(process.cwd(), \"./src/client/\"),\n}\n\nconst integratedPackages = [\n \"@hookform/resolvers\",\n \"axios\",\n \"events\",\n \"libphonenumber-js\",\n \"posthog-js\",\n \"posthog-js/react\",\n \"posthog-node\",\n \"react-router\",\n \"react-hook-form\",\n]\n\n// Add each integrated package to resolveAliases\nintegratedPackages.forEach((pkg) => {\n const resolved = resolveIntegratedPackagePath(pkg)\n resolveAliases[pkg] = resolved\n})\n\nresolveAliases[\"node:events\"] = resolveIntegratedPackagePath(\"events\")\n\n// Force PostHog React imports to resolve to the ESM bundle to avoid Node ESM\n// directory import errors while keeping SSR compatibility.\nconst posthogReactEsm = resolveIntegratedPackagePath(\"posthog-js/react/dist/esm/index.js\")\nresolveAliases[\"posthog-js/react\"] = posthogReactEsm\nresolveAliases[\"posthog-js/react/dist/esm/index.js\"] = posthogReactEsm\n\nexport { resolveAliases }\n\nconst rbPackagesNeedingEnvPolyfill = [\n \"@rpcbase/auth\",\n \"@rpcbase/env\",\n // \"@rpcbase/env/polyfill\",\n \"@rpcbase/server\",\n \"@rpcbase/client\",\n \"@rpcbase/form\",\n \"@rpcbase/router\",\n]\n\nconst createRuntimeEnv = (args: {\n env: Record<string, string>\n configEnv: ConfigEnv\n}) => {\n const { env, configEnv } = args\n const { command, mode, isSsrBuild } = configEnv\n const isDevCommand = command === \"serve\"\n\n const mergedEnv = {\n ...env,\n }\n\n return {\n ...mergedEnv,\n BASE_URL: mergedEnv.BASE_URL ?? \"/\",\n MODE: mode,\n DEV: isDevCommand,\n PROD: !isDevCommand,\n SSR: Boolean(isSsrBuild),\n }\n}\n\n// https://vite.dev/config/\nconst getBaseConfig = (configEnv: ConfigEnv): UserConfig => {\n const { mode } = configEnv\n const env = loadEnv(mode, process.cwd(), ALLOWED_ENV_PREFIXES)\n const runtimeEnv = createRuntimeEnv({ env, configEnv })\n\n return {\n clearScreen: false,\n plugins: [\n pruneModelsForClientPlugin(),\n react(),\n createHtmlPlugin({\n // IMPORTANT: minify removes comments by default, which are used by the app ssr\n minify: htmlMinifyOptions,\n }),\n viteSingleFile({\n useRecommendedBuildConfig: false,\n deleteInlinedFiles: true,\n inlinePattern: [\"**/*.css\"],\n removeViteModuleLoader: false,\n }),\n isProduction && isCI && posthogSourcemapsPlugin({}),\n ].filter(Boolean),\n define: {\n __vite_env__: runtimeEnv,\n },\n envPrefix: ALLOWED_ENV_PREFIXES,\n publicDir: path.join(process.cwd(), \"./src/client/public\"),\n build: {\n sourcemap: isProduction ? \"hidden\" : false,\n cssCodeSplit: false,\n outDir: \"./build/dist/\",\n rollupOptions: {\n input: {\n app: \"./src/client/index.html\",\n },\n },\n commonjsOptions: { transformMixedEsModules: true },\n },\n server: {\n allowedHosts: true,\n headers: {\n // \"X-Custom-Header\": \"test-custom\",\n },\n watch: {\n ignored: [\"**/build/playwright/**\"],\n },\n },\n resolve: {\n alias: {\n ...resolveAliases,\n },\n dedupe: [\"react\", \"react-dom\", \"react-router\", \"react-hook-form\"],\n preserveSymlinks: true,\n },\n ssr: {\n external: [\n // \"react\", \"react-dom\",\n \"cookie\",\n \"mongoose\",\n \"mongodb\",\n ],\n noExternal: [\n ...rbPackagesNeedingEnvPolyfill,\n // \"react-use\",\n ],\n },\n optimizeDeps: {\n include: [\n // Force RPC Base packages through esbuild so rb-env-polyfill injects before their dist code touches globalThis.__rb_env__\n ...rbPackagesNeedingEnvPolyfill,\n \"hoist-non-react-statics\",\n // \"react\", \"react-dom\", \"react-dom/server\"\n // \"cookie\"\n ],\n exclude: [\n \"@radix-ui/*\",\n \"@rpcbase/ui\",\n // TMP only in sample app?\n // \"react\", \"react-dom/server\",\n // \"react-hook-form\",\n // \"react-dom\"\n ],\n esbuildOptions: {\n inject: esbuildInject,\n plugins: esbuildInjectPlugins,\n },\n },\n // future: {\n // removeSsrLoadModule: true\n // },\n }\n}\n\nexport const extendConfig = (userConfig: UserConfigExport): UserConfigFn => {\n return async (configEnv) => {\n const config =\n typeof userConfig === \"function\"\n ? await (userConfig as UserConfigFn)(configEnv)\n : userConfig\n\n const baseConfig = getBaseConfig(configEnv)\n\n return mergeConfig(baseConfig, config as any)\n }\n}\n\nconst getSpecBaseConfig = (configEnv: ConfigEnv): UserConfig => {\n const { mode } = configEnv\n const env = loadEnv(mode, process.cwd(), ALLOWED_ENV_PREFIXES)\n const runtimeEnv = createRuntimeEnv({ env, configEnv })\n\n return {\n clearScreen: false,\n define: {\n __vite_env__: runtimeEnv,\n },\n envPrefix: ALLOWED_ENV_PREFIXES,\n plugins: [\n specInputsPlugin(),\n ],\n build: {\n outDir: \"./build/spec/\",\n ssr: true,\n rollupOptions: {\n input: {},\n },\n commonjsOptions: { transformMixedEsModules: true },\n },\n resolve: {\n alias: {\n ...resolveAliases,\n },\n preserveSymlinks: true,\n },\n ssr: {\n external: [\"mongoose\"],\n noExternal: [\"@rpcbase/*\"],\n },\n }\n}\n\nexport const extendSpecConfig = (userConfig: UserConfigExport): UserConfigFn => {\n return async (configEnv) => {\n const config =\n typeof userConfig === \"function\"\n ? await (userConfig as UserConfigFn)(configEnv)\n : userConfig\n\n const baseConfig = getSpecBaseConfig(configEnv)\n\n return mergeConfig(baseConfig, config as any)\n }\n}\n\nexport const createServer = viteCreateServer\n"],"names":["require","__dirname","path","viteCreateServer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/dotEnvExpand.ts","../src/resolveIntegratedPackagePath.ts","../src/plugins/posthog-sourcemaps/index.ts","../src/plugins/prune-models-for-client/transformSource.ts","../src/plugins/prune-models-for-client/index.ts","../src/plugins/spec-inputs/index.ts","../src/index.ts"],"sourcesContent":["import fs from \"node:fs\"\nimport path from \"path\"\n\nimport dotenv from \"dotenv\"\nimport { expand } from \"dotenv-expand\"\n\n\nconst envFilePath = path.resolve(process.cwd(), \".env\")\n\nif (fs.existsSync(envFilePath)) {\n const parsedFile = dotenv.parse(fs.readFileSync(envFilePath))\n const expanded = expand({ parsed: parsedFile }).parsed || {}\n Object.assign(process.env, expanded)\n}\n","import path from \"path\"\nimport { createRequire } from \"node:module\"\nimport { existsSync, readFileSync } from \"node:fs\"\n\n\nconst require = createRequire(import.meta.url)\n\nconst splitPackageSpecifier = (specifier: string) => {\n if (!specifier) return { pkgName: specifier, subpath: \"\" }\n\n if (specifier.startsWith(\"@\")) {\n const segments = specifier.split(\"/\")\n if (segments.length < 2) return { pkgName: specifier, subpath: \"\" }\n return {\n pkgName: `${segments[0]}/${segments[1]}`,\n subpath: segments.slice(2).join(\"/\"),\n }\n }\n\n const [pkgName, ...rest] = specifier.split(\"/\")\n return { pkgName, subpath: rest.join(\"/\") }\n}\n\nconst withTrailingSep = (p: string) => (p.endsWith(path.sep) ? p : p + path.sep)\n\nconst resolvePackageRoot = (pkg: string) => {\n const { pkgName } = splitPackageSpecifier(pkg)\n if (!pkgName) return pkg\n\n // 1) chemin rapide: si le package exporte son package.json\n try {\n const pkgJson = require.resolve(`${pkgName}/package.json`)\n return path.dirname(pkgJson)\n } catch (err) {\n // 2) fallback: résoudre l'entrée du package puis remonter jusqu'à sa racine\n const entry = require.resolve(pkgName) // ex: .../node_modules/<pkg>/dist/...\n let dir = path.dirname(entry)\n\n // remonter jusqu'à un package.json dont \"name\" === pkg\n while (true) {\n const pkgJsonPath = path.join(dir, \"package.json\")\n if (existsSync(pkgJsonPath)) {\n try {\n const json = JSON.parse(readFileSync(pkgJsonPath, \"utf8\"))\n if (json && json.name === pkgName) return dir\n } catch {\n // ignore parsing errors\n }\n }\n const parent = path.dirname(dir)\n if (parent === dir) break\n dir = parent\n }\n\n // 3) dernier recours: reconstruire depuis le segment node_modules (ok avec pnpm)\n const nmMarker = `${path.sep}node_modules${path.sep}`\n const idx = entry.lastIndexOf(nmMarker)\n if (idx !== -1) {\n const nmRoot = entry.slice(0, idx + nmMarker.length)\n return path.join(nmRoot, pkgName)\n }\n\n // si vraiment rien trouvé, relancer l'erreur d'origine\n throw err\n }\n}\n\nexport const resolveIntegratedPackagePath = (specifier: string) => {\n const { pkgName, subpath } = splitPackageSpecifier(specifier)\n if (!pkgName) return specifier\n\n const root = resolvePackageRoot(pkgName)\n if (!subpath) {\n return withTrailingSep(root)\n }\n\n const subDir = path.join(root, subpath)\n const pkgJsonPath = path.join(subDir, \"package.json\")\n if (existsSync(pkgJsonPath)) {\n try {\n const pkgJson = JSON.parse(readFileSync(pkgJsonPath, \"utf8\"))\n const entry = pkgJson.module || pkgJson.main\n if (entry) {\n return path.join(subDir, entry)\n }\n } catch {\n // ignore parsing errors\n }\n }\n\n try {\n return require.resolve(specifier)\n } catch {\n return withTrailingSep(subDir)\n }\n}\n","import { spawn } from \"node:child_process\"\nimport path from \"node:path\"\nimport fs from \"node:fs\"\nimport { fileURLToPath } from \"node:url\"\n\nimport type { Plugin } from \"vite\"\n\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url))\n\nfunction run(bin: string, args: string[]) {\n return new Promise<void>((resolve, reject) => {\n const p = spawn(bin, args, { stdio: \"inherit\" })\n p.on(\"close\", (code) => code === 0 ? resolve() : reject(new Error(`posthog-cli exited ${code}`)))\n })\n}\n\nfunction resolvePosthogCliBin() {\n const binName = \"posthog-cli\"\n\n const fromCwd = path.join(process.cwd(), \"node_modules\", \".bin\", binName)\n if (fs.existsSync(fromCwd)) return fromCwd\n\n let dir = __dirname\n while (true) {\n const candidate = path.join(dir, \"node_modules\", \".bin\", binName)\n if (fs.existsSync(candidate)) return candidate\n\n const parent = path.dirname(dir)\n if (parent === dir) break\n dir = parent\n }\n\n return binName\n}\n\nexport function posthogSourcemapsPlugin(opts: {\n directory?: string\n version?: string\n host?: string\n deleteAfterUpload?: boolean\n} = {}): Plugin {\n const {\n directory = \"build/dist\",\n version,\n host = process.env.RB_PUBLIC_POSTHOG_HOST || \"https://eu.posthog.com\",\n deleteAfterUpload = true\n } = opts\n\n const bin = resolvePosthogCliBin()\n const globalArgs = [\"--host\", host]\n\n return {\n name: \"posthog-sourcemaps\",\n apply: \"build\",\n closeBundle: async () => {\n const orange = \"\\x1b[38;5;208m\"\n const reset = \"\\x1b[0m\"\n\n const envId = process.env.POSTHOG_CLI_ENV_ID\n const token = process.env.POSTHOG_CLI_TOKEN\n if (!envId || !token) {\n\n console.warn(`${orange}posthog-sourcemaps: plugin is enabled but no env vars for auth configured (POSTHOG_CLI_ENV_ID/POSTHOG_CLI_TOKEN). Skipping without failing.${reset}`)\n return\n }\n\n // if (!process.env.CI) {\n // console.warn(`${orange}posthog-sourcemaps: plugin has correct configuration, but refusing to run when process.env.CI is not set. Skipping without failing.${reset}`)\n // return\n // }\n\n const injectArgs = [\"sourcemap\", \"inject\", \"--directory\", directory]\n if (version) injectArgs.push(\"--version\", version)\n\n const uploadArgs = [\"sourcemap\", \"upload\", \"--directory\", directory]\n if (deleteAfterUpload) uploadArgs.push(\"--delete-after\")\n\n await run(bin, [...globalArgs, ...injectArgs])\n await run(bin, [...globalArgs, ...uploadArgs])\n }\n }\n}\n","import path from \"node:path\"\n\nimport MagicString from \"magic-string\"\nimport type { SourceMapInput } from \"rollup\"\nimport * as ts from \"typescript\"\n\n\nexport type PruneModelsForClientTransformResult = { code: string; map: SourceMapInput }\nexport type PruneModelsForClientTransform = (args: { code: string; filePath: string }) => PruneModelsForClientTransformResult | null\n\nfunction isForbiddenModuleSource(source: string): boolean {\n if (source === \"mongoose\") return true\n if (source.startsWith(\"node:\")) return true\n if (source.endsWith(\"/extendMongooseSchema\") || source.endsWith(\"./extendMongooseSchema\") || source.endsWith(\"extendMongooseSchema\")) {\n return true\n }\n return false\n}\n\nfunction getModuleSpecifierValue(importDeclaration: ts.ImportDeclaration): string | null {\n const moduleSpecifier = importDeclaration.moduleSpecifier\n if (!ts.isStringLiteralLike(moduleSpecifier)) return null\n return moduleSpecifier.text\n}\n\nfunction isTypeOnlyImport(importDeclaration: ts.ImportDeclaration): boolean {\n const importClause = importDeclaration.importClause\n if (!importClause) return false\n return importClause.isTypeOnly === true\n}\n\nfunction getImportValueLocals(importDeclaration: ts.ImportDeclaration): string[] {\n if (isTypeOnlyImport(importDeclaration)) return []\n\n const importClause = importDeclaration.importClause\n if (!importClause) return []\n\n const locals: string[] = []\n\n if (importClause.name) locals.push(importClause.name.text)\n\n const namedBindings = importClause.namedBindings\n if (namedBindings) {\n if (ts.isNamespaceImport(namedBindings)) {\n locals.push(namedBindings.name.text)\n } else if (ts.isNamedImports(namedBindings)) {\n for (const specifier of namedBindings.elements) {\n if (specifier.isTypeOnly) continue\n locals.push(specifier.name.text)\n }\n }\n }\n\n return locals\n}\n\nfunction getNamedImportSpecifiers(importDeclaration: ts.ImportDeclaration): ts.NodeArray<ts.ImportSpecifier> | null {\n const importClause = importDeclaration.importClause\n if (!importClause) return null\n if (!importClause.namedBindings) return null\n if (!ts.isNamedImports(importClause.namedBindings)) return null\n return importClause.namedBindings.elements\n}\n\nfunction rewriteRpcbaseDbImport(importDeclaration: ts.ImportDeclaration, forbiddenIdentifiers: Set<string>): {\n rewriteText: string | null\n remainingValueLocals: string[]\n} {\n const valueLocals = getImportValueLocals(importDeclaration)\n\n const zLocals = new Set<string>()\n\n const namedImports = getNamedImportSpecifiers(importDeclaration)\n if (namedImports && !isTypeOnlyImport(importDeclaration)) {\n for (const specifier of namedImports) {\n if (specifier.isTypeOnly) continue\n const imported = specifier.propertyName?.text ?? specifier.name.text\n if (imported !== \"z\") continue\n zLocals.add(specifier.name.text)\n }\n }\n\n for (const local of valueLocals) {\n if (!zLocals.has(local)) forbiddenIdentifiers.add(local)\n }\n\n if (zLocals.size === 0) {\n return { rewriteText: null, remainingValueLocals: [] }\n }\n\n const specifierText = Array.from(zLocals)\n .map((local) => (local === \"z\" ? \"z\" : `z as ${local}`))\n .join(\", \")\n\n return {\n rewriteText: `import { ${specifierText} } from \"@rpcbase/db\"`,\n remainingValueLocals: Array.from(zLocals),\n }\n}\n\nfunction collectBindingNames(name: ts.BindingName, out: string[]): void {\n if (ts.isIdentifier(name)) {\n out.push(name.text)\n return\n }\n\n for (const element of name.elements) {\n if (ts.isOmittedExpression(element)) continue\n collectBindingNames(element.name, out)\n }\n}\n\nfunction getTopLevelBindings(statement: ts.Statement): string[] {\n if (ts.isVariableStatement(statement)) {\n const names: string[] = []\n for (const decl of statement.declarationList.declarations) {\n collectBindingNames(decl.name, names)\n }\n return names\n }\n\n if (ts.isFunctionDeclaration(statement) || ts.isClassDeclaration(statement) || ts.isEnumDeclaration(statement)) {\n return statement.name ? [statement.name.text] : []\n }\n\n return []\n}\n\nfunction isRuntimeReferenceIdentifier(identifier: ts.Identifier): boolean {\n const parent = identifier.parent\n if (!parent) return true\n\n if (ts.isVariableDeclaration(parent) && parent.name === identifier) return false\n if (ts.isParameter(parent) && parent.name === identifier) return false\n\n if ((ts.isFunctionDeclaration(parent) || ts.isFunctionExpression(parent)) && parent.name === identifier) return false\n if ((ts.isClassDeclaration(parent) || ts.isClassExpression(parent)) && parent.name === identifier) return false\n if (ts.isEnumDeclaration(parent) && parent.name === identifier) return false\n\n if (ts.isTypeAliasDeclaration(parent) && parent.name === identifier) return false\n if (ts.isInterfaceDeclaration(parent) && parent.name === identifier) return false\n if (ts.isModuleDeclaration(parent) && parent.name === identifier) return false\n if (ts.isTypeParameterDeclaration(parent) && parent.name === identifier) return false\n\n if (ts.isImportClause(parent) && parent.name === identifier) return false\n if (ts.isNamespaceImport(parent) && parent.name === identifier) return false\n if (ts.isImportSpecifier(parent) && parent.name === identifier) return false\n if (ts.isImportEqualsDeclaration(parent) && parent.name === identifier) return false\n\n if (ts.isBindingElement(parent)) {\n if (parent.name === identifier) return false\n if (parent.propertyName === identifier) return false\n }\n\n if (ts.isPropertyAccessExpression(parent) && parent.name === identifier) return false\n if (ts.isQualifiedName(parent)) return false\n\n if (ts.isPropertyAssignment(parent) && parent.name === identifier) return false\n if (ts.isPropertyDeclaration(parent) && parent.name === identifier) return false\n if (ts.isPropertySignature(parent) && parent.name === identifier) return false\n\n if (ts.isMethodDeclaration(parent) && parent.name === identifier) return false\n if (ts.isMethodSignature(parent) && parent.name === identifier) return false\n if (ts.isGetAccessorDeclaration(parent) && parent.name === identifier) return false\n if (ts.isSetAccessorDeclaration(parent) && parent.name === identifier) return false\n\n if (ts.isShorthandPropertyAssignment(parent) && parent.name === identifier) return true\n\n if (ts.isExportSpecifier(parent)) {\n const local = parent.propertyName ?? parent.name\n return identifier === local\n }\n\n if (ts.isLabeledStatement(parent) && parent.label === identifier) return false\n if ((ts.isBreakStatement(parent) || ts.isContinueStatement(parent)) && parent.label === identifier) return false\n\n return true\n}\n\nfunction referencesForbiddenRuntime(statement: ts.Statement, forbidden: Set<string>): boolean {\n if (forbidden.size === 0) return false\n\n if (ts.isInterfaceDeclaration(statement) || ts.isTypeAliasDeclaration(statement)) return false\n\n let found = false\n\n const visit = (node: ts.Node): void => {\n if (found) return\n\n if (ts.isTypeNode(node)) return\n\n if (ts.isHeritageClause(node) && node.token === ts.SyntaxKind.ImplementsKeyword) return\n\n if (ts.isIdentifier(node)) {\n if (forbidden.has(node.text) && isRuntimeReferenceIdentifier(node)) {\n found = true\n return\n }\n }\n\n ts.forEachChild(node, visit)\n }\n\n visit(statement)\n\n return found\n}\n\nfunction scriptKindFromFilePath(filePath: string): ts.ScriptKind {\n const ext = path.extname(filePath).toLowerCase()\n if (ext === \".tsx\") return ts.ScriptKind.TSX\n return ts.ScriptKind.TS\n}\n\nfunction collectRuntimeIdentifierReferences(statement: ts.Statement, out: Set<string>): void {\n const visit = (node: ts.Node): void => {\n if (ts.isTypeNode(node)) return\n if (ts.isHeritageClause(node) && node.token === ts.SyntaxKind.ImplementsKeyword) return\n\n if (ts.isIdentifier(node) && isRuntimeReferenceIdentifier(node)) {\n out.add(node.text)\n }\n\n ts.forEachChild(node, visit)\n }\n\n visit(statement)\n}\n\nexport function createTransformSource(): PruneModelsForClientTransform {\n return ({ code, filePath }) => {\n const forbiddenIdentifiers = new Set<string>()\n const scriptKind = scriptKindFromFilePath(filePath)\n const sourceFile = ts.createSourceFile(filePath, code, ts.ScriptTarget.Latest, true, scriptKind)\n\n const importActions = new Map<ts.ImportDeclaration, { type: \"remove\" } | { type: \"overwrite\"; text: string; remainingValueLocals: string[] }>()\n\n for (const statement of sourceFile.statements) {\n if (!ts.isImportDeclaration(statement)) continue\n\n const source = getModuleSpecifierValue(statement)\n if (!source) continue\n\n if (source === \"@rpcbase/db\") {\n const { rewriteText, remainingValueLocals } = rewriteRpcbaseDbImport(statement, forbiddenIdentifiers)\n if (!rewriteText) importActions.set(statement, { type: \"remove\" })\n else importActions.set(statement, { type: \"overwrite\", text: rewriteText, remainingValueLocals })\n continue\n }\n\n if (!isForbiddenModuleSource(source)) continue\n\n getImportValueLocals(statement).forEach((local) => forbiddenIdentifiers.add(local))\n importActions.set(statement, { type: \"remove\" })\n }\n\n let changed = true\n const statementsToRemove = new Set<ts.Statement>()\n while (changed) {\n changed = false\n\n for (const statement of sourceFile.statements) {\n if (ts.isImportDeclaration(statement)) continue\n if (statementsToRemove.has(statement)) continue\n if (!referencesForbiddenRuntime(statement, forbiddenIdentifiers)) continue\n\n getTopLevelBindings(statement).forEach((name) => forbiddenIdentifiers.add(name))\n statementsToRemove.add(statement)\n changed = true\n }\n }\n\n const usedRuntimeIdentifiers = new Set<string>()\n for (const statement of sourceFile.statements) {\n if (ts.isImportDeclaration(statement)) continue\n if (statementsToRemove.has(statement)) continue\n collectRuntimeIdentifierReferences(statement, usedRuntimeIdentifiers)\n }\n\n for (const statement of sourceFile.statements) {\n if (!ts.isImportDeclaration(statement)) continue\n\n const currentAction = importActions.get(statement)\n if (currentAction?.type === \"remove\") continue\n\n const remainingValueLocals = currentAction?.type === \"overwrite\"\n ? currentAction.remainingValueLocals\n : getImportValueLocals(statement)\n\n if (remainingValueLocals.length === 0) continue\n if (remainingValueLocals.some((local) => usedRuntimeIdentifiers.has(local))) continue\n\n importActions.set(statement, { type: \"remove\" })\n }\n\n const s = new MagicString(code)\n\n for (const [importDeclaration, action] of importActions) {\n if (action.type === \"remove\") {\n s.remove(importDeclaration.pos, importDeclaration.end)\n continue\n }\n\n const start = importDeclaration.getStart(sourceFile)\n s.overwrite(start, importDeclaration.end, action.text)\n }\n\n for (const statement of statementsToRemove) {\n s.remove(statement.pos, statement.end)\n }\n\n if (!s.hasChanged()) return null\n\n const map = JSON.parse(s.generateMap({ hires: true, includeContent: true, source: filePath, file: filePath }).toString())\n map.file = filePath\n map.sources = [filePath]\n\n return {\n code: s.toString(),\n map: JSON.stringify(map),\n }\n }\n}\n","import path from \"node:path\"\n\nimport type { Plugin } from \"vite\"\n\nimport { createTransformSource } from \"./transformSource\"\n\n\ntype TransformOptionsLike = boolean | { ssr?: boolean } | undefined\n\nfunction inferIsSsrTransform(transformOptions: TransformOptionsLike): boolean {\n if (typeof transformOptions === \"boolean\") return transformOptions\n if (!transformOptions || typeof transformOptions !== \"object\") return false\n return transformOptions.ssr === true\n}\n\nfunction isPrunableModelsFilePath(filePath: string): boolean {\n const normalized = filePath.replaceAll(\"\\\\\", \"/\")\n\n const parts = normalized.split(\"/\")\n if (parts.includes(\"node_modules\")) return false\n if (parts.length < 2) return false\n if (!parts.some((part, index) => part === \"models\" && index < parts.length - 1)) return false\n\n if (normalized.endsWith(\".d.ts\")) return false\n\n const ext = path.posix.extname(normalized)\n return ext === \".ts\" || ext === \".tsx\"\n}\n\nexport function pruneModelsForClientPlugin(): Plugin {\n const prune = createTransformSource()\n\n return {\n name: \"lz-models-prune-for-browser\",\n enforce: \"pre\",\n transform(code, id, transformOptions) {\n if (inferIsSsrTransform(transformOptions as TransformOptionsLike)) return\n\n const filePath = id.split(\"?\", 1)[0] ?? id\n if (!isPrunableModelsFilePath(filePath)) return\n\n const result = prune({ code, filePath })\n if (!result) return\n return result\n },\n }\n}\n","import fs from \"node:fs\"\nimport path from \"node:path\"\n\nimport { globSync } from \"glob\"\nimport type { Plugin } from \"vite\"\n\n\ntype SpecInputsPluginOpts = {\n pattern?: string\n specDir?: string\n}\n\nconst toPosixPath = (p: string) => p.split(path.sep).join(\"/\")\n\nconst computeInputs = (args: { root: string; pattern: string; specDir: string }) => {\n const { root, pattern, specDir } = args\n const specDirAbs = path.resolve(root, specDir)\n\n const filesAbs = globSync(pattern, {\n cwd: root,\n absolute: true,\n nodir: true,\n })\n\n const inputs: Record<string, string> = {}\n for (const fileAbs of filesAbs) {\n const relFromSpec = path.relative(specDirAbs, fileAbs)\n const outputName = toPosixPath(relFromSpec).replace(/\\.ts$/, \"\")\n inputs[outputName] = fileAbs\n }\n\n return inputs\n}\n\nconst inputsKey = (inputs: Record<string, string>) => Object.keys(inputs).sort().join(\"\\n\")\n\nconst hasRollupInput = (input: unknown) => {\n if (!input) return false\n if (typeof input === \"string\") return true\n if (Array.isArray(input)) return input.length > 0\n if (typeof input === \"object\") return Object.keys(input as any).length > 0\n return false\n}\n\nexport function specInputsPlugin(opts: SpecInputsPluginOpts = {}): Plugin {\n const { pattern = \"spec/**/*.spec{,.desktop,.mobile}.ts\", specDir = \"spec\" } = opts\n\n let rootAbs: string | undefined\n let specDirAbs: string | undefined\n let outDirAbs: string | undefined\n\n let active = false\n let inputsDirty = true\n let currentInputs: Record<string, string> | undefined\n let lastInputsKey: string | undefined\n\n return {\n name: \"rb-spec-inputs\",\n apply: \"build\",\n configResolved(config) {\n rootAbs = config.root\n specDirAbs = path.resolve(rootAbs, specDir)\n outDirAbs = path.resolve(rootAbs, config.build.outDir)\n },\n options(inputOptions) {\n if (!rootAbs) return\n\n active = !hasRollupInput((inputOptions as any).input)\n if (!active) return\n\n if (!currentInputs || inputsDirty) {\n currentInputs = computeInputs({ root: rootAbs, pattern, specDir })\n inputsDirty = false\n }\n ;(inputOptions as any).input = currentInputs\n\n return inputOptions\n },\n watchChange(id, change) {\n if (!active) return\n if (!rootAbs || !specDirAbs) return\n\n const absId = path.isAbsolute(id) ? id : path.resolve(rootAbs, id)\n\n if (absId === specDirAbs) {\n inputsDirty = true\n return\n }\n\n if (!absId.startsWith(specDirAbs + path.sep)) return\n if (!/\\.spec(?:\\.(?:desktop|mobile))?\\.ts$/.test(absId)) return\n if (change.event === \"create\" || change.event === \"delete\") {\n inputsDirty = true\n }\n if (change.event === \"update\") {\n const relFromSpec = path.relative(specDirAbs, absId)\n const outputName = toPosixPath(relFromSpec).replace(/\\.ts$/, \"\")\n if (!currentInputs || currentInputs[outputName] !== absId) {\n inputsDirty = true\n }\n }\n },\n buildStart() {\n if (!active) return\n if (!specDirAbs) return\n\n this.addWatchFile(specDirAbs)\n\n if (!outDirAbs || !currentInputs) return\n\n const key = inputsKey(currentInputs)\n if (lastInputsKey && lastInputsKey !== key) {\n fs.rmSync(outDirAbs, { recursive: true, force: true })\n }\n lastInputsKey = key\n },\n }\n}\n","import \"./dotEnvExpand\"\n\nimport path from \"path\"\nimport fs from \"node:fs\"\n\nimport {\n createServer as viteCreateServer,\n mergeConfig,\n loadEnv,\n} from \"vite\"\nimport type { ConfigEnv, UserConfig, UserConfigExport, UserConfigFn } from \"vite\"\nimport { viteSingleFile } from \"vite-plugin-singlefile\"\nimport react from \"@vitejs/plugin-react\"\nimport { createHtmlPlugin } from \"vite-plugin-html\"\n\nimport { resolveIntegratedPackagePath } from \"./resolveIntegratedPackagePath\"\nimport { posthogSourcemapsPlugin } from \"./plugins/posthog-sourcemaps\"\nimport { pruneModelsForClientPlugin } from \"./plugins/prune-models-for-client\"\nimport { specInputsPlugin } from \"./plugins/spec-inputs\"\n\n\nexport { pruneModelsForClientPlugin }\n\n\nconst ensureEnvPolyfillInjectPath = () => {\n const injectDir = path.resolve(process.cwd(), \"node_modules/.rpcbase\")\n const injectPath = path.join(injectDir, \"rb-env-polyfill-inject.js\")\n const injectContents = \"import \\\"@rpcbase/env/polyfill\\\"\\n\"\n\n fs.mkdirSync(injectDir, { recursive: true })\n try {\n const existing = fs.readFileSync(injectPath, \"utf8\")\n if (existing === injectContents) {\n return injectPath\n }\n } catch {\n // file does not exist yet\n }\n\n fs.writeFileSync(injectPath, injectContents, \"utf8\")\n return injectPath\n}\n\nconst esbuildInjectPath = ensureEnvPolyfillInjectPath()\nconst esbuildInject = [esbuildInjectPath]\nconst esbuildInjectPlugins: any[] = [\n {\n name: \"rb-env-polyfill-inject\",\n setup(build: any) {\n build.onResolve({ filter: /.*/ }, (args: any) => {\n if (args.path === esbuildInjectPath) {\n return { path: esbuildInjectPath, namespace: \"file\" }\n }\n\n return undefined\n })\n },\n },\n]\n\nconst isCI = [\"true\", \"yes\", \"1\"].includes((process.env.CI as string)?.trim())\nconst isProduction = process.env.NODE_ENV === \"production\"\n\nconst ALLOWED_DEV_ENV = [\"NODE_ENV\", \"APP_NAME\"]\n// workaround vite.ssrLoadModule not setting ssrBuild properly\nconst ALLOWED_ENV_PREFIXES = [\n \"RB_PUBLIC_\",\n ...(isProduction ? [] : ALLOWED_DEV_ENV),\n]\n\n// https://github.com/vbenjs/vite-plugin-html?tab=readme-ov-file#minifyoptions\nconst htmlMinifyOptions = {\n collapseWhitespace: true,\n keepClosingSlash: true,\n removeComments: false,\n removeRedundantAttributes: true,\n removeScriptTypeAttributes: true,\n removeStyleLinkTypeAttributes: true,\n useShortDoctype: true,\n minifyCSS: true,\n}\n\nconst resolveAliases: Record<string, string> = {\n \"@/api\": path.resolve(process.cwd(), \"./src/api/\"),\n \"@/models\": path.resolve(process.cwd(), \"./src/models/\"),\n \"@/shared\": path.resolve(process.cwd(), \"./src/shared/\"),\n \"@/types\": path.resolve(process.cwd(), \"./src/types/\"),\n \"@\": path.resolve(process.cwd(), \"./src/client/\"),\n}\n\nconst integratedPackages = [\n \"@hookform/resolvers\",\n \"axios\",\n \"events\",\n \"libphonenumber-js\",\n \"posthog-js\",\n \"posthog-js/react\",\n \"posthog-node\",\n \"react-router\",\n \"react-hook-form\",\n]\n\n// Add each integrated package to resolveAliases\nintegratedPackages.forEach((pkg) => {\n const resolved = resolveIntegratedPackagePath(pkg)\n resolveAliases[pkg] = resolved\n})\n\nresolveAliases[\"node:events\"] = resolveIntegratedPackagePath(\"events\")\n\n// Force PostHog React imports to resolve to the ESM bundle to avoid Node ESM\n// directory import errors while keeping SSR compatibility.\nconst posthogReactEsm = resolveIntegratedPackagePath(\"posthog-js/react/dist/esm/index.js\")\nresolveAliases[\"posthog-js/react\"] = posthogReactEsm\nresolveAliases[\"posthog-js/react/dist/esm/index.js\"] = posthogReactEsm\n\nexport { resolveAliases }\n\nconst rbPackagesNeedingEnvPolyfill = [\n \"@rpcbase/auth\",\n \"@rpcbase/env\",\n // \"@rpcbase/env/polyfill\",\n \"@rpcbase/server\",\n \"@rpcbase/client\",\n \"@rpcbase/form\",\n \"@rpcbase/router\",\n]\n\nconst createRuntimeEnv = (args: {\n env: Record<string, string>\n configEnv: ConfigEnv\n}) => {\n const { env, configEnv } = args\n const { command, mode, isSsrBuild } = configEnv\n const isDevCommand = command === \"serve\"\n\n const mergedEnv = {\n ...env,\n }\n\n return {\n ...mergedEnv,\n BASE_URL: mergedEnv.BASE_URL ?? \"/\",\n MODE: mode,\n DEV: isDevCommand,\n PROD: !isDevCommand,\n SSR: Boolean(isSsrBuild),\n }\n}\n\n// https://vite.dev/config/\nconst getBaseConfig = (configEnv: ConfigEnv): UserConfig => {\n const { mode } = configEnv\n const env = loadEnv(mode, process.cwd(), ALLOWED_ENV_PREFIXES)\n const runtimeEnv = createRuntimeEnv({ env, configEnv })\n\n return {\n clearScreen: false,\n plugins: [\n pruneModelsForClientPlugin(),\n react({\n babel: {\n plugins: [\n [\"babel-plugin-react-compiler\", { target: \"19\" }],\n ],\n },\n }),\n createHtmlPlugin({\n // IMPORTANT: minify removes comments by default, which are used by the app ssr\n minify: htmlMinifyOptions,\n }),\n viteSingleFile({\n useRecommendedBuildConfig: false,\n deleteInlinedFiles: true,\n inlinePattern: [\"**/*.css\"],\n removeViteModuleLoader: false,\n }),\n isProduction && isCI && posthogSourcemapsPlugin({}),\n ].filter(Boolean),\n define: {\n __vite_env__: runtimeEnv,\n },\n envPrefix: ALLOWED_ENV_PREFIXES,\n publicDir: path.join(process.cwd(), \"./src/client/public\"),\n build: {\n sourcemap: isProduction ? \"hidden\" : false,\n cssCodeSplit: false,\n outDir: \"./build/dist/\",\n rollupOptions: {\n input: {\n app: \"./src/client/index.html\",\n },\n },\n commonjsOptions: { transformMixedEsModules: true },\n },\n server: {\n allowedHosts: true,\n headers: {\n // \"X-Custom-Header\": \"test-custom\",\n },\n watch: {\n ignored: [\"**/build/playwright/**\"],\n },\n },\n resolve: {\n alias: {\n ...resolveAliases,\n },\n dedupe: [\"react\", \"react-dom\", \"react-router\", \"react-hook-form\"],\n preserveSymlinks: true,\n },\n ssr: {\n external: [\n // \"react\", \"react-dom\",\n \"cookie\",\n \"mongoose\",\n \"mongodb\",\n ],\n noExternal: [\n ...rbPackagesNeedingEnvPolyfill,\n // \"react-use\",\n ],\n },\n optimizeDeps: {\n include: [\n // Force RPC Base packages through esbuild so rb-env-polyfill injects before their dist code touches globalThis.__rb_env__\n ...rbPackagesNeedingEnvPolyfill,\n \"hoist-non-react-statics\",\n // \"react\", \"react-dom\", \"react-dom/server\"\n // \"cookie\"\n ],\n exclude: [\n \"@radix-ui/*\",\n \"@rpcbase/ui\",\n // TMP only in sample app?\n // \"react\", \"react-dom/server\",\n // \"react-hook-form\",\n // \"react-dom\"\n ],\n esbuildOptions: {\n inject: esbuildInject,\n plugins: esbuildInjectPlugins,\n },\n },\n // future: {\n // removeSsrLoadModule: true\n // },\n }\n}\n\nexport const extendConfig = (userConfig: UserConfigExport): UserConfigFn => {\n return async (configEnv) => {\n const config =\n typeof userConfig === \"function\"\n ? await (userConfig as UserConfigFn)(configEnv)\n : userConfig\n\n const baseConfig = getBaseConfig(configEnv)\n\n return mergeConfig(baseConfig, config as any)\n }\n}\n\nconst getSpecBaseConfig = (configEnv: ConfigEnv): UserConfig => {\n const { mode } = configEnv\n const env = loadEnv(mode, process.cwd(), ALLOWED_ENV_PREFIXES)\n const runtimeEnv = createRuntimeEnv({ env, configEnv })\n\n return {\n clearScreen: false,\n define: {\n __vite_env__: runtimeEnv,\n },\n envPrefix: ALLOWED_ENV_PREFIXES,\n plugins: [\n specInputsPlugin(),\n ],\n build: {\n outDir: \"./build/spec/\",\n ssr: true,\n rollupOptions: {\n input: {},\n },\n commonjsOptions: { transformMixedEsModules: true },\n },\n resolve: {\n alias: {\n ...resolveAliases,\n },\n preserveSymlinks: true,\n },\n ssr: {\n external: [\"mongoose\"],\n noExternal: [\"@rpcbase/*\"],\n },\n }\n}\n\nexport const extendSpecConfig = (userConfig: UserConfigExport): UserConfigFn => {\n return async (configEnv) => {\n const config =\n typeof userConfig === \"function\"\n ? await (userConfig as UserConfigFn)(configEnv)\n : userConfig\n\n const baseConfig = getSpecBaseConfig(configEnv)\n\n return mergeConfig(baseConfig, config as any)\n }\n}\n\nexport const createServer = viteCreateServer\n"],"names":["require","__dirname","path","viteCreateServer"],"mappings":";;;;;;;;;;;;;;;AAOA,MAAM,cAAc,KAAK,QAAQ,QAAQ,IAAA,GAAO,MAAM;AAEtD,IAAI,GAAG,WAAW,WAAW,GAAG;AAC9B,QAAM,aAAa,OAAO,MAAM,GAAG,aAAa,WAAW,CAAC;AAC5D,QAAM,WAAW,OAAO,EAAE,QAAQ,YAAY,EAAE,UAAU,CAAA;AAC1D,SAAO,OAAO,QAAQ,KAAK,QAAQ;AACrC;ACRA,MAAMA,YAAU,cAAc,YAAY,GAAG;AAE7C,MAAM,wBAAwB,CAAC,cAAsB;AACnD,MAAI,CAAC,UAAW,QAAO,EAAE,SAAS,WAAW,SAAS,GAAA;AAEtD,MAAI,UAAU,WAAW,GAAG,GAAG;AAC7B,UAAM,WAAW,UAAU,MAAM,GAAG;AACpC,QAAI,SAAS,SAAS,EAAG,QAAO,EAAE,SAAS,WAAW,SAAS,GAAA;AAC/D,WAAO;AAAA,MACL,SAAS,GAAG,SAAS,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;AAAA,MACtC,SAAS,SAAS,MAAM,CAAC,EAAE,KAAK,GAAG;AAAA,IAAA;AAAA,EAEvC;AAEA,QAAM,CAAC,SAAS,GAAG,IAAI,IAAI,UAAU,MAAM,GAAG;AAC9C,SAAO,EAAE,SAAS,SAAS,KAAK,KAAK,GAAG,EAAA;AAC1C;AAEA,MAAM,kBAAkB,CAAC,MAAe,EAAE,SAAS,KAAK,GAAG,IAAI,IAAI,IAAI,KAAK;AAE5E,MAAM,qBAAqB,CAAC,QAAgB;AAC1C,QAAM,EAAE,QAAA,IAAY,sBAAsB,GAAG;AAC7C,MAAI,CAAC,QAAS,QAAO;AAGrB,MAAI;AACF,UAAM,UAAUA,UAAQ,QAAQ,GAAG,OAAO,eAAe;AACzD,WAAO,KAAK,QAAQ,OAAO;AAAA,EAC7B,SAAS,KAAK;AAEZ,UAAM,QAAQA,UAAQ,QAAQ,OAAO;AACrC,QAAI,MAAM,KAAK,QAAQ,KAAK;AAG5B,WAAO,MAAM;AACX,YAAM,cAAc,KAAK,KAAK,KAAK,cAAc;AACjD,UAAI,WAAW,WAAW,GAAG;AAC3B,YAAI;AACF,gBAAM,OAAO,KAAK,MAAM,aAAa,aAAa,MAAM,CAAC;AACzD,cAAI,QAAQ,KAAK,SAAS,QAAS,QAAO;AAAA,QAC5C,QAAQ;AAAA,QAER;AAAA,MACF;AACA,YAAM,SAAS,KAAK,QAAQ,GAAG;AAC/B,UAAI,WAAW,IAAK;AACpB,YAAM;AAAA,IACR;AAGA,UAAM,WAAW,GAAG,KAAK,GAAG,eAAe,KAAK,GAAG;AACnD,UAAM,MAAM,MAAM,YAAY,QAAQ;AACtC,QAAI,QAAQ,IAAI;AACd,YAAM,SAAS,MAAM,MAAM,GAAG,MAAM,SAAS,MAAM;AACnD,aAAO,KAAK,KAAK,QAAQ,OAAO;AAAA,IAClC;AAGA,UAAM;AAAA,EACR;AACF;AAEO,MAAM,+BAA+B,CAAC,cAAsB;AACjE,QAAM,EAAE,SAAS,YAAY,sBAAsB,SAAS;AAC5D,MAAI,CAAC,QAAS,QAAO;AAErB,QAAM,OAAO,mBAAmB,OAAO;AACvC,MAAI,CAAC,SAAS;AACZ,WAAO,gBAAgB,IAAI;AAAA,EAC7B;AAEA,QAAM,SAAS,KAAK,KAAK,MAAM,OAAO;AACtC,QAAM,cAAc,KAAK,KAAK,QAAQ,cAAc;AACpD,MAAI,WAAW,WAAW,GAAG;AAC3B,QAAI;AACF,YAAM,UAAU,KAAK,MAAM,aAAa,aAAa,MAAM,CAAC;AAC5D,YAAM,QAAQ,QAAQ,UAAU,QAAQ;AACxC,UAAI,OAAO;AACT,eAAO,KAAK,KAAK,QAAQ,KAAK;AAAA,MAChC;AAAA,IACF,QAAQ;AAAA,IAER;AAAA,EACF;AAEA,MAAI;AACF,WAAOA,UAAQ,QAAQ,SAAS;AAAA,EAClC,QAAQ;AACN,WAAO,gBAAgB,MAAM;AAAA,EAC/B;AACF;ACvFA,MAAMC,cAAYC,OAAK,QAAQ,cAAc,YAAY,GAAG,CAAC;AAE7D,SAAS,IAAI,KAAa,MAAgB;AACxC,SAAO,IAAI,QAAc,CAAC,SAAS,WAAW;AAC5C,UAAM,IAAI,MAAM,KAAK,MAAM,EAAE,OAAO,WAAW;AAC/C,MAAE,GAAG,SAAS,CAAC,SAAS,SAAS,IAAI,QAAA,IAAY,OAAO,IAAI,MAAM,sBAAsB,IAAI,EAAE,CAAC,CAAC;AAAA,EAClG,CAAC;AACH;AAEA,SAAS,uBAAuB;AAC9B,QAAM,UAAU;AAEhB,QAAM,UAAUA,OAAK,KAAK,QAAQ,OAAO,gBAAgB,QAAQ,OAAO;AACxE,MAAI,GAAG,WAAW,OAAO,EAAG,QAAO;AAEnC,MAAI,MAAMD;AACV,SAAO,MAAM;AACX,UAAM,YAAYC,OAAK,KAAK,KAAK,gBAAgB,QAAQ,OAAO;AAChE,QAAI,GAAG,WAAW,SAAS,EAAG,QAAO;AAErC,UAAM,SAASA,OAAK,QAAQ,GAAG;AAC/B,QAAI,WAAW,IAAK;AACpB,UAAM;AAAA,EACR;AAEA,SAAO;AACT;AAEO,SAAS,wBAAwB,OAKpC,IAAY;AACd,QAAM;AAAA,IACJ,YAAY;AAAA,IACZ;AAAA,IACA,OAAO,QAAQ,IAAI,0BAA0B;AAAA,IAC7C,oBAAoB;AAAA,EAAA,IAClB;AAEJ,QAAM,MAAM,qBAAA;AACZ,QAAM,aAAa,CAAC,UAAU,IAAI;AAElC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,aAAa,YAAY;AACvB,YAAM,SAAS;AACf,YAAM,QAAQ;AAEd,YAAM,QAAQ,QAAQ,IAAI;AAC1B,YAAM,QAAQ,QAAQ,IAAI;AAC1B,UAAI,CAAC,SAAS,CAAC,OAAO;AAEpB,gBAAQ,KAAK,GAAG,MAAM,8IAA8I,KAAK,EAAE;AAC3K;AAAA,MACF;AAOA,YAAM,aAAa,CAAC,aAAa,UAAU,eAAe,SAAS;AACnE,UAAI,QAAS,YAAW,KAAK,aAAa,OAAO;AAEjD,YAAM,aAAa,CAAC,aAAa,UAAU,eAAe,SAAS;AACnE,UAAI,kBAAmB,YAAW,KAAK,gBAAgB;AAEvD,YAAM,IAAI,KAAK,CAAC,GAAG,YAAY,GAAG,UAAU,CAAC;AAC7C,YAAM,IAAI,KAAK,CAAC,GAAG,YAAY,GAAG,UAAU,CAAC;AAAA,IAC/C;AAAA,EAAA;AAEJ;ACxEA,SAAS,wBAAwB,QAAyB;AACxD,MAAI,WAAW,WAAY,QAAO;AAClC,MAAI,OAAO,WAAW,OAAO,EAAG,QAAO;AACvC,MAAI,OAAO,SAAS,uBAAuB,KAAK,OAAO,SAAS,wBAAwB,KAAK,OAAO,SAAS,sBAAsB,GAAG;AACpI,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,wBAAwB,mBAAwD;AACvF,QAAM,kBAAkB,kBAAkB;AAC1C,MAAI,CAAC,GAAG,oBAAoB,eAAe,EAAG,QAAO;AACrD,SAAO,gBAAgB;AACzB;AAEA,SAAS,iBAAiB,mBAAkD;AAC1E,QAAM,eAAe,kBAAkB;AACvC,MAAI,CAAC,aAAc,QAAO;AAC1B,SAAO,aAAa,eAAe;AACrC;AAEA,SAAS,qBAAqB,mBAAmD;AAC/E,MAAI,iBAAiB,iBAAiB,EAAG,QAAO,CAAA;AAEhD,QAAM,eAAe,kBAAkB;AACvC,MAAI,CAAC,aAAc,QAAO,CAAA;AAE1B,QAAM,SAAmB,CAAA;AAEzB,MAAI,aAAa,KAAM,QAAO,KAAK,aAAa,KAAK,IAAI;AAEzD,QAAM,gBAAgB,aAAa;AACnC,MAAI,eAAe;AACjB,QAAI,GAAG,kBAAkB,aAAa,GAAG;AACvC,aAAO,KAAK,cAAc,KAAK,IAAI;AAAA,IACrC,WAAW,GAAG,eAAe,aAAa,GAAG;AAC3C,iBAAW,aAAa,cAAc,UAAU;AAC9C,YAAI,UAAU,WAAY;AAC1B,eAAO,KAAK,UAAU,KAAK,IAAI;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,yBAAyB,mBAAkF;AAClH,QAAM,eAAe,kBAAkB;AACvC,MAAI,CAAC,aAAc,QAAO;AAC1B,MAAI,CAAC,aAAa,cAAe,QAAO;AACxC,MAAI,CAAC,GAAG,eAAe,aAAa,aAAa,EAAG,QAAO;AAC3D,SAAO,aAAa,cAAc;AACpC;AAEA,SAAS,uBAAuB,mBAAyC,sBAGvE;AACA,QAAM,cAAc,qBAAqB,iBAAiB;AAE1D,QAAM,8BAAc,IAAA;AAEpB,QAAM,eAAe,yBAAyB,iBAAiB;AAC/D,MAAI,gBAAgB,CAAC,iBAAiB,iBAAiB,GAAG;AACxD,eAAW,aAAa,cAAc;AACpC,UAAI,UAAU,WAAY;AAC1B,YAAM,WAAW,UAAU,cAAc,QAAQ,UAAU,KAAK;AAChE,UAAI,aAAa,IAAK;AACtB,cAAQ,IAAI,UAAU,KAAK,IAAI;AAAA,IACjC;AAAA,EACF;AAEA,aAAW,SAAS,aAAa;AAC/B,QAAI,CAAC,QAAQ,IAAI,KAAK,EAAG,sBAAqB,IAAI,KAAK;AAAA,EACzD;AAEA,MAAI,QAAQ,SAAS,GAAG;AACtB,WAAO,EAAE,aAAa,MAAM,sBAAsB,CAAA,EAAC;AAAA,EACrD;AAEA,QAAM,gBAAgB,MAAM,KAAK,OAAO,EACrC,IAAI,CAAC,UAAW,UAAU,MAAM,MAAM,QAAQ,KAAK,EAAG,EACtD,KAAK,IAAI;AAEZ,SAAO;AAAA,IACL,aAAa,YAAY,aAAa;AAAA,IACtC,sBAAsB,MAAM,KAAK,OAAO;AAAA,EAAA;AAE5C;AAEA,SAAS,oBAAoB,MAAsB,KAAqB;AACtE,MAAI,GAAG,aAAa,IAAI,GAAG;AACzB,QAAI,KAAK,KAAK,IAAI;AAClB;AAAA,EACF;AAEA,aAAW,WAAW,KAAK,UAAU;AACnC,QAAI,GAAG,oBAAoB,OAAO,EAAG;AACrC,wBAAoB,QAAQ,MAAM,GAAG;AAAA,EACvC;AACF;AAEA,SAAS,oBAAoB,WAAmC;AAC9D,MAAI,GAAG,oBAAoB,SAAS,GAAG;AACrC,UAAM,QAAkB,CAAA;AACxB,eAAW,QAAQ,UAAU,gBAAgB,cAAc;AACzD,0BAAoB,KAAK,MAAM,KAAK;AAAA,IACtC;AACA,WAAO;AAAA,EACT;AAEA,MAAI,GAAG,sBAAsB,SAAS,KAAK,GAAG,mBAAmB,SAAS,KAAK,GAAG,kBAAkB,SAAS,GAAG;AAC9G,WAAO,UAAU,OAAO,CAAC,UAAU,KAAK,IAAI,IAAI,CAAA;AAAA,EAClD;AAEA,SAAO,CAAA;AACT;AAEA,SAAS,6BAA6B,YAAoC;AACxE,QAAM,SAAS,WAAW;AAC1B,MAAI,CAAC,OAAQ,QAAO;AAEpB,MAAI,GAAG,sBAAsB,MAAM,KAAK,OAAO,SAAS,WAAY,QAAO;AAC3E,MAAI,GAAG,YAAY,MAAM,KAAK,OAAO,SAAS,WAAY,QAAO;AAEjE,OAAK,GAAG,sBAAsB,MAAM,KAAK,GAAG,qBAAqB,MAAM,MAAM,OAAO,SAAS,WAAY,QAAO;AAChH,OAAK,GAAG,mBAAmB,MAAM,KAAK,GAAG,kBAAkB,MAAM,MAAM,OAAO,SAAS,WAAY,QAAO;AAC1G,MAAI,GAAG,kBAAkB,MAAM,KAAK,OAAO,SAAS,WAAY,QAAO;AAEvE,MAAI,GAAG,uBAAuB,MAAM,KAAK,OAAO,SAAS,WAAY,QAAO;AAC5E,MAAI,GAAG,uBAAuB,MAAM,KAAK,OAAO,SAAS,WAAY,QAAO;AAC5E,MAAI,GAAG,oBAAoB,MAAM,KAAK,OAAO,SAAS,WAAY,QAAO;AACzE,MAAI,GAAG,2BAA2B,MAAM,KAAK,OAAO,SAAS,WAAY,QAAO;AAEhF,MAAI,GAAG,eAAe,MAAM,KAAK,OAAO,SAAS,WAAY,QAAO;AACpE,MAAI,GAAG,kBAAkB,MAAM,KAAK,OAAO,SAAS,WAAY,QAAO;AACvE,MAAI,GAAG,kBAAkB,MAAM,KAAK,OAAO,SAAS,WAAY,QAAO;AACvE,MAAI,GAAG,0BAA0B,MAAM,KAAK,OAAO,SAAS,WAAY,QAAO;AAE/E,MAAI,GAAG,iBAAiB,MAAM,GAAG;AAC/B,QAAI,OAAO,SAAS,WAAY,QAAO;AACvC,QAAI,OAAO,iBAAiB,WAAY,QAAO;AAAA,EACjD;AAEA,MAAI,GAAG,2BAA2B,MAAM,KAAK,OAAO,SAAS,WAAY,QAAO;AAChF,MAAI,GAAG,gBAAgB,MAAM,EAAG,QAAO;AAEvC,MAAI,GAAG,qBAAqB,MAAM,KAAK,OAAO,SAAS,WAAY,QAAO;AAC1E,MAAI,GAAG,sBAAsB,MAAM,KAAK,OAAO,SAAS,WAAY,QAAO;AAC3E,MAAI,GAAG,oBAAoB,MAAM,KAAK,OAAO,SAAS,WAAY,QAAO;AAEzE,MAAI,GAAG,oBAAoB,MAAM,KAAK,OAAO,SAAS,WAAY,QAAO;AACzE,MAAI,GAAG,kBAAkB,MAAM,KAAK,OAAO,SAAS,WAAY,QAAO;AACvE,MAAI,GAAG,yBAAyB,MAAM,KAAK,OAAO,SAAS,WAAY,QAAO;AAC9E,MAAI,GAAG,yBAAyB,MAAM,KAAK,OAAO,SAAS,WAAY,QAAO;AAE9E,MAAI,GAAG,8BAA8B,MAAM,KAAK,OAAO,SAAS,WAAY,QAAO;AAEnF,MAAI,GAAG,kBAAkB,MAAM,GAAG;AAChC,UAAM,QAAQ,OAAO,gBAAgB,OAAO;AAC5C,WAAO,eAAe;AAAA,EACxB;AAEA,MAAI,GAAG,mBAAmB,MAAM,KAAK,OAAO,UAAU,WAAY,QAAO;AACzE,OAAK,GAAG,iBAAiB,MAAM,KAAK,GAAG,oBAAoB,MAAM,MAAM,OAAO,UAAU,WAAY,QAAO;AAE3G,SAAO;AACT;AAEA,SAAS,2BAA2B,WAAyB,WAAiC;AAC5F,MAAI,UAAU,SAAS,EAAG,QAAO;AAEjC,MAAI,GAAG,uBAAuB,SAAS,KAAK,GAAG,uBAAuB,SAAS,EAAG,QAAO;AAEzF,MAAI,QAAQ;AAEZ,QAAM,QAAQ,CAAC,SAAwB;AACrC,QAAI,MAAO;AAEX,QAAI,GAAG,WAAW,IAAI,EAAG;AAEzB,QAAI,GAAG,iBAAiB,IAAI,KAAK,KAAK,UAAU,GAAG,WAAW,kBAAmB;AAEjF,QAAI,GAAG,aAAa,IAAI,GAAG;AACzB,UAAI,UAAU,IAAI,KAAK,IAAI,KAAK,6BAA6B,IAAI,GAAG;AAClE,gBAAQ;AACR;AAAA,MACF;AAAA,IACF;AAEA,OAAG,aAAa,MAAM,KAAK;AAAA,EAC7B;AAEA,QAAM,SAAS;AAEf,SAAO;AACT;AAEA,SAAS,uBAAuB,UAAiC;AAC/D,QAAM,MAAMA,OAAK,QAAQ,QAAQ,EAAE,YAAA;AACnC,MAAI,QAAQ,OAAQ,QAAO,GAAG,WAAW;AACzC,SAAO,GAAG,WAAW;AACvB;AAEA,SAAS,mCAAmC,WAAyB,KAAwB;AAC3F,QAAM,QAAQ,CAAC,SAAwB;AACrC,QAAI,GAAG,WAAW,IAAI,EAAG;AACzB,QAAI,GAAG,iBAAiB,IAAI,KAAK,KAAK,UAAU,GAAG,WAAW,kBAAmB;AAEjF,QAAI,GAAG,aAAa,IAAI,KAAK,6BAA6B,IAAI,GAAG;AAC/D,UAAI,IAAI,KAAK,IAAI;AAAA,IACnB;AAEA,OAAG,aAAa,MAAM,KAAK;AAAA,EAC7B;AAEA,QAAM,SAAS;AACjB;AAEO,SAAS,wBAAuD;AACrE,SAAO,CAAC,EAAE,MAAM,eAAe;AAC7B,UAAM,2CAA2B,IAAA;AACjC,UAAM,aAAa,uBAAuB,QAAQ;AAClD,UAAM,aAAa,GAAG,iBAAiB,UAAU,MAAM,GAAG,aAAa,QAAQ,MAAM,UAAU;AAE/F,UAAM,oCAAoB,IAAA;AAE1B,eAAW,aAAa,WAAW,YAAY;AAC7C,UAAI,CAAC,GAAG,oBAAoB,SAAS,EAAG;AAExC,YAAM,SAAS,wBAAwB,SAAS;AAChD,UAAI,CAAC,OAAQ;AAEb,UAAI,WAAW,eAAe;AAC5B,cAAM,EAAE,aAAa,qBAAA,IAAyB,uBAAuB,WAAW,oBAAoB;AACpG,YAAI,CAAC,YAAa,eAAc,IAAI,WAAW,EAAE,MAAM,UAAU;AAAA,YAC5D,eAAc,IAAI,WAAW,EAAE,MAAM,aAAa,MAAM,aAAa,sBAAsB;AAChG;AAAA,MACF;AAEA,UAAI,CAAC,wBAAwB,MAAM,EAAG;AAEtC,2BAAqB,SAAS,EAAE,QAAQ,CAAC,UAAU,qBAAqB,IAAI,KAAK,CAAC;AAClF,oBAAc,IAAI,WAAW,EAAE,MAAM,UAAU;AAAA,IACjD;AAEA,QAAI,UAAU;AACd,UAAM,yCAAyB,IAAA;AAC/B,WAAO,SAAS;AACd,gBAAU;AAEV,iBAAW,aAAa,WAAW,YAAY;AAC7C,YAAI,GAAG,oBAAoB,SAAS,EAAG;AACvC,YAAI,mBAAmB,IAAI,SAAS,EAAG;AACvC,YAAI,CAAC,2BAA2B,WAAW,oBAAoB,EAAG;AAElE,4BAAoB,SAAS,EAAE,QAAQ,CAAC,SAAS,qBAAqB,IAAI,IAAI,CAAC;AAC/E,2BAAmB,IAAI,SAAS;AAChC,kBAAU;AAAA,MACZ;AAAA,IACF;AAEA,UAAM,6CAA6B,IAAA;AACnC,eAAW,aAAa,WAAW,YAAY;AAC7C,UAAI,GAAG,oBAAoB,SAAS,EAAG;AACvC,UAAI,mBAAmB,IAAI,SAAS,EAAG;AACvC,yCAAmC,WAAW,sBAAsB;AAAA,IACtE;AAEA,eAAW,aAAa,WAAW,YAAY;AAC7C,UAAI,CAAC,GAAG,oBAAoB,SAAS,EAAG;AAExC,YAAM,gBAAgB,cAAc,IAAI,SAAS;AACjD,UAAI,eAAe,SAAS,SAAU;AAEtC,YAAM,uBAAuB,eAAe,SAAS,cACjD,cAAc,uBACd,qBAAqB,SAAS;AAElC,UAAI,qBAAqB,WAAW,EAAG;AACvC,UAAI,qBAAqB,KAAK,CAAC,UAAU,uBAAuB,IAAI,KAAK,CAAC,EAAG;AAE7E,oBAAc,IAAI,WAAW,EAAE,MAAM,UAAU;AAAA,IACjD;AAEA,UAAM,IAAI,IAAI,YAAY,IAAI;AAE9B,eAAW,CAAC,mBAAmB,MAAM,KAAK,eAAe;AACvD,UAAI,OAAO,SAAS,UAAU;AAC5B,UAAE,OAAO,kBAAkB,KAAK,kBAAkB,GAAG;AACrD;AAAA,MACF;AAEA,YAAM,QAAQ,kBAAkB,SAAS,UAAU;AACnD,QAAE,UAAU,OAAO,kBAAkB,KAAK,OAAO,IAAI;AAAA,IACvD;AAEA,eAAW,aAAa,oBAAoB;AAC1C,QAAE,OAAO,UAAU,KAAK,UAAU,GAAG;AAAA,IACvC;AAEA,QAAI,CAAC,EAAE,WAAA,EAAc,QAAO;AAE5B,UAAM,MAAM,KAAK,MAAM,EAAE,YAAY,EAAE,OAAO,MAAM,gBAAgB,MAAM,QAAQ,UAAU,MAAM,UAAU,EAAE,UAAU;AACxH,QAAI,OAAO;AACX,QAAI,UAAU,CAAC,QAAQ;AAEvB,WAAO;AAAA,MACL,MAAM,EAAE,SAAA;AAAA,MACR,KAAK,KAAK,UAAU,GAAG;AAAA,IAAA;AAAA,EAE3B;AACF;ACzTA,SAAS,oBAAoB,kBAAiD;AAC5E,MAAI,OAAO,qBAAqB,UAAW,QAAO;AAClD,MAAI,CAAC,oBAAoB,OAAO,qBAAqB,SAAU,QAAO;AACtE,SAAO,iBAAiB,QAAQ;AAClC;AAEA,SAAS,yBAAyB,UAA2B;AAC3D,QAAM,aAAa,SAAS,WAAW,MAAM,GAAG;AAEhD,QAAM,QAAQ,WAAW,MAAM,GAAG;AAClC,MAAI,MAAM,SAAS,cAAc,EAAG,QAAO;AAC3C,MAAI,MAAM,SAAS,EAAG,QAAO;AAC7B,MAAI,CAAC,MAAM,KAAK,CAAC,MAAM,UAAU,SAAS,YAAY,QAAQ,MAAM,SAAS,CAAC,EAAG,QAAO;AAExF,MAAI,WAAW,SAAS,OAAO,EAAG,QAAO;AAEzC,QAAM,MAAMA,OAAK,MAAM,QAAQ,UAAU;AACzC,SAAO,QAAQ,SAAS,QAAQ;AAClC;AAEO,SAAS,6BAAqC;AACnD,QAAM,QAAQ,sBAAA;AAEd,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU,MAAM,IAAI,kBAAkB;AACpC,UAAI,oBAAoB,gBAAwC,EAAG;AAEnE,YAAM,WAAW,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,KAAK;AACxC,UAAI,CAAC,yBAAyB,QAAQ,EAAG;AAEzC,YAAM,SAAS,MAAM,EAAE,MAAM,UAAU;AACvC,UAAI,CAAC,OAAQ;AACb,aAAO;AAAA,IACT;AAAA,EAAA;AAEJ;AClCA,MAAM,cAAc,CAAC,MAAc,EAAE,MAAMA,OAAK,GAAG,EAAE,KAAK,GAAG;AAE7D,MAAM,gBAAgB,CAAC,SAA6D;AAClF,QAAM,EAAE,MAAM,SAAS,QAAA,IAAY;AACnC,QAAM,aAAaA,OAAK,QAAQ,MAAM,OAAO;AAE7C,QAAM,WAAW,SAAS,SAAS;AAAA,IACjC,KAAK;AAAA,IACL,UAAU;AAAA,IACV,OAAO;AAAA,EAAA,CACR;AAED,QAAM,SAAiC,CAAA;AACvC,aAAW,WAAW,UAAU;AAC9B,UAAM,cAAcA,OAAK,SAAS,YAAY,OAAO;AACrD,UAAM,aAAa,YAAY,WAAW,EAAE,QAAQ,SAAS,EAAE;AAC/D,WAAO,UAAU,IAAI;AAAA,EACvB;AAEA,SAAO;AACT;AAEA,MAAM,YAAY,CAAC,WAAmC,OAAO,KAAK,MAAM,EAAE,KAAA,EAAO,KAAK,IAAI;AAE1F,MAAM,iBAAiB,CAAC,UAAmB;AACzC,MAAI,CAAC,MAAO,QAAO;AACnB,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,MAAI,MAAM,QAAQ,KAAK,EAAG,QAAO,MAAM,SAAS;AAChD,MAAI,OAAO,UAAU,SAAU,QAAO,OAAO,KAAK,KAAY,EAAE,SAAS;AACzE,SAAO;AACT;AAEO,SAAS,iBAAiB,OAA6B,IAAY;AACxE,QAAM,EAAE,UAAU,wCAAwC,UAAU,WAAW;AAE/E,MAAI;AACJ,MAAI;AACJ,MAAI;AAEJ,MAAI,SAAS;AACb,MAAI,cAAc;AAClB,MAAI;AACJ,MAAI;AAEJ,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,eAAe,QAAQ;AACrB,gBAAU,OAAO;AACjB,mBAAaA,OAAK,QAAQ,SAAS,OAAO;AAC1C,kBAAYA,OAAK,QAAQ,SAAS,OAAO,MAAM,MAAM;AAAA,IACvD;AAAA,IACA,QAAQ,cAAc;AACpB,UAAI,CAAC,QAAS;AAEd,eAAS,CAAC,eAAgB,aAAqB,KAAK;AACpD,UAAI,CAAC,OAAQ;AAEb,UAAI,CAAC,iBAAiB,aAAa;AACjC,wBAAgB,cAAc,EAAE,MAAM,SAAS,SAAS,SAAS;AACjE,sBAAc;AAAA,MAChB;AACE,mBAAqB,QAAQ;AAE/B,aAAO;AAAA,IACT;AAAA,IACA,YAAY,IAAI,QAAQ;AACtB,UAAI,CAAC,OAAQ;AACb,UAAI,CAAC,WAAW,CAAC,WAAY;AAE7B,YAAM,QAAQA,OAAK,WAAW,EAAE,IAAI,KAAKA,OAAK,QAAQ,SAAS,EAAE;AAEjE,UAAI,UAAU,YAAY;AACxB,sBAAc;AACd;AAAA,MACF;AAEA,UAAI,CAAC,MAAM,WAAW,aAAaA,OAAK,GAAG,EAAG;AAC9C,UAAI,CAAC,uCAAuC,KAAK,KAAK,EAAG;AACzD,UAAI,OAAO,UAAU,YAAY,OAAO,UAAU,UAAU;AAC1D,sBAAc;AAAA,MAChB;AACA,UAAI,OAAO,UAAU,UAAU;AAC7B,cAAM,cAAcA,OAAK,SAAS,YAAY,KAAK;AACnD,cAAM,aAAa,YAAY,WAAW,EAAE,QAAQ,SAAS,EAAE;AAC/D,YAAI,CAAC,iBAAiB,cAAc,UAAU,MAAM,OAAO;AACzD,wBAAc;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AAAA,IACA,aAAa;AACX,UAAI,CAAC,OAAQ;AACb,UAAI,CAAC,WAAY;AAEjB,WAAK,aAAa,UAAU;AAE5B,UAAI,CAAC,aAAa,CAAC,cAAe;AAElC,YAAM,MAAM,UAAU,aAAa;AACnC,UAAI,iBAAiB,kBAAkB,KAAK;AAC1C,WAAG,OAAO,WAAW,EAAE,WAAW,MAAM,OAAO,MAAM;AAAA,MACvD;AACA,sBAAgB;AAAA,IAClB;AAAA,EAAA;AAEJ;AC7FA,MAAM,8BAA8B,MAAM;AACxC,QAAM,YAAY,KAAK,QAAQ,QAAQ,IAAA,GAAO,uBAAuB;AACrE,QAAM,aAAa,KAAK,KAAK,WAAW,2BAA2B;AACnE,QAAM,iBAAiB;AAEvB,KAAG,UAAU,WAAW,EAAE,WAAW,MAAM;AAC3C,MAAI;AACF,UAAM,WAAW,GAAG,aAAa,YAAY,MAAM;AACnD,QAAI,aAAa,gBAAgB;AAC/B,aAAO;AAAA,IACT;AAAA,EACF,QAAQ;AAAA,EAER;AAEA,KAAG,cAAc,YAAY,gBAAgB,MAAM;AACnD,SAAO;AACT;AAEA,MAAM,oBAAoB,4BAAA;AAC1B,MAAM,gBAAgB,CAAC,iBAAiB;AACxC,MAAM,uBAA8B;AAAA,EAClC;AAAA,IACE,MAAM;AAAA,IACN,MAAM,OAAY;AAChB,YAAM,UAAU,EAAE,QAAQ,KAAA,GAAQ,CAAC,SAAc;AAC/C,YAAI,KAAK,SAAS,mBAAmB;AACnC,iBAAO,EAAE,MAAM,mBAAmB,WAAW,OAAA;AAAA,QAC/C;AAEA,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,EAAA;AAEJ;AAEA,MAAM,OAAO,CAAC,QAAQ,OAAO,GAAG,EAAE,SAAU,QAAQ,IAAI,IAAe,MAAM;AAC7E,MAAM,eAAe,QAAQ,IAAI,aAAa;AAE9C,MAAM,kBAAkB,CAAC,YAAY,UAAU;AAE/C,MAAM,uBAAuB;AAAA,EAC3B;AAAA,EACA,GAAI,eAAe,CAAA,IAAK;AAC1B;AAGA,MAAM,oBAAoB;AAAA,EACxB,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,2BAA2B;AAAA,EAC3B,4BAA4B;AAAA,EAC5B,+BAA+B;AAAA,EAC/B,iBAAiB;AAAA,EACjB,WAAW;AACb;AAEA,MAAM,iBAAyC;AAAA,EAC7C,SAAS,KAAK,QAAQ,QAAQ,IAAA,GAAO,YAAY;AAAA,EACjD,YAAY,KAAK,QAAQ,QAAQ,IAAA,GAAO,eAAe;AAAA,EACvD,YAAY,KAAK,QAAQ,QAAQ,IAAA,GAAO,eAAe;AAAA,EACvD,WAAW,KAAK,QAAQ,QAAQ,IAAA,GAAO,cAAc;AAAA,EACrD,KAAK,KAAK,QAAQ,QAAQ,IAAA,GAAO,eAAe;AAClD;AAEA,MAAM,qBAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGA,mBAAmB,QAAQ,CAAC,QAAQ;AAClC,QAAM,WAAW,6BAA6B,GAAG;AACjD,iBAAe,GAAG,IAAI;AACxB,CAAC;AAED,eAAe,aAAa,IAAI,6BAA6B,QAAQ;AAIrE,MAAM,kBAAkB,6BAA6B,oCAAoC;AACzF,eAAe,kBAAkB,IAAI;AACrC,eAAe,oCAAoC,IAAI;AAIvD,MAAM,+BAA+B;AAAA,EACnC;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAM,mBAAmB,CAAC,SAGpB;AACJ,QAAM,EAAE,KAAK,UAAA,IAAc;AAC3B,QAAM,EAAE,SAAS,MAAM,WAAA,IAAe;AACtC,QAAM,eAAe,YAAY;AAEjC,QAAM,YAAY;AAAA,IAChB,GAAG;AAAA,EAAA;AAGL,SAAO;AAAA,IACL,GAAG;AAAA,IACH,UAAU,UAAU,YAAY;AAAA,IAChC,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM,CAAC;AAAA,IACP,KAAK,QAAQ,UAAU;AAAA,EAAA;AAE3B;AAGA,MAAM,gBAAgB,CAAC,cAAqC;AAC1D,QAAM,EAAE,SAAS;AACjB,QAAM,MAAM,QAAQ,MAAM,QAAQ,IAAA,GAAO,oBAAoB;AAC7D,QAAM,aAAa,iBAAiB,EAAE,KAAK,WAAW;AAEtD,SAAO;AAAA,IACL,aAAa;AAAA,IACb,SAAS;AAAA,MACP,2BAAA;AAAA,MACA,MAAM;AAAA,QACJ,OAAO;AAAA,UACL,SAAS;AAAA,YACP,CAAC,+BAA+B,EAAE,QAAQ,MAAM;AAAA,UAAA;AAAA,QAClD;AAAA,MACF,CACD;AAAA,MACD,iBAAiB;AAAA;AAAA,QAEf,QAAQ;AAAA,MAAA,CACT;AAAA,MACD,eAAe;AAAA,QACb,2BAA2B;AAAA,QAC3B,oBAAoB;AAAA,QACpB,eAAe,CAAC,UAAU;AAAA,QAC1B,wBAAwB;AAAA,MAAA,CACzB;AAAA,MACD,gBAAgB,QAAQ,wBAAwB,CAAA,CAAE;AAAA,IAAA,EAClD,OAAO,OAAO;AAAA,IAChB,QAAQ;AAAA,MACN,cAAc;AAAA,IAAA;AAAA,IAEhB,WAAW;AAAA,IACX,WAAW,KAAK,KAAK,QAAQ,IAAA,GAAO,qBAAqB;AAAA,IACzD,OAAO;AAAA,MACL,WAAW,eAAe,WAAW;AAAA,MACrC,cAAc;AAAA,MACd,QAAQ;AAAA,MACR,eAAe;AAAA,QACb,OAAO;AAAA,UACL,KAAK;AAAA,QAAA;AAAA,MACP;AAAA,MAEF,iBAAiB,EAAE,yBAAyB,KAAA;AAAA,IAAK;AAAA,IAEnD,QAAQ;AAAA,MACN,cAAc;AAAA,MACd,SAAS;AAAA;AAAA,MAAA;AAAA,MAGT,OAAO;AAAA,QACL,SAAS,CAAC,wBAAwB;AAAA,MAAA;AAAA,IACpC;AAAA,IAEF,SAAS;AAAA,MACP,OAAO;AAAA,QACL,GAAG;AAAA,MAAA;AAAA,MAEL,QAAQ,CAAC,SAAS,aAAa,gBAAgB,iBAAiB;AAAA,MAChE,kBAAkB;AAAA,IAAA;AAAA,IAEpB,KAAK;AAAA,MACH,UAAU;AAAA;AAAA,QAER;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MAEF,YAAY;AAAA,QACV,GAAG;AAAA;AAAA,MAAA;AAAA,IAEL;AAAA,IAEF,cAAc;AAAA,MACZ,SAAS;AAAA;AAAA,QAEP,GAAG;AAAA,QACH;AAAA;AAAA;AAAA,MAAA;AAAA,MAIF,SAAS;AAAA,QACP;AAAA,QACA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA;AAAA,MAMF,gBAAgB;AAAA,QACd,QAAQ;AAAA,QACR,SAAS;AAAA,MAAA;AAAA,IACX;AAAA;AAAA;AAAA;AAAA,EACF;AAKJ;AAEO,MAAM,eAAe,CAAC,eAA+C;AAC1E,SAAO,OAAO,cAAc;AAC1B,UAAM,SACJ,OAAO,eAAe,aAClB,MAAO,WAA4B,SAAS,IAC5C;AAEN,UAAM,aAAa,cAAc,SAAS;AAE1C,WAAO,YAAY,YAAY,MAAa;AAAA,EAC9C;AACF;AAEA,MAAM,oBAAoB,CAAC,cAAqC;AAC9D,QAAM,EAAE,SAAS;AACjB,QAAM,MAAM,QAAQ,MAAM,QAAQ,IAAA,GAAO,oBAAoB;AAC7D,QAAM,aAAa,iBAAiB,EAAE,KAAK,WAAW;AAEtD,SAAO;AAAA,IACL,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,cAAc;AAAA,IAAA;AAAA,IAEhB,WAAW;AAAA,IACX,SAAS;AAAA,MACP,iBAAA;AAAA,IAAiB;AAAA,IAEnB,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,eAAe;AAAA,QACb,OAAO,CAAA;AAAA,MAAC;AAAA,MAEV,iBAAiB,EAAE,yBAAyB,KAAA;AAAA,IAAK;AAAA,IAEnD,SAAS;AAAA,MACP,OAAO;AAAA,QACL,GAAG;AAAA,MAAA;AAAA,MAEL,kBAAkB;AAAA,IAAA;AAAA,IAEpB,KAAK;AAAA,MACH,UAAU,CAAC,UAAU;AAAA,MACrB,YAAY,CAAC,YAAY;AAAA,IAAA;AAAA,EAC3B;AAEJ;AAEO,MAAM,mBAAmB,CAAC,eAA+C;AAC9E,SAAO,OAAO,cAAc;AAC1B,UAAM,SACJ,OAAO,eAAe,aAClB,MAAO,WAA4B,SAAS,IAC5C;AAEN,UAAM,aAAa,kBAAkB,SAAS;AAE9C,WAAO,YAAY,YAAY,MAAa;AAAA,EAC9C;AACF;AAEO,MAAM,eAAeC;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rpcbase/vite",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.136.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -72,6 +72,7 @@
|
|
|
72
72
|
"@posthog/cli": "0.5.22",
|
|
73
73
|
"@tailwindcss/vite": "4.1.18",
|
|
74
74
|
"@vitejs/plugin-react": "5.1.2",
|
|
75
|
+
"babel-plugin-react-compiler": "1.0.0",
|
|
75
76
|
"clsx": "2.1.1",
|
|
76
77
|
"glob": "13.0.0",
|
|
77
78
|
"libphonenumber-js": "1.12.33",
|