@gtkx/cli 1.0.0-rc.2 → 1.0.0-rc.4
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 +4 -5
- package/dist/codegen/freshness.d.ts.map +1 -1
- package/dist/codegen/freshness.js +5 -6
- package/dist/codegen/freshness.js.map +1 -1
- package/dist/codegen/run-codegen.d.ts +5 -5
- package/dist/codegen/run-codegen.d.ts.map +1 -1
- package/dist/codegen/run-codegen.js +22 -26
- package/dist/codegen/run-codegen.js.map +1 -1
- package/dist/codegen/store-resolver.d.ts +3 -5
- package/dist/codegen/store-resolver.d.ts.map +1 -1
- package/dist/codegen/store-resolver.js +13 -35
- package/dist/codegen/store-resolver.js.map +1 -1
- package/dist/commands/build.js +1 -1
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/codegen.js +1 -1
- package/dist/commands/codegen.js.map +1 -1
- package/dist/commands/dev.js +1 -1
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/docs.d.ts.map +1 -1
- package/dist/commands/docs.js +16 -13
- package/dist/commands/docs.js.map +1 -1
- package/dist/dev/supervisor.js +14 -14
- package/dist/dev/supervisor.js.map +1 -1
- package/dist/mcp/handlers.js +1 -1
- package/dist/mcp/handlers.js.map +1 -1
- package/dist/mcp/serialize-widget.js +2 -2
- package/dist/mcp/serialize-widget.js.map +1 -1
- package/dist/refresh-runtime.d.ts +0 -10
- package/dist/refresh-runtime.d.ts.map +1 -1
- package/dist/refresh-runtime.js +0 -17
- package/dist/refresh-runtime.js.map +1 -1
- package/dist/settings/schema.d.ts +1 -1
- package/dist/settings/schema.d.ts.map +1 -1
- package/dist/settings/schema.js +1 -1
- package/dist/settings/schema.js.map +1 -1
- package/dist/vite-plugins/index.js +1 -1
- package/dist/vite-plugins/index.js.map +1 -1
- package/dist/vite-plugins/react-compiler.js +1 -1
- package/dist/vite-plugins/react-compiler.js.map +1 -1
- package/dist/vite-plugins/resources.js +1 -1
- package/dist/vite-plugins/resources.js.map +1 -1
- package/dist/vite-plugins/undeclared-library.d.ts +2 -1
- package/dist/vite-plugins/undeclared-library.d.ts.map +1 -1
- package/dist/vite-plugins/undeclared-library.js +4 -4
- package/dist/vite-plugins/undeclared-library.js.map +1 -1
- package/dist/vitest-plugin.d.ts +0 -6
- package/dist/vitest-plugin.d.ts.map +1 -1
- package/dist/vitest-plugin.js +0 -6
- package/dist/vitest-plugin.js.map +1 -1
- package/env.d.ts +25 -0
- package/package.json +11 -11
- package/src/codegen/freshness.ts +5 -8
- package/src/codegen/run-codegen.ts +34 -44
- package/src/codegen/store-resolver.ts +16 -46
- package/src/commands/build.ts +1 -1
- package/src/commands/codegen.ts +1 -1
- package/src/commands/dev.ts +1 -1
- package/src/commands/docs.ts +24 -13
- package/src/dev/supervisor.ts +16 -16
- package/src/mcp/handlers.ts +1 -1
- package/src/mcp/serialize-widget.ts +2 -2
- package/src/refresh-runtime.ts +0 -17
- package/src/settings/schema.ts +2 -2
- package/src/vite-plugins/index.ts +1 -1
- package/src/vite-plugins/react-compiler.ts +2 -2
- package/src/vite-plugins/resources.ts +1 -1
- package/src/vite-plugins/undeclared-library.ts +6 -5
- package/src/vitest-plugin.ts +0 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/vite-plugins/resources.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Plugin, ResolvedConfig, UserConfig, ViteDevServer } from \"vite\";\nimport { type ConfigLoader, createConfigLoader } from \"@gtkx/config/internal\";\nimport { error, formatChildProcessError, info, sortStrings } from \"@gtkx/utils\";\nimport { execFileSync } from \"node:child_process\";\nimport { copyFileSync, mkdirSync, mkdtempSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { dirname, join } from \"node:path\";\nimport { DATA_IMPORT_PREFIX, resolveDataDir } from \"../internal/data-dir.js\";\nimport { type ListedFile, listFilesRecursive } from \"../internal/list-files.js\";\nimport { resolveCliTool } from \"../internal/resolve-cli-tool.js\";\nimport { withStagingDir } from \"../internal/staging-dir.js\";\nimport { ASSET_PATH_RE, ASSET_RE } from \"./asset-extensions.js\";\nimport { renderInitModule } from \"./resource-init-module.js\";\nimport {\n BUNDLE_FILENAME,\n escapeXml,\n fromVirtualId,\n isVirtual,\n REFRESH_EXPORT,\n REL_SEPARATOR,\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 isBuild: boolean;\n entries: Map<string, ResourceEntry>;\n sourcePaths: Set<string>;\n devStagingDir: string | null;\n devBundlePath: string;\n server: ViteDevServer | null;\n compiledSignature: string;\n dataDir: string | null;\n};\n\nconst DATA_PREFIX = `${DATA_IMPORT_PREFIX}/`;\nconst RESOURCE_COMPILER = \"glib-compile-resources\";\nconst MANIFEST_PREFIX = \"/\";\n\nconst deriveResourcePrefix = (applicationId: string): string => `/${applicationId.replaceAll(\".\", \"/\")}`;\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 try {\n execFileSync(resolveCliTool(RESOURCE_COMPILER), [\n `--sourcedir=${sourceDir}`,\n `--target=${outputPath}`,\n manifest,\n ]);\n } catch (error) {\n const details = formatChildProcessError(error);\n const suffix = details ? `:\\n${details}` : \"\";\n throw new Error(`${RESOURCE_COMPILER} failed${suffix}`, { cause: error });\n }\n\n return readFileSync(outputPath);\n};\n\nconst ensureStagingDir = (state: PluginState): void => {\n if (state.devStagingDir) {\n return;\n }\n\n state.devStagingDir = mkdtempSync(join(tmpdir(), \"gtkx-resources-dev-\"));\n state.devBundlePath = join(state.devStagingDir, BUNDLE_FILENAME);\n};\n\nconst entriesSignature = (state: PluginState): string => sortStrings(state.entries.keys()).join(\"\\0\");\n\nconst compileDevBundle = (state: PluginState): void => {\n ensureStagingDir(state);\n\n if (state.entries.size === 0) {\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 reregisterDevBundle = async (state: PluginState): Promise<void> => {\n const server = state.server;\n\n if (!server) {\n return;\n }\n\n const mod = await server.ssrLoadModule(VIRTUAL_INIT);\n const refresh: unknown = mod[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 primeDevBundle = (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 registerEntry = (state: PluginState, absPath: string, rel: string): ResourceEntry => {\n const existing = state.entries.get(absPath);\n\n if (existing) {\n return existing;\n }\n\n const resourcePath = `${state.prefix}/${rel}`;\n\n const entry: ResourceEntry = {\n sourcePath: absPath,\n stagedRelPath: resourcePath.replace(/^\\/+/, \"\"),\n resourcePath,\n };\n\n state.entries.set(absPath, entry);\n state.sourcePaths.add(absPath);\n\n return entry;\n};\n\nconst isTrackedSource = (state: PluginState, file: string): boolean => state.sourcePaths.has(file);\n\nconst dataAssetSource = (source: string): string | null => {\n const clean = stripQuery(source);\n\n if (!clean.startsWith(DATA_PREFIX) || !ASSET_PATH_RE.test(clean)) {\n return null;\n }\n\n return clean;\n};\n\nconst resolvedAssetId = (\n resolved: { id: string; external: boolean | string } | null,\n clean: string,\n): string | undefined => {\n if (!resolved || resolved.external) {\n return undefined;\n }\n\n return toVirtualId(resolved.id) + REL_SEPARATOR + clean.slice(DATA_PREFIX.length);\n};\n\nconst loadInitModule = (state: PluginState): string => {\n if (!state.isBuild) {\n ensureStagingDir(state);\n }\n\n return renderInitModule({ isBuild: state.isBuild, devBundlePath: state.devBundlePath });\n};\n\nconst loadAssetModule = (state: PluginState, virtualId: string): string => {\n const rest = fromVirtualId(virtualId);\n const separatorIndex = rest.indexOf(REL_SEPARATOR);\n const absPath = rest.slice(0, separatorIndex);\n const rel = rest.slice(separatorIndex + REL_SEPARATOR.length);\n const entry = registerEntry(state, absPath, rel);\n const uri = `resource://${entry.resourcePath}`;\n\n if (!state.isBuild) {\n registerDevAsset(state);\n }\n\n return [\n `import { ensureRegistered } from ${JSON.stringify(VIRTUAL_INIT)};`,\n \"ensureRegistered();\",\n `export default ${JSON.stringify(uri)};`,\n `export const path = ${JSON.stringify(entry.resourcePath)};`,\n ].join(\"\\n\");\n};\n\nconst emitBuildBundle = (\n ctx: { emitFile: (asset: { type: \"asset\"; fileName: string; source: Buffer }) => string },\n state: PluginState,\n): void => {\n if (!state.isBuild || state.entries.size === 0) {\n return;\n }\n\n const compiled = withStagingDir(\"resources-out\", (outDir) => compileBundle(state, join(outDir, BUNDLE_FILENAME)));\n ctx.emitFile({ type: \"asset\", fileName: BUNDLE_FILENAME, source: compiled });\n info(`Compiled ${String(state.entries.size)} resource(s) into ${BUNDLE_FILENAME}`);\n};\n\nconst refreshDevRegistration = async (state: PluginState): Promise<void> => {\n compileDevBundle(state);\n\n try {\n await reregisterDevBundle(state);\n } catch (error_) {\n error(\"Failed to refresh GResource bundle:\", error_);\n }\n};\n\nconst resolveResourceConfig = async (state: PluginState, config: UserConfig, loadConfig: ConfigLoader) => {\n const { applicationId } = await loadConfig(config.root ?? process.cwd());\n state.prefix = deriveResourcePrefix(applicationId);\n\n return {\n assetsInclude: [ASSET_RE],\n };\n};\n\nconst refreshTrackedSource = async (state: PluginState, file: string): Promise<void> => {\n if (!isTrackedSource(state, file)) {\n return;\n }\n\n try {\n await refreshDevRegistration(state);\n } catch (error_) {\n error(\"GResource refresh failed:\", error_);\n }\n};\n\nconst attachResourceWatcher = (state: PluginState, server: ViteDevServer): void => {\n state.server = server;\n\n const onFileEvent = (file: string): void => {\n void refreshTrackedSource(state, file);\n };\n\n server.watcher.on(\"change\", onFileEvent);\n server.watcher.on(\"add\", onFileEvent);\n};\n\nconst applyResolvedConfig = (state: PluginState, config: ResolvedConfig): void => {\n state.isBuild = config.command === \"build\";\n\n if (state.isBuild) {\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\nfunction gtkxResources(loadConfig: ConfigLoader = createConfigLoader()): Plugin {\n const state: PluginState = {\n prefix: \"\",\n isBuild: false,\n entries: new Map(),\n sourcePaths: new Set(),\n devStagingDir: null,\n devBundlePath: \"\",\n server: null,\n compiledSignature: \"\",\n dataDir: null,\n };\n\n return {\n name: \"gtkx:resources\",\n enforce: \"pre\",\n\n config(config: UserConfig) {\n return resolveResourceConfig(state, config, loadConfig);\n },\n\n configResolved(config: ResolvedConfig) {\n applyResolvedConfig(state, config);\n },\n\n configureServer(server) {\n attachResourceWatcher(state, server);\n primeDevBundle(state);\n },\n\n async resolveId(source, importer, opts) {\n if (source === VIRTUAL_INIT) {\n return VIRTUAL_INIT;\n }\n\n const clean = dataAssetSource(source);\n\n if (clean === null) {\n return;\n }\n\n const resolved = await this.resolve(clean, importer, { ...opts, skipSelf: true });\n\n return resolvedAssetId(resolved, clean);\n },\n\n load(id) {\n return loadResourceModule(state, id);\n },\n\n buildEnd() {\n emitBuildBundle(this, state);\n },\n };\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 { Plugin, ResolvedConfig, UserConfig, ViteDevServer } from \"vite\";\nimport { type ConfigLoader, createConfigLoader } from \"@gtkx/config/internal\";\nimport { error, formatChildProcessError, info, sortStrings } from \"@gtkx/utils\";\nimport { execFileSync } from \"node:child_process\";\nimport { copyFileSync, mkdirSync, mkdtempSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { dirname, join } from \"node:path\";\nimport { DATA_IMPORT_PREFIX, resolveDataDir } from \"../internal/data-dir.js\";\nimport { type ListedFile, listFilesRecursive } from \"../internal/list-files.js\";\nimport { resolveCliTool } from \"../internal/resolve-cli-tool.js\";\nimport { withStagingDir } from \"../internal/staging-dir.js\";\nimport { ASSET_PATH_RE, ASSET_RE } from \"./asset-extensions.js\";\nimport { renderInitModule } from \"./resource-init-module.js\";\nimport {\n BUNDLE_FILENAME,\n escapeXml,\n fromVirtualId,\n isVirtual,\n REFRESH_EXPORT,\n REL_SEPARATOR,\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 isBuild: boolean;\n entries: Map<string, ResourceEntry>;\n sourcePaths: Set<string>;\n devStagingDir: string | null;\n devBundlePath: string;\n server: ViteDevServer | null;\n compiledSignature: string;\n dataDir: string | null;\n};\n\nconst DATA_PREFIX = `${DATA_IMPORT_PREFIX}/`;\nconst RESOURCE_COMPILER = \"glib-compile-resources\";\nconst MANIFEST_PREFIX = \"/\";\n\nconst deriveResourcePrefix = (applicationId: string): string => `/${applicationId.replaceAll(\".\", \"/\")}`;\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 try {\n execFileSync(resolveCliTool(RESOURCE_COMPILER), [\n `--sourcedir=${sourceDir}`,\n `--target=${outputPath}`,\n manifest,\n ]);\n } catch (error) {\n const details = formatChildProcessError(error);\n const suffix = details ? `:\\n${details}` : \"\";\n throw new Error(`${RESOURCE_COMPILER} failed${suffix}`, { cause: error });\n }\n\n return readFileSync(outputPath);\n};\n\nconst ensureStagingDir = (state: PluginState): void => {\n if (state.devStagingDir) {\n return;\n }\n\n state.devStagingDir = mkdtempSync(join(tmpdir(), \"gtkx-resources-dev-\"));\n state.devBundlePath = join(state.devStagingDir, BUNDLE_FILENAME);\n};\n\nconst entriesSignature = (state: PluginState): string => sortStrings(state.entries.keys()).join(\"\\0\");\n\nconst compileDevBundle = (state: PluginState): void => {\n ensureStagingDir(state);\n\n if (state.entries.size === 0) {\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 reregisterDevBundle = async (state: PluginState): Promise<void> => {\n const server = state.server;\n\n if (!server) {\n return;\n }\n\n const mod = await server.ssrLoadModule(VIRTUAL_INIT);\n const refresh: unknown = mod[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 primeDevBundle = (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 registerEntry = (state: PluginState, absPath: string, rel: string): ResourceEntry => {\n const existing = state.entries.get(absPath);\n\n if (existing) {\n return existing;\n }\n\n const resourcePath = `${state.prefix}/${rel}`;\n\n const entry: ResourceEntry = {\n sourcePath: absPath,\n stagedRelPath: resourcePath.replace(/^\\/+/, \"\"),\n resourcePath,\n };\n\n state.entries.set(absPath, entry);\n state.sourcePaths.add(absPath);\n\n return entry;\n};\n\nconst isTrackedSource = (state: PluginState, file: string): boolean => state.sourcePaths.has(file);\n\nconst dataAssetSource = (source: string): string | null => {\n const clean = stripQuery(source);\n\n if (!clean.startsWith(DATA_PREFIX) || !ASSET_PATH_RE.test(clean)) {\n return null;\n }\n\n return clean;\n};\n\nconst resolvedAssetId = (\n resolved: { id: string; external: boolean | string } | null,\n clean: string,\n): string | undefined => {\n if (!resolved || resolved.external) {\n return undefined;\n }\n\n return toVirtualId(resolved.id) + REL_SEPARATOR + clean.slice(DATA_PREFIX.length);\n};\n\nconst loadInitModule = (state: PluginState): string => {\n if (!state.isBuild) {\n ensureStagingDir(state);\n }\n\n return renderInitModule({ isBuild: state.isBuild, devBundlePath: state.devBundlePath });\n};\n\nconst loadAssetModule = (state: PluginState, virtualId: string): string => {\n const rest = fromVirtualId(virtualId);\n const separatorIndex = rest.indexOf(REL_SEPARATOR);\n const absPath = rest.slice(0, separatorIndex);\n const rel = rest.slice(separatorIndex + REL_SEPARATOR.length);\n const entry = registerEntry(state, absPath, rel);\n const uri = `resource://${entry.resourcePath}`;\n\n if (!state.isBuild) {\n registerDevAsset(state);\n }\n\n return [\n `import { ensureRegistered } from ${JSON.stringify(VIRTUAL_INIT)};`,\n \"ensureRegistered();\",\n `export default ${JSON.stringify(uri)};`,\n `export const path = ${JSON.stringify(entry.resourcePath)};`,\n ].join(\"\\n\");\n};\n\nconst emitBuildBundle = (\n ctx: { emitFile: (asset: { type: \"asset\"; fileName: string; source: Buffer }) => string },\n state: PluginState,\n): void => {\n if (!state.isBuild || state.entries.size === 0) {\n return;\n }\n\n const compiled = withStagingDir(\"resources-out\", (outDir) => compileBundle(state, join(outDir, BUNDLE_FILENAME)));\n ctx.emitFile({ type: \"asset\", fileName: BUNDLE_FILENAME, source: compiled });\n info(`Compiled ${String(state.entries.size)} resource(s) into ${BUNDLE_FILENAME}`);\n};\n\nconst refreshDevRegistration = async (state: PluginState): Promise<void> => {\n compileDevBundle(state);\n\n try {\n await reregisterDevBundle(state);\n } catch (error_) {\n error(\"Failed to refresh GResource bundle:\", error_);\n }\n};\n\nconst resolveResourceConfig = async (state: PluginState, config: UserConfig, loadConfig: ConfigLoader) => {\n const { applicationId } = await loadConfig.resolve(config.root ?? process.cwd());\n state.prefix = deriveResourcePrefix(applicationId);\n\n return {\n assetsInclude: [ASSET_RE],\n };\n};\n\nconst refreshTrackedSource = async (state: PluginState, file: string): Promise<void> => {\n if (!isTrackedSource(state, file)) {\n return;\n }\n\n try {\n await refreshDevRegistration(state);\n } catch (error_) {\n error(\"GResource refresh failed:\", error_);\n }\n};\n\nconst attachResourceWatcher = (state: PluginState, server: ViteDevServer): void => {\n state.server = server;\n\n const onFileEvent = (file: string): void => {\n void refreshTrackedSource(state, file);\n };\n\n server.watcher.on(\"change\", onFileEvent);\n server.watcher.on(\"add\", onFileEvent);\n};\n\nconst applyResolvedConfig = (state: PluginState, config: ResolvedConfig): void => {\n state.isBuild = config.command === \"build\";\n\n if (state.isBuild) {\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\nfunction gtkxResources(loadConfig: ConfigLoader = createConfigLoader()): Plugin {\n const state: PluginState = {\n prefix: \"\",\n isBuild: false,\n entries: new Map(),\n sourcePaths: new Set(),\n devStagingDir: null,\n devBundlePath: \"\",\n server: null,\n compiledSignature: \"\",\n dataDir: null,\n };\n\n return {\n name: \"gtkx:resources\",\n enforce: \"pre\",\n\n config(config: UserConfig) {\n return resolveResourceConfig(state, config, loadConfig);\n },\n\n configResolved(config: ResolvedConfig) {\n applyResolvedConfig(state, config);\n },\n\n configureServer(server) {\n attachResourceWatcher(state, server);\n primeDevBundle(state);\n },\n\n async resolveId(source, importer, opts) {\n if (source === VIRTUAL_INIT) {\n return VIRTUAL_INIT;\n }\n\n const clean = dataAssetSource(source);\n\n if (clean === null) {\n return;\n }\n\n const resolved = await this.resolve(clean, importer, { ...opts, skipSelf: true });\n\n return resolvedAssetId(resolved, clean);\n },\n\n load(id) {\n return loadResourceModule(state, id);\n },\n\n buildEnd() {\n emitBuildBundle(this, state);\n },\n };\n}\n\nexport { gtkxResources };\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import type { ConfigLoader } from "@gtkx/config/internal";
|
|
1
2
|
import type { Plugin } from "vite";
|
|
2
|
-
declare function gtkxUndeclaredLibrary(
|
|
3
|
+
declare function gtkxUndeclaredLibrary(loadConfig?: ConfigLoader): Plugin;
|
|
3
4
|
export { gtkxUndeclaredLibrary };
|
|
4
5
|
//# sourceMappingURL=undeclared-library.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"undeclared-library.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/undeclared-library.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,MAAM,CAAC;AA4C/C,iBAAS,qBAAqB,CAAC,
|
|
1
|
+
{"version":3,"file":"undeclared-library.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/undeclared-library.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,MAAM,CAAC;AA4C/C,iBAAS,qBAAqB,CAAC,UAAU,GAAE,YAAmC,GAAG,MAAM,CA+BtF;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { discoverGirNamespaces, resolveGirPath } from "@gtkx/codegen";
|
|
2
|
-
import {
|
|
2
|
+
import { createConfigLoader } from "@gtkx/config/internal";
|
|
3
3
|
const GENERATED_MODULE_PATTERN = /^@gtkx\/(?:gi|jsx)\/([a-z0-9]+)$/;
|
|
4
4
|
const girSearchPaths = async (state) => {
|
|
5
5
|
if (state.girPath === null) {
|
|
6
|
-
const { config } = await loadConfig(state.root
|
|
6
|
+
const { config } = await state.loadConfig.load(state.root);
|
|
7
7
|
state.girPath = resolveGirPath(config.girPath);
|
|
8
8
|
}
|
|
9
9
|
return state.girPath;
|
|
@@ -21,10 +21,10 @@ const undeclaredLibraryError = (source, namespace, girPath) => {
|
|
|
21
21
|
return new Error(`Cannot resolve "${source}": the "${identifier}" bindings have not been generated. ` +
|
|
22
22
|
`Add "${identifier}" to \`libraries\` in gtkx.config.ts, then run gtkx dev or gtkx build again.`);
|
|
23
23
|
};
|
|
24
|
-
function gtkxUndeclaredLibrary(
|
|
24
|
+
function gtkxUndeclaredLibrary(loadConfig = createConfigLoader()) {
|
|
25
25
|
const state = {
|
|
26
26
|
root: "",
|
|
27
|
-
|
|
27
|
+
loadConfig,
|
|
28
28
|
girPath: null,
|
|
29
29
|
};
|
|
30
30
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"undeclared-library.js","sourceRoot":"","sources":["../../src/vite-plugins/undeclared-library.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"undeclared-library.js","sourceRoot":"","sources":["../../src/vite-plugins/undeclared-library.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAQ3D,MAAM,wBAAwB,GAAG,kCAAkC,CAAC;AAEpE,MAAM,cAAc,GAAG,KAAK,EAAE,KAAkB,EAAqB,EAAE;IACnE,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QACzB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3D,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,UAAkB,EAAU,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAEhH,MAAM,iBAAiB,GAAG,CAAC,OAAiB,EAAE,SAAiB,EAAsB,EAAE,CACnF,qBAAqB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC,CAAC;AAEhG,MAAM,sBAAsB,GAAG,CAAC,MAAc,EAAE,SAAiB,EAAE,OAAiB,EAAS,EAAE;IAC3F,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAEzD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,IAAI,KAAK,CACZ,mBAAmB,MAAM,gCAAgC,SAAS,mCAAmC;YACrG,iBAAiB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,SAAS,8BAA8B;YACpF,kGAAkG;YAClG,qDAAqD,CACxD,CAAC;IACN,CAAC;IAED,OAAO,IAAI,KAAK,CACZ,mBAAmB,MAAM,WAAW,UAAU,sCAAsC;QACpF,QAAQ,UAAU,8EAA8E,CACnG,CAAC;AACN,CAAC,CAAC;AAEF,SAAS,qBAAqB,CAAC,aAA2B,kBAAkB,EAAE;IAC1E,MAAM,KAAK,GAAgB;QACvB,IAAI,EAAE,EAAE;QACR,UAAU;QACV,OAAO,EAAE,IAAI;KAChB,CAAC;IAEF,OAAO;QACH,IAAI,EAAE,yBAAyB;QAC/B,OAAO,EAAE,KAAK;QAEd,MAAM,CAAC,MAAkB;YACrB,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC9C,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO;YACrC,MAAM,SAAS,GAAG,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAE7D,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAEtF,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO;YACX,CAAC;YAED,MAAM,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QACjF,CAAC;KACJ,CAAC;AACN,CAAC;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC","sourcesContent":["import type { ConfigLoader } from \"@gtkx/config/internal\";\nimport type { Plugin, UserConfig } from \"vite\";\nimport { discoverGirNamespaces, resolveGirPath } from \"@gtkx/codegen\";\nimport { createConfigLoader } from \"@gtkx/config/internal\";\n\ntype PluginState = {\n root: string;\n loadConfig: ConfigLoader;\n girPath: string[] | null;\n};\n\nconst GENERATED_MODULE_PATTERN = /^@gtkx\\/(?:gi|jsx)\\/([a-z0-9]+)$/;\n\nconst girSearchPaths = async (state: PluginState): Promise<string[]> => {\n if (state.girPath === null) {\n const { config } = await state.loadConfig.load(state.root);\n state.girPath = resolveGirPath(config.girPath);\n }\n\n return state.girPath;\n};\n\nconst getNamespace = (identifier: string): string => identifier.slice(0, identifier.indexOf(\"-\")).toLowerCase();\n\nconst findGirIdentifier = (girPath: string[], namespace: string): string | undefined =>\n discoverGirNamespaces(girPath).find((identifier) => getNamespace(identifier) === namespace);\n\nconst undeclaredLibraryError = (source: string, namespace: string, girPath: string[]): Error => {\n const identifier = findGirIdentifier(girPath, namespace);\n\n if (identifier === undefined) {\n return new Error(\n `Cannot resolve \"${source}\": the binding store has no \"${namespace}\" module, and no GIR data for it ` +\n `was found in [${girPath.join(\", \")}]. If \"${namespace}\" is a library, install its ` +\n \"gobject-introspection data package and add its GIR identifier to `libraries` in gtkx.config.ts. \" +\n \"Otherwise run gtkx codegen to regenerate the store.\",\n );\n }\n\n return new Error(\n `Cannot resolve \"${source}\": the \"${identifier}\" bindings have not been generated. ` +\n `Add \"${identifier}\" to \\`libraries\\` in gtkx.config.ts, then run gtkx dev or gtkx build again.`,\n );\n};\n\nfunction gtkxUndeclaredLibrary(loadConfig: ConfigLoader = createConfigLoader()): Plugin {\n const state: PluginState = {\n root: \"\",\n loadConfig,\n girPath: null,\n };\n\n return {\n name: \"gtkx:undeclared-library\",\n enforce: \"pre\",\n\n config(config: UserConfig) {\n state.root = config.root ?? process.cwd();\n },\n\n async resolveId(source, importer, options) {\n const namespace = GENERATED_MODULE_PATTERN.exec(source)?.[1];\n\n if (namespace === undefined) {\n return;\n }\n\n const resolved = await this.resolve(source, importer, { ...options, skipSelf: true });\n\n if (resolved !== null) {\n return;\n }\n\n throw undeclaredLibraryError(source, namespace, await girSearchPaths(state));\n },\n };\n}\n\nexport { gtkxUndeclaredLibrary };\n"]}
|
package/dist/vitest-plugin.d.ts
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
1
|
import type { Plugin } from "vite";
|
|
2
|
-
/**
|
|
3
|
-
* Vite plugin factory that assembles the plugins needed to run GTKX apps under Vitest,
|
|
4
|
-
* combining the shared GTKX Vite plugins with the `@gtkx/vitest` test integration.
|
|
5
|
-
*
|
|
6
|
-
* @returns The ordered array of Vite plugins to include in a Vitest configuration.
|
|
7
|
-
*/
|
|
8
2
|
declare const gtkx: () => Plugin[];
|
|
9
3
|
export default gtkx;
|
|
10
4
|
//# sourceMappingURL=vitest-plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vitest-plugin.d.ts","sourceRoot":"","sources":["../src/vitest-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAKnC
|
|
1
|
+
{"version":3,"file":"vitest-plugin.d.ts","sourceRoot":"","sources":["../src/vitest-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAKnC,QAAA,MAAM,IAAI,QAAO,MAAM,EAAmE,CAAC;AAC3F,eAAe,IAAI,CAAC"}
|
package/dist/vitest-plugin.js
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
import gtkxVitest from "@gtkx/vitest";
|
|
2
2
|
import { gtkxVitePlugins } from "./vite-plugins/index.js";
|
|
3
3
|
import { gtkxSettingsWorkerEnv } from "./vite-plugins/settings-worker-env.js";
|
|
4
|
-
/**
|
|
5
|
-
* Vite plugin factory that assembles the plugins needed to run GTKX apps under Vitest,
|
|
6
|
-
* combining the shared GTKX Vite plugins with the `@gtkx/vitest` test integration.
|
|
7
|
-
*
|
|
8
|
-
* @returns The ordered array of Vite plugins to include in a Vitest configuration.
|
|
9
|
-
*/
|
|
10
4
|
const gtkx = () => [...gtkxVitePlugins(), gtkxSettingsWorkerEnv(), gtkxVitest()];
|
|
11
5
|
export default gtkx;
|
|
12
6
|
//# sourceMappingURL=vitest-plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vitest-plugin.js","sourceRoot":"","sources":["../src/vitest-plugin.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E
|
|
1
|
+
{"version":3,"file":"vitest-plugin.js","sourceRoot":"","sources":["../src/vitest-plugin.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E,MAAM,IAAI,GAAG,GAAa,EAAE,CAAC,CAAC,GAAG,eAAe,EAAE,EAAE,qBAAqB,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;AAC3F,eAAe,IAAI,CAAC","sourcesContent":["import type { Plugin } from \"vite\";\nimport gtkxVitest from \"@gtkx/vitest\";\nimport { gtkxVitePlugins } from \"./vite-plugins/index.js\";\nimport { gtkxSettingsWorkerEnv } from \"./vite-plugins/settings-worker-env.js\";\n\nconst gtkx = (): Plugin[] => [...gtkxVitePlugins(), gtkxSettingsWorkerEnv(), gtkxVitest()];\nexport default gtkx;\n"]}
|
package/env.d.ts
CHANGED
|
@@ -2,98 +2,123 @@
|
|
|
2
2
|
/// <reference types="@gtkx/react/env" />
|
|
3
3
|
|
|
4
4
|
declare module "*.aac" {
|
|
5
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
5
6
|
export const path: string;
|
|
6
7
|
}
|
|
7
8
|
|
|
8
9
|
declare module "*.avif" {
|
|
10
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
9
11
|
export const path: string;
|
|
10
12
|
}
|
|
11
13
|
|
|
12
14
|
declare module "*.eot" {
|
|
15
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
13
16
|
export const path: string;
|
|
14
17
|
}
|
|
15
18
|
|
|
16
19
|
declare module "*.flac" {
|
|
20
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
17
21
|
export const path: string;
|
|
18
22
|
}
|
|
19
23
|
|
|
20
24
|
declare module "*.gif" {
|
|
25
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
21
26
|
export const path: string;
|
|
22
27
|
}
|
|
23
28
|
|
|
24
29
|
declare module "*.ico" {
|
|
30
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
25
31
|
export const path: string;
|
|
26
32
|
}
|
|
27
33
|
|
|
28
34
|
declare module "*.jpeg" {
|
|
35
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
29
36
|
export const path: string;
|
|
30
37
|
}
|
|
31
38
|
|
|
32
39
|
declare module "*.jpg" {
|
|
40
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
33
41
|
export const path: string;
|
|
34
42
|
}
|
|
35
43
|
|
|
36
44
|
declare module "*.mp3" {
|
|
45
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
37
46
|
export const path: string;
|
|
38
47
|
}
|
|
39
48
|
|
|
40
49
|
declare module "*.mp4" {
|
|
50
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
41
51
|
export const path: string;
|
|
42
52
|
}
|
|
43
53
|
|
|
44
54
|
declare module "*.ogg" {
|
|
55
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
45
56
|
export const path: string;
|
|
46
57
|
}
|
|
47
58
|
|
|
48
59
|
declare module "*.otf" {
|
|
60
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
49
61
|
export const path: string;
|
|
50
62
|
}
|
|
51
63
|
|
|
52
64
|
declare module "*.png" {
|
|
65
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
53
66
|
export const path: string;
|
|
54
67
|
}
|
|
55
68
|
|
|
56
69
|
declare module "*.svg" {
|
|
70
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
57
71
|
export const path: string;
|
|
58
72
|
}
|
|
59
73
|
|
|
60
74
|
declare module "*.ttf" {
|
|
75
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
61
76
|
export const path: string;
|
|
62
77
|
}
|
|
63
78
|
|
|
64
79
|
declare module "*.wav" {
|
|
80
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
65
81
|
export const path: string;
|
|
66
82
|
}
|
|
67
83
|
|
|
68
84
|
declare module "*.webm" {
|
|
85
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
69
86
|
export const path: string;
|
|
70
87
|
}
|
|
71
88
|
|
|
72
89
|
declare module "*.webp" {
|
|
90
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
73
91
|
export const path: string;
|
|
74
92
|
}
|
|
75
93
|
|
|
76
94
|
declare module "*.woff" {
|
|
95
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
77
96
|
export const path: string;
|
|
78
97
|
}
|
|
79
98
|
|
|
80
99
|
declare module "*.woff2" {
|
|
100
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
81
101
|
export const path: string;
|
|
82
102
|
}
|
|
83
103
|
|
|
84
104
|
declare module "*.data" {
|
|
105
|
+
/** `resource://` URI of the bundled asset, accepted anywhere GTK takes a URI. */
|
|
85
106
|
const resourceUri: string;
|
|
107
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
86
108
|
export const path: string;
|
|
87
109
|
export default resourceUri;
|
|
88
110
|
}
|
|
89
111
|
|
|
90
112
|
declare module "*.gpa" {
|
|
113
|
+
/** `resource://` URI of the bundled asset, accepted anywhere GTK takes a URI. */
|
|
91
114
|
const resourceUri: string;
|
|
115
|
+
/** GResource path of the bundled asset, for use with the `Gio.resources*` lookup functions. */
|
|
92
116
|
export const path: string;
|
|
93
117
|
export default resourceUri;
|
|
94
118
|
}
|
|
95
119
|
|
|
96
120
|
declare module "*.css?url" {
|
|
121
|
+
/** Filesystem path of the emitted stylesheet, imported without installing it on the default display. */
|
|
97
122
|
const path: string;
|
|
98
123
|
export default path;
|
|
99
124
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gtkx/cli",
|
|
3
|
-
"version": "1.0.0-rc.
|
|
3
|
+
"version": "1.0.0-rc.4",
|
|
4
4
|
"description": "Command-line tool and Vite plugin stack that scaffolds, develops, builds, and documents GTKX applications",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"gtkx",
|
|
@@ -56,25 +56,25 @@
|
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"@babel/core": "^8.0.1",
|
|
58
58
|
"@babel/preset-typescript": "^8.0.1",
|
|
59
|
-
"@swc/core": "^1.15.
|
|
59
|
+
"@swc/core": "^1.15.47",
|
|
60
60
|
"babel-plugin-react-compiler": "^1.0.0",
|
|
61
61
|
"citty": "^0.2.2",
|
|
62
62
|
"fast-xml-parser": "^5.10.1",
|
|
63
63
|
"react-refresh": "^0.18.0",
|
|
64
|
-
"vite": "^8.
|
|
65
|
-
"@gtkx/codegen": "1.0.0-rc.
|
|
66
|
-
"@gtkx/config": "1.0.0-rc.
|
|
67
|
-
"@gtkx/
|
|
68
|
-
"@gtkx/
|
|
69
|
-
"@gtkx/
|
|
70
|
-
"@gtkx/vitest": "1.0.0-rc.
|
|
71
|
-
"create-gtkx": "1.0.0-rc.
|
|
64
|
+
"vite": "^8.2.0",
|
|
65
|
+
"@gtkx/codegen": "1.0.0-rc.4",
|
|
66
|
+
"@gtkx/config": "1.0.0-rc.4",
|
|
67
|
+
"@gtkx/runtime": "1.0.0-rc.4",
|
|
68
|
+
"@gtkx/utils": "1.0.0-rc.4",
|
|
69
|
+
"@gtkx/mcp": "1.0.0-rc.4",
|
|
70
|
+
"@gtkx/vitest": "1.0.0-rc.4",
|
|
71
|
+
"create-gtkx": "1.0.0-rc.4"
|
|
72
72
|
},
|
|
73
73
|
"devDependencies": {
|
|
74
74
|
"@types/babel__core": "^7.20.5",
|
|
75
75
|
"@types/react-refresh": "^0.14.7",
|
|
76
76
|
"vitest": "^4.1.10",
|
|
77
|
-
"@gtkx/testing": "1.0.0-rc.
|
|
77
|
+
"@gtkx/testing": "1.0.0-rc.4"
|
|
78
78
|
},
|
|
79
79
|
"peerDependencies": {
|
|
80
80
|
"react": "^19"
|
package/src/codegen/freshness.ts
CHANGED
|
@@ -27,15 +27,12 @@ const namespaceBarrelPath = (giStoreDir: string, library: string): string => {
|
|
|
27
27
|
return join(giStoreDir, namespace, "index.js");
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
// The manifest is what makes the store resolvable as a package, and npm's prune of a generated store
|
|
31
|
+
// removes the link while leaving the directory behind, so both have to be checked.
|
|
32
|
+
const hasManifest = (storeDir: string): boolean => existsSync(join(storeDir, "package.json"));
|
|
32
33
|
|
|
33
34
|
const isGiStoreStale = (store: CodegenStore, libraries: string[]): boolean => {
|
|
34
|
-
if (!existsSync(store.giLinkDir) || !
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
if (!canResolveGiStoreLinks(store.giStoreDir)) {
|
|
35
|
+
if (!existsSync(store.giLinkDir) || !hasManifest(store.giStoreDir)) {
|
|
39
36
|
return true;
|
|
40
37
|
}
|
|
41
38
|
|
|
@@ -47,7 +44,7 @@ const isReactStoreStale = (store: CodegenStore): boolean => {
|
|
|
47
44
|
return false;
|
|
48
45
|
}
|
|
49
46
|
|
|
50
|
-
if (!existsSync(store.jsxLinkDir)) {
|
|
47
|
+
if (!existsSync(store.jsxLinkDir) || !hasManifest(store.jsxStoreDir)) {
|
|
51
48
|
return true;
|
|
52
49
|
}
|
|
53
50
|
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { runCodegen as runCodegenCore } from "@gtkx/codegen";
|
|
2
2
|
import { type Config, loadConfig } from "@gtkx/config";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
resolveElementComponents,
|
|
5
|
+
resolveElementProps,
|
|
6
|
+
resolveLazyElements,
|
|
7
|
+
resolveOmittedProps,
|
|
8
|
+
} from "@gtkx/config/internal";
|
|
4
9
|
import { info } from "@gtkx/utils";
|
|
5
10
|
import { rmSync } from "node:fs";
|
|
6
11
|
import { resolve } from "node:path";
|
|
@@ -12,18 +17,18 @@ import { type CodegenStore, resolveCodegenContext } from "./store-resolver.js";
|
|
|
12
17
|
type RunCodegenOptions = {
|
|
13
18
|
cwd?: string;
|
|
14
19
|
mode?: string | undefined;
|
|
15
|
-
|
|
20
|
+
isForced?: boolean;
|
|
16
21
|
inputs?: CodegenInputs;
|
|
17
22
|
resolved?: LoadedConfig;
|
|
18
23
|
};
|
|
19
24
|
|
|
20
25
|
type LoadedConfig = {
|
|
21
26
|
config: Config;
|
|
22
|
-
configFile: string
|
|
27
|
+
configFile: string;
|
|
23
28
|
};
|
|
24
29
|
|
|
25
30
|
type RunCodegenResult = {
|
|
26
|
-
|
|
31
|
+
isRegenerated: boolean;
|
|
27
32
|
namespaces: number;
|
|
28
33
|
intrinsicElements: number;
|
|
29
34
|
duration: number;
|
|
@@ -39,7 +44,7 @@ type CodegenOptionsInput = {
|
|
|
39
44
|
elements: Config["elements"];
|
|
40
45
|
};
|
|
41
46
|
|
|
42
|
-
type PreparedCodegen = CodegenInputs & {
|
|
47
|
+
type PreparedCodegen = CodegenInputs & { isForced: boolean };
|
|
43
48
|
|
|
44
49
|
type RunOptionsInput = {
|
|
45
50
|
root: string;
|
|
@@ -64,18 +69,6 @@ const removeSharedStoreShadow = (cwd: string): void => {
|
|
|
64
69
|
}
|
|
65
70
|
};
|
|
66
71
|
|
|
67
|
-
const userModuleExports = (
|
|
68
|
-
elements: Config["elements"],
|
|
69
|
-
key: "component" | "props",
|
|
70
|
-
): Record<string, { module: string; export: string }> =>
|
|
71
|
-
Object.fromEntries(
|
|
72
|
-
Object.entries(elements?.config ?? {}).flatMap(([type, entry]) => {
|
|
73
|
-
const ref = entry[key];
|
|
74
|
-
|
|
75
|
-
return ref === undefined ? [] : [[type, ref] as const];
|
|
76
|
-
}),
|
|
77
|
-
);
|
|
78
|
-
|
|
79
72
|
const codegenOptions = ({ store, libraries, girPath, elements }: CodegenOptionsInput) => ({
|
|
80
73
|
libraries,
|
|
81
74
|
girPath,
|
|
@@ -93,13 +86,14 @@ const codegenOptions = ({ store, libraries, girPath, elements }: CodegenOptionsI
|
|
|
93
86
|
version: store.react.version,
|
|
94
87
|
},
|
|
95
88
|
reactSubexports: store.react?.subexports ?? [],
|
|
96
|
-
userComponents:
|
|
97
|
-
userProps:
|
|
89
|
+
userComponents: resolveElementComponents(elements),
|
|
90
|
+
userProps: resolveElementProps(elements),
|
|
98
91
|
userLazyElements: resolveLazyElements(elements),
|
|
92
|
+
userOmittedProps: resolveOmittedProps(elements),
|
|
99
93
|
});
|
|
100
94
|
|
|
101
|
-
const disabledCodegenResult = (configFile: string
|
|
102
|
-
|
|
95
|
+
const disabledCodegenResult = (configFile: string): RunCodegenResult => ({
|
|
96
|
+
isRegenerated: false,
|
|
103
97
|
namespaces: 0,
|
|
104
98
|
intrinsicElements: 0,
|
|
105
99
|
duration: 0,
|
|
@@ -124,9 +118,9 @@ const prepareCodegen = (options: RunCodegenOptions, cwd: string, config: Config)
|
|
|
124
118
|
throw new Error(GIR_PATH_MISSING_MESSAGE);
|
|
125
119
|
}
|
|
126
120
|
|
|
127
|
-
const
|
|
121
|
+
const isForced = options.isForced === true || isCodegenStale({ girPath, libraries, store });
|
|
128
122
|
|
|
129
|
-
return { girPath, libraries, store,
|
|
123
|
+
return { girPath, libraries, store, isForced };
|
|
130
124
|
};
|
|
131
125
|
|
|
132
126
|
const runCodegen = async (options: RunCodegenOptions = {}): Promise<RunCodegenResult> => {
|
|
@@ -139,19 +133,24 @@ const runCodegen = async (options: RunCodegenOptions = {}): Promise<RunCodegenRe
|
|
|
139
133
|
return disabledCodegenResult(configFile);
|
|
140
134
|
}
|
|
141
135
|
|
|
142
|
-
const { girPath, libraries, store,
|
|
136
|
+
const { girPath, libraries, store, isForced } = prepareCodegen(options, cwd, config);
|
|
143
137
|
|
|
144
|
-
if (options.
|
|
138
|
+
if (options.isForced) {
|
|
145
139
|
clearGeneratedStores(store);
|
|
146
140
|
}
|
|
147
141
|
|
|
148
142
|
const result = await runCodegenCore({
|
|
149
|
-
...codegenOptions({
|
|
150
|
-
|
|
143
|
+
...codegenOptions({
|
|
144
|
+
store,
|
|
145
|
+
libraries,
|
|
146
|
+
girPath,
|
|
147
|
+
elements: config.elements,
|
|
148
|
+
}),
|
|
149
|
+
isForced,
|
|
151
150
|
});
|
|
152
151
|
|
|
153
152
|
return {
|
|
154
|
-
|
|
153
|
+
isRegenerated: result.isRegenerated,
|
|
155
154
|
namespaces: result.namespaces,
|
|
156
155
|
intrinsicElements: result.intrinsicElements,
|
|
157
156
|
duration: result.duration,
|
|
@@ -183,8 +182,8 @@ const resolveInputsOrNull = (cwd: string, config: Config): CodegenInputs | null
|
|
|
183
182
|
}
|
|
184
183
|
};
|
|
185
184
|
|
|
186
|
-
const maybeAnnounceStale = (
|
|
187
|
-
if (!
|
|
185
|
+
const maybeAnnounceStale = (shouldAnnounce: boolean | undefined, inputs: CodegenInputs | null): void => {
|
|
186
|
+
if (!shouldAnnounce) {
|
|
188
187
|
return;
|
|
189
188
|
}
|
|
190
189
|
|
|
@@ -203,18 +202,13 @@ const getRunOptions = ({ root, mode, inputs, resolved }: RunOptionsInput): RunCo
|
|
|
203
202
|
|
|
204
203
|
const ensureGenerated = async (
|
|
205
204
|
cwd: string,
|
|
206
|
-
options: {
|
|
205
|
+
options: { shouldAnnounce?: boolean; mode?: string } = {},
|
|
207
206
|
): Promise<boolean> => {
|
|
208
|
-
if (options.
|
|
207
|
+
if (options.shouldAnnounce && process.env.GTKX_DISABLE_PREFLIGHT === "1") {
|
|
209
208
|
return false;
|
|
210
209
|
}
|
|
211
210
|
|
|
212
211
|
const context = await resolveCodegenContext(cwd, options.mode);
|
|
213
|
-
|
|
214
|
-
if (!context) {
|
|
215
|
-
return false;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
212
|
syncSchemaEnv(cwd);
|
|
219
213
|
|
|
220
214
|
if (context.config.codegen === false) {
|
|
@@ -224,23 +218,19 @@ const ensureGenerated = async (
|
|
|
224
218
|
}
|
|
225
219
|
|
|
226
220
|
const inputs = resolveInputsOrNull(context.root, context.config);
|
|
227
|
-
maybeAnnounceStale(options.
|
|
221
|
+
maybeAnnounceStale(options.shouldAnnounce, inputs);
|
|
228
222
|
const resolved = { config: context.config, configFile: context.configFile };
|
|
229
223
|
const result = await runCodegen(getRunOptions({ root: context.root, mode: options.mode, inputs, resolved }));
|
|
230
224
|
|
|
231
|
-
return result.
|
|
225
|
+
return result.isRegenerated;
|
|
232
226
|
};
|
|
233
227
|
|
|
234
228
|
const resolveConfigWatch = async (
|
|
235
229
|
cwd: string,
|
|
236
230
|
mode?: string,
|
|
237
|
-
): Promise<{ paths: string[]; regenerate: () => Promise<void> }
|
|
231
|
+
): Promise<{ paths: string[]; regenerate: () => Promise<void> }> => {
|
|
238
232
|
const { configFile, root } = await loadConfig(cwd, { mode });
|
|
239
233
|
|
|
240
|
-
if (configFile === undefined) {
|
|
241
|
-
return undefined;
|
|
242
|
-
}
|
|
243
|
-
|
|
244
234
|
return {
|
|
245
235
|
paths: [resolve(root, configFile)],
|
|
246
236
|
regenerate: async () => {
|