@gtkx/cli 2.0.0-beta.7 → 2.0.0-beta.9
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/commands/deploy.d.ts +4 -0
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +6 -0
- package/dist/commands/deploy.js.map +1 -1
- package/dist/deploy/depends.d.ts.map +1 -1
- package/dist/deploy/depends.js +24 -2
- package/dist/deploy/depends.js.map +1 -1
- package/dist/deploy/download.d.ts +7 -3
- package/dist/deploy/download.d.ts.map +1 -1
- package/dist/deploy/download.js +19 -15
- package/dist/deploy/download.js.map +1 -1
- package/dist/deploy/native-addon.d.ts +5 -0
- package/dist/deploy/native-addon.d.ts.map +1 -0
- package/dist/deploy/native-addon.js +134 -0
- package/dist/deploy/native-addon.js.map +1 -0
- package/dist/deploy/node-runtime/download.js +2 -2
- package/dist/deploy/node-runtime/download.js.map +1 -1
- package/dist/deploy/node-runtime/elf.d.ts +3 -1
- package/dist/deploy/node-runtime/elf.d.ts.map +1 -1
- package/dist/deploy/node-runtime/elf.js +3 -1
- package/dist/deploy/node-runtime/elf.js.map +1 -1
- package/dist/deploy/node-runtime/guard.d.ts.map +1 -1
- package/dist/deploy/node-runtime/guard.js +7 -14
- package/dist/deploy/node-runtime/guard.js.map +1 -1
- package/dist/deploy/node-runtime/index.d.ts +2 -1
- package/dist/deploy/node-runtime/index.d.ts.map +1 -1
- package/dist/deploy/node-runtime/index.js +29 -6
- package/dist/deploy/node-runtime/index.js.map +1 -1
- package/dist/deploy/node-runtime/sonames.d.ts +5 -0
- package/dist/deploy/node-runtime/sonames.d.ts.map +1 -0
- package/dist/deploy/node-runtime/sonames.js +13 -0
- package/dist/deploy/node-runtime/sonames.js.map +1 -0
- package/dist/deploy/payload/stage.d.ts +2 -1
- package/dist/deploy/payload/stage.d.ts.map +1 -1
- package/dist/deploy/payload/stage.js +22 -2
- package/dist/deploy/payload/stage.js.map +1 -1
- package/dist/deploy/run-deploy.d.ts +1 -0
- package/dist/deploy/run-deploy.d.ts.map +1 -1
- package/dist/deploy/run-deploy.js +139 -80
- package/dist/deploy/run-deploy.js.map +1 -1
- package/dist/deploy/settings/arch.d.ts +9 -3
- package/dist/deploy/settings/arch.d.ts.map +1 -1
- package/dist/deploy/settings/arch.js +27 -6
- package/dist/deploy/settings/arch.js.map +1 -1
- package/dist/deploy/settings/index.d.ts +2 -1
- package/dist/deploy/settings/index.d.ts.map +1 -1
- package/dist/deploy/settings/index.js +2 -1
- package/dist/deploy/settings/index.js.map +1 -1
- package/dist/deploy/settings/paths.d.ts +2 -1
- package/dist/deploy/settings/paths.d.ts.map +1 -1
- package/dist/deploy/settings/paths.js +6 -5
- package/dist/deploy/settings/paths.js.map +1 -1
- package/dist/deploy/targets/appimage.d.ts.map +1 -1
- package/dist/deploy/targets/appimage.js +1 -0
- package/dist/deploy/targets/appimage.js.map +1 -1
- package/dist/deploy/targets/flatpak-pnpm.js +4 -4
- package/dist/deploy/targets/flatpak-pnpm.js.map +1 -1
- package/dist/deploy/targets/flatpak.d.ts.map +1 -1
- package/dist/deploy/targets/flatpak.js +1 -0
- package/dist/deploy/targets/flatpak.js.map +1 -1
- package/dist/deploy/targets/nfpm-target.d.ts.map +1 -1
- package/dist/deploy/targets/nfpm-target.js +1 -0
- package/dist/deploy/targets/nfpm-target.js.map +1 -1
- package/dist/deploy/types.d.ts +4 -2
- package/dist/deploy/types.d.ts.map +1 -1
- package/dist/deploy/types.js.map +1 -1
- package/dist/deploy/vendored/appimagetool.js +2 -2
- package/dist/deploy/vendored/appimagetool.js.map +1 -1
- package/dist/deploy/vendored/nfpm.js +1 -1
- package/dist/deploy/vendored/nfpm.js.map +1 -1
- package/dist/dev/font-dir.d.ts +1 -1
- package/dist/dev/font-dir.d.ts.map +1 -1
- package/dist/dev/font-dir.js +0 -3
- package/dist/dev/font-dir.js.map +1 -1
- package/dist/dev/runner.d.ts.map +1 -1
- package/dist/dev/runner.js +19 -6
- package/dist/dev/runner.js.map +1 -1
- package/dist/internal/font-staging.d.ts +5 -2
- package/dist/internal/font-staging.d.ts.map +1 -1
- package/dist/internal/font-staging.js +76 -27
- package/dist/internal/font-staging.js.map +1 -1
- package/dist/internal/icon-staging.d.ts +3 -0
- package/dist/internal/icon-staging.d.ts.map +1 -0
- package/dist/internal/icon-staging.js +40 -0
- package/dist/internal/icon-staging.js.map +1 -0
- package/dist/internal/source-imports.js +1 -1
- package/dist/internal/source-imports.js.map +1 -1
- package/dist/vite-plugins/font-worker-env.d.ts.map +1 -1
- package/dist/vite-plugins/font-worker-env.js +2 -5
- package/dist/vite-plugins/font-worker-env.js.map +1 -1
- package/dist/vite-plugins/font.d.ts.map +1 -1
- package/dist/vite-plugins/font.js +16 -4
- package/dist/vite-plugins/font.js.map +1 -1
- package/dist/vite-plugins/icon-worker-env.d.ts +4 -0
- package/dist/vite-plugins/icon-worker-env.d.ts.map +1 -0
- package/dist/vite-plugins/icon-worker-env.js +23 -0
- package/dist/vite-plugins/icon-worker-env.js.map +1 -0
- package/dist/vite-plugins/icons.js +2 -2
- package/dist/vite-plugins/icons.js.map +1 -1
- package/dist/vite-plugins/react-compiler.js +2 -2
- package/dist/vite-plugins/react-compiler.js.map +1 -1
- package/dist/vite-plugins/resources.js +2 -2
- package/dist/vite-plugins/resources.js.map +1 -1
- package/dist/vite-plugins/settings-worker-env.js +2 -2
- package/dist/vite-plugins/settings-worker-env.js.map +1 -1
- package/dist/vite-plugins/store-links.d.ts.map +1 -1
- package/dist/vite-plugins/store-links.js +2 -1
- package/dist/vite-plugins/store-links.js.map +1 -1
- package/dist/vite-plugins/undeclared-library.js +2 -2
- package/dist/vite-plugins/undeclared-library.js.map +1 -1
- package/dist/vite-plugins/worker.d.ts.map +1 -1
- package/dist/vite-plugins/worker.js +21 -13
- package/dist/vite-plugins/worker.js.map +1 -1
- package/dist/vitest-plugin.d.ts +2 -2
- package/dist/vitest-plugin.d.ts.map +1 -1
- package/dist/vitest-plugin.js +4 -2
- package/dist/vitest-plugin.js.map +1 -1
- package/package.json +13 -13
- package/src/commands/deploy.ts +6 -0
- package/src/deploy/depends.ts +30 -3
- package/src/deploy/download.ts +33 -17
- package/src/deploy/native-addon.ts +183 -0
- package/src/deploy/node-runtime/download.ts +2 -2
- package/src/deploy/node-runtime/elf.ts +4 -1
- package/src/deploy/node-runtime/guard.ts +10 -14
- package/src/deploy/node-runtime/index.ts +42 -7
- package/src/deploy/node-runtime/sonames.ts +17 -0
- package/src/deploy/payload/stage.ts +34 -2
- package/src/deploy/run-deploy.ts +209 -94
- package/src/deploy/settings/arch.ts +40 -8
- package/src/deploy/settings/index.ts +4 -1
- package/src/deploy/settings/paths.ts +8 -6
- package/src/deploy/targets/appimage.ts +1 -0
- package/src/deploy/targets/flatpak-pnpm.ts +4 -4
- package/src/deploy/targets/flatpak.ts +1 -0
- package/src/deploy/targets/nfpm-target.ts +1 -0
- package/src/deploy/types.ts +4 -1
- package/src/deploy/vendored/appimagetool.ts +2 -2
- package/src/deploy/vendored/nfpm.ts +1 -1
- package/src/dev/font-dir.ts +1 -6
- package/src/dev/runner.ts +24 -6
- package/src/internal/font-staging.ts +99 -27
- package/src/internal/icon-staging.ts +58 -0
- package/src/internal/source-imports.ts +1 -1
- package/src/vite-plugins/font-worker-env.ts +2 -6
- package/src/vite-plugins/font.ts +21 -3
- package/src/vite-plugins/icon-worker-env.ts +36 -0
- package/src/vite-plugins/icons.ts +2 -2
- package/src/vite-plugins/react-compiler.ts +2 -2
- package/src/vite-plugins/resources.ts +2 -2
- package/src/vite-plugins/settings-worker-env.ts +2 -2
- package/src/vite-plugins/store-links.ts +2 -1
- package/src/vite-plugins/undeclared-library.ts +2 -2
- package/src/vite-plugins/worker.ts +31 -15
- package/src/vitest-plugin.ts +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/vite-plugins/resources.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ConfigLoader } from \"@gtkx/config\";\nimport type { ModuleNode, Plugin, ResolvedConfig, Rolldown, UserConfig, ViteDevServer } from \"vite\";\nimport { createConfigLoader, resourceBasePath } from \"@gtkx/config/internal\";\nimport { error, info, isPathInside, isRecord, sortStrings, toPosixPath } from \"@gtkx/utils\";\nimport { copyFileSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from \"node:fs\";\nimport { basename, dirname, extname, isAbsolute, join, posix, relative, sep } from \"node:path\";\nimport { parseSync } from \"vite\";\nimport { withExclusiveLoad } from \"../internal/module-loads.js\";\nimport { runCliTool } from \"../internal/run-cli-tool.js\";\nimport { parseRuntimeImportsIn, type SourceImport, sourceLanguage } from \"../internal/source-imports.js\";\nimport { createRetainedStagingDir, type RetainedStagingDir, withStagingDir } from \"../internal/staging-dir.js\";\nimport { ASSET_RE } from \"./asset-extensions.js\";\nimport {\n isBareRelativeAsset,\n parseIconSpecifier,\n parseResourceSpecifier,\n} from \"./asset-specifier.js\";\nimport { renderInitModule } from \"./resource-init-module.js\";\nimport {\n BUNDLE_FILENAME,\n escapeXml,\n fromVirtualId,\n ICON_NAME_SEPARATOR,\n isVirtual,\n REFRESH_EXPORT,\n REGISTER_REFRESH_EXPORT,\n REL_SEPARATOR,\n RESOURCE_PATH_EXPORT,\n toVirtualId,\n VIRTUAL_INIT,\n} from \"./resource-shared.js\";\nimport { stripQuery } from \"./strip-query.js\";\n\ntype ResourceEntry = {\n sourcePath: string;\n stagedRelPath: string;\n resourcePath: string;\n};\n\ntype PluginState = {\n prefix: string;\n root: string;\n isBuild: boolean;\n entries: Map<string, ResourceEntry>;\n bundledSpecifiers: Map<string, Set<string>>;\n moduleDependencies: Map<string, Set<string>>;\n prunedDependencies: Map<string, Set<string>>;\n declaredEntries: Map<string, Map<string, ResourceEntry>>;\n declaredIcons: Map<string, Map<string, ResourceEntry>>;\n entryModule: string | null;\n sourcePaths: Set<string>;\n missingSourcePaths: Set<string>;\n stagingDir: RetainedStagingDir;\n devBundlePath: string;\n server: ViteDevServer | null;\n compiledSignature: string;\n bundleReferenceId: string | null;\n iconOwners: Map<string, ResourceEntry>;\n};\n\ntype ResolveContext = {\n resolve: (\n source: string,\n importer?: string,\n options?: Record<string, unknown>,\n ) => Promise<{ id: string; external?: boolean | string } | null>;\n};\n\ntype PackageOwner = {\n dir: string;\n name: string;\n};\n\ntype AssetResolveRequest = {\n assetSource: string;\n importer: string | undefined;\n resourcePath: string | null;\n options: Record<string, unknown> | undefined;\n};\n\ntype IconResolveRequest = {\n assetSource: string;\n iconName: string | null;\n importer: string | undefined;\n options: Record<string, unknown> | undefined;\n};\n\ntype ResolvedIconEntry = {\n entry: ResourceEntry;\n iconName: string;\n};\n\ntype RetainedIconModuleId = {\n id: string;\n moduleSideEffects: true;\n};\n\ntype ResourceModuleId = string | RetainedIconModuleId;\n\ntype ImporterReconciliation = {\n currentBundled: Set<string>;\n currentDependencies: Set<string>;\n file: string;\n imports: SourceImport[];\n key: string;\n previousBundled: Set<string> | undefined;\n previousDependencies: Set<string> | undefined;\n};\n\ntype DerivedIconEntry = {\n iconIdentity: string;\n iconName: string;\n resourcePath: string;\n};\n\ntype ResolveRequest = {\n source: string;\n importer: string | undefined;\n options: Record<string, unknown> | undefined;\n};\n\nconst RESOURCE_COMPILER = \"glib-compile-resources\";\nconst MANIFEST_PREFIX = \"/\";\nconst DEV_STAGING_PREFIX = \"resources-dev\";\nconst MANIFEST_FILENAME = \"package.json\";\nconst DATA_PREFIX = \"#data/\";\nconst BUNDLED_QUERY_MENTION_RE = /[?&](?:icon|resource)(?:[=&]|$)/;\nconst ICON_EXTENSIONS: Set<string> = new Set([\".png\", \".svg\", \".xpm\"]);\n\nconst ICON_CONTEXTS: Set<string> = new Set([\n \"actions\",\n \"animations\",\n \"apps\",\n \"categories\",\n \"devices\",\n \"emblems\",\n \"emotes\",\n \"filesystems\",\n \"intl\",\n \"mimetypes\",\n \"places\",\n \"status\",\n]);\n\nconst STOCK_ICON_CONTEXTS: Set<string> = new Set([\n \"chart\",\n \"code\",\n \"data\",\n \"form\",\n \"image\",\n \"io\",\n \"media\",\n \"navigation\",\n \"net\",\n \"object\",\n \"table\",\n \"text\",\n]);\n\nconst ICON_SIZE_RE = /^([1-9]\\d*)x\\1(?:@[1-9]\\d*)?$/;\nconst RESERVED_ICON_NAMES: Set<string> = new Set([\"\", \".\", \"..\"]);\n\nconst isDependencyFile = (root: string, path: string): boolean =>\n isPathInside(root, path) && relative(root, path).split(sep).includes(\"node_modules\");\n\nconst packageIdentityIn = (dir: string): string | null => {\n try {\n const manifest: unknown = JSON.parse(readFileSync(join(dir, MANIFEST_FILENAME), \"utf8\"));\n\n return isRecord(manifest) && typeof manifest.name === \"string\" ? manifest.name : null;\n } catch {\n return null;\n }\n};\n\nconst packageIn = (dir: string): PackageOwner | null => {\n const name = packageIdentityIn(dir);\n\n if (name !== null) {\n return { dir, name };\n }\n\n const parent = dirname(dir);\n\n return parent === dir ? null : packageIn(parent);\n};\n\nconst packageForFile = (file: string): PackageOwner | null => packageIn(dirname(file));\n\nconst validateResourcePath = (resourcePath: string): string => {\n if (\n resourcePath === \"/\" ||\n !resourcePath.startsWith(\"/\") ||\n resourcePath.endsWith(\"/\") ||\n resourcePath.includes(\"\\0\") ||\n posix.normalize(resourcePath) !== resourcePath\n ) {\n throw new Error(\n `${JSON.stringify(resourcePath)} is not a valid GResource path; use an absolute normalized path`,\n );\n }\n\n return resourcePath;\n};\n\nconst derivedResourcePath = (state: PluginState, sourcePath: string): string => {\n if (isPathInside(state.root, sourcePath) && !isDependencyFile(state.root, sourcePath)) {\n return validateResourcePath(`${state.prefix}/${toPosixPath(relative(state.root, sourcePath))}`);\n }\n\n const owner = packageForFile(sourcePath);\n\n if (owner === null || !isPathInside(owner.dir, sourcePath)) {\n throw new Error(`${sourcePath} is outside the application and does not belong to a named package`);\n }\n\n const packagePath = toPosixPath(relative(owner.dir, sourcePath));\n\n return validateResourcePath(`${state.prefix}/${owner.name}/${packagePath}`);\n};\n\nconst iconExtension = (sourcePath: string): string => {\n const extension = extname(sourcePath).toLowerCase();\n\n if (!ICON_EXTENSIONS.has(extension)) {\n throw new Error(`${sourcePath} is not a supported themed icon; use an SVG, PNG, or XPM file`);\n }\n\n return extension;\n};\n\nconst hasIconNamePathSeparator = (value: string): boolean =>\n value.includes(\"\\0\") || value.includes(\"/\") || value.includes(\"\\\\\");\n\nconst validateIconName = (value: string): string => {\n if (\n RESERVED_ICON_NAMES.has(value) ||\n hasIconNamePathSeparator(value) ||\n ICON_EXTENSIONS.has(extname(value).toLowerCase())\n ) {\n throw new Error(\n `${JSON.stringify(value)} is not a valid icon name; use an extensionless filename without slashes`,\n );\n }\n\n return value;\n};\n\nconst isIconContext = (parts: string[]): boolean => {\n const [first, second] = parts;\n\n if (parts.length === 1) {\n return first !== undefined && ICON_CONTEXTS.has(first);\n }\n\n return parts.length === 2 && first === \"stock\" && second !== undefined && STOCK_ICON_CONTEXTS.has(second);\n};\n\nconst isIconLayout = (parts: string[]): boolean => {\n const [size, ...context] = parts;\n\n if (size === \"symbolic\") {\n return context.length === 1 && context[0] === \"apps\";\n }\n\n return size !== undefined && (size === \"scalable\" || ICON_SIZE_RE.test(size)) && isIconContext(context);\n};\n\nconst iconLayoutInParts = (parts: string[], beforeIndex: number): string | null => {\n const index = parts.lastIndexOf(\"icons\", beforeIndex);\n\n if (index === -1) {\n return null;\n }\n\n const treePath = parts.slice(index + 1, -1);\n const layout = treePath[0] === \"hicolor\" ? treePath.slice(1) : treePath;\n\n return isIconLayout(layout) ? layout.join(\"/\") : iconLayoutInParts(parts, index - 1);\n};\n\nconst iconLayoutFromTree = (sourcePath: string): string | null => {\n const parts = toPosixPath(sourcePath).split(\"/\");\n\n return iconLayoutInParts(parts, parts.length - 2);\n};\n\nconst derivedIconEntry = (\n state: PluginState,\n sourcePath: string,\n requestedName: string | null,\n): DerivedIconEntry => {\n const extension = iconExtension(sourcePath);\n const sourceName = basename(sourcePath, extname(sourcePath));\n const iconName = validateIconName(requestedName ?? sourceName);\n const layout = iconLayoutFromTree(sourcePath);\n\n const iconIdentity = layout === null\n ? `${state.prefix}/icons/${iconName}`\n : `${state.prefix}/icons/${layout}/${iconName}`;\n\n const resourcePath = validateResourcePath(`${iconIdentity}${extension}`);\n\n return { iconIdentity, iconName, resourcePath };\n};\n\nconst hasSideEffectIconImport = (code: string, id: string): boolean => {\n const lang = sourceLanguage(stripQuery(id));\n\n if (lang === undefined || !code.includes(\"?icon\")) {\n return false;\n }\n\n const parsed = parseSync(id, code, { lang });\n\n if (parsed.errors.length > 0) {\n return false;\n }\n\n return parsed.module.staticImports.some(\n (statement) => statement.entries.length === 0 && parseIconSpecifier(statement.moduleRequest.value) !== null,\n );\n};\n\nconst retainSideEffectIconImport = (\n code: string,\n id: string,\n): { code: string; moduleSideEffects: true } | null =>\n hasSideEffectIconImport(code, id)\n ? { code, moduleSideEffects: true }\n : null;\n\nconst compileBundle = (state: PluginState, outputPath: string): Buffer =>\n withStagingDir(\"resources\", (dir) => {\n const manifest = stageBundle(dir, state.entries);\n\n return runCompiler(dir, manifest, outputPath);\n });\n\nconst stageBundle = (dir: string, entries: Map<string, ResourceEntry>): string => {\n const fileNodes: string[] = [];\n\n for (const entry of entries.values()) {\n const targetPath = join(dir, entry.stagedRelPath);\n mkdirSync(dirname(targetPath), { recursive: true });\n copyFileSync(entry.sourcePath, targetPath);\n fileNodes.push(` <file>${escapeXml(entry.stagedRelPath)}</file>`);\n }\n\n const prefix = escapeXml(MANIFEST_PREFIX);\n const manifest = join(dir, \"gtkx.gresource.xml\");\n\n const xml = [\n \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\",\n \"<gresources>\",\n ` <gresource prefix=\"${prefix}\">`,\n ...fileNodes,\n \" </gresource>\",\n \"</gresources>\",\n \"\",\n ].join(\"\\n\");\n\n writeFileSync(manifest, xml);\n\n return manifest;\n};\n\nconst runCompiler = (sourceDir: string, manifest: string, outputPath: string): Buffer => {\n runCliTool({\n tool: RESOURCE_COMPILER,\n args: [`--sourcedir=${sourceDir}`, `--target=${outputPath}`, manifest],\n });\n\n return readFileSync(outputPath);\n};\n\nconst ensureStagingDir = (state: PluginState): void => {\n state.devBundlePath = join(state.stagingDir.retain(), BUNDLE_FILENAME);\n};\n\nconst releaseStagingDir = (state: PluginState): void => {\n state.stagingDir.release();\n state.devBundlePath = \"\";\n state.compiledSignature = \"\";\n};\n\nconst entriesSignature = (state: PluginState): string =>\n sortStrings([...state.entries].map(([resourcePath, entry]) => `${resourcePath}\\0${entry.sourcePath}`)).join(\"\\0\");\n\nconst compileDevBundle = (state: PluginState): void => {\n ensureStagingDir(state);\n\n if (state.entries.size === 0) {\n rmSync(state.devBundlePath, { force: true });\n state.compiledSignature = \"\";\n\n return;\n }\n\n compileBundle(state, state.devBundlePath);\n state.compiledSignature = entriesSignature(state);\n};\n\nconst isRefreshHook = (value: unknown): value is () => void => typeof value === \"function\";\n\nconst refreshRegisteredDevBundle = (state: PluginState): void => {\n const server = state.server;\n\n if (!server) {\n return;\n }\n\n const refresh: unknown = server.moduleGraph.getModuleById(VIRTUAL_INIT)?.ssrModule?.[REFRESH_EXPORT];\n\n if (isRefreshHook(refresh)) {\n refresh();\n }\n};\n\nconst registerDevAsset = (state: PluginState): void => {\n if (entriesSignature(state) !== state.compiledSignature) {\n compileDevBundle(state);\n }\n};\n\nconst importerKey = (importer: string): string => stripQuery(importer);\n\nconst trackBundledSpecifier = (state: PluginState, importer: string | undefined, source: string): void => {\n if (importer === undefined) {\n return;\n }\n\n const key = importerKey(importer);\n const specifiers = state.bundledSpecifiers.get(key) ?? new Set<string>();\n specifiers.add(source);\n state.bundledSpecifiers.set(key, specifiers);\n};\n\nconst createResourceEntry = (sourcePath: string, resourcePath: string): ResourceEntry => ({\n sourcePath,\n stagedRelPath: resourcePath.replace(/^\\/+/, \"\"),\n resourcePath,\n});\n\nconst activateEntry = (state: PluginState, entry: ResourceEntry): ResourceEntry => {\n const existing = state.entries.get(entry.resourcePath);\n\n if (existing !== undefined) {\n if (existing.sourcePath !== entry.sourcePath) {\n throw new Error(\n `${existing.sourcePath} and ${entry.sourcePath} both resolve to the GResource path ` +\n entry.resourcePath,\n );\n }\n\n return existing;\n }\n\n state.entries.set(entry.resourcePath, entry);\n state.sourcePaths.add(entry.sourcePath);\n\n return entry;\n};\n\nconst isDeclarativeImporter = (state: PluginState, importer: string | undefined): importer is string =>\n !state.isBuild && importer !== undefined;\n\nconst setSourceAvailability = (state: PluginState, file: string, isAvailable: boolean): void => {\n if (isAvailable) {\n state.missingSourcePaths.delete(file);\n\n return;\n }\n\n state.missingSourcePaths.add(file);\n};\n\nconst isDeclaredSourceAvailable = (state: PluginState, sourcePath: string): boolean => {\n const isAvailable = existsSync(sourcePath);\n setSourceAvailability(state, sourcePath, isAvailable);\n\n return isAvailable;\n};\n\nconst declareEntry = (state: PluginState, importer: string, entry: ResourceEntry): ResourceEntry => {\n const key = importerKey(importer);\n const declarations = state.declaredEntries.get(key) ?? new Map<string, ResourceEntry>();\n const existing = declarations.get(entry.resourcePath);\n\n if (existing !== undefined && existing.sourcePath !== entry.sourcePath) {\n throw new Error(\n `${existing.sourcePath} and ${entry.sourcePath} both resolve to the GResource path ` +\n entry.resourcePath,\n );\n }\n\n const declared = existing ?? entry;\n declarations.set(entry.resourcePath, declared);\n state.declaredEntries.set(key, declarations);\n state.server?.watcher.add(dirname(declared.sourcePath));\n\n return declared;\n};\n\nconst declareIcon = (\n state: PluginState,\n importer: string,\n iconIdentity: string,\n entry: ResourceEntry,\n): void => {\n const key = importerKey(importer);\n const declarations = state.declaredIcons.get(key) ?? new Map<string, ResourceEntry>();\n const existing = declarations.get(iconIdentity);\n\n if (existing !== undefined && existing.sourcePath !== entry.sourcePath) {\n throw new Error(\n `${existing.sourcePath} and ${entry.sourcePath} both claim the themed icon ${iconIdentity}`,\n );\n }\n\n declarations.set(iconIdentity, existing ?? entry);\n state.declaredIcons.set(key, declarations);\n};\n\nconst assertIconIdentityAvailable = (\n state: PluginState,\n iconIdentity: string,\n sourcePath: string,\n): void => {\n const existing = state.iconOwners.get(iconIdentity);\n\n if (existing !== undefined && existing.sourcePath !== sourcePath) {\n throw new Error(\n `${existing.sourcePath} and ${sourcePath} both claim the themed icon ${iconIdentity}`,\n );\n }\n};\n\nconst declareResolvedIcon = (\n state: PluginState,\n importer: string | undefined,\n iconIdentity: string,\n entry: ResourceEntry,\n): void => {\n if (isDeclarativeImporter(state, importer)) {\n declareIcon(state, importer, iconIdentity, entry);\n }\n};\n\nconst registerEntry = (\n state: PluginState,\n absPath: string,\n rel: string,\n importer?: string,\n): ResourceEntry => {\n const resourcePath = validateResourcePath(rel.startsWith(\"/\") ? rel : `${state.prefix}/${rel}`);\n let entry = createResourceEntry(absPath, resourcePath);\n\n if (isDeclarativeImporter(state, importer)) {\n entry = declareEntry(state, importer, entry);\n\n if (!isImporterActive(state, importer) || !isDeclaredSourceAvailable(state, absPath)) {\n return entry;\n }\n }\n\n return activateEntry(state, entry);\n};\n\nconst registerIconEntry = (\n state: PluginState,\n sourcePath: string,\n derived: DerivedIconEntry,\n importer: string | undefined,\n): ResourceEntry => {\n const shouldActivate = !isDeclarativeImporter(state, importer) ||\n (isImporterActive(state, importer) && isDeclaredSourceAvailable(state, sourcePath));\n\n if (shouldActivate) {\n assertIconIdentityAvailable(state, derived.iconIdentity, sourcePath);\n }\n\n const entry = registerEntry(state, sourcePath, derived.resourcePath, importer);\n declareResolvedIcon(state, importer, derived.iconIdentity, entry);\n\n if (shouldActivate) {\n state.iconOwners.set(derived.iconIdentity, entry);\n }\n\n return entry;\n};\n\nconst isTrackedSource = (state: PluginState, file: string): boolean => state.sourcePaths.has(file);\n\nconst hasSourceEntry = (entries: Map<string, ResourceEntry>, file: string): boolean => {\n for (const entry of entries.values()) {\n if (entry.sourcePath === file) {\n return true;\n }\n }\n\n return false;\n};\n\nconst hasDeclaredSource = (\n declarations: Map<string, Map<string, ResourceEntry>>,\n file: string,\n): boolean => {\n for (const entries of declarations.values()) {\n if (hasSourceEntry(entries, file)) {\n return true;\n }\n }\n\n return false;\n};\n\nconst isDeclaredSource = (state: PluginState, file: string): boolean =>\n hasDeclaredSource(state.declaredEntries, file) || hasDeclaredSource(state.declaredIcons, file);\n\nconst virtualAssetId = (entry: ResourceEntry): string =>\n toVirtualId(entry.sourcePath) + REL_SEPARATOR + entry.resourcePath;\n\nconst virtualIconId = ({ entry, iconName }: ResolvedIconEntry): string =>\n virtualAssetId(entry) + ICON_NAME_SEPARATOR + iconName;\n\nconst resolveAssetSource = async (\n ctx: ResolveContext,\n request: { assetSource: string; importer: string | undefined; options: Record<string, unknown> | undefined },\n): Promise<string | undefined> => {\n const resolved = await ctx.resolve(request.assetSource, request.importer, {\n ...request.options,\n skipSelf: true,\n });\n\n if (!resolved || resolved.external) {\n return undefined;\n }\n\n const sourcePath = stripQuery(resolved.id);\n\n if (!isAbsolute(sourcePath)) {\n throw new Error(`${JSON.stringify(request.assetSource)} did not resolve to a file-backed asset`);\n }\n\n return sourcePath;\n};\n\nconst resolveAssetEntry = async (\n ctx: ResolveContext,\n state: PluginState,\n request: AssetResolveRequest,\n): Promise<ResourceEntry | undefined> => {\n const sourcePath = await resolveAssetSource(ctx, request);\n\n if (sourcePath === undefined) {\n return undefined;\n }\n\n return registerEntry(\n state,\n sourcePath,\n request.resourcePath === null\n ? derivedResourcePath(state, sourcePath)\n : validateResourcePath(request.resourcePath),\n request.importer,\n );\n};\n\nconst resolveIconEntry = async (\n ctx: ResolveContext,\n state: PluginState,\n request: IconResolveRequest,\n): Promise<ResolvedIconEntry | undefined> => {\n const sourcePath = await resolveAssetSource(ctx, request);\n\n if (sourcePath === undefined) {\n return undefined;\n }\n\n const derived = derivedIconEntry(state, sourcePath, request.iconName);\n\n return {\n entry: registerIconEntry(state, sourcePath, derived, request.importer),\n iconName: derived.iconName,\n };\n};\n\nconst loadInitModule = (state: PluginState): string => {\n if (state.isBuild) {\n if (state.bundleReferenceId === null) {\n throw new Error(\"Cannot render the GResource loader before its bundle has been emitted\");\n }\n\n return renderInitModule({ isBuild: true, bundleReferenceId: state.bundleReferenceId });\n }\n\n ensureStagingDir(state);\n\n return renderInitModule({ isBuild: false, devBundlePath: state.devBundlePath });\n};\n\nconst virtualAssetMetadata = (virtualId: string): { absPath: string; iconName: string | null; rel: string } => {\n const rest = fromVirtualId(virtualId);\n const separatorIndex = rest.indexOf(REL_SEPARATOR);\n const relAndMetadata = rest.slice(separatorIndex + REL_SEPARATOR.length);\n const iconSeparatorIndex = relAndMetadata.indexOf(ICON_NAME_SEPARATOR);\n\n return {\n absPath: rest.slice(0, separatorIndex),\n iconName: iconSeparatorIndex === -1\n ? null\n : relAndMetadata.slice(iconSeparatorIndex + ICON_NAME_SEPARATOR.length),\n rel: iconSeparatorIndex === -1 ? relAndMetadata : relAndMetadata.slice(0, iconSeparatorIndex),\n };\n};\n\nconst resourcePathExport = (entry: ResourceEntry, iconName: string | null): string[] =>\n iconName === null ? [`export const ${RESOURCE_PATH_EXPORT} = ${JSON.stringify(entry.resourcePath)};`] : [];\n\nconst assetModuleImports = (iconName: string | null): string[] => {\n const initBindings = iconName === null\n ? \"ensureRegistered\"\n : `ensureRegistered, ${REGISTER_REFRESH_EXPORT}`;\n\n return [\n `import { ${initBindings} } from ${JSON.stringify(VIRTUAL_INIT)};`,\n ...(iconName === null\n ? []\n : [\n \"import { Display } from \\\"@gtkx/gi/gdk\\\";\",\n \"import { IconTheme } from \\\"@gtkx/gi/gtk\\\";\",\n ]),\n ];\n};\n\nconst iconThemeRegistration = (state: PluginState, iconName: string | null): string[] => {\n if (iconName === null) {\n return [];\n }\n\n const resourceIconPath = `${state.prefix}/icons`;\n\n return [\n `const resourceIconPath = ${JSON.stringify(resourceIconPath)};`,\n \"function refreshIconTheme() {\",\n \" const display = Display.getDefault();\",\n \" if (!display) return;\",\n \" const theme = IconTheme.getForDisplay(display);\",\n \" const paths = theme.getResourcePath() ?? [];\",\n \" theme.setResourcePath(paths.includes(resourceIconPath) ? [...paths] : [...paths, resourceIconPath]);\",\n \"}\",\n `${REGISTER_REFRESH_EXPORT}(resourceIconPath, refreshIconTheme);`,\n ];\n};\n\nconst loadedResourceEntry = (\n state: PluginState,\n sourcePath: string,\n resourcePath: string,\n): { entry: ResourceEntry; isRegistered: boolean } => {\n const registered = state.entries.get(resourcePath);\n\n if (registered === undefined) {\n return { entry: createResourceEntry(sourcePath, resourcePath), isRegistered: false };\n }\n\n if (registered.sourcePath !== sourcePath) {\n throw new Error(\n `${registered.sourcePath} and ${sourcePath} both resolve to the GResource path ${resourcePath}`,\n );\n }\n\n return { entry: registered, isRegistered: true };\n};\n\nconst compileLoadedDevAsset = (state: PluginState, isRegistered: boolean): void => {\n if (isRegistered && !state.isBuild) {\n registerDevAsset(state);\n }\n};\n\nconst loadAssetModule = (state: PluginState, virtualId: string): string => {\n const { absPath, iconName, rel } = virtualAssetMetadata(virtualId);\n const resourcePath = validateResourcePath(rel);\n const { entry, isRegistered } = loadedResourceEntry(state, absPath, resourcePath);\n const defaultValue = iconName ?? entry.resourcePath;\n compileLoadedDevAsset(state, isRegistered);\n\n return [\n ...assetModuleImports(iconName),\n \"ensureRegistered();\",\n ...iconThemeRegistration(state, iconName),\n `export default ${JSON.stringify(defaultValue)};`,\n ...resourcePathExport(entry, iconName),\n ].join(\"\\n\");\n};\n\nconst finalizeBuildBundle = (\n ctx: Pick<Rolldown.PluginContext, \"getFileName\">,\n bundle: Rolldown.OutputBundle,\n state: PluginState,\n): void => {\n if (!state.isBuild || state.bundleReferenceId === null) {\n return;\n }\n\n const fileName = ctx.getFileName(state.bundleReferenceId);\n const output = bundle[fileName];\n\n if (output?.type !== \"asset\") {\n throw new Error(`Cannot find the emitted ${BUNDLE_FILENAME} asset`);\n }\n\n if (state.entries.size === 0) {\n Reflect.deleteProperty(bundle, fileName);\n\n return;\n }\n\n const compiled = withStagingDir(\"resources-out\", (outDir) => compileBundle(state, join(outDir, BUNDLE_FILENAME)));\n output.source = compiled;\n info(`Compiled ${String(state.entries.size)} resource(s) into ${BUNDLE_FILENAME}`);\n};\n\nconst refreshDevRegistration = (state: PluginState): void => {\n compileDevBundle(state);\n\n try {\n refreshRegisteredDevBundle(state);\n } catch (error_) {\n error(\"Failed to refresh GResource bundle:\", error_);\n }\n};\n\nconst isSameSpecifiers = (left: Set<string> | undefined, right: Set<string>): boolean =>\n left === undefined\n ? right.size === 0\n : left.size === right.size && [...right].every((source) => left.has(source));\n\nconst bundledSpecifiersIn = (imports: SourceImport[]): Set<string> =>\n new Set(\n imports\n .filter((entry) =>\n parseResourceSpecifier(entry.source) !== null || parseIconSpecifier(entry.source) !== null)\n .map((entry) => entry.source),\n );\n\nconst isSourceModule = (file: string): boolean => sourceLanguage(file) !== undefined;\n\nconst isBundledSource = (source: string): boolean =>\n parseResourceSpecifier(source) !== null || parseIconSpecifier(source) !== null;\n\nconst validateUnbundledSource = (source: string): void => {\n if (isLegacyDataSpecifier(source)) {\n throw new Error(`${JSON.stringify(source)} uses the legacy #data asset form`);\n }\n\n rejectInvalidSpecifier(source);\n};\n\nconst resolvedModuleDependency = async (\n ctx: ResolveContext,\n source: string,\n importer: string,\n): Promise<string | null> => {\n if (isBundledSource(source)) {\n return null;\n }\n\n validateUnbundledSource(source);\n const resolved = await ctx.resolve(source, importer, { skipSelf: true });\n\n if (resolved === null) {\n throw new Error(`${JSON.stringify(source)} could not be resolved from ${importer}`);\n }\n\n return resolved.external ? null : importerKey(resolved.id);\n};\n\nconst resolvedModuleDependencies = async (\n ctx: ResolveContext,\n imports: SourceImport[],\n importer: string,\n): Promise<Set<string>> => {\n const dependencies: Set<string> = new Set();\n\n for (const entry of imports) {\n const dependency = await resolvedModuleDependency(ctx, entry.source, importer);\n\n if (dependency !== null) {\n dependencies.add(dependency);\n }\n }\n\n return dependencies;\n};\n\nconst importerReconciliation = async (\n ctx: ResolveContext,\n state: PluginState,\n id: string,\n): Promise<ImporterReconciliation | null> => {\n const file = stripQuery(id);\n const key = importerKey(file);\n\n if (state.isBuild || !isSourceModule(file)) {\n return null;\n }\n\n const imports = parseRuntimeImportsIn(file);\n\n if (imports === null) {\n return null;\n }\n\n return {\n currentBundled: bundledSpecifiersIn(imports),\n currentDependencies: await resolvedModuleDependencies(ctx, imports, file),\n file,\n imports,\n key,\n previousBundled: state.bundledSpecifiers.get(key),\n previousDependencies: state.moduleDependencies.get(key),\n };\n};\n\nconst moduleNodeKey = (module: ModuleNode): string => importerKey(module.id ?? module.file ?? module.url);\n\nconst moduleNodeFor = (state: PluginState, id: string): ModuleNode | undefined => {\n const server = state.server;\n\n if (server === null) {\n return undefined;\n }\n\n return server.moduleGraph.getModuleById(id) ?? server.moduleGraph.getModuleById(importerKey(id));\n};\n\nconst restoreDependencies = (pruned: Set<string>, current: Set<string>): void => {\n for (const dependency of current) {\n pruned.delete(dependency);\n }\n};\n\nconst pruneRemovedDependencies = (\n pruned: Set<string>,\n previous: Set<string> | undefined,\n current: Set<string>,\n): void => {\n if (previous === undefined) {\n return;\n }\n\n for (const dependency of previous) {\n if (!current.has(dependency)) {\n pruned.add(dependency);\n }\n }\n};\n\nconst storePrunedDependencies = (state: PluginState, key: string, pruned: Set<string>): void => {\n if (pruned.size === 0) {\n state.prunedDependencies.delete(key);\n\n return;\n }\n\n state.prunedDependencies.set(key, pruned);\n};\n\nconst updatePrunedDependencies = (\n state: PluginState,\n key: string,\n previous: Set<string> | undefined,\n current: Set<string>,\n): void => {\n const pruned = state.prunedDependencies.get(key) ?? new Set<string>();\n restoreDependencies(pruned, current);\n pruneRemovedDependencies(pruned, previous, current);\n storePrunedDependencies(state, key, pruned);\n};\n\nconst isPrunedDependency = (state: PluginState, importer: ModuleNode, imported: ModuleNode): boolean =>\n state.prunedDependencies.get(moduleNodeKey(importer))?.has(moduleNodeKey(imported)) === true;\n\nconst fallbackRootModules = (state: PluginState): string[] => {\n const roots: string[] = [];\n\n for (const key of state.moduleDependencies.keys()) {\n if (moduleNodeFor(state, key)?.importers.size === 0) {\n roots.push(key);\n }\n }\n\n return roots;\n};\n\nconst enqueueCurrentDependencies = (state: PluginState, key: string, pending: string[]): void => {\n const dependencies = state.moduleDependencies.get(key) ?? [];\n\n for (const dependency of dependencies) {\n pending.push(dependency);\n }\n};\n\nconst enqueueGraphDependencies = (state: PluginState, key: string, pending: string[]): void => {\n const module = moduleNodeFor(state, key);\n\n if (module === undefined) {\n return;\n }\n\n for (const imported of module.importedModules) {\n if (!isPrunedDependency(state, module, imported)) {\n pending.push(moduleNodeKey(imported));\n }\n }\n};\n\nconst visitActiveImporter = (\n state: PluginState,\n active: Set<string>,\n pending: string[],\n key: string,\n): void => {\n if (active.has(key)) {\n return;\n }\n\n active.add(key);\n enqueueCurrentDependencies(state, key, pending);\n enqueueGraphDependencies(state, key, pending);\n};\n\nconst activeImporterKeys = (state: PluginState): Set<string> => {\n const active: Set<string> = new Set();\n const roots = state.entryModule === null ? fallbackRootModules(state) : [state.entryModule];\n const pending = [...roots];\n\n while (pending.length > 0) {\n const key = pending.pop();\n\n if (key === undefined || active.has(key)) {\n continue;\n }\n\n visitActiveImporter(state, active, pending, key);\n }\n\n return active;\n};\n\nconst isImporterActive = (state: PluginState, importer: string): boolean =>\n activeImporterKeys(state).has(importerKey(importer));\n\nconst activateDeclaredIcon = (\n state: PluginState,\n iconIdentity: string,\n entry: ResourceEntry,\n): void => {\n const existing = state.iconOwners.get(iconIdentity);\n\n if (existing !== undefined && existing.sourcePath !== entry.sourcePath) {\n throw new Error(\n `${existing.sourcePath} and ${entry.sourcePath} both claim the themed icon ${iconIdentity}`,\n );\n }\n\n state.iconOwners.set(iconIdentity, activateEntry(state, entry));\n};\n\nconst activateDeclaredEntries = (state: PluginState, importer: string): void => {\n const entries = state.declaredEntries.get(importer)?.values() ?? [];\n\n for (const entry of entries) {\n if (isDeclaredSourceAvailable(state, entry.sourcePath)) {\n activateEntry(state, entry);\n }\n }\n};\n\nconst activateDeclaredIcons = (state: PluginState, importer: string): void => {\n const icons = state.declaredIcons.get(importer) ?? [];\n\n for (const [iconIdentity, entry] of icons) {\n if (isDeclaredSourceAvailable(state, entry.sourcePath)) {\n activateDeclaredIcon(state, iconIdentity, entry);\n }\n }\n};\n\nconst activateDeclaredClaims = (state: PluginState, active: Set<string>): void => {\n for (const importer of sortStrings(active)) {\n activateDeclaredEntries(state, importer);\n activateDeclaredIcons(state, importer);\n }\n};\n\nconst rebuildActiveClaims = (state: PluginState): void => {\n const previous = {\n entries: state.entries,\n iconOwners: state.iconOwners,\n sourcePaths: state.sourcePaths,\n };\n\n state.entries = new Map();\n state.iconOwners = new Map();\n state.sourcePaths = new Set();\n\n try {\n activateDeclaredClaims(state, activeImporterKeys(state));\n } catch (error_) {\n state.entries = previous.entries;\n state.iconOwners = previous.iconOwners;\n state.sourcePaths = previous.sourcePaths;\n throw error_;\n }\n};\n\nconst forgetImporterDeclarations = (state: PluginState, importer: string): void => {\n state.declaredEntries.delete(importer);\n state.declaredIcons.delete(importer);\n};\n\nconst cloneMapValues = <Value>(source: Map<string, Value>, clone: (value: Value) => Value): Map<string, Value> =>\n new Map([...source].map(([key, value]) => [key, clone(value)]));\n\nconst reconciliationCandidate = (state: PluginState): PluginState => ({\n ...state,\n bundledSpecifiers: cloneMapValues(state.bundledSpecifiers, (values) => new Set(values)),\n moduleDependencies: cloneMapValues(state.moduleDependencies, (values) => new Set(values)),\n prunedDependencies: cloneMapValues(state.prunedDependencies, (values) => new Set(values)),\n declaredEntries: cloneMapValues(state.declaredEntries, (entries) => new Map(entries)),\n declaredIcons: cloneMapValues(state.declaredIcons, (entries) => new Map(entries)),\n missingSourcePaths: new Set(state.missingSourcePaths),\n});\n\nconst storeBundledSpecifiers = (state: PluginState, importer: string, specifiers: Set<string>): void => {\n if (specifiers.size === 0) {\n state.bundledSpecifiers.delete(importer);\n\n return;\n }\n\n state.bundledSpecifiers.set(importer, specifiers);\n};\n\nconst applyImporterGraph = (state: PluginState, reconciliation: ImporterReconciliation): void => {\n updatePrunedDependencies(\n state,\n reconciliation.key,\n reconciliation.previousDependencies,\n reconciliation.currentDependencies,\n );\n\n state.moduleDependencies.set(reconciliation.key, reconciliation.currentDependencies);\n storeBundledSpecifiers(state, reconciliation.key, reconciliation.currentBundled);\n};\n\nconst declareReconciledResource = async (\n ctx: ResolveContext,\n state: PluginState,\n importer: string,\n source: string,\n): Promise<void> => {\n const resourceSpecifier = parseResourceSpecifier(source);\n\n if (resourceSpecifier === null) {\n return;\n }\n\n const entry = await resolveAssetEntry(ctx, state, {\n assetSource: resourceSpecifier.assetSource,\n importer,\n resourcePath: resourceSpecifier.resourcePath,\n options: undefined,\n });\n\n if (entry === undefined || state.missingSourcePaths.has(entry.sourcePath)) {\n throw new Error(`${JSON.stringify(source)} did not resolve to a bundled resource`);\n }\n};\n\nconst declareReconciledIcon = async (\n ctx: ResolveContext,\n state: PluginState,\n importer: string,\n source: string,\n): Promise<void> => {\n const iconSpecifier = parseIconSpecifier(source);\n\n if (iconSpecifier === null) {\n return;\n }\n\n const entry = await resolveIconEntry(ctx, state, {\n assetSource: iconSpecifier.assetSource,\n iconName: iconSpecifier.iconName,\n importer,\n options: undefined,\n });\n\n if (entry === undefined || state.missingSourcePaths.has(entry.entry.sourcePath)) {\n throw new Error(`${JSON.stringify(source)} did not resolve to a bundled icon`);\n }\n};\n\nconst declareReconciledSource = async (\n ctx: ResolveContext,\n state: PluginState,\n importer: string,\n source: string,\n): Promise<void> => {\n await declareReconciledResource(ctx, state, importer, source);\n await declareReconciledIcon(ctx, state, importer, source);\n};\n\nconst declareReconciledImports = async (\n ctx: ResolveContext,\n state: PluginState,\n reconciliation: ImporterReconciliation,\n): Promise<void> => {\n for (const entry of reconciliation.imports) {\n if (isBundledSource(entry.source)) {\n await declareReconciledSource(ctx, state, reconciliation.file, entry.source);\n }\n }\n};\n\nconst prepareReconciliation = async (\n ctx: ResolveContext,\n state: PluginState,\n reconciliation: ImporterReconciliation,\n): Promise<PluginState> => {\n const candidate = reconciliationCandidate(state);\n\n const isBundledChanged = !isSameSpecifiers(\n reconciliation.previousBundled,\n reconciliation.currentBundled,\n );\n\n if (isBundledChanged) {\n forgetImporterDeclarations(candidate, reconciliation.key);\n }\n\n applyImporterGraph(candidate, reconciliation);\n rebuildActiveClaims(candidate);\n\n if (isBundledChanged) {\n await declareReconciledImports(ctx, candidate, reconciliation);\n }\n\n return candidate;\n};\n\nconst commitReconciliation = (state: PluginState, candidate: PluginState): void => {\n state.entries = candidate.entries;\n state.bundledSpecifiers = candidate.bundledSpecifiers;\n state.moduleDependencies = candidate.moduleDependencies;\n state.prunedDependencies = candidate.prunedDependencies;\n state.declaredEntries = candidate.declaredEntries;\n state.declaredIcons = candidate.declaredIcons;\n state.missingSourcePaths = candidate.missingSourcePaths;\n state.sourcePaths = candidate.sourcePaths;\n state.iconOwners = candidate.iconOwners;\n};\n\nconst reconcileImporter = async (ctx: ResolveContext, state: PluginState, id: string): Promise<void> => {\n const reconciliation = await importerReconciliation(ctx, state, id);\n\n if (reconciliation === null) {\n return;\n }\n\n const previousSignature = entriesSignature(state);\n const candidate = await prepareReconciliation(ctx, state, reconciliation);\n commitReconciliation(state, candidate);\n\n if (entriesSignature(state) !== previousSignature) {\n refreshDevRegistration(state);\n }\n};\n\nconst resolveResourceConfig = async (state: PluginState, config: UserConfig, loadConfig: ConfigLoader) => {\n const loaded = await loadConfig.load(config.root ?? process.cwd());\n state.prefix = resourceBasePath(loaded.config.applicationId);\n state.root = loaded.root;\n\n return {\n assetsInclude: [ASSET_RE],\n };\n};\n\nconst refreshTrackedSource = (state: PluginState, file: string): void => {\n if (!isTrackedSource(state, file)) {\n return;\n }\n\n try {\n refreshDevRegistration(state);\n } catch (error_) {\n error(\"GResource refresh failed:\", error_);\n }\n};\n\nconst rebuildForSourceAvailability = (state: PluginState, previousSignature: string): void => {\n try {\n rebuildActiveClaims(state);\n\n if (entriesSignature(state) !== previousSignature) {\n refreshDevRegistration(state);\n }\n } catch (error_) {\n error(\"GResource source update failed:\", error_);\n }\n};\n\nconst updateTrackedSourceAvailability = (state: PluginState, file: string, isAvailable: boolean): void => {\n if (!isTrackedSource(state, file) && !state.missingSourcePaths.has(file) && !isDeclaredSource(state, file)) {\n return;\n }\n\n const previousSignature = entriesSignature(state);\n setSourceAvailability(state, file, isAvailable);\n rebuildForSourceAvailability(state, previousSignature);\n};\n\nconst attachResourceWatcher = (state: PluginState, server: ViteDevServer): void => {\n state.server = server;\n\n const onChange = (file: string): void => {\n refreshTrackedSource(state, file);\n };\n\n const onAdd = (file: string): void => {\n updateTrackedSourceAvailability(state, file, true);\n };\n\n const onUnlink = (file: string): void => {\n updateTrackedSourceAvailability(state, file, false);\n };\n\n const onClose = (): void => {\n releaseStagingDir(state);\n };\n\n server.httpServer?.once(\"close\", onClose);\n server.watcher.once(\"close\", onClose);\n server.watcher.on(\"change\", onChange);\n server.watcher.on(\"add\", onAdd);\n server.watcher.on(\"unlink\", onUnlink);\n};\n\nconst applyResolvedConfig = (state: PluginState, config: ResolvedConfig): void => {\n state.isBuild = config.command === \"build\";\n state.root = config.root;\n};\n\nconst loadResourceModule = (state: PluginState, id: string): string | undefined => {\n if (id === VIRTUAL_INIT) {\n return loadInitModule(state);\n }\n\n if (!isVirtual(id)) {\n return undefined;\n }\n\n return loadAssetModule(state, id);\n};\n\nconst isLegacyDataSpecifier = (source: string): boolean =>\n source.startsWith(DATA_PREFIX) && ASSET_RE.test(stripQuery(source));\n\nconst rejectInvalidSpecifier = (source: string): void => {\n if (BUNDLED_QUERY_MENTION_RE.test(source)) {\n throw new Error(\n `${JSON.stringify(source)} is not a valid bundled asset import; use ?resource, ` +\n \"?resource=/absolute/path, ?icon, or ?icon=name\",\n );\n }\n\n if (isBareRelativeAsset(source)) {\n throw new Error(\n `${JSON.stringify(source)} must choose ?resource for a GResource, ?icon for a themed icon, ` +\n \"?font for a bundled font, or ?url for an emitted file\",\n );\n }\n};\n\nconst resolveExplicitResourceId = async (\n ctx: ResolveContext,\n state: PluginState,\n request: ResolveRequest,\n): Promise<string | undefined> => {\n const specifier = parseResourceSpecifier(request.source);\n\n if (specifier === null) {\n return undefined;\n }\n\n const entry = await resolveAssetEntry(ctx, state, {\n assetSource: specifier.assetSource,\n importer: request.importer,\n resourcePath: specifier.resourcePath,\n options: request.options,\n });\n\n return entry === undefined ? undefined : virtualAssetId(entry);\n};\n\nconst resolveIconResourceId = async (\n ctx: ResolveContext,\n state: PluginState,\n request: ResolveRequest,\n): Promise<RetainedIconModuleId | undefined> => {\n const specifier = parseIconSpecifier(request.source);\n\n if (specifier === null) {\n return undefined;\n }\n\n const resolved = await resolveIconEntry(ctx, state, {\n assetSource: specifier.assetSource,\n iconName: specifier.iconName,\n importer: request.importer,\n options: request.options,\n });\n\n return resolved === undefined\n ? undefined\n : { id: virtualIconId(resolved), moduleSideEffects: true };\n};\n\nconst resolveBundledResourceId = async (\n ctx: ResolveContext,\n state: PluginState,\n request: ResolveRequest,\n): Promise<ResourceModuleId | undefined> => {\n if (isLegacyDataSpecifier(request.source)) {\n throw new Error(\n `${JSON.stringify(request.source)} uses the legacy #data asset form; import it relatively with ` +\n \"?resource or ?url\",\n );\n }\n\n if (parseResourceSpecifier(request.source) !== null) {\n const resolved = await resolveExplicitResourceId(ctx, state, request);\n trackBundledSpecifier(state, request.importer, request.source);\n\n return resolved;\n }\n\n if (parseIconSpecifier(request.source) !== null) {\n const resolved = await resolveIconResourceId(ctx, state, request);\n trackBundledSpecifier(state, request.importer, request.source);\n\n return resolved;\n }\n\n rejectInvalidSpecifier(request.source);\n\n return undefined;\n};\n\nconst resolveResourceId = (\n ctx: ResolveContext,\n state: PluginState,\n request: ResolveRequest,\n): Promise<ResourceModuleId | undefined> => {\n if (request.source === VIRTUAL_INIT) {\n return Promise.resolve(VIRTUAL_INIT);\n }\n\n return resolveBundledResourceId(ctx, state, request);\n};\n\nconst createResourcesPlugin = (state: PluginState, loadConfig: ConfigLoader): Plugin => ({\n name: \"gtkx:resources\",\n enforce: \"pre\",\n perEnvironmentStartEndDuringDev: true,\n\n config: (config: UserConfig) => resolveResourceConfig(state, config, loadConfig),\n\n configResolved: (config: ResolvedConfig) => {\n applyResolvedConfig(state, config);\n },\n\n configureServer: (server) => {\n attachResourceWatcher(state, server);\n },\n\n buildStart() {\n if (state.isBuild && state.bundleReferenceId === null) {\n state.bundleReferenceId = this.emitFile({\n type: \"asset\",\n fileName: BUNDLE_FILENAME,\n source: \"\",\n });\n }\n },\n\n resolveId(source, importer, options) {\n return resolveResourceId(this, state, { source, importer, options });\n },\n\n load(id) {\n return loadResourceModule(state, id);\n },\n\n async transform(code, id) {\n await withExclusiveLoad(state, () => reconcileImporter(this, state, id));\n\n return retainSideEffectIconImport(code, id);\n },\n\n generateBundle(_options, bundle) {\n finalizeBuildBundle(this, bundle, state);\n },\n\n closeBundle() {\n releaseStagingDir(state);\n },\n});\n\nfunction gtkxResources(loadConfig: ConfigLoader = createConfigLoader(), entryPath?: string): Plugin {\n const state: PluginState = {\n prefix: \"\",\n root: \"\",\n isBuild: false,\n entries: new Map(),\n bundledSpecifiers: new Map(),\n moduleDependencies: new Map(),\n prunedDependencies: new Map(),\n declaredEntries: new Map(),\n declaredIcons: new Map(),\n entryModule: entryPath === undefined ? null : importerKey(entryPath),\n sourcePaths: new Set(),\n missingSourcePaths: new Set(),\n stagingDir: createRetainedStagingDir(DEV_STAGING_PREFIX),\n devBundlePath: \"\",\n server: null,\n compiledSignature: \"\",\n bundleReferenceId: null,\n iconOwners: new Map(),\n };\n\n return createResourcesPlugin(state, loadConfig);\n}\n\nexport { gtkxResources };\n"]}
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/vite-plugins/resources.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ConfigLoader } from \"@gtkx/config\";\nimport type { ModuleNode, Plugin, ResolvedConfig, Rolldown, UserConfig, ViteDevServer } from \"vite\";\nimport { createConfigLoader, resourceBasePath, viteProjectRoot } from \"@gtkx/config/internal\";\nimport { error, info, isPathInside, isRecord, sortStrings, toPosixPath } from \"@gtkx/utils\";\nimport { copyFileSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from \"node:fs\";\nimport { basename, dirname, extname, isAbsolute, join, posix, relative, sep } from \"node:path\";\nimport { parseSync } from \"vite\";\nimport { withExclusiveLoad } from \"../internal/module-loads.js\";\nimport { runCliTool } from \"../internal/run-cli-tool.js\";\nimport { parseRuntimeImportsIn, type SourceImport, sourceLanguage } from \"../internal/source-imports.js\";\nimport { createRetainedStagingDir, type RetainedStagingDir, withStagingDir } from \"../internal/staging-dir.js\";\nimport { ASSET_RE } from \"./asset-extensions.js\";\nimport {\n isBareRelativeAsset,\n parseIconSpecifier,\n parseResourceSpecifier,\n} from \"./asset-specifier.js\";\nimport { renderInitModule } from \"./resource-init-module.js\";\nimport {\n BUNDLE_FILENAME,\n escapeXml,\n fromVirtualId,\n ICON_NAME_SEPARATOR,\n isVirtual,\n REFRESH_EXPORT,\n REGISTER_REFRESH_EXPORT,\n REL_SEPARATOR,\n RESOURCE_PATH_EXPORT,\n toVirtualId,\n VIRTUAL_INIT,\n} from \"./resource-shared.js\";\nimport { stripQuery } from \"./strip-query.js\";\n\ntype ResourceEntry = {\n sourcePath: string;\n stagedRelPath: string;\n resourcePath: string;\n};\n\ntype PluginState = {\n prefix: string;\n root: string;\n isBuild: boolean;\n entries: Map<string, ResourceEntry>;\n bundledSpecifiers: Map<string, Set<string>>;\n moduleDependencies: Map<string, Set<string>>;\n prunedDependencies: Map<string, Set<string>>;\n declaredEntries: Map<string, Map<string, ResourceEntry>>;\n declaredIcons: Map<string, Map<string, ResourceEntry>>;\n entryModule: string | null;\n sourcePaths: Set<string>;\n missingSourcePaths: Set<string>;\n stagingDir: RetainedStagingDir;\n devBundlePath: string;\n server: ViteDevServer | null;\n compiledSignature: string;\n bundleReferenceId: string | null;\n iconOwners: Map<string, ResourceEntry>;\n};\n\ntype ResolveContext = {\n resolve: (\n source: string,\n importer?: string,\n options?: Record<string, unknown>,\n ) => Promise<{ id: string; external?: boolean | string } | null>;\n};\n\ntype PackageOwner = {\n dir: string;\n name: string;\n};\n\ntype AssetResolveRequest = {\n assetSource: string;\n importer: string | undefined;\n resourcePath: string | null;\n options: Record<string, unknown> | undefined;\n};\n\ntype IconResolveRequest = {\n assetSource: string;\n iconName: string | null;\n importer: string | undefined;\n options: Record<string, unknown> | undefined;\n};\n\ntype ResolvedIconEntry = {\n entry: ResourceEntry;\n iconName: string;\n};\n\ntype RetainedIconModuleId = {\n id: string;\n moduleSideEffects: true;\n};\n\ntype ResourceModuleId = string | RetainedIconModuleId;\n\ntype ImporterReconciliation = {\n currentBundled: Set<string>;\n currentDependencies: Set<string>;\n file: string;\n imports: SourceImport[];\n key: string;\n previousBundled: Set<string> | undefined;\n previousDependencies: Set<string> | undefined;\n};\n\ntype DerivedIconEntry = {\n iconIdentity: string;\n iconName: string;\n resourcePath: string;\n};\n\ntype ResolveRequest = {\n source: string;\n importer: string | undefined;\n options: Record<string, unknown> | undefined;\n};\n\nconst RESOURCE_COMPILER = \"glib-compile-resources\";\nconst MANIFEST_PREFIX = \"/\";\nconst DEV_STAGING_PREFIX = \"resources-dev\";\nconst MANIFEST_FILENAME = \"package.json\";\nconst DATA_PREFIX = \"#data/\";\nconst BUNDLED_QUERY_MENTION_RE = /[?&](?:icon|resource)(?:[=&]|$)/;\nconst ICON_EXTENSIONS: Set<string> = new Set([\".png\", \".svg\", \".xpm\"]);\n\nconst ICON_CONTEXTS: Set<string> = new Set([\n \"actions\",\n \"animations\",\n \"apps\",\n \"categories\",\n \"devices\",\n \"emblems\",\n \"emotes\",\n \"filesystems\",\n \"intl\",\n \"mimetypes\",\n \"places\",\n \"status\",\n]);\n\nconst STOCK_ICON_CONTEXTS: Set<string> = new Set([\n \"chart\",\n \"code\",\n \"data\",\n \"form\",\n \"image\",\n \"io\",\n \"media\",\n \"navigation\",\n \"net\",\n \"object\",\n \"table\",\n \"text\",\n]);\n\nconst ICON_SIZE_RE = /^([1-9]\\d*)x\\1(?:@[1-9]\\d*)?$/;\nconst RESERVED_ICON_NAMES: Set<string> = new Set([\"\", \".\", \"..\"]);\n\nconst isDependencyFile = (root: string, path: string): boolean =>\n isPathInside(root, path) && relative(root, path).split(sep).includes(\"node_modules\");\n\nconst packageIdentityIn = (dir: string): string | null => {\n try {\n const manifest: unknown = JSON.parse(readFileSync(join(dir, MANIFEST_FILENAME), \"utf8\"));\n\n return isRecord(manifest) && typeof manifest.name === \"string\" ? manifest.name : null;\n } catch {\n return null;\n }\n};\n\nconst packageIn = (dir: string): PackageOwner | null => {\n const name = packageIdentityIn(dir);\n\n if (name !== null) {\n return { dir, name };\n }\n\n const parent = dirname(dir);\n\n return parent === dir ? null : packageIn(parent);\n};\n\nconst packageForFile = (file: string): PackageOwner | null => packageIn(dirname(file));\n\nconst validateResourcePath = (resourcePath: string): string => {\n if (\n resourcePath === \"/\" ||\n !resourcePath.startsWith(\"/\") ||\n resourcePath.endsWith(\"/\") ||\n resourcePath.includes(\"\\0\") ||\n posix.normalize(resourcePath) !== resourcePath\n ) {\n throw new Error(\n `${JSON.stringify(resourcePath)} is not a valid GResource path; use an absolute normalized path`,\n );\n }\n\n return resourcePath;\n};\n\nconst derivedResourcePath = (state: PluginState, sourcePath: string): string => {\n if (isPathInside(state.root, sourcePath) && !isDependencyFile(state.root, sourcePath)) {\n return validateResourcePath(`${state.prefix}/${toPosixPath(relative(state.root, sourcePath))}`);\n }\n\n const owner = packageForFile(sourcePath);\n\n if (owner === null || !isPathInside(owner.dir, sourcePath)) {\n throw new Error(`${sourcePath} is outside the application and does not belong to a named package`);\n }\n\n const packagePath = toPosixPath(relative(owner.dir, sourcePath));\n\n return validateResourcePath(`${state.prefix}/${owner.name}/${packagePath}`);\n};\n\nconst iconExtension = (sourcePath: string): string => {\n const extension = extname(sourcePath).toLowerCase();\n\n if (!ICON_EXTENSIONS.has(extension)) {\n throw new Error(`${sourcePath} is not a supported themed icon; use an SVG, PNG, or XPM file`);\n }\n\n return extension;\n};\n\nconst hasIconNamePathSeparator = (value: string): boolean =>\n value.includes(\"\\0\") || value.includes(\"/\") || value.includes(\"\\\\\");\n\nconst validateIconName = (value: string): string => {\n if (\n RESERVED_ICON_NAMES.has(value) ||\n hasIconNamePathSeparator(value) ||\n ICON_EXTENSIONS.has(extname(value).toLowerCase())\n ) {\n throw new Error(\n `${JSON.stringify(value)} is not a valid icon name; use an extensionless filename without slashes`,\n );\n }\n\n return value;\n};\n\nconst isIconContext = (parts: string[]): boolean => {\n const [first, second] = parts;\n\n if (parts.length === 1) {\n return first !== undefined && ICON_CONTEXTS.has(first);\n }\n\n return parts.length === 2 && first === \"stock\" && second !== undefined && STOCK_ICON_CONTEXTS.has(second);\n};\n\nconst isIconLayout = (parts: string[]): boolean => {\n const [size, ...context] = parts;\n\n if (size === \"symbolic\") {\n return context.length === 1 && context[0] === \"apps\";\n }\n\n return size !== undefined && (size === \"scalable\" || ICON_SIZE_RE.test(size)) && isIconContext(context);\n};\n\nconst iconLayoutInParts = (parts: string[], beforeIndex: number): string | null => {\n const index = parts.lastIndexOf(\"icons\", beforeIndex);\n\n if (index === -1) {\n return null;\n }\n\n const treePath = parts.slice(index + 1, -1);\n const layout = treePath[0] === \"hicolor\" ? treePath.slice(1) : treePath;\n\n return isIconLayout(layout) ? layout.join(\"/\") : iconLayoutInParts(parts, index - 1);\n};\n\nconst iconLayoutFromTree = (sourcePath: string): string | null => {\n const parts = toPosixPath(sourcePath).split(\"/\");\n\n return iconLayoutInParts(parts, parts.length - 2);\n};\n\nconst derivedIconEntry = (\n state: PluginState,\n sourcePath: string,\n requestedName: string | null,\n): DerivedIconEntry => {\n const extension = iconExtension(sourcePath);\n const sourceName = basename(sourcePath, extname(sourcePath));\n const iconName = validateIconName(requestedName ?? sourceName);\n const layout = iconLayoutFromTree(sourcePath);\n\n const iconIdentity = layout === null\n ? `${state.prefix}/icons/${iconName}`\n : `${state.prefix}/icons/${layout}/${iconName}`;\n\n const resourcePath = validateResourcePath(`${iconIdentity}${extension}`);\n\n return { iconIdentity, iconName, resourcePath };\n};\n\nconst hasSideEffectIconImport = (code: string, id: string): boolean => {\n const lang = sourceLanguage(stripQuery(id));\n\n if (lang === undefined || !code.includes(\"?icon\")) {\n return false;\n }\n\n const parsed = parseSync(id, code, { lang });\n\n if (parsed.errors.length > 0) {\n return false;\n }\n\n return parsed.module.staticImports.some(\n (statement) => statement.entries.length === 0 && parseIconSpecifier(statement.moduleRequest.value) !== null,\n );\n};\n\nconst retainSideEffectIconImport = (\n code: string,\n id: string,\n): { code: string; moduleSideEffects: true } | null =>\n hasSideEffectIconImport(code, id)\n ? { code, moduleSideEffects: true }\n : null;\n\nconst compileBundle = (state: PluginState, outputPath: string): Buffer =>\n withStagingDir(\"resources\", (dir) => {\n const manifest = stageBundle(dir, state.entries);\n\n return runCompiler(dir, manifest, outputPath);\n });\n\nconst stageBundle = (dir: string, entries: Map<string, ResourceEntry>): string => {\n const fileNodes: string[] = [];\n\n for (const entry of entries.values()) {\n const targetPath = join(dir, entry.stagedRelPath);\n mkdirSync(dirname(targetPath), { recursive: true });\n copyFileSync(entry.sourcePath, targetPath);\n fileNodes.push(` <file>${escapeXml(entry.stagedRelPath)}</file>`);\n }\n\n const prefix = escapeXml(MANIFEST_PREFIX);\n const manifest = join(dir, \"gtkx.gresource.xml\");\n\n const xml = [\n \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\",\n \"<gresources>\",\n ` <gresource prefix=\"${prefix}\">`,\n ...fileNodes,\n \" </gresource>\",\n \"</gresources>\",\n \"\",\n ].join(\"\\n\");\n\n writeFileSync(manifest, xml);\n\n return manifest;\n};\n\nconst runCompiler = (sourceDir: string, manifest: string, outputPath: string): Buffer => {\n runCliTool({\n tool: RESOURCE_COMPILER,\n args: [`--sourcedir=${sourceDir}`, `--target=${outputPath}`, manifest],\n });\n\n return readFileSync(outputPath);\n};\n\nconst ensureStagingDir = (state: PluginState): void => {\n state.devBundlePath = join(state.stagingDir.retain(), BUNDLE_FILENAME);\n};\n\nconst releaseStagingDir = (state: PluginState): void => {\n state.stagingDir.release();\n state.devBundlePath = \"\";\n state.compiledSignature = \"\";\n};\n\nconst entriesSignature = (state: PluginState): string =>\n sortStrings([...state.entries].map(([resourcePath, entry]) => `${resourcePath}\\0${entry.sourcePath}`)).join(\"\\0\");\n\nconst compileDevBundle = (state: PluginState): void => {\n ensureStagingDir(state);\n\n if (state.entries.size === 0) {\n rmSync(state.devBundlePath, { force: true });\n state.compiledSignature = \"\";\n\n return;\n }\n\n compileBundle(state, state.devBundlePath);\n state.compiledSignature = entriesSignature(state);\n};\n\nconst isRefreshHook = (value: unknown): value is () => void => typeof value === \"function\";\n\nconst refreshRegisteredDevBundle = (state: PluginState): void => {\n const server = state.server;\n\n if (!server) {\n return;\n }\n\n const refresh: unknown = server.moduleGraph.getModuleById(VIRTUAL_INIT)?.ssrModule?.[REFRESH_EXPORT];\n\n if (isRefreshHook(refresh)) {\n refresh();\n }\n};\n\nconst registerDevAsset = (state: PluginState): void => {\n if (entriesSignature(state) !== state.compiledSignature) {\n compileDevBundle(state);\n }\n};\n\nconst importerKey = (importer: string): string => stripQuery(importer);\n\nconst trackBundledSpecifier = (state: PluginState, importer: string | undefined, source: string): void => {\n if (importer === undefined) {\n return;\n }\n\n const key = importerKey(importer);\n const specifiers = state.bundledSpecifiers.get(key) ?? new Set<string>();\n specifiers.add(source);\n state.bundledSpecifiers.set(key, specifiers);\n};\n\nconst createResourceEntry = (sourcePath: string, resourcePath: string): ResourceEntry => ({\n sourcePath,\n stagedRelPath: resourcePath.replace(/^\\/+/, \"\"),\n resourcePath,\n});\n\nconst activateEntry = (state: PluginState, entry: ResourceEntry): ResourceEntry => {\n const existing = state.entries.get(entry.resourcePath);\n\n if (existing !== undefined) {\n if (existing.sourcePath !== entry.sourcePath) {\n throw new Error(\n `${existing.sourcePath} and ${entry.sourcePath} both resolve to the GResource path ` +\n entry.resourcePath,\n );\n }\n\n return existing;\n }\n\n state.entries.set(entry.resourcePath, entry);\n state.sourcePaths.add(entry.sourcePath);\n\n return entry;\n};\n\nconst isDeclarativeImporter = (state: PluginState, importer: string | undefined): importer is string =>\n !state.isBuild && importer !== undefined;\n\nconst setSourceAvailability = (state: PluginState, file: string, isAvailable: boolean): void => {\n if (isAvailable) {\n state.missingSourcePaths.delete(file);\n\n return;\n }\n\n state.missingSourcePaths.add(file);\n};\n\nconst isDeclaredSourceAvailable = (state: PluginState, sourcePath: string): boolean => {\n const isAvailable = existsSync(sourcePath);\n setSourceAvailability(state, sourcePath, isAvailable);\n\n return isAvailable;\n};\n\nconst declareEntry = (state: PluginState, importer: string, entry: ResourceEntry): ResourceEntry => {\n const key = importerKey(importer);\n const declarations = state.declaredEntries.get(key) ?? new Map<string, ResourceEntry>();\n const existing = declarations.get(entry.resourcePath);\n\n if (existing !== undefined && existing.sourcePath !== entry.sourcePath) {\n throw new Error(\n `${existing.sourcePath} and ${entry.sourcePath} both resolve to the GResource path ` +\n entry.resourcePath,\n );\n }\n\n const declared = existing ?? entry;\n declarations.set(entry.resourcePath, declared);\n state.declaredEntries.set(key, declarations);\n state.server?.watcher.add(dirname(declared.sourcePath));\n\n return declared;\n};\n\nconst declareIcon = (\n state: PluginState,\n importer: string,\n iconIdentity: string,\n entry: ResourceEntry,\n): void => {\n const key = importerKey(importer);\n const declarations = state.declaredIcons.get(key) ?? new Map<string, ResourceEntry>();\n const existing = declarations.get(iconIdentity);\n\n if (existing !== undefined && existing.sourcePath !== entry.sourcePath) {\n throw new Error(\n `${existing.sourcePath} and ${entry.sourcePath} both claim the themed icon ${iconIdentity}`,\n );\n }\n\n declarations.set(iconIdentity, existing ?? entry);\n state.declaredIcons.set(key, declarations);\n};\n\nconst assertIconIdentityAvailable = (\n state: PluginState,\n iconIdentity: string,\n sourcePath: string,\n): void => {\n const existing = state.iconOwners.get(iconIdentity);\n\n if (existing !== undefined && existing.sourcePath !== sourcePath) {\n throw new Error(\n `${existing.sourcePath} and ${sourcePath} both claim the themed icon ${iconIdentity}`,\n );\n }\n};\n\nconst declareResolvedIcon = (\n state: PluginState,\n importer: string | undefined,\n iconIdentity: string,\n entry: ResourceEntry,\n): void => {\n if (isDeclarativeImporter(state, importer)) {\n declareIcon(state, importer, iconIdentity, entry);\n }\n};\n\nconst registerEntry = (\n state: PluginState,\n absPath: string,\n rel: string,\n importer?: string,\n): ResourceEntry => {\n const resourcePath = validateResourcePath(rel.startsWith(\"/\") ? rel : `${state.prefix}/${rel}`);\n let entry = createResourceEntry(absPath, resourcePath);\n\n if (isDeclarativeImporter(state, importer)) {\n entry = declareEntry(state, importer, entry);\n\n if (!isImporterActive(state, importer) || !isDeclaredSourceAvailable(state, absPath)) {\n return entry;\n }\n }\n\n return activateEntry(state, entry);\n};\n\nconst registerIconEntry = (\n state: PluginState,\n sourcePath: string,\n derived: DerivedIconEntry,\n importer: string | undefined,\n): ResourceEntry => {\n const shouldActivate = !isDeclarativeImporter(state, importer) ||\n (isImporterActive(state, importer) && isDeclaredSourceAvailable(state, sourcePath));\n\n if (shouldActivate) {\n assertIconIdentityAvailable(state, derived.iconIdentity, sourcePath);\n }\n\n const entry = registerEntry(state, sourcePath, derived.resourcePath, importer);\n declareResolvedIcon(state, importer, derived.iconIdentity, entry);\n\n if (shouldActivate) {\n state.iconOwners.set(derived.iconIdentity, entry);\n }\n\n return entry;\n};\n\nconst isTrackedSource = (state: PluginState, file: string): boolean => state.sourcePaths.has(file);\n\nconst hasSourceEntry = (entries: Map<string, ResourceEntry>, file: string): boolean => {\n for (const entry of entries.values()) {\n if (entry.sourcePath === file) {\n return true;\n }\n }\n\n return false;\n};\n\nconst hasDeclaredSource = (\n declarations: Map<string, Map<string, ResourceEntry>>,\n file: string,\n): boolean => {\n for (const entries of declarations.values()) {\n if (hasSourceEntry(entries, file)) {\n return true;\n }\n }\n\n return false;\n};\n\nconst isDeclaredSource = (state: PluginState, file: string): boolean =>\n hasDeclaredSource(state.declaredEntries, file) || hasDeclaredSource(state.declaredIcons, file);\n\nconst virtualAssetId = (entry: ResourceEntry): string =>\n toVirtualId(entry.sourcePath) + REL_SEPARATOR + entry.resourcePath;\n\nconst virtualIconId = ({ entry, iconName }: ResolvedIconEntry): string =>\n virtualAssetId(entry) + ICON_NAME_SEPARATOR + iconName;\n\nconst resolveAssetSource = async (\n ctx: ResolveContext,\n request: { assetSource: string; importer: string | undefined; options: Record<string, unknown> | undefined },\n): Promise<string | undefined> => {\n const resolved = await ctx.resolve(request.assetSource, request.importer, {\n ...request.options,\n skipSelf: true,\n });\n\n if (!resolved || resolved.external) {\n return undefined;\n }\n\n const sourcePath = stripQuery(resolved.id);\n\n if (!isAbsolute(sourcePath)) {\n throw new Error(`${JSON.stringify(request.assetSource)} did not resolve to a file-backed asset`);\n }\n\n return sourcePath;\n};\n\nconst resolveAssetEntry = async (\n ctx: ResolveContext,\n state: PluginState,\n request: AssetResolveRequest,\n): Promise<ResourceEntry | undefined> => {\n const sourcePath = await resolveAssetSource(ctx, request);\n\n if (sourcePath === undefined) {\n return undefined;\n }\n\n return registerEntry(\n state,\n sourcePath,\n request.resourcePath === null\n ? derivedResourcePath(state, sourcePath)\n : validateResourcePath(request.resourcePath),\n request.importer,\n );\n};\n\nconst resolveIconEntry = async (\n ctx: ResolveContext,\n state: PluginState,\n request: IconResolveRequest,\n): Promise<ResolvedIconEntry | undefined> => {\n const sourcePath = await resolveAssetSource(ctx, request);\n\n if (sourcePath === undefined) {\n return undefined;\n }\n\n const derived = derivedIconEntry(state, sourcePath, request.iconName);\n\n return {\n entry: registerIconEntry(state, sourcePath, derived, request.importer),\n iconName: derived.iconName,\n };\n};\n\nconst loadInitModule = (state: PluginState): string => {\n if (state.isBuild) {\n if (state.bundleReferenceId === null) {\n throw new Error(\"Cannot render the GResource loader before its bundle has been emitted\");\n }\n\n return renderInitModule({ isBuild: true, bundleReferenceId: state.bundleReferenceId });\n }\n\n ensureStagingDir(state);\n\n return renderInitModule({ isBuild: false, devBundlePath: state.devBundlePath });\n};\n\nconst virtualAssetMetadata = (virtualId: string): { absPath: string; iconName: string | null; rel: string } => {\n const rest = fromVirtualId(virtualId);\n const separatorIndex = rest.indexOf(REL_SEPARATOR);\n const relAndMetadata = rest.slice(separatorIndex + REL_SEPARATOR.length);\n const iconSeparatorIndex = relAndMetadata.indexOf(ICON_NAME_SEPARATOR);\n\n return {\n absPath: rest.slice(0, separatorIndex),\n iconName: iconSeparatorIndex === -1\n ? null\n : relAndMetadata.slice(iconSeparatorIndex + ICON_NAME_SEPARATOR.length),\n rel: iconSeparatorIndex === -1 ? relAndMetadata : relAndMetadata.slice(0, iconSeparatorIndex),\n };\n};\n\nconst resourcePathExport = (entry: ResourceEntry, iconName: string | null): string[] =>\n iconName === null ? [`export const ${RESOURCE_PATH_EXPORT} = ${JSON.stringify(entry.resourcePath)};`] : [];\n\nconst assetModuleImports = (iconName: string | null): string[] => {\n const initBindings = iconName === null\n ? \"ensureRegistered\"\n : `ensureRegistered, ${REGISTER_REFRESH_EXPORT}`;\n\n return [\n `import { ${initBindings} } from ${JSON.stringify(VIRTUAL_INIT)};`,\n ...(iconName === null\n ? []\n : [\n \"import { Display } from \\\"@gtkx/gi/gdk\\\";\",\n \"import { IconTheme } from \\\"@gtkx/gi/gtk\\\";\",\n ]),\n ];\n};\n\nconst iconThemeRegistration = (state: PluginState, iconName: string | null): string[] => {\n if (iconName === null) {\n return [];\n }\n\n const resourceIconPath = `${state.prefix}/icons`;\n\n return [\n `const resourceIconPath = ${JSON.stringify(resourceIconPath)};`,\n \"function refreshIconTheme() {\",\n \" const display = Display.getDefault();\",\n \" if (!display) return;\",\n \" const theme = IconTheme.getForDisplay(display);\",\n \" const paths = theme.getResourcePath() ?? [];\",\n \" theme.setResourcePath(paths.includes(resourceIconPath) ? [...paths] : [...paths, resourceIconPath]);\",\n \"}\",\n `${REGISTER_REFRESH_EXPORT}(resourceIconPath, refreshIconTheme);`,\n ];\n};\n\nconst loadedResourceEntry = (\n state: PluginState,\n sourcePath: string,\n resourcePath: string,\n): { entry: ResourceEntry; isRegistered: boolean } => {\n const registered = state.entries.get(resourcePath);\n\n if (registered === undefined) {\n return { entry: createResourceEntry(sourcePath, resourcePath), isRegistered: false };\n }\n\n if (registered.sourcePath !== sourcePath) {\n throw new Error(\n `${registered.sourcePath} and ${sourcePath} both resolve to the GResource path ${resourcePath}`,\n );\n }\n\n return { entry: registered, isRegistered: true };\n};\n\nconst compileLoadedDevAsset = (state: PluginState, isRegistered: boolean): void => {\n if (isRegistered && !state.isBuild) {\n registerDevAsset(state);\n }\n};\n\nconst loadAssetModule = (state: PluginState, virtualId: string): string => {\n const { absPath, iconName, rel } = virtualAssetMetadata(virtualId);\n const resourcePath = validateResourcePath(rel);\n const { entry, isRegistered } = loadedResourceEntry(state, absPath, resourcePath);\n const defaultValue = iconName ?? entry.resourcePath;\n compileLoadedDevAsset(state, isRegistered);\n\n return [\n ...assetModuleImports(iconName),\n \"ensureRegistered();\",\n ...iconThemeRegistration(state, iconName),\n `export default ${JSON.stringify(defaultValue)};`,\n ...resourcePathExport(entry, iconName),\n ].join(\"\\n\");\n};\n\nconst finalizeBuildBundle = (\n ctx: Pick<Rolldown.PluginContext, \"getFileName\">,\n bundle: Rolldown.OutputBundle,\n state: PluginState,\n): void => {\n if (!state.isBuild || state.bundleReferenceId === null) {\n return;\n }\n\n const fileName = ctx.getFileName(state.bundleReferenceId);\n const output = bundle[fileName];\n\n if (output?.type !== \"asset\") {\n throw new Error(`Cannot find the emitted ${BUNDLE_FILENAME} asset`);\n }\n\n if (state.entries.size === 0) {\n Reflect.deleteProperty(bundle, fileName);\n\n return;\n }\n\n const compiled = withStagingDir(\"resources-out\", (outDir) => compileBundle(state, join(outDir, BUNDLE_FILENAME)));\n output.source = compiled;\n info(`Compiled ${String(state.entries.size)} resource(s) into ${BUNDLE_FILENAME}`);\n};\n\nconst refreshDevRegistration = (state: PluginState): void => {\n compileDevBundle(state);\n\n try {\n refreshRegisteredDevBundle(state);\n } catch (error_) {\n error(\"Failed to refresh GResource bundle:\", error_);\n }\n};\n\nconst isSameSpecifiers = (left: Set<string> | undefined, right: Set<string>): boolean =>\n left === undefined\n ? right.size === 0\n : left.size === right.size && [...right].every((source) => left.has(source));\n\nconst bundledSpecifiersIn = (imports: SourceImport[]): Set<string> =>\n new Set(\n imports\n .filter((entry) =>\n parseResourceSpecifier(entry.source) !== null || parseIconSpecifier(entry.source) !== null)\n .map((entry) => entry.source),\n );\n\nconst isSourceModule = (file: string): boolean => sourceLanguage(file) !== undefined;\n\nconst isBundledSource = (source: string): boolean =>\n parseResourceSpecifier(source) !== null || parseIconSpecifier(source) !== null;\n\nconst validateUnbundledSource = (source: string): void => {\n if (isLegacyDataSpecifier(source)) {\n throw new Error(`${JSON.stringify(source)} uses the legacy #data asset form`);\n }\n\n rejectInvalidSpecifier(source);\n};\n\nconst resolvedModuleDependency = async (\n ctx: ResolveContext,\n source: string,\n importer: string,\n): Promise<string | null> => {\n if (isBundledSource(source)) {\n return null;\n }\n\n validateUnbundledSource(source);\n const resolved = await ctx.resolve(source, importer, { skipSelf: true });\n\n if (resolved === null) {\n throw new Error(`${JSON.stringify(source)} could not be resolved from ${importer}`);\n }\n\n return resolved.external ? null : importerKey(resolved.id);\n};\n\nconst resolvedModuleDependencies = async (\n ctx: ResolveContext,\n imports: SourceImport[],\n importer: string,\n): Promise<Set<string>> => {\n const dependencies: Set<string> = new Set();\n\n for (const entry of imports) {\n const dependency = await resolvedModuleDependency(ctx, entry.source, importer);\n\n if (dependency !== null) {\n dependencies.add(dependency);\n }\n }\n\n return dependencies;\n};\n\nconst importerReconciliation = async (\n ctx: ResolveContext,\n state: PluginState,\n id: string,\n): Promise<ImporterReconciliation | null> => {\n const file = stripQuery(id);\n const key = importerKey(file);\n\n if (state.isBuild || !isSourceModule(file)) {\n return null;\n }\n\n const imports = parseRuntimeImportsIn(file);\n\n if (imports === null) {\n return null;\n }\n\n return {\n currentBundled: bundledSpecifiersIn(imports),\n currentDependencies: await resolvedModuleDependencies(ctx, imports, file),\n file,\n imports,\n key,\n previousBundled: state.bundledSpecifiers.get(key),\n previousDependencies: state.moduleDependencies.get(key),\n };\n};\n\nconst moduleNodeKey = (module: ModuleNode): string => importerKey(module.id ?? module.file ?? module.url);\n\nconst moduleNodeFor = (state: PluginState, id: string): ModuleNode | undefined => {\n const server = state.server;\n\n if (server === null) {\n return undefined;\n }\n\n return server.moduleGraph.getModuleById(id) ?? server.moduleGraph.getModuleById(importerKey(id));\n};\n\nconst restoreDependencies = (pruned: Set<string>, current: Set<string>): void => {\n for (const dependency of current) {\n pruned.delete(dependency);\n }\n};\n\nconst pruneRemovedDependencies = (\n pruned: Set<string>,\n previous: Set<string> | undefined,\n current: Set<string>,\n): void => {\n if (previous === undefined) {\n return;\n }\n\n for (const dependency of previous) {\n if (!current.has(dependency)) {\n pruned.add(dependency);\n }\n }\n};\n\nconst storePrunedDependencies = (state: PluginState, key: string, pruned: Set<string>): void => {\n if (pruned.size === 0) {\n state.prunedDependencies.delete(key);\n\n return;\n }\n\n state.prunedDependencies.set(key, pruned);\n};\n\nconst updatePrunedDependencies = (\n state: PluginState,\n key: string,\n previous: Set<string> | undefined,\n current: Set<string>,\n): void => {\n const pruned = state.prunedDependencies.get(key) ?? new Set<string>();\n restoreDependencies(pruned, current);\n pruneRemovedDependencies(pruned, previous, current);\n storePrunedDependencies(state, key, pruned);\n};\n\nconst isPrunedDependency = (state: PluginState, importer: ModuleNode, imported: ModuleNode): boolean =>\n state.prunedDependencies.get(moduleNodeKey(importer))?.has(moduleNodeKey(imported)) === true;\n\nconst fallbackRootModules = (state: PluginState): string[] => {\n const roots: string[] = [];\n\n for (const key of state.moduleDependencies.keys()) {\n if (moduleNodeFor(state, key)?.importers.size === 0) {\n roots.push(key);\n }\n }\n\n return roots;\n};\n\nconst enqueueCurrentDependencies = (state: PluginState, key: string, pending: string[]): void => {\n const dependencies = state.moduleDependencies.get(key) ?? [];\n\n for (const dependency of dependencies) {\n pending.push(dependency);\n }\n};\n\nconst enqueueGraphDependencies = (state: PluginState, key: string, pending: string[]): void => {\n const module = moduleNodeFor(state, key);\n\n if (module === undefined) {\n return;\n }\n\n for (const imported of module.importedModules) {\n if (!isPrunedDependency(state, module, imported)) {\n pending.push(moduleNodeKey(imported));\n }\n }\n};\n\nconst visitActiveImporter = (\n state: PluginState,\n active: Set<string>,\n pending: string[],\n key: string,\n): void => {\n if (active.has(key)) {\n return;\n }\n\n active.add(key);\n enqueueCurrentDependencies(state, key, pending);\n enqueueGraphDependencies(state, key, pending);\n};\n\nconst activeImporterKeys = (state: PluginState): Set<string> => {\n const active: Set<string> = new Set();\n const roots = state.entryModule === null ? fallbackRootModules(state) : [state.entryModule];\n const pending = [...roots];\n\n while (pending.length > 0) {\n const key = pending.pop();\n\n if (key === undefined || active.has(key)) {\n continue;\n }\n\n visitActiveImporter(state, active, pending, key);\n }\n\n return active;\n};\n\nconst isImporterActive = (state: PluginState, importer: string): boolean =>\n activeImporterKeys(state).has(importerKey(importer));\n\nconst activateDeclaredIcon = (\n state: PluginState,\n iconIdentity: string,\n entry: ResourceEntry,\n): void => {\n const existing = state.iconOwners.get(iconIdentity);\n\n if (existing !== undefined && existing.sourcePath !== entry.sourcePath) {\n throw new Error(\n `${existing.sourcePath} and ${entry.sourcePath} both claim the themed icon ${iconIdentity}`,\n );\n }\n\n state.iconOwners.set(iconIdentity, activateEntry(state, entry));\n};\n\nconst activateDeclaredEntries = (state: PluginState, importer: string): void => {\n const entries = state.declaredEntries.get(importer)?.values() ?? [];\n\n for (const entry of entries) {\n if (isDeclaredSourceAvailable(state, entry.sourcePath)) {\n activateEntry(state, entry);\n }\n }\n};\n\nconst activateDeclaredIcons = (state: PluginState, importer: string): void => {\n const icons = state.declaredIcons.get(importer) ?? [];\n\n for (const [iconIdentity, entry] of icons) {\n if (isDeclaredSourceAvailable(state, entry.sourcePath)) {\n activateDeclaredIcon(state, iconIdentity, entry);\n }\n }\n};\n\nconst activateDeclaredClaims = (state: PluginState, active: Set<string>): void => {\n for (const importer of sortStrings(active)) {\n activateDeclaredEntries(state, importer);\n activateDeclaredIcons(state, importer);\n }\n};\n\nconst rebuildActiveClaims = (state: PluginState): void => {\n const previous = {\n entries: state.entries,\n iconOwners: state.iconOwners,\n sourcePaths: state.sourcePaths,\n };\n\n state.entries = new Map();\n state.iconOwners = new Map();\n state.sourcePaths = new Set();\n\n try {\n activateDeclaredClaims(state, activeImporterKeys(state));\n } catch (error_) {\n state.entries = previous.entries;\n state.iconOwners = previous.iconOwners;\n state.sourcePaths = previous.sourcePaths;\n throw error_;\n }\n};\n\nconst forgetImporterDeclarations = (state: PluginState, importer: string): void => {\n state.declaredEntries.delete(importer);\n state.declaredIcons.delete(importer);\n};\n\nconst cloneMapValues = <Value>(source: Map<string, Value>, clone: (value: Value) => Value): Map<string, Value> =>\n new Map([...source].map(([key, value]) => [key, clone(value)]));\n\nconst reconciliationCandidate = (state: PluginState): PluginState => ({\n ...state,\n bundledSpecifiers: cloneMapValues(state.bundledSpecifiers, (values) => new Set(values)),\n moduleDependencies: cloneMapValues(state.moduleDependencies, (values) => new Set(values)),\n prunedDependencies: cloneMapValues(state.prunedDependencies, (values) => new Set(values)),\n declaredEntries: cloneMapValues(state.declaredEntries, (entries) => new Map(entries)),\n declaredIcons: cloneMapValues(state.declaredIcons, (entries) => new Map(entries)),\n missingSourcePaths: new Set(state.missingSourcePaths),\n});\n\nconst storeBundledSpecifiers = (state: PluginState, importer: string, specifiers: Set<string>): void => {\n if (specifiers.size === 0) {\n state.bundledSpecifiers.delete(importer);\n\n return;\n }\n\n state.bundledSpecifiers.set(importer, specifiers);\n};\n\nconst applyImporterGraph = (state: PluginState, reconciliation: ImporterReconciliation): void => {\n updatePrunedDependencies(\n state,\n reconciliation.key,\n reconciliation.previousDependencies,\n reconciliation.currentDependencies,\n );\n\n state.moduleDependencies.set(reconciliation.key, reconciliation.currentDependencies);\n storeBundledSpecifiers(state, reconciliation.key, reconciliation.currentBundled);\n};\n\nconst declareReconciledResource = async (\n ctx: ResolveContext,\n state: PluginState,\n importer: string,\n source: string,\n): Promise<void> => {\n const resourceSpecifier = parseResourceSpecifier(source);\n\n if (resourceSpecifier === null) {\n return;\n }\n\n const entry = await resolveAssetEntry(ctx, state, {\n assetSource: resourceSpecifier.assetSource,\n importer,\n resourcePath: resourceSpecifier.resourcePath,\n options: undefined,\n });\n\n if (entry === undefined || state.missingSourcePaths.has(entry.sourcePath)) {\n throw new Error(`${JSON.stringify(source)} did not resolve to a bundled resource`);\n }\n};\n\nconst declareReconciledIcon = async (\n ctx: ResolveContext,\n state: PluginState,\n importer: string,\n source: string,\n): Promise<void> => {\n const iconSpecifier = parseIconSpecifier(source);\n\n if (iconSpecifier === null) {\n return;\n }\n\n const entry = await resolveIconEntry(ctx, state, {\n assetSource: iconSpecifier.assetSource,\n iconName: iconSpecifier.iconName,\n importer,\n options: undefined,\n });\n\n if (entry === undefined || state.missingSourcePaths.has(entry.entry.sourcePath)) {\n throw new Error(`${JSON.stringify(source)} did not resolve to a bundled icon`);\n }\n};\n\nconst declareReconciledSource = async (\n ctx: ResolveContext,\n state: PluginState,\n importer: string,\n source: string,\n): Promise<void> => {\n await declareReconciledResource(ctx, state, importer, source);\n await declareReconciledIcon(ctx, state, importer, source);\n};\n\nconst declareReconciledImports = async (\n ctx: ResolveContext,\n state: PluginState,\n reconciliation: ImporterReconciliation,\n): Promise<void> => {\n for (const entry of reconciliation.imports) {\n if (isBundledSource(entry.source)) {\n await declareReconciledSource(ctx, state, reconciliation.file, entry.source);\n }\n }\n};\n\nconst prepareReconciliation = async (\n ctx: ResolveContext,\n state: PluginState,\n reconciliation: ImporterReconciliation,\n): Promise<PluginState> => {\n const candidate = reconciliationCandidate(state);\n\n const isBundledChanged = !isSameSpecifiers(\n reconciliation.previousBundled,\n reconciliation.currentBundled,\n );\n\n if (isBundledChanged) {\n forgetImporterDeclarations(candidate, reconciliation.key);\n }\n\n applyImporterGraph(candidate, reconciliation);\n rebuildActiveClaims(candidate);\n\n if (isBundledChanged) {\n await declareReconciledImports(ctx, candidate, reconciliation);\n }\n\n return candidate;\n};\n\nconst commitReconciliation = (state: PluginState, candidate: PluginState): void => {\n state.entries = candidate.entries;\n state.bundledSpecifiers = candidate.bundledSpecifiers;\n state.moduleDependencies = candidate.moduleDependencies;\n state.prunedDependencies = candidate.prunedDependencies;\n state.declaredEntries = candidate.declaredEntries;\n state.declaredIcons = candidate.declaredIcons;\n state.missingSourcePaths = candidate.missingSourcePaths;\n state.sourcePaths = candidate.sourcePaths;\n state.iconOwners = candidate.iconOwners;\n};\n\nconst reconcileImporter = async (ctx: ResolveContext, state: PluginState, id: string): Promise<void> => {\n const reconciliation = await importerReconciliation(ctx, state, id);\n\n if (reconciliation === null) {\n return;\n }\n\n const previousSignature = entriesSignature(state);\n const candidate = await prepareReconciliation(ctx, state, reconciliation);\n commitReconciliation(state, candidate);\n\n if (entriesSignature(state) !== previousSignature) {\n refreshDevRegistration(state);\n }\n};\n\nconst resolveResourceConfig = async (state: PluginState, config: UserConfig, loadConfig: ConfigLoader) => {\n const loaded = await loadConfig.load(viteProjectRoot(config));\n state.prefix = resourceBasePath(loaded.config.applicationId);\n state.root = loaded.root;\n\n return {\n assetsInclude: [ASSET_RE],\n };\n};\n\nconst refreshTrackedSource = (state: PluginState, file: string): void => {\n if (!isTrackedSource(state, file)) {\n return;\n }\n\n try {\n refreshDevRegistration(state);\n } catch (error_) {\n error(\"GResource refresh failed:\", error_);\n }\n};\n\nconst rebuildForSourceAvailability = (state: PluginState, previousSignature: string): void => {\n try {\n rebuildActiveClaims(state);\n\n if (entriesSignature(state) !== previousSignature) {\n refreshDevRegistration(state);\n }\n } catch (error_) {\n error(\"GResource source update failed:\", error_);\n }\n};\n\nconst updateTrackedSourceAvailability = (state: PluginState, file: string, isAvailable: boolean): void => {\n if (!isTrackedSource(state, file) && !state.missingSourcePaths.has(file) && !isDeclaredSource(state, file)) {\n return;\n }\n\n const previousSignature = entriesSignature(state);\n setSourceAvailability(state, file, isAvailable);\n rebuildForSourceAvailability(state, previousSignature);\n};\n\nconst attachResourceWatcher = (state: PluginState, server: ViteDevServer): void => {\n state.server = server;\n\n const onChange = (file: string): void => {\n refreshTrackedSource(state, file);\n };\n\n const onAdd = (file: string): void => {\n updateTrackedSourceAvailability(state, file, true);\n };\n\n const onUnlink = (file: string): void => {\n updateTrackedSourceAvailability(state, file, false);\n };\n\n const onClose = (): void => {\n releaseStagingDir(state);\n };\n\n server.httpServer?.once(\"close\", onClose);\n server.watcher.once(\"close\", onClose);\n server.watcher.on(\"change\", onChange);\n server.watcher.on(\"add\", onAdd);\n server.watcher.on(\"unlink\", onUnlink);\n};\n\nconst applyResolvedConfig = (state: PluginState, config: ResolvedConfig): void => {\n state.isBuild = config.command === \"build\";\n state.root = config.root;\n};\n\nconst loadResourceModule = (state: PluginState, id: string): string | undefined => {\n if (id === VIRTUAL_INIT) {\n return loadInitModule(state);\n }\n\n if (!isVirtual(id)) {\n return undefined;\n }\n\n return loadAssetModule(state, id);\n};\n\nconst isLegacyDataSpecifier = (source: string): boolean =>\n source.startsWith(DATA_PREFIX) && ASSET_RE.test(stripQuery(source));\n\nconst rejectInvalidSpecifier = (source: string): void => {\n if (BUNDLED_QUERY_MENTION_RE.test(source)) {\n throw new Error(\n `${JSON.stringify(source)} is not a valid bundled asset import; use ?resource, ` +\n \"?resource=/absolute/path, ?icon, or ?icon=name\",\n );\n }\n\n if (isBareRelativeAsset(source)) {\n throw new Error(\n `${JSON.stringify(source)} must choose ?resource for a GResource, ?icon for a themed icon, ` +\n \"?font for a bundled font, or ?url for an emitted file\",\n );\n }\n};\n\nconst resolveExplicitResourceId = async (\n ctx: ResolveContext,\n state: PluginState,\n request: ResolveRequest,\n): Promise<string | undefined> => {\n const specifier = parseResourceSpecifier(request.source);\n\n if (specifier === null) {\n return undefined;\n }\n\n const entry = await resolveAssetEntry(ctx, state, {\n assetSource: specifier.assetSource,\n importer: request.importer,\n resourcePath: specifier.resourcePath,\n options: request.options,\n });\n\n return entry === undefined ? undefined : virtualAssetId(entry);\n};\n\nconst resolveIconResourceId = async (\n ctx: ResolveContext,\n state: PluginState,\n request: ResolveRequest,\n): Promise<RetainedIconModuleId | undefined> => {\n const specifier = parseIconSpecifier(request.source);\n\n if (specifier === null) {\n return undefined;\n }\n\n const resolved = await resolveIconEntry(ctx, state, {\n assetSource: specifier.assetSource,\n iconName: specifier.iconName,\n importer: request.importer,\n options: request.options,\n });\n\n return resolved === undefined\n ? undefined\n : { id: virtualIconId(resolved), moduleSideEffects: true };\n};\n\nconst resolveBundledResourceId = async (\n ctx: ResolveContext,\n state: PluginState,\n request: ResolveRequest,\n): Promise<ResourceModuleId | undefined> => {\n if (isLegacyDataSpecifier(request.source)) {\n throw new Error(\n `${JSON.stringify(request.source)} uses the legacy #data asset form; import it relatively with ` +\n \"?resource or ?url\",\n );\n }\n\n if (parseResourceSpecifier(request.source) !== null) {\n const resolved = await resolveExplicitResourceId(ctx, state, request);\n trackBundledSpecifier(state, request.importer, request.source);\n\n return resolved;\n }\n\n if (parseIconSpecifier(request.source) !== null) {\n const resolved = await resolveIconResourceId(ctx, state, request);\n trackBundledSpecifier(state, request.importer, request.source);\n\n return resolved;\n }\n\n rejectInvalidSpecifier(request.source);\n\n return undefined;\n};\n\nconst resolveResourceId = (\n ctx: ResolveContext,\n state: PluginState,\n request: ResolveRequest,\n): Promise<ResourceModuleId | undefined> => {\n if (request.source === VIRTUAL_INIT) {\n return Promise.resolve(VIRTUAL_INIT);\n }\n\n return resolveBundledResourceId(ctx, state, request);\n};\n\nconst createResourcesPlugin = (state: PluginState, loadConfig: ConfigLoader): Plugin => ({\n name: \"gtkx:resources\",\n enforce: \"pre\",\n perEnvironmentStartEndDuringDev: true,\n\n config: (config: UserConfig) => resolveResourceConfig(state, config, loadConfig),\n\n configResolved: (config: ResolvedConfig) => {\n applyResolvedConfig(state, config);\n },\n\n configureServer: (server) => {\n attachResourceWatcher(state, server);\n },\n\n buildStart() {\n if (state.isBuild && state.bundleReferenceId === null) {\n state.bundleReferenceId = this.emitFile({\n type: \"asset\",\n fileName: BUNDLE_FILENAME,\n source: \"\",\n });\n }\n },\n\n resolveId(source, importer, options) {\n return resolveResourceId(this, state, { source, importer, options });\n },\n\n load(id) {\n return loadResourceModule(state, id);\n },\n\n async transform(code, id) {\n await withExclusiveLoad(state, () => reconcileImporter(this, state, id));\n\n return retainSideEffectIconImport(code, id);\n },\n\n generateBundle(_options, bundle) {\n finalizeBuildBundle(this, bundle, state);\n },\n\n closeBundle() {\n releaseStagingDir(state);\n },\n});\n\nfunction gtkxResources(loadConfig: ConfigLoader = createConfigLoader(), entryPath?: string): Plugin {\n const state: PluginState = {\n prefix: \"\",\n root: \"\",\n isBuild: false,\n entries: new Map(),\n bundledSpecifiers: new Map(),\n moduleDependencies: new Map(),\n prunedDependencies: new Map(),\n declaredEntries: new Map(),\n declaredIcons: new Map(),\n entryModule: entryPath === undefined ? null : importerKey(entryPath),\n sourcePaths: new Set(),\n missingSourcePaths: new Set(),\n stagingDir: createRetainedStagingDir(DEV_STAGING_PREFIX),\n devBundlePath: \"\",\n server: null,\n compiledSignature: \"\",\n bundleReferenceId: null,\n iconOwners: new Map(),\n };\n\n return createResourcesPlugin(state, loadConfig);\n}\n\nexport { gtkxResources };\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createConfigLoader } from "@gtkx/config/internal";
|
|
1
|
+
import { createConfigLoader, viteProjectRoot } from "@gtkx/config/internal";
|
|
2
2
|
import { prependSchemaDir, stageAndCompileProjectSchemas } from "../settings/schema.js";
|
|
3
3
|
function gtkxSettingsWorkerEnv(configFile) {
|
|
4
4
|
const loadConfig = createConfigLoader({ configFile });
|
|
@@ -6,7 +6,7 @@ function gtkxSettingsWorkerEnv(configFile) {
|
|
|
6
6
|
name: "gtkx:settings-worker-env",
|
|
7
7
|
enforce: "pre",
|
|
8
8
|
async config(config) {
|
|
9
|
-
const loaded = await loadConfig.load(config
|
|
9
|
+
const loaded = await loadConfig.load(viteProjectRoot(config));
|
|
10
10
|
const dir = stageAndCompileProjectSchemas(loaded.root);
|
|
11
11
|
if (dir === null) {
|
|
12
12
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-worker-env.js","sourceRoot":"","sources":["../../src/vite-plugins/settings-worker-env.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"settings-worker-env.js","sourceRoot":"","sources":["../../src/vite-plugins/settings-worker-env.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAExF,SAAS,qBAAqB,CAAC,UAAmB;IAC9C,MAAM,UAAU,GAAG,kBAAkB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IAEtD,OAAO;QACH,IAAI,EAAE,0BAA0B;QAChC,OAAO,EAAE,KAAK;QAEd,KAAK,CAAC,MAAM,CAAC,MAAkB;YAC3B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9D,MAAM,GAAG,GAAG,6BAA6B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAEvD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACf,OAAO;YACX,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,GAAG,CAAC;YAEtC,OAAO;gBACH,IAAI,EAAE;oBACF,GAAG,EAAE,EAAE,oBAAoB,EAAE,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE;iBACzF;aACJ,CAAC;QACN,CAAC;KACJ,CAAC;AACN,CAAC;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC","sourcesContent":["import type { UserConfig } from \"vite\";\nimport type { Plugin } from \"vitest/config\";\nimport { createConfigLoader, viteProjectRoot } from \"@gtkx/config/internal\";\nimport { prependSchemaDir, stageAndCompileProjectSchemas } from \"../settings/schema.js\";\n\nfunction gtkxSettingsWorkerEnv(configFile?: string): Plugin {\n const loadConfig = createConfigLoader({ configFile });\n\n return {\n name: \"gtkx:settings-worker-env\",\n enforce: \"pre\",\n\n async config(config: UserConfig) {\n const loaded = await loadConfig.load(viteProjectRoot(config));\n const dir = stageAndCompileProjectSchemas(loaded.root);\n\n if (dir === null) {\n return;\n }\n\n process.env.GTKX_DEV_SCHEMA_DIR = dir;\n\n return {\n test: {\n env: { GSETTINGS_SCHEMA_DIR: prependSchemaDir(dir, process.env.GSETTINGS_SCHEMA_DIR) },\n },\n };\n },\n };\n}\n\nexport { gtkxSettingsWorkerEnv };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-links.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/store-links.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"store-links.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/store-links.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,MAAM,CAAC;AAM/C,iBAAS,cAAc,IAAI,MAAM,CAiBhC;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ensureStoreLinks } from "@gtkx/codegen/internal";
|
|
2
|
+
import { viteProjectRoot } from "@gtkx/config/internal";
|
|
2
3
|
const GENERATED_MODULE_PREFIX = /^@gtkx\/(?:gi\/|jsx(?:\/|$))/;
|
|
3
4
|
function gtkxStoreLinks() {
|
|
4
5
|
const state = { root: "" };
|
|
@@ -6,7 +7,7 @@ function gtkxStoreLinks() {
|
|
|
6
7
|
name: "gtkx:store-links",
|
|
7
8
|
enforce: "pre",
|
|
8
9
|
config(config) {
|
|
9
|
-
state.root = config
|
|
10
|
+
state.root = viteProjectRoot(config);
|
|
10
11
|
},
|
|
11
12
|
resolveId(source) {
|
|
12
13
|
if (GENERATED_MODULE_PREFIX.test(source)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-links.js","sourceRoot":"","sources":["../../src/vite-plugins/store-links.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"store-links.js","sourceRoot":"","sources":["../../src/vite-plugins/store-links.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,uBAAuB,GAAG,8BAA8B,CAAC;AAE/D,SAAS,cAAc;IACnB,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAE3B,OAAO;QACH,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,KAAK;QAEd,MAAM,CAAC,MAAkB;YACrB,KAAK,CAAC,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;QAED,SAAS,CAAC,MAAM;YACZ,IAAI,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;QACL,CAAC;KACJ,CAAC;AACN,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,CAAC","sourcesContent":["import type { Plugin, UserConfig } from \"vite\";\nimport { ensureStoreLinks } from \"@gtkx/codegen/internal\";\nimport { viteProjectRoot } from \"@gtkx/config/internal\";\n\nconst GENERATED_MODULE_PREFIX = /^@gtkx\\/(?:gi\\/|jsx(?:\\/|$))/;\n\nfunction gtkxStoreLinks(): Plugin {\n const state = { root: \"\" };\n\n return {\n name: \"gtkx:store-links\",\n enforce: \"pre\",\n\n config(config: UserConfig) {\n state.root = viteProjectRoot(config);\n },\n\n resolveId(source) {\n if (GENERATED_MODULE_PREFIX.test(source)) {\n ensureStoreLinks(state.root);\n }\n },\n };\n}\n\nexport { gtkxStoreLinks };\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { discoverGirNamespaces, resolveGirPath, resolveStore } from "@gtkx/codegen";
|
|
2
|
-
import { createConfigLoader } from "@gtkx/config/internal";
|
|
2
|
+
import { createConfigLoader, viteProjectRoot } from "@gtkx/config/internal";
|
|
3
3
|
import { existsSync, readFileSync } from "node:fs";
|
|
4
4
|
import { join } from "node:path";
|
|
5
5
|
const GENERATED_MODULE_PATTERN = /^@gtkx\/(gi|jsx)\/([a-z0-9]+)$/;
|
|
@@ -79,7 +79,7 @@ function gtkxUndeclaredLibrary(loadConfig = createConfigLoader()) {
|
|
|
79
79
|
name: "gtkx:undeclared-library",
|
|
80
80
|
enforce: "pre",
|
|
81
81
|
config(config) {
|
|
82
|
-
state.root = config
|
|
82
|
+
state.root = viteProjectRoot(config);
|
|
83
83
|
},
|
|
84
84
|
async resolveId(source, importer, options) {
|
|
85
85
|
const generated = parseGeneratedModule(source, importer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"undeclared-library.js","sourceRoot":"","sources":["../../src/vite-plugins/undeclared-library.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"undeclared-library.js","sourceRoot":"","sources":["../../src/vite-plugins/undeclared-library.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StoreOptions } from \"@gtkx/codegen\";\nimport type { ConfigLoader } from \"@gtkx/config\";\nimport type { Plugin, UserConfig } from \"vite\";\nimport { discoverGirNamespaces, resolveGirPath, resolveStore } from \"@gtkx/codegen\";\nimport { createConfigLoader, viteProjectRoot } from \"@gtkx/config/internal\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\ntype PluginState = {\n root: string;\n loadConfig: ConfigLoader;\n girPath: string[] | null;\n};\n\ntype GeneratedModule = {\n source: string;\n kind: string;\n namespace: string;\n importer: string;\n};\n\nconst GENERATED_MODULE_PATTERN = /^@gtkx\\/(gi|jsx)\\/([a-z0-9]+)$/;\nconst DEFAULT_LIBRARY_NAMESPACES: Set<string> = new Set([\"adw\", \"gtk\"]);\n\nconst girSearchPaths = async (state: PluginState): Promise<string[]> => {\n if (state.girPath === null) {\n const { config } = await state.loadConfig.load(state.root);\n state.girPath = resolveGirPath(config.girPath);\n }\n\n return state.girPath;\n};\n\nconst getNamespace = (identifier: string): string => identifier.slice(0, identifier.indexOf(\"-\")).toLowerCase();\n\nconst findGirIdentifier = (girPath: string[], namespace: string): string | undefined =>\n discoverGirNamespaces(girPath).find((identifier) => getNamespace(identifier) === namespace);\n\nconst parseGeneratedModule = (source: string, importer: string | undefined): GeneratedModule | null => {\n const matched = GENERATED_MODULE_PATTERN.exec(source);\n const kind = matched?.[1];\n const namespace = matched?.[2];\n\n if (kind === undefined || namespace === undefined) {\n return null;\n }\n\n return { source, kind, namespace, importer: importer ?? \"the project's sources\" };\n};\n\nconst getStoreOptions = (root: string, kind: string): StoreOptions | null => {\n try {\n const store = resolveStore(root);\n\n return kind === \"gi\" ? store.gi : store.jsx;\n } catch {\n return null;\n }\n};\n\nconst hasStoreModule = (storeDir: string, exportKey: string): boolean => {\n const manifest = join(storeDir, \"package.json\");\n\n if (!existsSync(manifest)) {\n return false;\n }\n\n const { exports } = JSON.parse(readFileSync(manifest, \"utf8\")) as { exports?: Record<string, unknown> };\n\n return exports?.[exportKey] !== undefined;\n};\n\nconst unreachableStoreError = (generated: GeneratedModule, options: StoreOptions): Error => {\n const provided = `\"${generated.namespace}\"`;\n\n return new Error(\n `Cannot resolve \"${generated.source}\": the generated store in ${options.storeDir} does provide ` +\n `${provided}, but its link at ${options.linkDir} is not on the module resolution path of ` +\n `${generated.importer}. Codegen writes the store into the node_modules the installed @gtkx packages ` +\n \"resolve from; install them where the importing file reaches them, then run gtkx codegen again.\",\n );\n};\n\nconst undeclaredLibraryError = (source: string, namespace: string, girPath: string[]): Error => {\n const identifier = findGirIdentifier(girPath, namespace);\n\n if (identifier === undefined) {\n return new Error(\n `Cannot resolve \"${source}\": the binding store has no \"${namespace}\" module, and no ` +\n `GIR data for it was found in [${girPath.join(\", \")}]. If \"${namespace}\" is a library, install ` +\n \"its gobject-introspection data package. Adw-1 is bound by default and pulls in Gtk-4.0; add only other \" +\n \"GIR identifiers to `libraries` in gtkx.config.ts. Otherwise run gtkx codegen to regenerate the store.\",\n );\n }\n\n if (DEFAULT_LIBRARY_NAMESPACES.has(namespace)) {\n return new Error(\n `Cannot resolve \"${source}\": the \"${identifier}\" bindings have not been generated. ` +\n \"The Adwaita and GTK namespaces are generated implicitly; run gtkx dev or gtkx build again.\",\n );\n }\n\n return new Error(\n `Cannot resolve \"${source}\": the \"${identifier}\" bindings have not been generated. ` +\n `Add \"${identifier}\" to \\`libraries\\` in gtkx.config.ts, then run gtkx dev or gtkx build again.`,\n );\n};\n\nconst unresolvedModuleError = async (state: PluginState, generated: GeneratedModule): Promise<Error> => {\n const options = getStoreOptions(state.root, generated.kind);\n const exportKey = `./${generated.namespace}`;\n\n if (options !== null && hasStoreModule(options.storeDir, exportKey)) {\n return unreachableStoreError(generated, options);\n }\n\n return undeclaredLibraryError(generated.source, generated.namespace, await girSearchPaths(state));\n};\n\nfunction gtkxUndeclaredLibrary(loadConfig: ConfigLoader = createConfigLoader()): Plugin {\n const state: PluginState = {\n root: \"\",\n loadConfig,\n girPath: null,\n };\n\n return {\n name: \"gtkx:undeclared-library\",\n enforce: \"pre\",\n\n config(config: UserConfig) {\n state.root = viteProjectRoot(config);\n },\n\n async resolveId(source, importer, options) {\n const generated = parseGeneratedModule(source, importer);\n\n if (generated === null) {\n return;\n }\n\n const resolved = await this.resolve(source, importer, { ...options, skipSelf: true });\n\n if (resolved !== null) {\n return;\n }\n\n throw await unresolvedModuleError(state, generated);\n },\n };\n}\n\nexport { gtkxUndeclaredLibrary };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAU,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAU,MAAM,MAAM,CAAC;AA2O3C,iBAAS,UAAU,IAAI,MAAM,CAe5B;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|