@gtkx/cli 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/builder.d.ts +1 -0
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +2 -2
- package/dist/builder.js.map +1 -1
- package/dist/codegen/run-codegen.d.ts +2 -0
- package/dist/codegen/run-codegen.d.ts.map +1 -1
- package/dist/codegen/run-codegen.js +30 -6
- package/dist/codegen/run-codegen.js.map +1 -1
- package/dist/commands/codegen.js +1 -1
- package/dist/commands/codegen.js.map +1 -1
- package/dist/deploy/freedesktop/localize.d.ts +6 -0
- package/dist/deploy/freedesktop/localize.d.ts.map +1 -0
- package/dist/deploy/freedesktop/localize.js +107 -0
- package/dist/deploy/freedesktop/localize.js.map +1 -0
- package/dist/deploy/install-hints.d.ts.map +1 -1
- package/dist/deploy/install-hints.js +5 -0
- package/dist/deploy/install-hints.js.map +1 -1
- package/dist/deploy/payload/launcher.d.ts.map +1 -1
- package/dist/deploy/payload/launcher.js +2 -0
- package/dist/deploy/payload/launcher.js.map +1 -1
- package/dist/deploy/payload/stage.d.ts +1 -1
- package/dist/deploy/payload/stage.d.ts.map +1 -1
- package/dist/deploy/payload/stage.js +20 -11
- package/dist/deploy/payload/stage.js.map +1 -1
- package/dist/deploy/run-deploy.d.ts.map +1 -1
- package/dist/deploy/run-deploy.js +87 -15
- package/dist/deploy/run-deploy.js.map +1 -1
- package/dist/deploy/targets/flatpak-source.d.ts.map +1 -1
- package/dist/deploy/targets/flatpak-source.js +21 -10
- package/dist/deploy/targets/flatpak-source.js.map +1 -1
- package/dist/deploy/tools.d.ts +6 -1
- package/dist/deploy/tools.d.ts.map +1 -1
- package/dist/deploy/tools.js +26 -1
- package/dist/deploy/tools.js.map +1 -1
- package/dist/dev/locale-dir.d.ts +3 -0
- package/dist/dev/locale-dir.d.ts.map +1 -0
- package/dist/dev/locale-dir.js +17 -0
- package/dist/dev/locale-dir.js.map +1 -0
- package/dist/dev/runner-main.d.ts.map +1 -1
- package/dist/dev/runner-main.js +2 -0
- package/dist/dev/runner-main.js.map +1 -1
- package/dist/dev/runner.d.ts.map +1 -1
- package/dist/dev/runner.js +6 -0
- package/dist/dev/runner.js.map +1 -1
- package/dist/dev/vite-dev-server.d.ts +1 -0
- package/dist/dev/vite-dev-server.d.ts.map +1 -1
- package/dist/dev/vite-dev-server.js.map +1 -1
- package/dist/i18n/binding-extractor.d.ts +30 -0
- package/dist/i18n/binding-extractor.d.ts.map +1 -0
- package/dist/i18n/binding-extractor.js +1324 -0
- package/dist/i18n/binding-extractor.js.map +1 -0
- package/dist/i18n/catalog-template.d.ts +3 -0
- package/dist/i18n/catalog-template.d.ts.map +1 -0
- package/dist/i18n/catalog-template.js +18 -0
- package/dist/i18n/catalog-template.js.map +1 -0
- package/dist/i18n/catalogs.d.ts +21 -0
- package/dist/i18n/catalogs.d.ts.map +1 -0
- package/dist/i18n/catalogs.js +139 -0
- package/dist/i18n/catalogs.js.map +1 -0
- package/dist/i18n/extractor-plugin.d.ts +8 -0
- package/dist/i18n/extractor-plugin.d.ts.map +1 -0
- package/dist/i18n/extractor-plugin.js +247 -0
- package/dist/i18n/extractor-plugin.js.map +1 -0
- package/dist/i18n/metadata-templates.d.ts +11 -0
- package/dist/i18n/metadata-templates.d.ts.map +1 -0
- package/dist/i18n/metadata-templates.js +11 -0
- package/dist/i18n/metadata-templates.js.map +1 -0
- package/dist/i18n/source-messages.d.ts +23 -0
- package/dist/i18n/source-messages.d.ts.map +1 -0
- package/dist/i18n/source-messages.js +403 -0
- package/dist/i18n/source-messages.js.map +1 -0
- package/dist/i18n/types.d.ts +10 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/i18n/types.js +108 -0
- package/dist/i18n/types.js.map +1 -0
- package/dist/internal/source-imports.d.ts +5 -1
- package/dist/internal/source-imports.d.ts.map +1 -1
- package/dist/internal/source-imports.js +23 -44
- package/dist/internal/source-imports.js.map +1 -1
- package/dist/mcp/client.d.ts +0 -1
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/mcp/client.js +11 -39
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/handlers.d.ts +2 -1
- package/dist/mcp/handlers.d.ts.map +1 -1
- package/dist/mcp/handlers.js.map +1 -1
- package/dist/settings/render.d.ts +4 -1
- package/dist/settings/render.d.ts.map +1 -1
- package/dist/settings/render.js +11 -2
- package/dist/settings/render.js.map +1 -1
- package/dist/settings/schema.d.ts.map +1 -1
- package/dist/settings/schema.js +3 -1
- package/dist/settings/schema.js.map +1 -1
- package/dist/vite-plugins/asset-imports.d.ts.map +1 -1
- package/dist/vite-plugins/asset-imports.js +2 -12
- package/dist/vite-plugins/asset-imports.js.map +1 -1
- package/dist/vite-plugins/i18n.d.ts +5 -0
- package/dist/vite-plugins/i18n.d.ts.map +1 -0
- package/dist/vite-plugins/i18n.js +88 -0
- package/dist/vite-plugins/i18n.js.map +1 -0
- package/dist/vite-plugins/index.d.ts +1 -1
- package/dist/vite-plugins/index.d.ts.map +1 -1
- package/dist/vite-plugins/index.js +3 -1
- package/dist/vite-plugins/index.js.map +1 -1
- package/dist/vite-plugins/resources.d.ts.map +1 -1
- package/dist/vite-plugins/resources.js +10 -55
- package/dist/vite-plugins/resources.js.map +1 -1
- package/dist/vite-plugins/self-contained.d.ts.map +1 -1
- package/dist/vite-plugins/self-contained.js +128 -135
- package/dist/vite-plugins/self-contained.js.map +1 -1
- package/package.json +10 -9
- package/src/builder.ts +3 -2
- package/src/codegen/run-codegen.ts +53 -7
- package/src/commands/codegen.ts +1 -1
- package/src/deploy/freedesktop/localize.ts +144 -0
- package/src/deploy/install-hints.ts +5 -0
- package/src/deploy/payload/launcher.ts +2 -0
- package/src/deploy/payload/stage.ts +35 -10
- package/src/deploy/run-deploy.ts +128 -13
- package/src/deploy/targets/flatpak-source.ts +33 -10
- package/src/deploy/tools.ts +35 -0
- package/src/dev/locale-dir.ts +22 -0
- package/src/dev/runner-main.ts +2 -0
- package/src/dev/runner.ts +8 -0
- package/src/dev/vite-dev-server.ts +1 -0
- package/src/i18n/binding-extractor.ts +1969 -0
- package/src/i18n/catalog-template.ts +24 -0
- package/src/i18n/catalogs.ts +216 -0
- package/src/i18n/extractor-plugin.ts +413 -0
- package/src/i18n/metadata-templates.ts +29 -0
- package/src/i18n/source-messages.ts +608 -0
- package/src/i18n/types.ts +154 -0
- package/src/internal/source-imports.ts +28 -57
- package/src/mcp/client.ts +17 -44
- package/src/mcp/handlers.ts +7 -6
- package/src/settings/render.ts +16 -2
- package/src/settings/schema.ts +3 -1
- package/src/vite-plugins/asset-imports.ts +3 -15
- package/src/vite-plugins/i18n.ts +146 -0
- package/src/vite-plugins/index.ts +3 -0
- package/src/vite-plugins/resources.ts +10 -72
- package/src/vite-plugins/self-contained.ts +150 -169
|
@@ -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, ParserOptions, Plugin, ResolvedConfig, Rolldown, UserConfig, ViteDevServer } from \"vite\";\nimport { createConfigLoader, resourceBasePath } from \"@gtkx/config/internal\";\nimport { error, info, isRecord, sortStrings } 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 { resolveDataDir } from \"../internal/data-dir.js\";\nimport { type ListedFile, listFilesRecursive } from \"../internal/list-files.js\";\nimport { runCliTool } from \"../internal/run-cli-tool.js\";\nimport { parseRuntimeImportsIn, type SourceImport } from \"../internal/source-imports.js\";\nimport { createRetainedStagingDir, type RetainedStagingDir, withStagingDir } from \"../internal/staging-dir.js\";\nimport { ASSET_RE } from \"./asset-extensions.js\";\nimport {\n DATA_PREFIX,\n isBareRelativeAsset,\n isDataAsset,\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 isV2: boolean;\n entries: Map<string, ResourceEntry>;\n entryImporters: Map<string, Set<string>>;\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 dataDir: string | null;\n bundleReferenceId: string | null;\n iconOwners: Map<string, ResourceEntry>;\n iconImporters: Map<string, Set<string>>;\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;\ntype SourceLanguage = NonNullable<ParserOptions[\"lang\"]>;\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 LegacyResolveRequest = {\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 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 SOURCE_LANGUAGES: Map<string, SourceLanguage> = new Map([\n [\".cjs\", \"jsx\"],\n [\".cts\", \"ts\"],\n [\".js\", \"jsx\"],\n [\".jsx\", \"jsx\"],\n [\".mjs\", \"jsx\"],\n [\".mts\", \"ts\"],\n [\".ts\", \"ts\"],\n [\".tsx\", \"tsx\"],\n]);\n\nconst toForwardSlashes = (value: string): string => value.replaceAll(/[/\\\\]/g, \"/\");\n\nconst isWithin = (root: string, path: string): boolean => {\n const rel = relative(root, path);\n\n return rel.length > 0 && !isAbsolute(rel) && rel !== \"..\" && !rel.startsWith(`..${sep}`);\n};\n\nconst isDependencyFile = (root: string, path: string): boolean =>\n isWithin(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 (isWithin(state.root, sourcePath) && !isDependencyFile(state.root, sourcePath)) {\n return validateResourcePath(`${state.prefix}/${toForwardSlashes(relative(state.root, sourcePath))}`);\n }\n\n const owner = packageForFile(sourcePath);\n\n if (owner === null || !isWithin(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 = toForwardSlashes(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 = toForwardSlashes(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 = SOURCE_LANGUAGES.get(extname(stripQuery(id)).toLowerCase());\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 state: PluginState,\n code: string,\n id: string,\n): { code: string; moduleSideEffects: true } | null =>\n state.isV2 && 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 scanDataAssets = (dataDir: string): ListedFile[] => listFilesRecursive(dataDir, (name) => ASSET_RE.test(name));\n\nconst primeLegacyDevBundle = (state: PluginState): void => {\n if (state.dataDir === null) {\n return;\n }\n\n for (const { absPath, rel } of scanDataAssets(state.dataDir)) {\n registerEntry(state, absPath, rel);\n }\n\n compileDevBundle(state);\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 claimEntry = (state: PluginState, resourcePath: string, importer: string | undefined): void => {\n if (importer === undefined) {\n return;\n }\n\n const importers = state.entryImporters.get(resourcePath) ?? new Set<string>();\n importers.add(importerKey(importer));\n state.entryImporters.set(resourcePath, importers);\n};\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 claimIcon = (state: PluginState, iconIdentity: string, importer: string | undefined): void => {\n if (importer === undefined) {\n return;\n }\n\n const importers = state.iconImporters.get(iconIdentity) ?? new Set<string>();\n importers.add(importerKey(importer));\n state.iconImporters.set(iconIdentity, importers);\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, importer?: string): 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 claimEntry(state, entry.resourcePath, importer);\n\n return existing;\n }\n\n state.entries.set(entry.resourcePath, entry);\n state.sourcePaths.add(entry.sourcePath);\n claimEntry(state, entry.resourcePath, importer);\n\n return entry;\n};\n\nconst isDeclarativeImporter = (state: PluginState, importer: string | undefined): importer is string =>\n !state.isBuild && state.isV2 && 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 activateIcon = (\n state: PluginState,\n importer: string | undefined,\n iconIdentity: string,\n entry: ResourceEntry,\n): void => {\n state.iconOwners.set(iconIdentity, entry);\n claimIcon(state, iconIdentity, importer);\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, importer);\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 activateIcon(state, importer, 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 resolveLegacyAssetEntry = async (\n ctx: ResolveContext,\n state: PluginState,\n request: LegacyResolveRequest,\n): Promise<ResourceEntry | undefined> => {\n const resolved = await ctx.resolve(request.source, request.importer, { ...request.options, skipSelf: true });\n\n if (!resolved || resolved.external) {\n return undefined;\n }\n\n const sourcePath = stripQuery(resolved.id);\n\n if (!isAbsolute(sourcePath)) {\n return undefined;\n }\n\n return registerEntry(state, sourcePath, request.source.slice(DATA_PREFIX.length));\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 uri = `resource://${entry.resourcePath}`;\n const defaultValue = iconName ?? (state.isV2 ? entry.resourcePath : uri);\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 =>\n !file.endsWith(\".d.ts\") && !file.endsWith(\".d.cts\") && !file.endsWith(\".d.mts\") &&\n SOURCE_LANGUAGES.has(extname(file).toLowerCase());\n\nconst isBundledSource = (source: string): boolean =>\n parseResourceSpecifier(source) !== null || parseIconSpecifier(source) !== null;\n\nconst validateUnbundledV2Source = (source: string): void => {\n if (isLegacyDataSpecifier(source)) {\n throw new Error(`${JSON.stringify(source)} uses the legacy #data asset form`);\n }\n\n rejectInvalidV2Specifier(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 validateUnbundledV2Source(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.isV2 || 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 importer: string,\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 const activeEntry = activateEntry(state, entry, importer);\n state.iconOwners.set(iconIdentity, activeEntry);\n claimIcon(state, iconIdentity, importer);\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, importer);\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, importer, 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 entryImporters: state.entryImporters,\n iconImporters: state.iconImporters,\n iconOwners: state.iconOwners,\n sourcePaths: state.sourcePaths,\n };\n\n state.entries = new Map();\n state.entryImporters = new Map();\n state.iconImporters = 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.entryImporters = previous.entryImporters;\n state.iconImporters = previous.iconImporters;\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 cloneStringSetMap = (source: Map<string, Set<string>>): Map<string, Set<string>> => {\n const clone: Map<string, Set<string>> = new Map();\n\n for (const [key, values] of source) {\n clone.set(key, new Set(values));\n }\n\n return clone;\n};\n\nconst cloneDeclarationMap = (\n source: Map<string, Map<string, ResourceEntry>>,\n): Map<string, Map<string, ResourceEntry>> => {\n const clone: Map<string, Map<string, ResourceEntry>> = new Map();\n\n for (const [key, declarations] of source) {\n clone.set(key, new Map(declarations));\n }\n\n return clone;\n};\n\nconst reconciliationCandidate = (state: PluginState): PluginState => ({\n ...state,\n bundledSpecifiers: cloneStringSetMap(state.bundledSpecifiers),\n moduleDependencies: cloneStringSetMap(state.moduleDependencies),\n prunedDependencies: cloneStringSetMap(state.prunedDependencies),\n declaredEntries: cloneDeclarationMap(state.declaredEntries),\n declaredIcons: cloneDeclarationMap(state.declaredIcons),\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.entryImporters = candidate.entryImporters;\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 state.iconImporters = candidate.iconImporters;\n};\n\nconst reconcileV2Importer = 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 state.isV2 = loaded.config.future?.v2ResourceImports === true;\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 state.dataDir = null;\n\n if (state.isBuild || state.isV2) {\n return;\n }\n\n const relativeDataDir = resolveDataDir(config.root);\n state.dataDir = relativeDataDir === null ? null : join(config.root, relativeDataDir);\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 rejectInvalidV2Specifier = (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 \"or ?url for an emitted file\",\n );\n }\n};\n\nconst resolveExplicitResourceId = async (\n ctx: ResolveContext,\n state: PluginState,\n request: LegacyResolveRequest,\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: LegacyResolveRequest,\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 resolveV2ResourceId = async (\n ctx: ResolveContext,\n state: PluginState,\n request: LegacyResolveRequest,\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 rejectInvalidV2Specifier(request.source);\n\n return undefined;\n};\n\nconst resolveLegacyResourceId = async (\n ctx: ResolveContext,\n state: PluginState,\n request: LegacyResolveRequest,\n): Promise<string | undefined> => {\n if (BUNDLED_QUERY_MENTION_RE.test(request.source)) {\n throw new Error(`${JSON.stringify(request.source)} requires future.v2ResourceImports`);\n }\n\n if (!isDataAsset(request.source)) {\n return undefined;\n }\n\n const entry = await resolveLegacyAssetEntry(ctx, state, request);\n\n return entry === undefined ? undefined : virtualAssetId(entry);\n};\n\nconst resolveResourceId = (\n ctx: ResolveContext,\n state: PluginState,\n request: LegacyResolveRequest,\n): Promise<ResourceModuleId | undefined> => {\n if (request.source === VIRTUAL_INIT) {\n return Promise.resolve(VIRTUAL_INIT);\n }\n\n return state.isV2\n ? resolveV2ResourceId(ctx, state, request)\n : resolveLegacyResourceId(ctx, state, request);\n};\n\nconst configureResourceServer = (state: PluginState, server: ViteDevServer): void => {\n attachResourceWatcher(state, server);\n primeLegacyDevBundle(state);\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 configureResourceServer(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 reconcileV2Importer(this, state, id);\n\n return retainSideEffectIconImport(state, 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 isV2: false,\n entries: new Map(),\n entryImporters: 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 dataDir: null,\n bundleReferenceId: null,\n iconOwners: new Map(),\n iconImporters: 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 } from \"@gtkx/config/internal\";\nimport { error, info, isRecord, sortStrings } 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 { resolveDataDir } from \"../internal/data-dir.js\";\nimport { type ListedFile, listFilesRecursive } from \"../internal/list-files.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 DATA_PREFIX,\n isBareRelativeAsset,\n isDataAsset,\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 isV2: 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 dataDir: string | null;\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 LegacyResolveRequest = {\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 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 toForwardSlashes = (value: string): string => value.replaceAll(/[/\\\\]/g, \"/\");\n\nconst isWithin = (root: string, path: string): boolean => {\n const rel = relative(root, path);\n\n return rel.length > 0 && !isAbsolute(rel) && rel !== \"..\" && !rel.startsWith(`..${sep}`);\n};\n\nconst isDependencyFile = (root: string, path: string): boolean =>\n isWithin(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 (isWithin(state.root, sourcePath) && !isDependencyFile(state.root, sourcePath)) {\n return validateResourcePath(`${state.prefix}/${toForwardSlashes(relative(state.root, sourcePath))}`);\n }\n\n const owner = packageForFile(sourcePath);\n\n if (owner === null || !isWithin(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 = toForwardSlashes(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 = toForwardSlashes(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 state: PluginState,\n code: string,\n id: string,\n): { code: string; moduleSideEffects: true } | null =>\n state.isV2 && 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 scanDataAssets = (dataDir: string): ListedFile[] => listFilesRecursive(dataDir, (name) => ASSET_RE.test(name));\n\nconst primeLegacyDevBundle = (state: PluginState): void => {\n if (state.dataDir === null) {\n return;\n }\n\n for (const { absPath, rel } of scanDataAssets(state.dataDir)) {\n registerEntry(state, absPath, rel);\n }\n\n compileDevBundle(state);\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 && state.isV2 && 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 resolveLegacyAssetEntry = async (\n ctx: ResolveContext,\n state: PluginState,\n request: LegacyResolveRequest,\n): Promise<ResourceEntry | undefined> => {\n const resolved = await ctx.resolve(request.source, request.importer, { ...request.options, skipSelf: true });\n\n if (!resolved || resolved.external) {\n return undefined;\n }\n\n const sourcePath = stripQuery(resolved.id);\n\n if (!isAbsolute(sourcePath)) {\n return undefined;\n }\n\n return registerEntry(state, sourcePath, request.source.slice(DATA_PREFIX.length));\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 uri = `resource://${entry.resourcePath}`;\n const defaultValue = iconName ?? (state.isV2 ? entry.resourcePath : uri);\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 validateUnbundledV2Source = (source: string): void => {\n if (isLegacyDataSpecifier(source)) {\n throw new Error(`${JSON.stringify(source)} uses the legacy #data asset form`);\n }\n\n rejectInvalidV2Specifier(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 validateUnbundledV2Source(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.isV2 || 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 cloneStringSetMap = (source: Map<string, Set<string>>): Map<string, Set<string>> => {\n const clone: Map<string, Set<string>> = new Map();\n\n for (const [key, values] of source) {\n clone.set(key, new Set(values));\n }\n\n return clone;\n};\n\nconst cloneDeclarationMap = (\n source: Map<string, Map<string, ResourceEntry>>,\n): Map<string, Map<string, ResourceEntry>> => {\n const clone: Map<string, Map<string, ResourceEntry>> = new Map();\n\n for (const [key, declarations] of source) {\n clone.set(key, new Map(declarations));\n }\n\n return clone;\n};\n\nconst reconciliationCandidate = (state: PluginState): PluginState => ({\n ...state,\n bundledSpecifiers: cloneStringSetMap(state.bundledSpecifiers),\n moduleDependencies: cloneStringSetMap(state.moduleDependencies),\n prunedDependencies: cloneStringSetMap(state.prunedDependencies),\n declaredEntries: cloneDeclarationMap(state.declaredEntries),\n declaredIcons: cloneDeclarationMap(state.declaredIcons),\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 reconcileV2Importer = 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 state.isV2 = loaded.config.future?.v2ResourceImports === true;\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 state.dataDir = null;\n\n if (state.isBuild || state.isV2) {\n return;\n }\n\n const relativeDataDir = resolveDataDir(config.root);\n state.dataDir = relativeDataDir === null ? null : join(config.root, relativeDataDir);\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 rejectInvalidV2Specifier = (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 \"or ?url for an emitted file\",\n );\n }\n};\n\nconst resolveExplicitResourceId = async (\n ctx: ResolveContext,\n state: PluginState,\n request: LegacyResolveRequest,\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: LegacyResolveRequest,\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 resolveV2ResourceId = async (\n ctx: ResolveContext,\n state: PluginState,\n request: LegacyResolveRequest,\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 rejectInvalidV2Specifier(request.source);\n\n return undefined;\n};\n\nconst resolveLegacyResourceId = async (\n ctx: ResolveContext,\n state: PluginState,\n request: LegacyResolveRequest,\n): Promise<string | undefined> => {\n if (BUNDLED_QUERY_MENTION_RE.test(request.source)) {\n throw new Error(`${JSON.stringify(request.source)} requires future.v2ResourceImports`);\n }\n\n if (!isDataAsset(request.source)) {\n return undefined;\n }\n\n const entry = await resolveLegacyAssetEntry(ctx, state, request);\n\n return entry === undefined ? undefined : virtualAssetId(entry);\n};\n\nconst resolveResourceId = (\n ctx: ResolveContext,\n state: PluginState,\n request: LegacyResolveRequest,\n): Promise<ResourceModuleId | undefined> => {\n if (request.source === VIRTUAL_INIT) {\n return Promise.resolve(VIRTUAL_INIT);\n }\n\n return state.isV2\n ? resolveV2ResourceId(ctx, state, request)\n : resolveLegacyResourceId(ctx, state, request);\n};\n\nconst configureResourceServer = (state: PluginState, server: ViteDevServer): void => {\n attachResourceWatcher(state, server);\n primeLegacyDevBundle(state);\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 configureResourceServer(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 reconcileV2Importer(this, state, id);\n\n return retainSideEffectIconImport(state, 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 isV2: 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 dataDir: null,\n bundleReferenceId: null,\n iconOwners: new Map(),\n };\n\n return createResourcesPlugin(state, loadConfig);\n}\n\nexport { gtkxResources };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-contained.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/self-contained.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"self-contained.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/self-contained.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,MAAM,EAAiB,MAAM,MAAM,CAAC;AA2T1D,iBAAS,iBAAiB,IAAI,MAAM,CAenC;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|