@openzeppelin/adapters-vite 1.3.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +6 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +6 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
- package/src/__tests__/resolver.test.ts +71 -0
- package/src/resolver.ts +7 -1
package/dist/index.cjs
CHANGED
|
@@ -161,6 +161,11 @@ async function loadOpenZeppelinAdapterViteConfig(options) {
|
|
|
161
161
|
|
|
162
162
|
//#endregion
|
|
163
163
|
//#region src/resolver.ts
|
|
164
|
+
const DEFAULT_RESOLVED_ADAPTER_EXPORT_PATHS = [
|
|
165
|
+
"./metadata",
|
|
166
|
+
"./networks",
|
|
167
|
+
"."
|
|
168
|
+
];
|
|
164
169
|
function readPackageJson(packageDirectory) {
|
|
165
170
|
return JSON.parse(node_fs.default.readFileSync(node_path.default.join(packageDirectory, "package.json"), "utf8"));
|
|
166
171
|
}
|
|
@@ -182,11 +187,7 @@ function resolveInstalledExportEntry(packageName, packageDirectory, exportPath)
|
|
|
182
187
|
return node_path.default.resolve(packageDirectory, target);
|
|
183
188
|
}
|
|
184
189
|
function resolveInstalledOpenZeppelinAdapterEntries(options) {
|
|
185
|
-
const exportPaths = options.exportPaths ??
|
|
186
|
-
".",
|
|
187
|
-
"./metadata",
|
|
188
|
-
"./networks"
|
|
189
|
-
];
|
|
190
|
+
const exportPaths = options.exportPaths ?? DEFAULT_RESOLVED_ADAPTER_EXPORT_PATHS;
|
|
190
191
|
const entries = {};
|
|
191
192
|
for (const packageName of getOpenZeppelinAdapterPackageNames(options.ecosystems)) {
|
|
192
193
|
const packageDirectory = resolveInstalledPackageDirectory(packageName, options.importMetaUrl);
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["fs","path"],"sources":["../src/registry.ts","../src/config.ts","../src/resolver.ts","../src/integration.ts","../src/types.ts"],"sourcesContent":["import type { UserConfig } from 'vite';\n\nimport type {\n AdapterViteConfigFragment,\n LoadOpenZeppelinAdapterViteConfigOptions,\n OpenZeppelinAdapterEcosystem,\n OpenZeppelinAdapterExportPath,\n} from './types';\n\ninterface AdapterRegistryEntry {\n packageName: string;\n extraOptimizeDepsExclude?: string[];\n loadConfig: (\n options: LoadOpenZeppelinAdapterViteConfigOptions\n ) => Promise<AdapterViteConfigFragment>;\n}\n\nconst ADAPTER_REGISTRY: Record<OpenZeppelinAdapterEcosystem, AdapterRegistryEntry> = {\n evm: {\n packageName: '@openzeppelin/adapter-evm',\n extraOptimizeDepsExclude: ['@openzeppelin/adapter-evm-core'],\n async loadConfig() {\n const { getEvmViteConfig } = await import('@openzeppelin/adapter-evm/vite-config');\n return getEvmViteConfig() as Partial<UserConfig>;\n },\n },\n midnight: {\n packageName: '@openzeppelin/adapter-midnight',\n async loadConfig(options) {\n const midnightPlugins = options.pluginFactories?.midnight;\n if (!midnightPlugins) {\n throw new Error(\n 'Midnight adapter Vite configuration requires `pluginFactories.midnight` with `wasm` and `topLevelAwait`.'\n );\n }\n\n const { getMidnightViteConfig } = await import('@openzeppelin/adapter-midnight/vite-config');\n return getMidnightViteConfig(midnightPlugins) as Partial<UserConfig>;\n },\n },\n polkadot: {\n packageName: '@openzeppelin/adapter-polkadot',\n async loadConfig() {\n const { getPolkadotViteConfig } = await import('@openzeppelin/adapter-polkadot/vite-config');\n return getPolkadotViteConfig() as Partial<UserConfig>;\n },\n },\n solana: {\n packageName: '@openzeppelin/adapter-solana',\n async loadConfig() {\n const { getSolanaViteConfig } = await import('@openzeppelin/adapter-solana/vite-config');\n return getSolanaViteConfig() as Partial<UserConfig>;\n },\n },\n stellar: {\n packageName: '@openzeppelin/adapter-stellar',\n async loadConfig() {\n const { getStellarViteConfig } = await import('@openzeppelin/adapter-stellar/vite-config');\n return getStellarViteConfig() as Partial<UserConfig>;\n },\n },\n};\n\nexport function normalizeEcosystems(\n ecosystems: readonly OpenZeppelinAdapterEcosystem[]\n): OpenZeppelinAdapterEcosystem[] {\n return [...new Set(ecosystems)];\n}\n\nexport function getAdapterRegistryEntry(\n ecosystem: OpenZeppelinAdapterEcosystem\n): AdapterRegistryEntry {\n return ADAPTER_REGISTRY[ecosystem];\n}\n\nexport function getOpenZeppelinAdapterPackageNames(\n ecosystems: readonly OpenZeppelinAdapterEcosystem[]\n): string[] {\n return normalizeEcosystems(ecosystems).map(\n (ecosystem) => ADAPTER_REGISTRY[ecosystem].packageName\n );\n}\n\nexport function getOpenZeppelinAdapterImportSpecifier(\n packageName: string,\n exportPath: OpenZeppelinAdapterExportPath\n): string {\n if (exportPath === '.') {\n return packageName;\n }\n\n return `${packageName}/${exportPath.slice(2)}`;\n}\n\nexport function getOpenZeppelinAdapterImportSpecifiers(\n ecosystems: readonly OpenZeppelinAdapterEcosystem[],\n exportPaths: readonly OpenZeppelinAdapterExportPath[]\n): string[] {\n const specifiers = new Set<string>();\n\n for (const packageName of getOpenZeppelinAdapterPackageNames(ecosystems)) {\n for (const exportPath of exportPaths) {\n specifiers.add(getOpenZeppelinAdapterImportSpecifier(packageName, exportPath));\n }\n }\n\n return [...specifiers];\n}\n","import type { PluginOption, UserConfig } from 'vite';\n\nimport {\n getAdapterRegistryEntry,\n getOpenZeppelinAdapterPackageNames,\n normalizeEcosystems,\n} from './registry';\nimport type {\n AdapterViteConfigFragment,\n LoadOpenZeppelinAdapterViteConfigOptions,\n OpenZeppelinAdapterViteConfig,\n} from './types';\n\ntype SsrNoExternalValue = NonNullable<NonNullable<UserConfig['ssr']>['noExternal']>;\n\nfunction appendPlugins(target: PluginOption[], plugins: AdapterViteConfigFragment['plugins']) {\n if (!plugins) {\n return;\n }\n\n target.push(...(Array.isArray(plugins) ? plugins : [plugins]));\n}\n\nfunction appendStringValues(target: Set<string>, value: string | string[] | undefined) {\n if (!value) {\n return;\n }\n\n const values = Array.isArray(value) ? value : [value];\n\n for (const entry of values) {\n if (entry) {\n target.add(entry);\n }\n }\n}\n\nfunction appendNoExternalValues(\n target: Array<string | RegExp>,\n seenStrings: Set<string>,\n value: SsrNoExternalValue | undefined\n): boolean {\n if (!value) {\n return false;\n }\n\n if (value === true) {\n return true;\n }\n\n const values = Array.isArray(value) ? value : [value];\n\n for (const entry of values) {\n if (typeof entry === 'string') {\n if (!seenStrings.has(entry)) {\n seenStrings.add(entry);\n target.push(entry);\n }\n continue;\n }\n\n if (entry instanceof RegExp) {\n target.push(entry);\n }\n }\n\n return false;\n}\n\nexport async function loadOpenZeppelinAdapterViteConfig(\n options: LoadOpenZeppelinAdapterViteConfigOptions\n): Promise<OpenZeppelinAdapterViteConfig> {\n const ecosystems = normalizeEcosystems(options.ecosystems);\n const plugins: PluginOption[] = [];\n const dedupe = new Set<string>();\n const optimizeDepsInclude = new Set<string>();\n const optimizeDepsExclude = new Set<string>();\n const ssrNoExternal: Array<string | RegExp> = [];\n const seenSsrNoExternalStrings = new Set<string>();\n let ssrNoExternalAll = false;\n const packageNames = getOpenZeppelinAdapterPackageNames(ecosystems);\n\n for (const packageName of packageNames) {\n optimizeDepsExclude.add(packageName);\n ssrNoExternalAll =\n appendNoExternalValues(ssrNoExternal, seenSsrNoExternalStrings, packageName) ||\n ssrNoExternalAll;\n }\n\n for (const ecosystem of ecosystems) {\n const entry = getAdapterRegistryEntry(ecosystem);\n\n let fragment: AdapterViteConfigFragment;\n try {\n fragment = await entry.loadConfig(options);\n } catch (error) {\n throw new Error(\n `Failed to load ${entry.packageName} Vite configuration. ` +\n `Original error: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n\n appendPlugins(plugins, fragment.plugins);\n appendStringValues(dedupe, fragment.resolve?.dedupe);\n appendStringValues(optimizeDepsInclude, fragment.optimizeDeps?.include);\n appendStringValues(optimizeDepsExclude, fragment.optimizeDeps?.exclude);\n appendStringValues(optimizeDepsExclude, entry.extraOptimizeDepsExclude);\n\n ssrNoExternalAll =\n appendNoExternalValues(ssrNoExternal, seenSsrNoExternalStrings, fragment.ssr?.noExternal) ||\n ssrNoExternalAll;\n }\n\n return {\n plugins,\n resolve: {\n dedupe: [...dedupe],\n },\n optimizeDeps: {\n include: [...optimizeDepsInclude],\n exclude: [...optimizeDepsExclude],\n },\n ssr: {\n noExternal: ssrNoExternalAll ? true : ssrNoExternal,\n },\n packageNames,\n };\n}\n","import fs from 'node:fs';\nimport { createRequire } from 'node:module';\nimport path from 'node:path';\nimport type { Plugin } from 'vite';\n\nimport {\n getOpenZeppelinAdapterImportSpecifier,\n getOpenZeppelinAdapterPackageNames,\n} from './registry';\nimport type {\n OpenZeppelinAdapterExportPath,\n ResolveInstalledOpenZeppelinAdapterEntriesOptions,\n} from './types';\n\ntype PackageExportEntry =\n | string\n | {\n import?: string | { default?: string };\n default?: string;\n };\n\nfunction readPackageJson(packageDirectory: string): {\n exports?: Record<string, PackageExportEntry>;\n} {\n return JSON.parse(fs.readFileSync(path.join(packageDirectory, 'package.json'), 'utf8')) as {\n exports?: Record<string, PackageExportEntry>;\n };\n}\n\nfunction getImportTarget(entry: PackageExportEntry | undefined): string | null {\n if (!entry) {\n return null;\n }\n\n if (typeof entry === 'string') {\n return entry;\n }\n\n if (typeof entry.import === 'string') {\n return entry.import;\n }\n\n if (\n entry.import &&\n typeof entry.import === 'object' &&\n typeof entry.import.default === 'string'\n ) {\n return entry.import.default;\n }\n\n if (typeof entry.default === 'string') {\n return entry.default;\n }\n\n return null;\n}\n\nfunction resolveInstalledPackageDirectory(packageName: string, importMetaUrl: string): string {\n const require = createRequire(importMetaUrl);\n const installedEntryPath = require.resolve(packageName);\n return path.resolve(path.dirname(installedEntryPath), '..');\n}\n\nfunction resolveInstalledExportEntry(\n packageName: string,\n packageDirectory: string,\n exportPath: OpenZeppelinAdapterExportPath\n): string {\n const packageJson = readPackageJson(packageDirectory);\n const target = getImportTarget(packageJson.exports?.[exportPath]);\n\n if (!target) {\n throw new Error(\n `Missing export \"${exportPath}\" in ${packageName}/package.json (required \"import\" condition)`\n );\n }\n\n return path.resolve(packageDirectory, target);\n}\n\nexport function resolveInstalledOpenZeppelinAdapterEntries(\n options: ResolveInstalledOpenZeppelinAdapterEntriesOptions\n): Record<string, string> {\n const exportPaths = options.exportPaths ?? ['.', './metadata', './networks'];\n const entries: Record<string, string> = {};\n\n for (const packageName of getOpenZeppelinAdapterPackageNames(options.ecosystems)) {\n const packageDirectory = resolveInstalledPackageDirectory(packageName, options.importMetaUrl);\n\n for (const exportPath of exportPaths) {\n entries[getOpenZeppelinAdapterImportSpecifier(packageName, exportPath)] =\n resolveInstalledExportEntry(packageName, packageDirectory, exportPath);\n }\n }\n\n return entries;\n}\n\nexport function createOpenZeppelinAdapterResolverPlugin(\n options: ResolveInstalledOpenZeppelinAdapterEntriesOptions\n): Plugin {\n const entries = resolveInstalledOpenZeppelinAdapterEntries(options);\n\n return {\n name: 'openzeppelin-adapter-package-resolver',\n enforce: 'pre',\n resolveId(id) {\n return entries[id] ?? null;\n },\n };\n}\n","import type { PluginOption, UserConfig } from 'vite';\n\nimport { loadOpenZeppelinAdapterViteConfig } from './config';\nimport {\n createOpenZeppelinAdapterResolverPlugin,\n resolveInstalledOpenZeppelinAdapterEntries,\n} from './resolver';\nimport type {\n DefineOpenZeppelinAdapterViteConfigOptions,\n DefineOpenZeppelinAdapterVitestConfigOptions,\n OpenZeppelinAdapterIntegration,\n OpenZeppelinAdapterIntegrationOptions,\n OpenZeppelinAdapterSsrConfig,\n OpenZeppelinAdapterViteConfig,\n} from './types';\n\ntype SsrNoExternalValue = NonNullable<NonNullable<UserConfig['ssr']>['noExternal']>;\n\nfunction normalizePluginOptions(plugins: UserConfig['plugins']): PluginOption[] {\n if (!plugins) {\n return [];\n }\n\n return Array.isArray(plugins) ? plugins : [plugins];\n}\n\nfunction normalizeStringValues(value: string | string[] | undefined): string[] {\n if (!value) {\n return [];\n }\n\n return Array.isArray(value) ? value : [value];\n}\n\nfunction mergeUniqueStrings(\n base: string | string[] | undefined,\n extra: readonly string[]\n): string[] {\n const merged: string[] = [];\n const seen = new Set<string>();\n\n for (const entry of [...normalizeStringValues(base), ...extra]) {\n if (!entry || seen.has(entry)) {\n continue;\n }\n\n seen.add(entry);\n merged.push(entry);\n }\n\n return merged;\n}\n\nfunction mergeSsrNoExternal(\n base: SsrNoExternalValue | undefined,\n extra: OpenZeppelinAdapterSsrConfig['noExternal']\n): true | Array<string | RegExp> {\n if (base === true || extra === true) {\n return true;\n }\n\n const merged: Array<string | RegExp> = [];\n const seenStrings = new Set<string>();\n const values = [\n ...(base ? (Array.isArray(base) ? base : [base]) : []),\n ...(Array.isArray(extra) ? extra : [extra]),\n ];\n\n for (const entry of values) {\n if (typeof entry === 'string') {\n if (!seenStrings.has(entry)) {\n seenStrings.add(entry);\n merged.push(entry);\n }\n continue;\n }\n\n if (entry instanceof RegExp) {\n merged.push(entry);\n }\n }\n\n return merged;\n}\n\nfunction mergeResolveAlias(\n baseAlias: NonNullable<NonNullable<UserConfig['resolve']>['alias']> | undefined,\n extraAliasEntries: Record<string, string>\n): NonNullable<NonNullable<UserConfig['resolve']>['alias']> | undefined {\n if (Object.keys(extraAliasEntries).length === 0) {\n return baseAlias;\n }\n\n if (!baseAlias) {\n return extraAliasEntries;\n }\n\n if (Array.isArray(baseAlias)) {\n return [\n ...baseAlias,\n ...Object.entries(extraAliasEntries).map(([find, replacement]) => ({\n find,\n replacement,\n })),\n ];\n }\n\n return {\n ...baseAlias,\n ...extraAliasEntries,\n };\n}\n\nfunction mergeOpenZeppelinAdapterConfig(\n baseConfig: UserConfig,\n adapterConfig: OpenZeppelinAdapterViteConfig,\n options: {\n extraPlugins?: PluginOption[];\n extraAliasEntries?: Record<string, string>;\n } = {}\n): UserConfig {\n const extraPlugins = options.extraPlugins ?? [];\n const extraAliasEntries = options.extraAliasEntries ?? {};\n\n return {\n ...baseConfig,\n plugins: [\n ...adapterConfig.plugins,\n ...normalizePluginOptions(baseConfig.plugins),\n ...extraPlugins,\n ],\n resolve: {\n ...baseConfig.resolve,\n alias: mergeResolveAlias(baseConfig.resolve?.alias, extraAliasEntries),\n dedupe: mergeUniqueStrings(baseConfig.resolve?.dedupe, adapterConfig.resolve.dedupe),\n },\n optimizeDeps: {\n ...baseConfig.optimizeDeps,\n include: mergeUniqueStrings(\n baseConfig.optimizeDeps?.include,\n adapterConfig.optimizeDeps.include\n ),\n exclude: mergeUniqueStrings(\n baseConfig.optimizeDeps?.exclude,\n adapterConfig.optimizeDeps.exclude\n ),\n },\n ssr: {\n ...baseConfig.ssr,\n noExternal: mergeSsrNoExternal(baseConfig.ssr?.noExternal, adapterConfig.ssr.noExternal),\n },\n };\n}\n\nasync function buildOpenZeppelinAdapterViteConfig(\n options: OpenZeppelinAdapterIntegrationOptions,\n config: UserConfig = {}\n): Promise<UserConfig> {\n const adapterConfig = await loadOpenZeppelinAdapterViteConfig(options);\n return mergeOpenZeppelinAdapterConfig(config, adapterConfig);\n}\n\nasync function buildOpenZeppelinAdapterVitestConfig(\n options: OpenZeppelinAdapterIntegrationOptions,\n config: UserConfig = {}\n): Promise<UserConfig> {\n if (!options.importMetaUrl) {\n throw new Error(\n 'createOpenZeppelinAdapterIntegration(...).vitest() requires importMetaUrl to resolve ' +\n 'installed adapter exports'\n );\n }\n\n const adapterConfig = await loadOpenZeppelinAdapterViteConfig(options);\n const resolverOptions = {\n ecosystems: options.ecosystems,\n importMetaUrl: options.importMetaUrl,\n exportPaths: options.exportPaths,\n };\n\n return mergeOpenZeppelinAdapterConfig(config, adapterConfig, {\n extraPlugins: [createOpenZeppelinAdapterResolverPlugin(resolverOptions)],\n extraAliasEntries: resolveInstalledOpenZeppelinAdapterEntries(resolverOptions),\n });\n}\n\nexport function createOpenZeppelinAdapterIntegration(\n options: OpenZeppelinAdapterIntegrationOptions\n): OpenZeppelinAdapterIntegration {\n const adapterConfigPromise = loadOpenZeppelinAdapterViteConfig(options);\n\n return {\n async vite(config: UserConfig = {}) {\n return mergeOpenZeppelinAdapterConfig(config, await adapterConfigPromise);\n },\n async vitest(config: UserConfig = {}) {\n if (!options.importMetaUrl) {\n throw new Error(\n 'createOpenZeppelinAdapterIntegration(...).vitest() requires importMetaUrl to resolve ' +\n 'installed adapter exports'\n );\n }\n\n const resolverOptions = {\n ecosystems: options.ecosystems,\n importMetaUrl: options.importMetaUrl,\n exportPaths: options.exportPaths,\n };\n\n return mergeOpenZeppelinAdapterConfig(config, await adapterConfigPromise, {\n extraPlugins: [createOpenZeppelinAdapterResolverPlugin(resolverOptions)],\n extraAliasEntries: resolveInstalledOpenZeppelinAdapterEntries(resolverOptions),\n });\n },\n };\n}\n\nexport function defineOpenZeppelinAdapterViteConfig(\n options: DefineOpenZeppelinAdapterViteConfigOptions\n): Promise<UserConfig> {\n const { config = {}, ...integrationOptions } = options;\n return buildOpenZeppelinAdapterViteConfig(integrationOptions, config);\n}\n\nexport function defineOpenZeppelinAdapterVitestConfig(\n options: DefineOpenZeppelinAdapterVitestConfigOptions\n): Promise<UserConfig> {\n const { config = {}, ...integrationOptions } = options;\n return buildOpenZeppelinAdapterVitestConfig(integrationOptions, config);\n}\n","import type { Plugin, PluginOption, UserConfig } from 'vite';\n\nexport const SUPPORTED_OPENZEPPELIN_ADAPTER_ECOSYSTEMS = [\n 'evm',\n 'midnight',\n 'polkadot',\n 'solana',\n 'stellar',\n] as const;\n\nexport type OpenZeppelinAdapterEcosystem =\n (typeof SUPPORTED_OPENZEPPELIN_ADAPTER_ECOSYSTEMS)[number];\n\nexport type OpenZeppelinAdapterExportPath = '.' | './metadata' | './networks';\n\nexport interface MidnightAdapterPluginFactories {\n wasm: () => Plugin;\n topLevelAwait: () => Plugin;\n}\n\nexport interface OpenZeppelinAdapterPluginFactories {\n midnight?: MidnightAdapterPluginFactories;\n}\n\nexport interface LoadOpenZeppelinAdapterViteConfigOptions {\n ecosystems: readonly OpenZeppelinAdapterEcosystem[];\n pluginFactories?: OpenZeppelinAdapterPluginFactories;\n}\n\nexport interface OpenZeppelinAdapterIntegrationOptions extends LoadOpenZeppelinAdapterViteConfigOptions {\n importMetaUrl?: string;\n exportPaths?: readonly OpenZeppelinAdapterExportPath[];\n}\n\nexport interface DefineOpenZeppelinAdapterViteConfigOptions extends LoadOpenZeppelinAdapterViteConfigOptions {\n config?: UserConfig;\n}\n\nexport interface DefineOpenZeppelinAdapterVitestConfigOptions extends OpenZeppelinAdapterIntegrationOptions {\n config?: UserConfig;\n importMetaUrl: string;\n}\n\nexport interface ResolveInstalledOpenZeppelinAdapterEntriesOptions {\n ecosystems: readonly OpenZeppelinAdapterEcosystem[];\n importMetaUrl: string;\n exportPaths?: readonly OpenZeppelinAdapterExportPath[];\n}\n\nexport interface OpenZeppelinAdapterResolvedConfig {\n dedupe: string[];\n}\n\nexport interface OpenZeppelinAdapterOptimizeDepsConfig {\n include: string[];\n exclude: string[];\n}\n\nexport interface OpenZeppelinAdapterSsrConfig {\n noExternal: true | Array<string | RegExp>;\n}\n\nexport interface OpenZeppelinAdapterViteConfig {\n plugins: PluginOption[];\n resolve: OpenZeppelinAdapterResolvedConfig;\n optimizeDeps: OpenZeppelinAdapterOptimizeDepsConfig;\n ssr: OpenZeppelinAdapterSsrConfig;\n packageNames: string[];\n}\n\nexport interface OpenZeppelinAdapterIntegration {\n vite(config?: UserConfig): Promise<UserConfig>;\n vitest(config?: UserConfig): Promise<UserConfig>;\n}\n\nexport type AdapterViteConfigFragment = Partial<\n Pick<UserConfig, 'plugins' | 'resolve' | 'optimizeDeps' | 'ssr'>\n>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["fs","path"],"sources":["../src/registry.ts","../src/config.ts","../src/resolver.ts","../src/integration.ts","../src/types.ts"],"sourcesContent":["import type { UserConfig } from 'vite';\n\nimport type {\n AdapterViteConfigFragment,\n LoadOpenZeppelinAdapterViteConfigOptions,\n OpenZeppelinAdapterEcosystem,\n OpenZeppelinAdapterExportPath,\n} from './types';\n\ninterface AdapterRegistryEntry {\n packageName: string;\n extraOptimizeDepsExclude?: string[];\n loadConfig: (\n options: LoadOpenZeppelinAdapterViteConfigOptions\n ) => Promise<AdapterViteConfigFragment>;\n}\n\nconst ADAPTER_REGISTRY: Record<OpenZeppelinAdapterEcosystem, AdapterRegistryEntry> = {\n evm: {\n packageName: '@openzeppelin/adapter-evm',\n extraOptimizeDepsExclude: ['@openzeppelin/adapter-evm-core'],\n async loadConfig() {\n const { getEvmViteConfig } = await import('@openzeppelin/adapter-evm/vite-config');\n return getEvmViteConfig() as Partial<UserConfig>;\n },\n },\n midnight: {\n packageName: '@openzeppelin/adapter-midnight',\n async loadConfig(options) {\n const midnightPlugins = options.pluginFactories?.midnight;\n if (!midnightPlugins) {\n throw new Error(\n 'Midnight adapter Vite configuration requires `pluginFactories.midnight` with `wasm` and `topLevelAwait`.'\n );\n }\n\n const { getMidnightViteConfig } = await import('@openzeppelin/adapter-midnight/vite-config');\n return getMidnightViteConfig(midnightPlugins) as Partial<UserConfig>;\n },\n },\n polkadot: {\n packageName: '@openzeppelin/adapter-polkadot',\n async loadConfig() {\n const { getPolkadotViteConfig } = await import('@openzeppelin/adapter-polkadot/vite-config');\n return getPolkadotViteConfig() as Partial<UserConfig>;\n },\n },\n solana: {\n packageName: '@openzeppelin/adapter-solana',\n async loadConfig() {\n const { getSolanaViteConfig } = await import('@openzeppelin/adapter-solana/vite-config');\n return getSolanaViteConfig() as Partial<UserConfig>;\n },\n },\n stellar: {\n packageName: '@openzeppelin/adapter-stellar',\n async loadConfig() {\n const { getStellarViteConfig } = await import('@openzeppelin/adapter-stellar/vite-config');\n return getStellarViteConfig() as Partial<UserConfig>;\n },\n },\n};\n\nexport function normalizeEcosystems(\n ecosystems: readonly OpenZeppelinAdapterEcosystem[]\n): OpenZeppelinAdapterEcosystem[] {\n return [...new Set(ecosystems)];\n}\n\nexport function getAdapterRegistryEntry(\n ecosystem: OpenZeppelinAdapterEcosystem\n): AdapterRegistryEntry {\n return ADAPTER_REGISTRY[ecosystem];\n}\n\nexport function getOpenZeppelinAdapterPackageNames(\n ecosystems: readonly OpenZeppelinAdapterEcosystem[]\n): string[] {\n return normalizeEcosystems(ecosystems).map(\n (ecosystem) => ADAPTER_REGISTRY[ecosystem].packageName\n );\n}\n\nexport function getOpenZeppelinAdapterImportSpecifier(\n packageName: string,\n exportPath: OpenZeppelinAdapterExportPath\n): string {\n if (exportPath === '.') {\n return packageName;\n }\n\n return `${packageName}/${exportPath.slice(2)}`;\n}\n\nexport function getOpenZeppelinAdapterImportSpecifiers(\n ecosystems: readonly OpenZeppelinAdapterEcosystem[],\n exportPaths: readonly OpenZeppelinAdapterExportPath[]\n): string[] {\n const specifiers = new Set<string>();\n\n for (const packageName of getOpenZeppelinAdapterPackageNames(ecosystems)) {\n for (const exportPath of exportPaths) {\n specifiers.add(getOpenZeppelinAdapterImportSpecifier(packageName, exportPath));\n }\n }\n\n return [...specifiers];\n}\n","import type { PluginOption, UserConfig } from 'vite';\n\nimport {\n getAdapterRegistryEntry,\n getOpenZeppelinAdapterPackageNames,\n normalizeEcosystems,\n} from './registry';\nimport type {\n AdapterViteConfigFragment,\n LoadOpenZeppelinAdapterViteConfigOptions,\n OpenZeppelinAdapterViteConfig,\n} from './types';\n\ntype SsrNoExternalValue = NonNullable<NonNullable<UserConfig['ssr']>['noExternal']>;\n\nfunction appendPlugins(target: PluginOption[], plugins: AdapterViteConfigFragment['plugins']) {\n if (!plugins) {\n return;\n }\n\n target.push(...(Array.isArray(plugins) ? plugins : [plugins]));\n}\n\nfunction appendStringValues(target: Set<string>, value: string | string[] | undefined) {\n if (!value) {\n return;\n }\n\n const values = Array.isArray(value) ? value : [value];\n\n for (const entry of values) {\n if (entry) {\n target.add(entry);\n }\n }\n}\n\nfunction appendNoExternalValues(\n target: Array<string | RegExp>,\n seenStrings: Set<string>,\n value: SsrNoExternalValue | undefined\n): boolean {\n if (!value) {\n return false;\n }\n\n if (value === true) {\n return true;\n }\n\n const values = Array.isArray(value) ? value : [value];\n\n for (const entry of values) {\n if (typeof entry === 'string') {\n if (!seenStrings.has(entry)) {\n seenStrings.add(entry);\n target.push(entry);\n }\n continue;\n }\n\n if (entry instanceof RegExp) {\n target.push(entry);\n }\n }\n\n return false;\n}\n\nexport async function loadOpenZeppelinAdapterViteConfig(\n options: LoadOpenZeppelinAdapterViteConfigOptions\n): Promise<OpenZeppelinAdapterViteConfig> {\n const ecosystems = normalizeEcosystems(options.ecosystems);\n const plugins: PluginOption[] = [];\n const dedupe = new Set<string>();\n const optimizeDepsInclude = new Set<string>();\n const optimizeDepsExclude = new Set<string>();\n const ssrNoExternal: Array<string | RegExp> = [];\n const seenSsrNoExternalStrings = new Set<string>();\n let ssrNoExternalAll = false;\n const packageNames = getOpenZeppelinAdapterPackageNames(ecosystems);\n\n for (const packageName of packageNames) {\n optimizeDepsExclude.add(packageName);\n ssrNoExternalAll =\n appendNoExternalValues(ssrNoExternal, seenSsrNoExternalStrings, packageName) ||\n ssrNoExternalAll;\n }\n\n for (const ecosystem of ecosystems) {\n const entry = getAdapterRegistryEntry(ecosystem);\n\n let fragment: AdapterViteConfigFragment;\n try {\n fragment = await entry.loadConfig(options);\n } catch (error) {\n throw new Error(\n `Failed to load ${entry.packageName} Vite configuration. ` +\n `Original error: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n\n appendPlugins(plugins, fragment.plugins);\n appendStringValues(dedupe, fragment.resolve?.dedupe);\n appendStringValues(optimizeDepsInclude, fragment.optimizeDeps?.include);\n appendStringValues(optimizeDepsExclude, fragment.optimizeDeps?.exclude);\n appendStringValues(optimizeDepsExclude, entry.extraOptimizeDepsExclude);\n\n ssrNoExternalAll =\n appendNoExternalValues(ssrNoExternal, seenSsrNoExternalStrings, fragment.ssr?.noExternal) ||\n ssrNoExternalAll;\n }\n\n return {\n plugins,\n resolve: {\n dedupe: [...dedupe],\n },\n optimizeDeps: {\n include: [...optimizeDepsInclude],\n exclude: [...optimizeDepsExclude],\n },\n ssr: {\n noExternal: ssrNoExternalAll ? true : ssrNoExternal,\n },\n packageNames,\n };\n}\n","import fs from 'node:fs';\nimport { createRequire } from 'node:module';\nimport path from 'node:path';\nimport type { Plugin } from 'vite';\n\nimport {\n getOpenZeppelinAdapterImportSpecifier,\n getOpenZeppelinAdapterPackageNames,\n} from './registry';\nimport type {\n OpenZeppelinAdapterExportPath,\n ResolveInstalledOpenZeppelinAdapterEntriesOptions,\n} from './types';\n\nconst DEFAULT_RESOLVED_ADAPTER_EXPORT_PATHS: readonly OpenZeppelinAdapterExportPath[] = [\n './metadata',\n './networks',\n '.',\n];\n\ntype PackageExportEntry =\n | string\n | {\n import?: string | { default?: string };\n default?: string;\n };\n\nfunction readPackageJson(packageDirectory: string): {\n exports?: Record<string, PackageExportEntry>;\n} {\n return JSON.parse(fs.readFileSync(path.join(packageDirectory, 'package.json'), 'utf8')) as {\n exports?: Record<string, PackageExportEntry>;\n };\n}\n\nfunction getImportTarget(entry: PackageExportEntry | undefined): string | null {\n if (!entry) {\n return null;\n }\n\n if (typeof entry === 'string') {\n return entry;\n }\n\n if (typeof entry.import === 'string') {\n return entry.import;\n }\n\n if (\n entry.import &&\n typeof entry.import === 'object' &&\n typeof entry.import.default === 'string'\n ) {\n return entry.import.default;\n }\n\n if (typeof entry.default === 'string') {\n return entry.default;\n }\n\n return null;\n}\n\nfunction resolveInstalledPackageDirectory(packageName: string, importMetaUrl: string): string {\n const require = createRequire(importMetaUrl);\n const installedEntryPath = require.resolve(packageName);\n return path.resolve(path.dirname(installedEntryPath), '..');\n}\n\nfunction resolveInstalledExportEntry(\n packageName: string,\n packageDirectory: string,\n exportPath: OpenZeppelinAdapterExportPath\n): string {\n const packageJson = readPackageJson(packageDirectory);\n const target = getImportTarget(packageJson.exports?.[exportPath]);\n\n if (!target) {\n throw new Error(\n `Missing export \"${exportPath}\" in ${packageName}/package.json (required \"import\" condition)`\n );\n }\n\n return path.resolve(packageDirectory, target);\n}\n\nexport function resolveInstalledOpenZeppelinAdapterEntries(\n options: ResolveInstalledOpenZeppelinAdapterEntriesOptions\n): Record<string, string> {\n const exportPaths = options.exportPaths ?? DEFAULT_RESOLVED_ADAPTER_EXPORT_PATHS;\n const entries: Record<string, string> = {};\n\n for (const packageName of getOpenZeppelinAdapterPackageNames(options.ecosystems)) {\n const packageDirectory = resolveInstalledPackageDirectory(packageName, options.importMetaUrl);\n\n for (const exportPath of exportPaths) {\n entries[getOpenZeppelinAdapterImportSpecifier(packageName, exportPath)] =\n resolveInstalledExportEntry(packageName, packageDirectory, exportPath);\n }\n }\n\n return entries;\n}\n\nexport function createOpenZeppelinAdapterResolverPlugin(\n options: ResolveInstalledOpenZeppelinAdapterEntriesOptions\n): Plugin {\n const entries = resolveInstalledOpenZeppelinAdapterEntries(options);\n\n return {\n name: 'openzeppelin-adapter-package-resolver',\n enforce: 'pre',\n resolveId(id) {\n return entries[id] ?? null;\n },\n };\n}\n","import type { PluginOption, UserConfig } from 'vite';\n\nimport { loadOpenZeppelinAdapterViteConfig } from './config';\nimport {\n createOpenZeppelinAdapterResolverPlugin,\n resolveInstalledOpenZeppelinAdapterEntries,\n} from './resolver';\nimport type {\n DefineOpenZeppelinAdapterViteConfigOptions,\n DefineOpenZeppelinAdapterVitestConfigOptions,\n OpenZeppelinAdapterIntegration,\n OpenZeppelinAdapterIntegrationOptions,\n OpenZeppelinAdapterSsrConfig,\n OpenZeppelinAdapterViteConfig,\n} from './types';\n\ntype SsrNoExternalValue = NonNullable<NonNullable<UserConfig['ssr']>['noExternal']>;\n\nfunction normalizePluginOptions(plugins: UserConfig['plugins']): PluginOption[] {\n if (!plugins) {\n return [];\n }\n\n return Array.isArray(plugins) ? plugins : [plugins];\n}\n\nfunction normalizeStringValues(value: string | string[] | undefined): string[] {\n if (!value) {\n return [];\n }\n\n return Array.isArray(value) ? value : [value];\n}\n\nfunction mergeUniqueStrings(\n base: string | string[] | undefined,\n extra: readonly string[]\n): string[] {\n const merged: string[] = [];\n const seen = new Set<string>();\n\n for (const entry of [...normalizeStringValues(base), ...extra]) {\n if (!entry || seen.has(entry)) {\n continue;\n }\n\n seen.add(entry);\n merged.push(entry);\n }\n\n return merged;\n}\n\nfunction mergeSsrNoExternal(\n base: SsrNoExternalValue | undefined,\n extra: OpenZeppelinAdapterSsrConfig['noExternal']\n): true | Array<string | RegExp> {\n if (base === true || extra === true) {\n return true;\n }\n\n const merged: Array<string | RegExp> = [];\n const seenStrings = new Set<string>();\n const values = [\n ...(base ? (Array.isArray(base) ? base : [base]) : []),\n ...(Array.isArray(extra) ? extra : [extra]),\n ];\n\n for (const entry of values) {\n if (typeof entry === 'string') {\n if (!seenStrings.has(entry)) {\n seenStrings.add(entry);\n merged.push(entry);\n }\n continue;\n }\n\n if (entry instanceof RegExp) {\n merged.push(entry);\n }\n }\n\n return merged;\n}\n\nfunction mergeResolveAlias(\n baseAlias: NonNullable<NonNullable<UserConfig['resolve']>['alias']> | undefined,\n extraAliasEntries: Record<string, string>\n): NonNullable<NonNullable<UserConfig['resolve']>['alias']> | undefined {\n if (Object.keys(extraAliasEntries).length === 0) {\n return baseAlias;\n }\n\n if (!baseAlias) {\n return extraAliasEntries;\n }\n\n if (Array.isArray(baseAlias)) {\n return [\n ...baseAlias,\n ...Object.entries(extraAliasEntries).map(([find, replacement]) => ({\n find,\n replacement,\n })),\n ];\n }\n\n return {\n ...baseAlias,\n ...extraAliasEntries,\n };\n}\n\nfunction mergeOpenZeppelinAdapterConfig(\n baseConfig: UserConfig,\n adapterConfig: OpenZeppelinAdapterViteConfig,\n options: {\n extraPlugins?: PluginOption[];\n extraAliasEntries?: Record<string, string>;\n } = {}\n): UserConfig {\n const extraPlugins = options.extraPlugins ?? [];\n const extraAliasEntries = options.extraAliasEntries ?? {};\n\n return {\n ...baseConfig,\n plugins: [\n ...adapterConfig.plugins,\n ...normalizePluginOptions(baseConfig.plugins),\n ...extraPlugins,\n ],\n resolve: {\n ...baseConfig.resolve,\n alias: mergeResolveAlias(baseConfig.resolve?.alias, extraAliasEntries),\n dedupe: mergeUniqueStrings(baseConfig.resolve?.dedupe, adapterConfig.resolve.dedupe),\n },\n optimizeDeps: {\n ...baseConfig.optimizeDeps,\n include: mergeUniqueStrings(\n baseConfig.optimizeDeps?.include,\n adapterConfig.optimizeDeps.include\n ),\n exclude: mergeUniqueStrings(\n baseConfig.optimizeDeps?.exclude,\n adapterConfig.optimizeDeps.exclude\n ),\n },\n ssr: {\n ...baseConfig.ssr,\n noExternal: mergeSsrNoExternal(baseConfig.ssr?.noExternal, adapterConfig.ssr.noExternal),\n },\n };\n}\n\nasync function buildOpenZeppelinAdapterViteConfig(\n options: OpenZeppelinAdapterIntegrationOptions,\n config: UserConfig = {}\n): Promise<UserConfig> {\n const adapterConfig = await loadOpenZeppelinAdapterViteConfig(options);\n return mergeOpenZeppelinAdapterConfig(config, adapterConfig);\n}\n\nasync function buildOpenZeppelinAdapterVitestConfig(\n options: OpenZeppelinAdapterIntegrationOptions,\n config: UserConfig = {}\n): Promise<UserConfig> {\n if (!options.importMetaUrl) {\n throw new Error(\n 'createOpenZeppelinAdapterIntegration(...).vitest() requires importMetaUrl to resolve ' +\n 'installed adapter exports'\n );\n }\n\n const adapterConfig = await loadOpenZeppelinAdapterViteConfig(options);\n const resolverOptions = {\n ecosystems: options.ecosystems,\n importMetaUrl: options.importMetaUrl,\n exportPaths: options.exportPaths,\n };\n\n return mergeOpenZeppelinAdapterConfig(config, adapterConfig, {\n extraPlugins: [createOpenZeppelinAdapterResolverPlugin(resolverOptions)],\n extraAliasEntries: resolveInstalledOpenZeppelinAdapterEntries(resolverOptions),\n });\n}\n\nexport function createOpenZeppelinAdapterIntegration(\n options: OpenZeppelinAdapterIntegrationOptions\n): OpenZeppelinAdapterIntegration {\n const adapterConfigPromise = loadOpenZeppelinAdapterViteConfig(options);\n\n return {\n async vite(config: UserConfig = {}) {\n return mergeOpenZeppelinAdapterConfig(config, await adapterConfigPromise);\n },\n async vitest(config: UserConfig = {}) {\n if (!options.importMetaUrl) {\n throw new Error(\n 'createOpenZeppelinAdapterIntegration(...).vitest() requires importMetaUrl to resolve ' +\n 'installed adapter exports'\n );\n }\n\n const resolverOptions = {\n ecosystems: options.ecosystems,\n importMetaUrl: options.importMetaUrl,\n exportPaths: options.exportPaths,\n };\n\n return mergeOpenZeppelinAdapterConfig(config, await adapterConfigPromise, {\n extraPlugins: [createOpenZeppelinAdapterResolverPlugin(resolverOptions)],\n extraAliasEntries: resolveInstalledOpenZeppelinAdapterEntries(resolverOptions),\n });\n },\n };\n}\n\nexport function defineOpenZeppelinAdapterViteConfig(\n options: DefineOpenZeppelinAdapterViteConfigOptions\n): Promise<UserConfig> {\n const { config = {}, ...integrationOptions } = options;\n return buildOpenZeppelinAdapterViteConfig(integrationOptions, config);\n}\n\nexport function defineOpenZeppelinAdapterVitestConfig(\n options: DefineOpenZeppelinAdapterVitestConfigOptions\n): Promise<UserConfig> {\n const { config = {}, ...integrationOptions } = options;\n return buildOpenZeppelinAdapterVitestConfig(integrationOptions, config);\n}\n","import type { Plugin, PluginOption, UserConfig } from 'vite';\n\nexport const SUPPORTED_OPENZEPPELIN_ADAPTER_ECOSYSTEMS = [\n 'evm',\n 'midnight',\n 'polkadot',\n 'solana',\n 'stellar',\n] as const;\n\nexport type OpenZeppelinAdapterEcosystem =\n (typeof SUPPORTED_OPENZEPPELIN_ADAPTER_ECOSYSTEMS)[number];\n\nexport type OpenZeppelinAdapterExportPath = '.' | './metadata' | './networks';\n\nexport interface MidnightAdapterPluginFactories {\n wasm: () => Plugin;\n topLevelAwait: () => Plugin;\n}\n\nexport interface OpenZeppelinAdapterPluginFactories {\n midnight?: MidnightAdapterPluginFactories;\n}\n\nexport interface LoadOpenZeppelinAdapterViteConfigOptions {\n ecosystems: readonly OpenZeppelinAdapterEcosystem[];\n pluginFactories?: OpenZeppelinAdapterPluginFactories;\n}\n\nexport interface OpenZeppelinAdapterIntegrationOptions extends LoadOpenZeppelinAdapterViteConfigOptions {\n importMetaUrl?: string;\n exportPaths?: readonly OpenZeppelinAdapterExportPath[];\n}\n\nexport interface DefineOpenZeppelinAdapterViteConfigOptions extends LoadOpenZeppelinAdapterViteConfigOptions {\n config?: UserConfig;\n}\n\nexport interface DefineOpenZeppelinAdapterVitestConfigOptions extends OpenZeppelinAdapterIntegrationOptions {\n config?: UserConfig;\n importMetaUrl: string;\n}\n\nexport interface ResolveInstalledOpenZeppelinAdapterEntriesOptions {\n ecosystems: readonly OpenZeppelinAdapterEcosystem[];\n importMetaUrl: string;\n exportPaths?: readonly OpenZeppelinAdapterExportPath[];\n}\n\nexport interface OpenZeppelinAdapterResolvedConfig {\n dedupe: string[];\n}\n\nexport interface OpenZeppelinAdapterOptimizeDepsConfig {\n include: string[];\n exclude: string[];\n}\n\nexport interface OpenZeppelinAdapterSsrConfig {\n noExternal: true | Array<string | RegExp>;\n}\n\nexport interface OpenZeppelinAdapterViteConfig {\n plugins: PluginOption[];\n resolve: OpenZeppelinAdapterResolvedConfig;\n optimizeDeps: OpenZeppelinAdapterOptimizeDepsConfig;\n ssr: OpenZeppelinAdapterSsrConfig;\n packageNames: string[];\n}\n\nexport interface OpenZeppelinAdapterIntegration {\n vite(config?: UserConfig): Promise<UserConfig>;\n vitest(config?: UserConfig): Promise<UserConfig>;\n}\n\nexport type AdapterViteConfigFragment = Partial<\n Pick<UserConfig, 'plugins' | 'resolve' | 'optimizeDeps' | 'ssr'>\n>;\n"],"mappings":"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"}
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/config.ts","../src/integration.ts","../src/registry.ts","../src/resolver.ts"],"sourcesContent":[],"mappings":";;;cAEa;KAQD,4BAAA,WACF;AATG,KAWD,6BAAA,GAXC,GAAA,GAMH,YAAA,GAAA,YAAA;AAEE,UAKK,8BAAA,CAJP;EAEE,IAAA,EAAA,GAAA,GAGE,MAHF;EAEK,aAAA,EAAA,GAAA,GAEM,MAFN;AAKjB;AAIiB,UAJA,kCAAA,CAIwC;EAKxC,QAAA,CAAA,EARJ,8BAQ0C;AAKvD;AAIiB,UAdA,wCAAA,CAc6C;EAK7C,UAAA,EAAA,SAlBM,4BAkBN,EAAA;EAMA,eAAA,CAAA,EAvBG,kCAuB8B;AAIlD;AAKiB,UA7BA,qCAAA,SAA8C,wCA8BrC,CAAA;EAGT,aAAA,CAAA,EAAA,MAAA;EACN,WAAA,CAAA,EAAA,SAhCc,6BAgCd,EAAA;;AAEK,UA/BC,0CAAA,SAAmD,wCA+BpD,CAAA;EACT,MAAA,CAAA,EA/BI,UA+BJ;;AAIU,UAhCA,4CAAA,SAAqD,qCAgCvB,CAAA;EAC/B,MAAA,CAAA,EAhCL,UAgCK;EAAqB,aAAA,EAAA,MAAA;;AACnB,UA7BD,iDAAA,CA6BC;EAAqB,UAAA,EAAA,SA5BhB,4BA4BgB,EAAA;EAAR,aAAA,EAAA,MAAA;EAAO,WAAA,CAAA,EAAA,SA1Bb,6BA0Ba,EAAA;AAGtC;AACO,UA3BU,iCAAA,CA2BV;EAAL,MAAA,EAAA,MAAA,EAAA;;AAD6C,UAtB9B,qCAAA,CAsB8B;;;;ACNzB,UDXL,4BAAA,CCWsC;EAC5C,UAAA,EAAA,IAAA,GDXU,KCWV,CAAA,MAAA,GDXyB,MCWzB,CAAA;;AACR,UDTc,6BAAA,CCSd;EAAO,OAAA,EDRC,YCQD,EAAA;WDPC;gBACK;OACT;EEwHS,YAAA,EAAA,MAAA,EAAA;AA+BhB;AACW,UFpJM,8BAAA,CEoJN;EACA,IAAA,CAAA,MAAA,CAAA,EFpJK,UEoJL,CAAA,EFpJkB,OEoJlB,CFpJ0B,UEoJ1B,CAAA;EAAR,MAAA,CAAA,MAAA,CAAA,EFnJe,UEmJf,CAAA,EFnJ4B,OEmJ5B,CFnJoC,UEmJpC,CAAA;;AAKa,KFrJJ,yBAAA,GAA4B,OEqJa,CFpJnD,IEoJmD,CFpJ9C,UEoJ8C,EAAA,SAAA,GAAA,SAAA,GAAA,cAAA,GAAA,KAAA,CAAA,CAAA;;;iBD3J/B,iCAAA,UACX,2CACR,QAAQ;;;iBCmHK,oCAAA,UACL,wCACR;AF1LU,iBEuNG,mCAAA,CFjNN,OAAA,EEkNC,0CFlND,CAAA,EEmNP,OFnNO,CEmNC,UFnND,CAAA;AAEE,iBEsNI,qCAAA,CFrNN,OAAA,EEsNC,4CFtNwC,CAAA,EEuNhD,OFvNgD,CEuNxC,UFvNwC,CAAA;;;AAalC,iBGmDD,kCAAA,CHlDO,UAAA,EAAA,SGmDA,4BHlDH,EAAA,CAAA,EAAA,MAAA,EAAA;AAGH,iBGsDD,qCAAA,CHpDS,WAAA,EAAA,MAAA,EAAA,UAFsC,EGwDjD,6BHxDiD,CAAA,EAAwC,MAAA;AAKtF,iBG4DD,sCAAA,CH3DL,UADyD,EAAA,SG6D7C,4BH7D6C,EAAwC,EAAA,WAAA,EAAA,SG8DpF,6BH9DoF,EAAA,CAAA,EAAA,MAAA,EAAA;;;
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/config.ts","../src/integration.ts","../src/registry.ts","../src/resolver.ts"],"sourcesContent":[],"mappings":";;;cAEa;KAQD,4BAAA,WACF;AATG,KAWD,6BAAA,GAXC,GAAA,GAMH,YAAA,GAAA,YAAA;AAEE,UAKK,8BAAA,CAJP;EAEE,IAAA,EAAA,GAAA,GAGE,MAHF;EAEK,aAAA,EAAA,GAAA,GAEM,MAFN;AAKjB;AAIiB,UAJA,kCAAA,CAIwC;EAKxC,QAAA,CAAA,EARJ,8BAQ0C;AAKvD;AAIiB,UAdA,wCAAA,CAc6C;EAK7C,UAAA,EAAA,SAlBM,4BAkBN,EAAA;EAMA,eAAA,CAAA,EAvBG,kCAuB8B;AAIlD;AAKiB,UA7BA,qCAAA,SAA8C,wCA8BrC,CAAA;EAGT,aAAA,CAAA,EAAA,MAAA;EACN,WAAA,CAAA,EAAA,SAhCc,6BAgCd,EAAA;;AAEK,UA/BC,0CAAA,SAAmD,wCA+BpD,CAAA;EACT,MAAA,CAAA,EA/BI,UA+BJ;;AAIU,UAhCA,4CAAA,SAAqD,qCAgCvB,CAAA;EAC/B,MAAA,CAAA,EAhCL,UAgCK;EAAqB,aAAA,EAAA,MAAA;;AACnB,UA7BD,iDAAA,CA6BC;EAAqB,UAAA,EAAA,SA5BhB,4BA4BgB,EAAA;EAAR,aAAA,EAAA,MAAA;EAAO,WAAA,CAAA,EAAA,SA1Bb,6BA0Ba,EAAA;AAGtC;AACO,UA3BU,iCAAA,CA2BV;EAAL,MAAA,EAAA,MAAA,EAAA;;AAD6C,UAtB9B,qCAAA,CAsB8B;;;;ACNzB,UDXL,4BAAA,CCWsC;EAC5C,UAAA,EAAA,IAAA,GDXU,KCWV,CAAA,MAAA,GDXyB,MCWzB,CAAA;;AACR,UDTc,6BAAA,CCSd;EAAO,OAAA,EDRC,YCQD,EAAA;WDPC;gBACK;OACT;EEwHS,YAAA,EAAA,MAAA,EAAA;AA+BhB;AACW,UFpJM,8BAAA,CEoJN;EACA,IAAA,CAAA,MAAA,CAAA,EFpJK,UEoJL,CAAA,EFpJkB,OEoJlB,CFpJ0B,UEoJ1B,CAAA;EAAR,MAAA,CAAA,MAAA,CAAA,EFnJe,UEmJf,CAAA,EFnJ4B,OEmJ5B,CFnJoC,UEmJpC,CAAA;;AAKa,KFrJJ,yBAAA,GAA4B,OEqJa,CFpJnD,IEoJmD,CFpJ9C,UEoJ8C,EAAA,SAAA,GAAA,SAAA,GAAA,cAAA,GAAA,KAAA,CAAA,CAAA;;;iBD3J/B,iCAAA,UACX,2CACR,QAAQ;;;iBCmHK,oCAAA,UACL,wCACR;AF1LU,iBEuNG,mCAAA,CFjNN,OAAA,EEkNC,0CFlND,CAAA,EEmNP,OFnNO,CEmNC,UFnND,CAAA;AAEE,iBEsNI,qCAAA,CFrNN,OAAA,EEsNC,4CFtNwC,CAAA,EEuNhD,OFvNgD,CEuNxC,UFvNwC,CAAA;;;AAalC,iBGmDD,kCAAA,CHlDO,UAAA,EAAA,SGmDA,4BHlDH,EAAA,CAAA,EAAA,MAAA,EAAA;AAGH,iBGsDD,qCAAA,CHpDS,WAAA,EAAA,MAAA,EAAA,UAFsC,EGwDjD,6BHxDiD,CAAA,EAAwC,MAAA;AAKtF,iBG4DD,sCAAA,CH3DL,UADyD,EAAA,SG6D7C,4BH7D6C,EAAwC,EAAA,WAAA,EAAA,SG8DpF,6BH9DoF,EAAA,CAAA,EAAA,MAAA,EAAA;;;iBIoD5F,0CAAA,UACL,oDACR;AJtFU,iBIsGG,uCAAA,CJhGN,OAAA,EIiGC,iDJjGD,CAAA,EIkGP,MJlGO"}
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/config.ts","../src/integration.ts","../src/registry.ts","../src/resolver.ts"],"sourcesContent":[],"mappings":";;;cAEa;KAQD,4BAAA,WACF;AATG,KAWD,6BAAA,GAXC,GAAA,GAMH,YAAA,GAAA,YAAA;AAEE,UAKK,8BAAA,CAJP;EAEE,IAAA,EAAA,GAAA,GAGE,MAHF;EAEK,aAAA,EAAA,GAAA,GAEM,MAFN;AAKjB;AAIiB,UAJA,kCAAA,CAIwC;EAKxC,QAAA,CAAA,EARJ,8BAQ0C;AAKvD;AAIiB,UAdA,wCAAA,CAc6C;EAK7C,UAAA,EAAA,SAlBM,4BAkBN,EAAA;EAMA,eAAA,CAAA,EAvBG,kCAuB8B;AAIlD;AAKiB,UA7BA,qCAAA,SAA8C,wCA8BrC,CAAA;EAGT,aAAA,CAAA,EAAA,MAAA;EACN,WAAA,CAAA,EAAA,SAhCc,6BAgCd,EAAA;;AAEK,UA/BC,0CAAA,SAAmD,wCA+BpD,CAAA;EACT,MAAA,CAAA,EA/BI,UA+BJ;;AAIU,UAhCA,4CAAA,SAAqD,qCAgCvB,CAAA;EAC/B,MAAA,CAAA,EAhCL,UAgCK;EAAqB,aAAA,EAAA,MAAA;;AACnB,UA7BD,iDAAA,CA6BC;EAAqB,UAAA,EAAA,SA5BhB,4BA4BgB,EAAA;EAAR,aAAA,EAAA,MAAA;EAAO,WAAA,CAAA,EAAA,SA1Bb,6BA0Ba,EAAA;AAGtC;AACO,UA3BU,iCAAA,CA2BV;EAAL,MAAA,EAAA,MAAA,EAAA;;AAD6C,UAtB9B,qCAAA,CAsB8B;;;;ACNzB,UDXL,4BAAA,CCWsC;EAC5C,UAAA,EAAA,IAAA,GDXU,KCWV,CAAA,MAAA,GDXyB,MCWzB,CAAA;;AACR,UDTc,6BAAA,CCSd;EAAO,OAAA,EDRC,YCQD,EAAA;WDPC;gBACK;OACT;EEwHS,YAAA,EAAA,MAAA,EAAA;AA+BhB;AACW,UFpJM,8BAAA,CEoJN;EACA,IAAA,CAAA,MAAA,CAAA,EFpJK,UEoJL,CAAA,EFpJkB,OEoJlB,CFpJ0B,UEoJ1B,CAAA;EAAR,MAAA,CAAA,MAAA,CAAA,EFnJe,UEmJf,CAAA,EFnJ4B,OEmJ5B,CFnJoC,UEmJpC,CAAA;;AAKa,KFrJJ,yBAAA,GAA4B,OEqJa,CFpJnD,IEoJmD,CFpJ9C,UEoJ8C,EAAA,SAAA,GAAA,SAAA,GAAA,cAAA,GAAA,KAAA,CAAA,CAAA;;;iBD3J/B,iCAAA,UACX,2CACR,QAAQ;;;iBCmHK,oCAAA,UACL,wCACR;AF1LU,iBEuNG,mCAAA,CFjNN,OAAA,EEkNC,0CFlND,CAAA,EEmNP,OFnNO,CEmNC,UFnND,CAAA;AAEE,iBEsNI,qCAAA,CFrNN,OAAA,EEsNC,4CFtNwC,CAAA,EEuNhD,OFvNgD,CEuNxC,UFvNwC,CAAA;;;AAalC,iBGmDD,kCAAA,CHlDO,UAAA,EAAA,SGmDA,4BHlDH,EAAA,CAAA,EAAA,MAAA,EAAA;AAGH,iBGsDD,qCAAA,CHpDS,WAAA,EAAA,MAAA,EAAA,UAFsC,EGwDjD,6BHxDiD,CAAA,EAAwC,MAAA;AAKtF,iBG4DD,sCAAA,CH3DL,UADyD,EAAA,SG6D7C,4BH7D6C,EAAwC,EAAA,WAAA,EAAA,SG8DpF,6BH9DoF,EAAA,CAAA,EAAA,MAAA,EAAA;;;
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/config.ts","../src/integration.ts","../src/registry.ts","../src/resolver.ts"],"sourcesContent":[],"mappings":";;;cAEa;KAQD,4BAAA,WACF;AATG,KAWD,6BAAA,GAXC,GAAA,GAMH,YAAA,GAAA,YAAA;AAEE,UAKK,8BAAA,CAJP;EAEE,IAAA,EAAA,GAAA,GAGE,MAHF;EAEK,aAAA,EAAA,GAAA,GAEM,MAFN;AAKjB;AAIiB,UAJA,kCAAA,CAIwC;EAKxC,QAAA,CAAA,EARJ,8BAQ0C;AAKvD;AAIiB,UAdA,wCAAA,CAc6C;EAK7C,UAAA,EAAA,SAlBM,4BAkBN,EAAA;EAMA,eAAA,CAAA,EAvBG,kCAuB8B;AAIlD;AAKiB,UA7BA,qCAAA,SAA8C,wCA8BrC,CAAA;EAGT,aAAA,CAAA,EAAA,MAAA;EACN,WAAA,CAAA,EAAA,SAhCc,6BAgCd,EAAA;;AAEK,UA/BC,0CAAA,SAAmD,wCA+BpD,CAAA;EACT,MAAA,CAAA,EA/BI,UA+BJ;;AAIU,UAhCA,4CAAA,SAAqD,qCAgCvB,CAAA;EAC/B,MAAA,CAAA,EAhCL,UAgCK;EAAqB,aAAA,EAAA,MAAA;;AACnB,UA7BD,iDAAA,CA6BC;EAAqB,UAAA,EAAA,SA5BhB,4BA4BgB,EAAA;EAAR,aAAA,EAAA,MAAA;EAAO,WAAA,CAAA,EAAA,SA1Bb,6BA0Ba,EAAA;AAGtC;AACO,UA3BU,iCAAA,CA2BV;EAAL,MAAA,EAAA,MAAA,EAAA;;AAD6C,UAtB9B,qCAAA,CAsB8B;;;;ACNzB,UDXL,4BAAA,CCWsC;EAC5C,UAAA,EAAA,IAAA,GDXU,KCWV,CAAA,MAAA,GDXyB,MCWzB,CAAA;;AACR,UDTc,6BAAA,CCSd;EAAO,OAAA,EDRC,YCQD,EAAA;WDPC;gBACK;OACT;EEwHS,YAAA,EAAA,MAAA,EAAA;AA+BhB;AACW,UFpJM,8BAAA,CEoJN;EACA,IAAA,CAAA,MAAA,CAAA,EFpJK,UEoJL,CAAA,EFpJkB,OEoJlB,CFpJ0B,UEoJ1B,CAAA;EAAR,MAAA,CAAA,MAAA,CAAA,EFnJe,UEmJf,CAAA,EFnJ4B,OEmJ5B,CFnJoC,UEmJpC,CAAA;;AAKa,KFrJJ,yBAAA,GAA4B,OEqJa,CFpJnD,IEoJmD,CFpJ9C,UEoJ8C,EAAA,SAAA,GAAA,SAAA,GAAA,cAAA,GAAA,KAAA,CAAA,CAAA;;;iBD3J/B,iCAAA,UACX,2CACR,QAAQ;;;iBCmHK,oCAAA,UACL,wCACR;AF1LU,iBEuNG,mCAAA,CFjNN,OAAA,EEkNC,0CFlND,CAAA,EEmNP,OFnNO,CEmNC,UFnND,CAAA;AAEE,iBEsNI,qCAAA,CFrNN,OAAA,EEsNC,4CFtNwC,CAAA,EEuNhD,OFvNgD,CEuNxC,UFvNwC,CAAA;;;AAalC,iBGmDD,kCAAA,CHlDO,UAAA,EAAA,SGmDA,4BHlDH,EAAA,CAAA,EAAA,MAAA,EAAA;AAGH,iBGsDD,qCAAA,CHpDS,WAAA,EAAA,MAAA,EAAA,UAFsC,EGwDjD,6BHxDiD,CAAA,EAAwC,MAAA;AAKtF,iBG4DD,sCAAA,CH3DL,UADyD,EAAA,SG6D7C,4BH7D6C,EAAwC,EAAA,WAAA,EAAA,SG8DpF,6BH9DoF,EAAA,CAAA,EAAA,MAAA,EAAA;;;iBIoD5F,0CAAA,UACL,oDACR;AJtFU,iBIsGG,uCAAA,CJhGN,OAAA,EIiGC,iDJjGD,CAAA,EIkGP,MJlGO"}
|
package/dist/index.mjs
CHANGED
|
@@ -132,6 +132,11 @@ async function loadOpenZeppelinAdapterViteConfig(options) {
|
|
|
132
132
|
|
|
133
133
|
//#endregion
|
|
134
134
|
//#region src/resolver.ts
|
|
135
|
+
const DEFAULT_RESOLVED_ADAPTER_EXPORT_PATHS = [
|
|
136
|
+
"./metadata",
|
|
137
|
+
"./networks",
|
|
138
|
+
"."
|
|
139
|
+
];
|
|
135
140
|
function readPackageJson(packageDirectory) {
|
|
136
141
|
return JSON.parse(fs.readFileSync(path.join(packageDirectory, "package.json"), "utf8"));
|
|
137
142
|
}
|
|
@@ -153,11 +158,7 @@ function resolveInstalledExportEntry(packageName, packageDirectory, exportPath)
|
|
|
153
158
|
return path.resolve(packageDirectory, target);
|
|
154
159
|
}
|
|
155
160
|
function resolveInstalledOpenZeppelinAdapterEntries(options) {
|
|
156
|
-
const exportPaths = options.exportPaths ??
|
|
157
|
-
".",
|
|
158
|
-
"./metadata",
|
|
159
|
-
"./networks"
|
|
160
|
-
];
|
|
161
|
+
const exportPaths = options.exportPaths ?? DEFAULT_RESOLVED_ADAPTER_EXPORT_PATHS;
|
|
161
162
|
const entries = {};
|
|
162
163
|
for (const packageName of getOpenZeppelinAdapterPackageNames(options.ecosystems)) {
|
|
163
164
|
const packageDirectory = resolveInstalledPackageDirectory(packageName, options.importMetaUrl);
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/registry.ts","../src/config.ts","../src/resolver.ts","../src/integration.ts","../src/types.ts"],"sourcesContent":["import type { UserConfig } from 'vite';\n\nimport type {\n AdapterViteConfigFragment,\n LoadOpenZeppelinAdapterViteConfigOptions,\n OpenZeppelinAdapterEcosystem,\n OpenZeppelinAdapterExportPath,\n} from './types';\n\ninterface AdapterRegistryEntry {\n packageName: string;\n extraOptimizeDepsExclude?: string[];\n loadConfig: (\n options: LoadOpenZeppelinAdapterViteConfigOptions\n ) => Promise<AdapterViteConfigFragment>;\n}\n\nconst ADAPTER_REGISTRY: Record<OpenZeppelinAdapterEcosystem, AdapterRegistryEntry> = {\n evm: {\n packageName: '@openzeppelin/adapter-evm',\n extraOptimizeDepsExclude: ['@openzeppelin/adapter-evm-core'],\n async loadConfig() {\n const { getEvmViteConfig } = await import('@openzeppelin/adapter-evm/vite-config');\n return getEvmViteConfig() as Partial<UserConfig>;\n },\n },\n midnight: {\n packageName: '@openzeppelin/adapter-midnight',\n async loadConfig(options) {\n const midnightPlugins = options.pluginFactories?.midnight;\n if (!midnightPlugins) {\n throw new Error(\n 'Midnight adapter Vite configuration requires `pluginFactories.midnight` with `wasm` and `topLevelAwait`.'\n );\n }\n\n const { getMidnightViteConfig } = await import('@openzeppelin/adapter-midnight/vite-config');\n return getMidnightViteConfig(midnightPlugins) as Partial<UserConfig>;\n },\n },\n polkadot: {\n packageName: '@openzeppelin/adapter-polkadot',\n async loadConfig() {\n const { getPolkadotViteConfig } = await import('@openzeppelin/adapter-polkadot/vite-config');\n return getPolkadotViteConfig() as Partial<UserConfig>;\n },\n },\n solana: {\n packageName: '@openzeppelin/adapter-solana',\n async loadConfig() {\n const { getSolanaViteConfig } = await import('@openzeppelin/adapter-solana/vite-config');\n return getSolanaViteConfig() as Partial<UserConfig>;\n },\n },\n stellar: {\n packageName: '@openzeppelin/adapter-stellar',\n async loadConfig() {\n const { getStellarViteConfig } = await import('@openzeppelin/adapter-stellar/vite-config');\n return getStellarViteConfig() as Partial<UserConfig>;\n },\n },\n};\n\nexport function normalizeEcosystems(\n ecosystems: readonly OpenZeppelinAdapterEcosystem[]\n): OpenZeppelinAdapterEcosystem[] {\n return [...new Set(ecosystems)];\n}\n\nexport function getAdapterRegistryEntry(\n ecosystem: OpenZeppelinAdapterEcosystem\n): AdapterRegistryEntry {\n return ADAPTER_REGISTRY[ecosystem];\n}\n\nexport function getOpenZeppelinAdapterPackageNames(\n ecosystems: readonly OpenZeppelinAdapterEcosystem[]\n): string[] {\n return normalizeEcosystems(ecosystems).map(\n (ecosystem) => ADAPTER_REGISTRY[ecosystem].packageName\n );\n}\n\nexport function getOpenZeppelinAdapterImportSpecifier(\n packageName: string,\n exportPath: OpenZeppelinAdapterExportPath\n): string {\n if (exportPath === '.') {\n return packageName;\n }\n\n return `${packageName}/${exportPath.slice(2)}`;\n}\n\nexport function getOpenZeppelinAdapterImportSpecifiers(\n ecosystems: readonly OpenZeppelinAdapterEcosystem[],\n exportPaths: readonly OpenZeppelinAdapterExportPath[]\n): string[] {\n const specifiers = new Set<string>();\n\n for (const packageName of getOpenZeppelinAdapterPackageNames(ecosystems)) {\n for (const exportPath of exportPaths) {\n specifiers.add(getOpenZeppelinAdapterImportSpecifier(packageName, exportPath));\n }\n }\n\n return [...specifiers];\n}\n","import type { PluginOption, UserConfig } from 'vite';\n\nimport {\n getAdapterRegistryEntry,\n getOpenZeppelinAdapterPackageNames,\n normalizeEcosystems,\n} from './registry';\nimport type {\n AdapterViteConfigFragment,\n LoadOpenZeppelinAdapterViteConfigOptions,\n OpenZeppelinAdapterViteConfig,\n} from './types';\n\ntype SsrNoExternalValue = NonNullable<NonNullable<UserConfig['ssr']>['noExternal']>;\n\nfunction appendPlugins(target: PluginOption[], plugins: AdapterViteConfigFragment['plugins']) {\n if (!plugins) {\n return;\n }\n\n target.push(...(Array.isArray(plugins) ? plugins : [plugins]));\n}\n\nfunction appendStringValues(target: Set<string>, value: string | string[] | undefined) {\n if (!value) {\n return;\n }\n\n const values = Array.isArray(value) ? value : [value];\n\n for (const entry of values) {\n if (entry) {\n target.add(entry);\n }\n }\n}\n\nfunction appendNoExternalValues(\n target: Array<string | RegExp>,\n seenStrings: Set<string>,\n value: SsrNoExternalValue | undefined\n): boolean {\n if (!value) {\n return false;\n }\n\n if (value === true) {\n return true;\n }\n\n const values = Array.isArray(value) ? value : [value];\n\n for (const entry of values) {\n if (typeof entry === 'string') {\n if (!seenStrings.has(entry)) {\n seenStrings.add(entry);\n target.push(entry);\n }\n continue;\n }\n\n if (entry instanceof RegExp) {\n target.push(entry);\n }\n }\n\n return false;\n}\n\nexport async function loadOpenZeppelinAdapterViteConfig(\n options: LoadOpenZeppelinAdapterViteConfigOptions\n): Promise<OpenZeppelinAdapterViteConfig> {\n const ecosystems = normalizeEcosystems(options.ecosystems);\n const plugins: PluginOption[] = [];\n const dedupe = new Set<string>();\n const optimizeDepsInclude = new Set<string>();\n const optimizeDepsExclude = new Set<string>();\n const ssrNoExternal: Array<string | RegExp> = [];\n const seenSsrNoExternalStrings = new Set<string>();\n let ssrNoExternalAll = false;\n const packageNames = getOpenZeppelinAdapterPackageNames(ecosystems);\n\n for (const packageName of packageNames) {\n optimizeDepsExclude.add(packageName);\n ssrNoExternalAll =\n appendNoExternalValues(ssrNoExternal, seenSsrNoExternalStrings, packageName) ||\n ssrNoExternalAll;\n }\n\n for (const ecosystem of ecosystems) {\n const entry = getAdapterRegistryEntry(ecosystem);\n\n let fragment: AdapterViteConfigFragment;\n try {\n fragment = await entry.loadConfig(options);\n } catch (error) {\n throw new Error(\n `Failed to load ${entry.packageName} Vite configuration. ` +\n `Original error: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n\n appendPlugins(plugins, fragment.plugins);\n appendStringValues(dedupe, fragment.resolve?.dedupe);\n appendStringValues(optimizeDepsInclude, fragment.optimizeDeps?.include);\n appendStringValues(optimizeDepsExclude, fragment.optimizeDeps?.exclude);\n appendStringValues(optimizeDepsExclude, entry.extraOptimizeDepsExclude);\n\n ssrNoExternalAll =\n appendNoExternalValues(ssrNoExternal, seenSsrNoExternalStrings, fragment.ssr?.noExternal) ||\n ssrNoExternalAll;\n }\n\n return {\n plugins,\n resolve: {\n dedupe: [...dedupe],\n },\n optimizeDeps: {\n include: [...optimizeDepsInclude],\n exclude: [...optimizeDepsExclude],\n },\n ssr: {\n noExternal: ssrNoExternalAll ? true : ssrNoExternal,\n },\n packageNames,\n };\n}\n","import fs from 'node:fs';\nimport { createRequire } from 'node:module';\nimport path from 'node:path';\nimport type { Plugin } from 'vite';\n\nimport {\n getOpenZeppelinAdapterImportSpecifier,\n getOpenZeppelinAdapterPackageNames,\n} from './registry';\nimport type {\n OpenZeppelinAdapterExportPath,\n ResolveInstalledOpenZeppelinAdapterEntriesOptions,\n} from './types';\n\ntype PackageExportEntry =\n | string\n | {\n import?: string | { default?: string };\n default?: string;\n };\n\nfunction readPackageJson(packageDirectory: string): {\n exports?: Record<string, PackageExportEntry>;\n} {\n return JSON.parse(fs.readFileSync(path.join(packageDirectory, 'package.json'), 'utf8')) as {\n exports?: Record<string, PackageExportEntry>;\n };\n}\n\nfunction getImportTarget(entry: PackageExportEntry | undefined): string | null {\n if (!entry) {\n return null;\n }\n\n if (typeof entry === 'string') {\n return entry;\n }\n\n if (typeof entry.import === 'string') {\n return entry.import;\n }\n\n if (\n entry.import &&\n typeof entry.import === 'object' &&\n typeof entry.import.default === 'string'\n ) {\n return entry.import.default;\n }\n\n if (typeof entry.default === 'string') {\n return entry.default;\n }\n\n return null;\n}\n\nfunction resolveInstalledPackageDirectory(packageName: string, importMetaUrl: string): string {\n const require = createRequire(importMetaUrl);\n const installedEntryPath = require.resolve(packageName);\n return path.resolve(path.dirname(installedEntryPath), '..');\n}\n\nfunction resolveInstalledExportEntry(\n packageName: string,\n packageDirectory: string,\n exportPath: OpenZeppelinAdapterExportPath\n): string {\n const packageJson = readPackageJson(packageDirectory);\n const target = getImportTarget(packageJson.exports?.[exportPath]);\n\n if (!target) {\n throw new Error(\n `Missing export \"${exportPath}\" in ${packageName}/package.json (required \"import\" condition)`\n );\n }\n\n return path.resolve(packageDirectory, target);\n}\n\nexport function resolveInstalledOpenZeppelinAdapterEntries(\n options: ResolveInstalledOpenZeppelinAdapterEntriesOptions\n): Record<string, string> {\n const exportPaths = options.exportPaths ?? ['.', './metadata', './networks'];\n const entries: Record<string, string> = {};\n\n for (const packageName of getOpenZeppelinAdapterPackageNames(options.ecosystems)) {\n const packageDirectory = resolveInstalledPackageDirectory(packageName, options.importMetaUrl);\n\n for (const exportPath of exportPaths) {\n entries[getOpenZeppelinAdapterImportSpecifier(packageName, exportPath)] =\n resolveInstalledExportEntry(packageName, packageDirectory, exportPath);\n }\n }\n\n return entries;\n}\n\nexport function createOpenZeppelinAdapterResolverPlugin(\n options: ResolveInstalledOpenZeppelinAdapterEntriesOptions\n): Plugin {\n const entries = resolveInstalledOpenZeppelinAdapterEntries(options);\n\n return {\n name: 'openzeppelin-adapter-package-resolver',\n enforce: 'pre',\n resolveId(id) {\n return entries[id] ?? null;\n },\n };\n}\n","import type { PluginOption, UserConfig } from 'vite';\n\nimport { loadOpenZeppelinAdapterViteConfig } from './config';\nimport {\n createOpenZeppelinAdapterResolverPlugin,\n resolveInstalledOpenZeppelinAdapterEntries,\n} from './resolver';\nimport type {\n DefineOpenZeppelinAdapterViteConfigOptions,\n DefineOpenZeppelinAdapterVitestConfigOptions,\n OpenZeppelinAdapterIntegration,\n OpenZeppelinAdapterIntegrationOptions,\n OpenZeppelinAdapterSsrConfig,\n OpenZeppelinAdapterViteConfig,\n} from './types';\n\ntype SsrNoExternalValue = NonNullable<NonNullable<UserConfig['ssr']>['noExternal']>;\n\nfunction normalizePluginOptions(plugins: UserConfig['plugins']): PluginOption[] {\n if (!plugins) {\n return [];\n }\n\n return Array.isArray(plugins) ? plugins : [plugins];\n}\n\nfunction normalizeStringValues(value: string | string[] | undefined): string[] {\n if (!value) {\n return [];\n }\n\n return Array.isArray(value) ? value : [value];\n}\n\nfunction mergeUniqueStrings(\n base: string | string[] | undefined,\n extra: readonly string[]\n): string[] {\n const merged: string[] = [];\n const seen = new Set<string>();\n\n for (const entry of [...normalizeStringValues(base), ...extra]) {\n if (!entry || seen.has(entry)) {\n continue;\n }\n\n seen.add(entry);\n merged.push(entry);\n }\n\n return merged;\n}\n\nfunction mergeSsrNoExternal(\n base: SsrNoExternalValue | undefined,\n extra: OpenZeppelinAdapterSsrConfig['noExternal']\n): true | Array<string | RegExp> {\n if (base === true || extra === true) {\n return true;\n }\n\n const merged: Array<string | RegExp> = [];\n const seenStrings = new Set<string>();\n const values = [\n ...(base ? (Array.isArray(base) ? base : [base]) : []),\n ...(Array.isArray(extra) ? extra : [extra]),\n ];\n\n for (const entry of values) {\n if (typeof entry === 'string') {\n if (!seenStrings.has(entry)) {\n seenStrings.add(entry);\n merged.push(entry);\n }\n continue;\n }\n\n if (entry instanceof RegExp) {\n merged.push(entry);\n }\n }\n\n return merged;\n}\n\nfunction mergeResolveAlias(\n baseAlias: NonNullable<NonNullable<UserConfig['resolve']>['alias']> | undefined,\n extraAliasEntries: Record<string, string>\n): NonNullable<NonNullable<UserConfig['resolve']>['alias']> | undefined {\n if (Object.keys(extraAliasEntries).length === 0) {\n return baseAlias;\n }\n\n if (!baseAlias) {\n return extraAliasEntries;\n }\n\n if (Array.isArray(baseAlias)) {\n return [\n ...baseAlias,\n ...Object.entries(extraAliasEntries).map(([find, replacement]) => ({\n find,\n replacement,\n })),\n ];\n }\n\n return {\n ...baseAlias,\n ...extraAliasEntries,\n };\n}\n\nfunction mergeOpenZeppelinAdapterConfig(\n baseConfig: UserConfig,\n adapterConfig: OpenZeppelinAdapterViteConfig,\n options: {\n extraPlugins?: PluginOption[];\n extraAliasEntries?: Record<string, string>;\n } = {}\n): UserConfig {\n const extraPlugins = options.extraPlugins ?? [];\n const extraAliasEntries = options.extraAliasEntries ?? {};\n\n return {\n ...baseConfig,\n plugins: [\n ...adapterConfig.plugins,\n ...normalizePluginOptions(baseConfig.plugins),\n ...extraPlugins,\n ],\n resolve: {\n ...baseConfig.resolve,\n alias: mergeResolveAlias(baseConfig.resolve?.alias, extraAliasEntries),\n dedupe: mergeUniqueStrings(baseConfig.resolve?.dedupe, adapterConfig.resolve.dedupe),\n },\n optimizeDeps: {\n ...baseConfig.optimizeDeps,\n include: mergeUniqueStrings(\n baseConfig.optimizeDeps?.include,\n adapterConfig.optimizeDeps.include\n ),\n exclude: mergeUniqueStrings(\n baseConfig.optimizeDeps?.exclude,\n adapterConfig.optimizeDeps.exclude\n ),\n },\n ssr: {\n ...baseConfig.ssr,\n noExternal: mergeSsrNoExternal(baseConfig.ssr?.noExternal, adapterConfig.ssr.noExternal),\n },\n };\n}\n\nasync function buildOpenZeppelinAdapterViteConfig(\n options: OpenZeppelinAdapterIntegrationOptions,\n config: UserConfig = {}\n): Promise<UserConfig> {\n const adapterConfig = await loadOpenZeppelinAdapterViteConfig(options);\n return mergeOpenZeppelinAdapterConfig(config, adapterConfig);\n}\n\nasync function buildOpenZeppelinAdapterVitestConfig(\n options: OpenZeppelinAdapterIntegrationOptions,\n config: UserConfig = {}\n): Promise<UserConfig> {\n if (!options.importMetaUrl) {\n throw new Error(\n 'createOpenZeppelinAdapterIntegration(...).vitest() requires importMetaUrl to resolve ' +\n 'installed adapter exports'\n );\n }\n\n const adapterConfig = await loadOpenZeppelinAdapterViteConfig(options);\n const resolverOptions = {\n ecosystems: options.ecosystems,\n importMetaUrl: options.importMetaUrl,\n exportPaths: options.exportPaths,\n };\n\n return mergeOpenZeppelinAdapterConfig(config, adapterConfig, {\n extraPlugins: [createOpenZeppelinAdapterResolverPlugin(resolverOptions)],\n extraAliasEntries: resolveInstalledOpenZeppelinAdapterEntries(resolverOptions),\n });\n}\n\nexport function createOpenZeppelinAdapterIntegration(\n options: OpenZeppelinAdapterIntegrationOptions\n): OpenZeppelinAdapterIntegration {\n const adapterConfigPromise = loadOpenZeppelinAdapterViteConfig(options);\n\n return {\n async vite(config: UserConfig = {}) {\n return mergeOpenZeppelinAdapterConfig(config, await adapterConfigPromise);\n },\n async vitest(config: UserConfig = {}) {\n if (!options.importMetaUrl) {\n throw new Error(\n 'createOpenZeppelinAdapterIntegration(...).vitest() requires importMetaUrl to resolve ' +\n 'installed adapter exports'\n );\n }\n\n const resolverOptions = {\n ecosystems: options.ecosystems,\n importMetaUrl: options.importMetaUrl,\n exportPaths: options.exportPaths,\n };\n\n return mergeOpenZeppelinAdapterConfig(config, await adapterConfigPromise, {\n extraPlugins: [createOpenZeppelinAdapterResolverPlugin(resolverOptions)],\n extraAliasEntries: resolveInstalledOpenZeppelinAdapterEntries(resolverOptions),\n });\n },\n };\n}\n\nexport function defineOpenZeppelinAdapterViteConfig(\n options: DefineOpenZeppelinAdapterViteConfigOptions\n): Promise<UserConfig> {\n const { config = {}, ...integrationOptions } = options;\n return buildOpenZeppelinAdapterViteConfig(integrationOptions, config);\n}\n\nexport function defineOpenZeppelinAdapterVitestConfig(\n options: DefineOpenZeppelinAdapterVitestConfigOptions\n): Promise<UserConfig> {\n const { config = {}, ...integrationOptions } = options;\n return buildOpenZeppelinAdapterVitestConfig(integrationOptions, config);\n}\n","import type { Plugin, PluginOption, UserConfig } from 'vite';\n\nexport const SUPPORTED_OPENZEPPELIN_ADAPTER_ECOSYSTEMS = [\n 'evm',\n 'midnight',\n 'polkadot',\n 'solana',\n 'stellar',\n] as const;\n\nexport type OpenZeppelinAdapterEcosystem =\n (typeof SUPPORTED_OPENZEPPELIN_ADAPTER_ECOSYSTEMS)[number];\n\nexport type OpenZeppelinAdapterExportPath = '.' | './metadata' | './networks';\n\nexport interface MidnightAdapterPluginFactories {\n wasm: () => Plugin;\n topLevelAwait: () => Plugin;\n}\n\nexport interface OpenZeppelinAdapterPluginFactories {\n midnight?: MidnightAdapterPluginFactories;\n}\n\nexport interface LoadOpenZeppelinAdapterViteConfigOptions {\n ecosystems: readonly OpenZeppelinAdapterEcosystem[];\n pluginFactories?: OpenZeppelinAdapterPluginFactories;\n}\n\nexport interface OpenZeppelinAdapterIntegrationOptions extends LoadOpenZeppelinAdapterViteConfigOptions {\n importMetaUrl?: string;\n exportPaths?: readonly OpenZeppelinAdapterExportPath[];\n}\n\nexport interface DefineOpenZeppelinAdapterViteConfigOptions extends LoadOpenZeppelinAdapterViteConfigOptions {\n config?: UserConfig;\n}\n\nexport interface DefineOpenZeppelinAdapterVitestConfigOptions extends OpenZeppelinAdapterIntegrationOptions {\n config?: UserConfig;\n importMetaUrl: string;\n}\n\nexport interface ResolveInstalledOpenZeppelinAdapterEntriesOptions {\n ecosystems: readonly OpenZeppelinAdapterEcosystem[];\n importMetaUrl: string;\n exportPaths?: readonly OpenZeppelinAdapterExportPath[];\n}\n\nexport interface OpenZeppelinAdapterResolvedConfig {\n dedupe: string[];\n}\n\nexport interface OpenZeppelinAdapterOptimizeDepsConfig {\n include: string[];\n exclude: string[];\n}\n\nexport interface OpenZeppelinAdapterSsrConfig {\n noExternal: true | Array<string | RegExp>;\n}\n\nexport interface OpenZeppelinAdapterViteConfig {\n plugins: PluginOption[];\n resolve: OpenZeppelinAdapterResolvedConfig;\n optimizeDeps: OpenZeppelinAdapterOptimizeDepsConfig;\n ssr: OpenZeppelinAdapterSsrConfig;\n packageNames: string[];\n}\n\nexport interface OpenZeppelinAdapterIntegration {\n vite(config?: UserConfig): Promise<UserConfig>;\n vitest(config?: UserConfig): Promise<UserConfig>;\n}\n\nexport type AdapterViteConfigFragment = Partial<\n Pick<UserConfig, 'plugins' | 'resolve' | 'optimizeDeps' | 'ssr'>\n>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/registry.ts","../src/config.ts","../src/resolver.ts","../src/integration.ts","../src/types.ts"],"sourcesContent":["import type { UserConfig } from 'vite';\n\nimport type {\n AdapterViteConfigFragment,\n LoadOpenZeppelinAdapterViteConfigOptions,\n OpenZeppelinAdapterEcosystem,\n OpenZeppelinAdapterExportPath,\n} from './types';\n\ninterface AdapterRegistryEntry {\n packageName: string;\n extraOptimizeDepsExclude?: string[];\n loadConfig: (\n options: LoadOpenZeppelinAdapterViteConfigOptions\n ) => Promise<AdapterViteConfigFragment>;\n}\n\nconst ADAPTER_REGISTRY: Record<OpenZeppelinAdapterEcosystem, AdapterRegistryEntry> = {\n evm: {\n packageName: '@openzeppelin/adapter-evm',\n extraOptimizeDepsExclude: ['@openzeppelin/adapter-evm-core'],\n async loadConfig() {\n const { getEvmViteConfig } = await import('@openzeppelin/adapter-evm/vite-config');\n return getEvmViteConfig() as Partial<UserConfig>;\n },\n },\n midnight: {\n packageName: '@openzeppelin/adapter-midnight',\n async loadConfig(options) {\n const midnightPlugins = options.pluginFactories?.midnight;\n if (!midnightPlugins) {\n throw new Error(\n 'Midnight adapter Vite configuration requires `pluginFactories.midnight` with `wasm` and `topLevelAwait`.'\n );\n }\n\n const { getMidnightViteConfig } = await import('@openzeppelin/adapter-midnight/vite-config');\n return getMidnightViteConfig(midnightPlugins) as Partial<UserConfig>;\n },\n },\n polkadot: {\n packageName: '@openzeppelin/adapter-polkadot',\n async loadConfig() {\n const { getPolkadotViteConfig } = await import('@openzeppelin/adapter-polkadot/vite-config');\n return getPolkadotViteConfig() as Partial<UserConfig>;\n },\n },\n solana: {\n packageName: '@openzeppelin/adapter-solana',\n async loadConfig() {\n const { getSolanaViteConfig } = await import('@openzeppelin/adapter-solana/vite-config');\n return getSolanaViteConfig() as Partial<UserConfig>;\n },\n },\n stellar: {\n packageName: '@openzeppelin/adapter-stellar',\n async loadConfig() {\n const { getStellarViteConfig } = await import('@openzeppelin/adapter-stellar/vite-config');\n return getStellarViteConfig() as Partial<UserConfig>;\n },\n },\n};\n\nexport function normalizeEcosystems(\n ecosystems: readonly OpenZeppelinAdapterEcosystem[]\n): OpenZeppelinAdapterEcosystem[] {\n return [...new Set(ecosystems)];\n}\n\nexport function getAdapterRegistryEntry(\n ecosystem: OpenZeppelinAdapterEcosystem\n): AdapterRegistryEntry {\n return ADAPTER_REGISTRY[ecosystem];\n}\n\nexport function getOpenZeppelinAdapterPackageNames(\n ecosystems: readonly OpenZeppelinAdapterEcosystem[]\n): string[] {\n return normalizeEcosystems(ecosystems).map(\n (ecosystem) => ADAPTER_REGISTRY[ecosystem].packageName\n );\n}\n\nexport function getOpenZeppelinAdapterImportSpecifier(\n packageName: string,\n exportPath: OpenZeppelinAdapterExportPath\n): string {\n if (exportPath === '.') {\n return packageName;\n }\n\n return `${packageName}/${exportPath.slice(2)}`;\n}\n\nexport function getOpenZeppelinAdapterImportSpecifiers(\n ecosystems: readonly OpenZeppelinAdapterEcosystem[],\n exportPaths: readonly OpenZeppelinAdapterExportPath[]\n): string[] {\n const specifiers = new Set<string>();\n\n for (const packageName of getOpenZeppelinAdapterPackageNames(ecosystems)) {\n for (const exportPath of exportPaths) {\n specifiers.add(getOpenZeppelinAdapterImportSpecifier(packageName, exportPath));\n }\n }\n\n return [...specifiers];\n}\n","import type { PluginOption, UserConfig } from 'vite';\n\nimport {\n getAdapterRegistryEntry,\n getOpenZeppelinAdapterPackageNames,\n normalizeEcosystems,\n} from './registry';\nimport type {\n AdapterViteConfigFragment,\n LoadOpenZeppelinAdapterViteConfigOptions,\n OpenZeppelinAdapterViteConfig,\n} from './types';\n\ntype SsrNoExternalValue = NonNullable<NonNullable<UserConfig['ssr']>['noExternal']>;\n\nfunction appendPlugins(target: PluginOption[], plugins: AdapterViteConfigFragment['plugins']) {\n if (!plugins) {\n return;\n }\n\n target.push(...(Array.isArray(plugins) ? plugins : [plugins]));\n}\n\nfunction appendStringValues(target: Set<string>, value: string | string[] | undefined) {\n if (!value) {\n return;\n }\n\n const values = Array.isArray(value) ? value : [value];\n\n for (const entry of values) {\n if (entry) {\n target.add(entry);\n }\n }\n}\n\nfunction appendNoExternalValues(\n target: Array<string | RegExp>,\n seenStrings: Set<string>,\n value: SsrNoExternalValue | undefined\n): boolean {\n if (!value) {\n return false;\n }\n\n if (value === true) {\n return true;\n }\n\n const values = Array.isArray(value) ? value : [value];\n\n for (const entry of values) {\n if (typeof entry === 'string') {\n if (!seenStrings.has(entry)) {\n seenStrings.add(entry);\n target.push(entry);\n }\n continue;\n }\n\n if (entry instanceof RegExp) {\n target.push(entry);\n }\n }\n\n return false;\n}\n\nexport async function loadOpenZeppelinAdapterViteConfig(\n options: LoadOpenZeppelinAdapterViteConfigOptions\n): Promise<OpenZeppelinAdapterViteConfig> {\n const ecosystems = normalizeEcosystems(options.ecosystems);\n const plugins: PluginOption[] = [];\n const dedupe = new Set<string>();\n const optimizeDepsInclude = new Set<string>();\n const optimizeDepsExclude = new Set<string>();\n const ssrNoExternal: Array<string | RegExp> = [];\n const seenSsrNoExternalStrings = new Set<string>();\n let ssrNoExternalAll = false;\n const packageNames = getOpenZeppelinAdapterPackageNames(ecosystems);\n\n for (const packageName of packageNames) {\n optimizeDepsExclude.add(packageName);\n ssrNoExternalAll =\n appendNoExternalValues(ssrNoExternal, seenSsrNoExternalStrings, packageName) ||\n ssrNoExternalAll;\n }\n\n for (const ecosystem of ecosystems) {\n const entry = getAdapterRegistryEntry(ecosystem);\n\n let fragment: AdapterViteConfigFragment;\n try {\n fragment = await entry.loadConfig(options);\n } catch (error) {\n throw new Error(\n `Failed to load ${entry.packageName} Vite configuration. ` +\n `Original error: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n\n appendPlugins(plugins, fragment.plugins);\n appendStringValues(dedupe, fragment.resolve?.dedupe);\n appendStringValues(optimizeDepsInclude, fragment.optimizeDeps?.include);\n appendStringValues(optimizeDepsExclude, fragment.optimizeDeps?.exclude);\n appendStringValues(optimizeDepsExclude, entry.extraOptimizeDepsExclude);\n\n ssrNoExternalAll =\n appendNoExternalValues(ssrNoExternal, seenSsrNoExternalStrings, fragment.ssr?.noExternal) ||\n ssrNoExternalAll;\n }\n\n return {\n plugins,\n resolve: {\n dedupe: [...dedupe],\n },\n optimizeDeps: {\n include: [...optimizeDepsInclude],\n exclude: [...optimizeDepsExclude],\n },\n ssr: {\n noExternal: ssrNoExternalAll ? true : ssrNoExternal,\n },\n packageNames,\n };\n}\n","import fs from 'node:fs';\nimport { createRequire } from 'node:module';\nimport path from 'node:path';\nimport type { Plugin } from 'vite';\n\nimport {\n getOpenZeppelinAdapterImportSpecifier,\n getOpenZeppelinAdapterPackageNames,\n} from './registry';\nimport type {\n OpenZeppelinAdapterExportPath,\n ResolveInstalledOpenZeppelinAdapterEntriesOptions,\n} from './types';\n\nconst DEFAULT_RESOLVED_ADAPTER_EXPORT_PATHS: readonly OpenZeppelinAdapterExportPath[] = [\n './metadata',\n './networks',\n '.',\n];\n\ntype PackageExportEntry =\n | string\n | {\n import?: string | { default?: string };\n default?: string;\n };\n\nfunction readPackageJson(packageDirectory: string): {\n exports?: Record<string, PackageExportEntry>;\n} {\n return JSON.parse(fs.readFileSync(path.join(packageDirectory, 'package.json'), 'utf8')) as {\n exports?: Record<string, PackageExportEntry>;\n };\n}\n\nfunction getImportTarget(entry: PackageExportEntry | undefined): string | null {\n if (!entry) {\n return null;\n }\n\n if (typeof entry === 'string') {\n return entry;\n }\n\n if (typeof entry.import === 'string') {\n return entry.import;\n }\n\n if (\n entry.import &&\n typeof entry.import === 'object' &&\n typeof entry.import.default === 'string'\n ) {\n return entry.import.default;\n }\n\n if (typeof entry.default === 'string') {\n return entry.default;\n }\n\n return null;\n}\n\nfunction resolveInstalledPackageDirectory(packageName: string, importMetaUrl: string): string {\n const require = createRequire(importMetaUrl);\n const installedEntryPath = require.resolve(packageName);\n return path.resolve(path.dirname(installedEntryPath), '..');\n}\n\nfunction resolveInstalledExportEntry(\n packageName: string,\n packageDirectory: string,\n exportPath: OpenZeppelinAdapterExportPath\n): string {\n const packageJson = readPackageJson(packageDirectory);\n const target = getImportTarget(packageJson.exports?.[exportPath]);\n\n if (!target) {\n throw new Error(\n `Missing export \"${exportPath}\" in ${packageName}/package.json (required \"import\" condition)`\n );\n }\n\n return path.resolve(packageDirectory, target);\n}\n\nexport function resolveInstalledOpenZeppelinAdapterEntries(\n options: ResolveInstalledOpenZeppelinAdapterEntriesOptions\n): Record<string, string> {\n const exportPaths = options.exportPaths ?? DEFAULT_RESOLVED_ADAPTER_EXPORT_PATHS;\n const entries: Record<string, string> = {};\n\n for (const packageName of getOpenZeppelinAdapterPackageNames(options.ecosystems)) {\n const packageDirectory = resolveInstalledPackageDirectory(packageName, options.importMetaUrl);\n\n for (const exportPath of exportPaths) {\n entries[getOpenZeppelinAdapterImportSpecifier(packageName, exportPath)] =\n resolveInstalledExportEntry(packageName, packageDirectory, exportPath);\n }\n }\n\n return entries;\n}\n\nexport function createOpenZeppelinAdapterResolverPlugin(\n options: ResolveInstalledOpenZeppelinAdapterEntriesOptions\n): Plugin {\n const entries = resolveInstalledOpenZeppelinAdapterEntries(options);\n\n return {\n name: 'openzeppelin-adapter-package-resolver',\n enforce: 'pre',\n resolveId(id) {\n return entries[id] ?? null;\n },\n };\n}\n","import type { PluginOption, UserConfig } from 'vite';\n\nimport { loadOpenZeppelinAdapterViteConfig } from './config';\nimport {\n createOpenZeppelinAdapterResolverPlugin,\n resolveInstalledOpenZeppelinAdapterEntries,\n} from './resolver';\nimport type {\n DefineOpenZeppelinAdapterViteConfigOptions,\n DefineOpenZeppelinAdapterVitestConfigOptions,\n OpenZeppelinAdapterIntegration,\n OpenZeppelinAdapterIntegrationOptions,\n OpenZeppelinAdapterSsrConfig,\n OpenZeppelinAdapterViteConfig,\n} from './types';\n\ntype SsrNoExternalValue = NonNullable<NonNullable<UserConfig['ssr']>['noExternal']>;\n\nfunction normalizePluginOptions(plugins: UserConfig['plugins']): PluginOption[] {\n if (!plugins) {\n return [];\n }\n\n return Array.isArray(plugins) ? plugins : [plugins];\n}\n\nfunction normalizeStringValues(value: string | string[] | undefined): string[] {\n if (!value) {\n return [];\n }\n\n return Array.isArray(value) ? value : [value];\n}\n\nfunction mergeUniqueStrings(\n base: string | string[] | undefined,\n extra: readonly string[]\n): string[] {\n const merged: string[] = [];\n const seen = new Set<string>();\n\n for (const entry of [...normalizeStringValues(base), ...extra]) {\n if (!entry || seen.has(entry)) {\n continue;\n }\n\n seen.add(entry);\n merged.push(entry);\n }\n\n return merged;\n}\n\nfunction mergeSsrNoExternal(\n base: SsrNoExternalValue | undefined,\n extra: OpenZeppelinAdapterSsrConfig['noExternal']\n): true | Array<string | RegExp> {\n if (base === true || extra === true) {\n return true;\n }\n\n const merged: Array<string | RegExp> = [];\n const seenStrings = new Set<string>();\n const values = [\n ...(base ? (Array.isArray(base) ? base : [base]) : []),\n ...(Array.isArray(extra) ? extra : [extra]),\n ];\n\n for (const entry of values) {\n if (typeof entry === 'string') {\n if (!seenStrings.has(entry)) {\n seenStrings.add(entry);\n merged.push(entry);\n }\n continue;\n }\n\n if (entry instanceof RegExp) {\n merged.push(entry);\n }\n }\n\n return merged;\n}\n\nfunction mergeResolveAlias(\n baseAlias: NonNullable<NonNullable<UserConfig['resolve']>['alias']> | undefined,\n extraAliasEntries: Record<string, string>\n): NonNullable<NonNullable<UserConfig['resolve']>['alias']> | undefined {\n if (Object.keys(extraAliasEntries).length === 0) {\n return baseAlias;\n }\n\n if (!baseAlias) {\n return extraAliasEntries;\n }\n\n if (Array.isArray(baseAlias)) {\n return [\n ...baseAlias,\n ...Object.entries(extraAliasEntries).map(([find, replacement]) => ({\n find,\n replacement,\n })),\n ];\n }\n\n return {\n ...baseAlias,\n ...extraAliasEntries,\n };\n}\n\nfunction mergeOpenZeppelinAdapterConfig(\n baseConfig: UserConfig,\n adapterConfig: OpenZeppelinAdapterViteConfig,\n options: {\n extraPlugins?: PluginOption[];\n extraAliasEntries?: Record<string, string>;\n } = {}\n): UserConfig {\n const extraPlugins = options.extraPlugins ?? [];\n const extraAliasEntries = options.extraAliasEntries ?? {};\n\n return {\n ...baseConfig,\n plugins: [\n ...adapterConfig.plugins,\n ...normalizePluginOptions(baseConfig.plugins),\n ...extraPlugins,\n ],\n resolve: {\n ...baseConfig.resolve,\n alias: mergeResolveAlias(baseConfig.resolve?.alias, extraAliasEntries),\n dedupe: mergeUniqueStrings(baseConfig.resolve?.dedupe, adapterConfig.resolve.dedupe),\n },\n optimizeDeps: {\n ...baseConfig.optimizeDeps,\n include: mergeUniqueStrings(\n baseConfig.optimizeDeps?.include,\n adapterConfig.optimizeDeps.include\n ),\n exclude: mergeUniqueStrings(\n baseConfig.optimizeDeps?.exclude,\n adapterConfig.optimizeDeps.exclude\n ),\n },\n ssr: {\n ...baseConfig.ssr,\n noExternal: mergeSsrNoExternal(baseConfig.ssr?.noExternal, adapterConfig.ssr.noExternal),\n },\n };\n}\n\nasync function buildOpenZeppelinAdapterViteConfig(\n options: OpenZeppelinAdapterIntegrationOptions,\n config: UserConfig = {}\n): Promise<UserConfig> {\n const adapterConfig = await loadOpenZeppelinAdapterViteConfig(options);\n return mergeOpenZeppelinAdapterConfig(config, adapterConfig);\n}\n\nasync function buildOpenZeppelinAdapterVitestConfig(\n options: OpenZeppelinAdapterIntegrationOptions,\n config: UserConfig = {}\n): Promise<UserConfig> {\n if (!options.importMetaUrl) {\n throw new Error(\n 'createOpenZeppelinAdapterIntegration(...).vitest() requires importMetaUrl to resolve ' +\n 'installed adapter exports'\n );\n }\n\n const adapterConfig = await loadOpenZeppelinAdapterViteConfig(options);\n const resolverOptions = {\n ecosystems: options.ecosystems,\n importMetaUrl: options.importMetaUrl,\n exportPaths: options.exportPaths,\n };\n\n return mergeOpenZeppelinAdapterConfig(config, adapterConfig, {\n extraPlugins: [createOpenZeppelinAdapterResolverPlugin(resolverOptions)],\n extraAliasEntries: resolveInstalledOpenZeppelinAdapterEntries(resolverOptions),\n });\n}\n\nexport function createOpenZeppelinAdapterIntegration(\n options: OpenZeppelinAdapterIntegrationOptions\n): OpenZeppelinAdapterIntegration {\n const adapterConfigPromise = loadOpenZeppelinAdapterViteConfig(options);\n\n return {\n async vite(config: UserConfig = {}) {\n return mergeOpenZeppelinAdapterConfig(config, await adapterConfigPromise);\n },\n async vitest(config: UserConfig = {}) {\n if (!options.importMetaUrl) {\n throw new Error(\n 'createOpenZeppelinAdapterIntegration(...).vitest() requires importMetaUrl to resolve ' +\n 'installed adapter exports'\n );\n }\n\n const resolverOptions = {\n ecosystems: options.ecosystems,\n importMetaUrl: options.importMetaUrl,\n exportPaths: options.exportPaths,\n };\n\n return mergeOpenZeppelinAdapterConfig(config, await adapterConfigPromise, {\n extraPlugins: [createOpenZeppelinAdapterResolverPlugin(resolverOptions)],\n extraAliasEntries: resolveInstalledOpenZeppelinAdapterEntries(resolverOptions),\n });\n },\n };\n}\n\nexport function defineOpenZeppelinAdapterViteConfig(\n options: DefineOpenZeppelinAdapterViteConfigOptions\n): Promise<UserConfig> {\n const { config = {}, ...integrationOptions } = options;\n return buildOpenZeppelinAdapterViteConfig(integrationOptions, config);\n}\n\nexport function defineOpenZeppelinAdapterVitestConfig(\n options: DefineOpenZeppelinAdapterVitestConfigOptions\n): Promise<UserConfig> {\n const { config = {}, ...integrationOptions } = options;\n return buildOpenZeppelinAdapterVitestConfig(integrationOptions, config);\n}\n","import type { Plugin, PluginOption, UserConfig } from 'vite';\n\nexport const SUPPORTED_OPENZEPPELIN_ADAPTER_ECOSYSTEMS = [\n 'evm',\n 'midnight',\n 'polkadot',\n 'solana',\n 'stellar',\n] as const;\n\nexport type OpenZeppelinAdapterEcosystem =\n (typeof SUPPORTED_OPENZEPPELIN_ADAPTER_ECOSYSTEMS)[number];\n\nexport type OpenZeppelinAdapterExportPath = '.' | './metadata' | './networks';\n\nexport interface MidnightAdapterPluginFactories {\n wasm: () => Plugin;\n topLevelAwait: () => Plugin;\n}\n\nexport interface OpenZeppelinAdapterPluginFactories {\n midnight?: MidnightAdapterPluginFactories;\n}\n\nexport interface LoadOpenZeppelinAdapterViteConfigOptions {\n ecosystems: readonly OpenZeppelinAdapterEcosystem[];\n pluginFactories?: OpenZeppelinAdapterPluginFactories;\n}\n\nexport interface OpenZeppelinAdapterIntegrationOptions extends LoadOpenZeppelinAdapterViteConfigOptions {\n importMetaUrl?: string;\n exportPaths?: readonly OpenZeppelinAdapterExportPath[];\n}\n\nexport interface DefineOpenZeppelinAdapterViteConfigOptions extends LoadOpenZeppelinAdapterViteConfigOptions {\n config?: UserConfig;\n}\n\nexport interface DefineOpenZeppelinAdapterVitestConfigOptions extends OpenZeppelinAdapterIntegrationOptions {\n config?: UserConfig;\n importMetaUrl: string;\n}\n\nexport interface ResolveInstalledOpenZeppelinAdapterEntriesOptions {\n ecosystems: readonly OpenZeppelinAdapterEcosystem[];\n importMetaUrl: string;\n exportPaths?: readonly OpenZeppelinAdapterExportPath[];\n}\n\nexport interface OpenZeppelinAdapterResolvedConfig {\n dedupe: string[];\n}\n\nexport interface OpenZeppelinAdapterOptimizeDepsConfig {\n include: string[];\n exclude: string[];\n}\n\nexport interface OpenZeppelinAdapterSsrConfig {\n noExternal: true | Array<string | RegExp>;\n}\n\nexport interface OpenZeppelinAdapterViteConfig {\n plugins: PluginOption[];\n resolve: OpenZeppelinAdapterResolvedConfig;\n optimizeDeps: OpenZeppelinAdapterOptimizeDepsConfig;\n ssr: OpenZeppelinAdapterSsrConfig;\n packageNames: string[];\n}\n\nexport interface OpenZeppelinAdapterIntegration {\n vite(config?: UserConfig): Promise<UserConfig>;\n vitest(config?: UserConfig): Promise<UserConfig>;\n}\n\nexport type AdapterViteConfigFragment = Partial<\n Pick<UserConfig, 'plugins' | 'resolve' | 'optimizeDeps' | 'ssr'>\n>;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openzeppelin/adapters-vite",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Shared Vite and Vitest integration helpers for OpenZeppelin adapter packages",
|
|
6
6
|
"keywords": [
|
|
@@ -61,11 +61,11 @@
|
|
|
61
61
|
"typescript": "^5.9.2",
|
|
62
62
|
"vite": "^7.2.2",
|
|
63
63
|
"vitest": "^3.2.4",
|
|
64
|
-
"@openzeppelin/adapter-evm": "1.1.0",
|
|
65
64
|
"@openzeppelin/adapter-midnight": "1.1.0",
|
|
66
|
-
"@openzeppelin/adapter-polkadot": "1.1.0",
|
|
67
65
|
"@openzeppelin/adapter-solana": "1.1.0",
|
|
68
|
-
"@openzeppelin/adapter-
|
|
66
|
+
"@openzeppelin/adapter-evm": "1.1.0",
|
|
67
|
+
"@openzeppelin/adapter-stellar": "1.1.0",
|
|
68
|
+
"@openzeppelin/adapter-polkadot": "1.1.0"
|
|
69
69
|
},
|
|
70
70
|
"exports": {
|
|
71
71
|
".": {
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
+
|
|
3
|
+
import { resolveInstalledOpenZeppelinAdapterEntries } from '../resolver';
|
|
4
|
+
|
|
5
|
+
const {
|
|
6
|
+
mockResolvePackagePath,
|
|
7
|
+
mockReadFileSync,
|
|
8
|
+
mockGetOpenZeppelinAdapterPackageNames,
|
|
9
|
+
mockGetOpenZeppelinAdapterImportSpecifier,
|
|
10
|
+
} = vi.hoisted(() => ({
|
|
11
|
+
mockResolvePackagePath: vi.fn((packageName: string) => `/virtual/${packageName}/dist/index.mjs`),
|
|
12
|
+
mockReadFileSync: vi.fn(() =>
|
|
13
|
+
JSON.stringify({
|
|
14
|
+
exports: {
|
|
15
|
+
'.': { import: './dist/index.mjs' },
|
|
16
|
+
'./metadata': { import: './dist/metadata.mjs' },
|
|
17
|
+
'./networks': { import: './dist/networks.mjs' },
|
|
18
|
+
},
|
|
19
|
+
})
|
|
20
|
+
),
|
|
21
|
+
mockGetOpenZeppelinAdapterPackageNames: vi.fn(() => ['@openzeppelin/adapter-evm']),
|
|
22
|
+
mockGetOpenZeppelinAdapterImportSpecifier: vi.fn(
|
|
23
|
+
(packageName: string, exportPath: '.' | './metadata' | './networks') =>
|
|
24
|
+
exportPath === '.' ? packageName : `${packageName}/${exportPath.slice(2)}`
|
|
25
|
+
),
|
|
26
|
+
}));
|
|
27
|
+
|
|
28
|
+
vi.mock('node:fs', () => ({
|
|
29
|
+
default: {
|
|
30
|
+
readFileSync: mockReadFileSync,
|
|
31
|
+
},
|
|
32
|
+
}));
|
|
33
|
+
|
|
34
|
+
vi.mock('node:module', () => ({
|
|
35
|
+
createRequire: vi.fn(() => ({
|
|
36
|
+
resolve: mockResolvePackagePath,
|
|
37
|
+
})),
|
|
38
|
+
}));
|
|
39
|
+
|
|
40
|
+
vi.mock('../registry', () => ({
|
|
41
|
+
getOpenZeppelinAdapterPackageNames: mockGetOpenZeppelinAdapterPackageNames,
|
|
42
|
+
getOpenZeppelinAdapterImportSpecifier: mockGetOpenZeppelinAdapterImportSpecifier,
|
|
43
|
+
}));
|
|
44
|
+
|
|
45
|
+
describe('resolveInstalledOpenZeppelinAdapterEntries', () => {
|
|
46
|
+
it('orders subpath aliases before package root aliases by default', () => {
|
|
47
|
+
const entries = resolveInstalledOpenZeppelinAdapterEntries({
|
|
48
|
+
ecosystems: ['evm'],
|
|
49
|
+
importMetaUrl: 'file:///workspace/apps/builder/vitest.config.ts',
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
expect(Object.keys(entries)).toEqual([
|
|
53
|
+
'@openzeppelin/adapter-evm/metadata',
|
|
54
|
+
'@openzeppelin/adapter-evm/networks',
|
|
55
|
+
'@openzeppelin/adapter-evm',
|
|
56
|
+
]);
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it('preserves an explicit exportPaths order from the consumer', () => {
|
|
60
|
+
const entries = resolveInstalledOpenZeppelinAdapterEntries({
|
|
61
|
+
ecosystems: ['evm'],
|
|
62
|
+
importMetaUrl: 'file:///workspace/apps/builder/vitest.config.ts',
|
|
63
|
+
exportPaths: ['.', './metadata'],
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
expect(Object.keys(entries)).toEqual([
|
|
67
|
+
'@openzeppelin/adapter-evm',
|
|
68
|
+
'@openzeppelin/adapter-evm/metadata',
|
|
69
|
+
]);
|
|
70
|
+
});
|
|
71
|
+
});
|
package/src/resolver.ts
CHANGED
|
@@ -12,6 +12,12 @@ import type {
|
|
|
12
12
|
ResolveInstalledOpenZeppelinAdapterEntriesOptions,
|
|
13
13
|
} from './types';
|
|
14
14
|
|
|
15
|
+
const DEFAULT_RESOLVED_ADAPTER_EXPORT_PATHS: readonly OpenZeppelinAdapterExportPath[] = [
|
|
16
|
+
'./metadata',
|
|
17
|
+
'./networks',
|
|
18
|
+
'.',
|
|
19
|
+
];
|
|
20
|
+
|
|
15
21
|
type PackageExportEntry =
|
|
16
22
|
| string
|
|
17
23
|
| {
|
|
@@ -81,7 +87,7 @@ function resolveInstalledExportEntry(
|
|
|
81
87
|
export function resolveInstalledOpenZeppelinAdapterEntries(
|
|
82
88
|
options: ResolveInstalledOpenZeppelinAdapterEntriesOptions
|
|
83
89
|
): Record<string, string> {
|
|
84
|
-
const exportPaths = options.exportPaths ??
|
|
90
|
+
const exportPaths = options.exportPaths ?? DEFAULT_RESOLVED_ADAPTER_EXPORT_PATHS;
|
|
85
91
|
const entries: Record<string, string> = {};
|
|
86
92
|
|
|
87
93
|
for (const packageName of getOpenZeppelinAdapterPackageNames(options.ecosystems)) {
|