@openzeppelin/adapters-vite 1.3.1 → 1.3.2

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 CHANGED
@@ -93,6 +93,8 @@ function getOpenZeppelinAdapterImportSpecifiers(ecosystems, exportPaths) {
93
93
 
94
94
  //#endregion
95
95
  //#region src/config.ts
96
+ const RELAYER_COMPAT_ECOSYSTEMS = new Set(["evm", "stellar"]);
97
+ const RELAYER_SDK_ESM_ALIAS = "@openzeppelin/relayer-sdk/dist/esm/index.js";
96
98
  function appendPlugins(target, plugins) {
97
99
  if (!plugins) return;
98
100
  target.push(...Array.isArray(plugins) ? plugins : [plugins]);
@@ -102,6 +104,10 @@ function appendStringValues(target, value) {
102
104
  const values = Array.isArray(value) ? value : [value];
103
105
  for (const entry of values) if (entry) target.add(entry);
104
106
  }
107
+ function getSharedAliasEntries(ecosystems) {
108
+ if (!ecosystems.some((ecosystem) => RELAYER_COMPAT_ECOSYSTEMS.has(ecosystem))) return {};
109
+ return { "@openzeppelin/relayer-sdk": RELAYER_SDK_ESM_ALIAS };
110
+ }
105
111
  function appendNoExternalValues(target, seenStrings, value) {
106
112
  if (!value) return false;
107
113
  if (value === true) return true;
@@ -120,6 +126,7 @@ function appendNoExternalValues(target, seenStrings, value) {
120
126
  }
121
127
  async function loadOpenZeppelinAdapterViteConfig(options) {
122
128
  const ecosystems = normalizeEcosystems(options.ecosystems);
129
+ const alias = getSharedAliasEntries(ecosystems);
123
130
  const plugins = [];
124
131
  const dedupe = /* @__PURE__ */ new Set();
125
132
  const optimizeDepsInclude = /* @__PURE__ */ new Set();
@@ -149,7 +156,10 @@ async function loadOpenZeppelinAdapterViteConfig(options) {
149
156
  }
150
157
  return {
151
158
  plugins,
152
- resolve: { dedupe: [...dedupe] },
159
+ resolve: {
160
+ alias,
161
+ dedupe: [...dedupe]
162
+ },
153
163
  optimizeDeps: {
154
164
  include: [...optimizeDepsInclude],
155
165
  exclude: [...optimizeDepsExclude]
@@ -255,6 +265,19 @@ function mergeResolveAlias(baseAlias, extraAliasEntries) {
255
265
  ...extraAliasEntries
256
266
  };
257
267
  }
268
+ function mergeResolveAliasLayers(adapterAliasEntries, baseAlias, extraAliasEntries) {
269
+ const mergedBaseAlias = mergeResolveAlias(baseAlias, extraAliasEntries);
270
+ if (!adapterAliasEntries || Object.keys(adapterAliasEntries).length === 0) return mergedBaseAlias;
271
+ if (!mergedBaseAlias) return adapterAliasEntries;
272
+ if (Array.isArray(mergedBaseAlias)) return [...mergedBaseAlias, ...Object.entries(adapterAliasEntries).map(([find, replacement]) => ({
273
+ find,
274
+ replacement
275
+ }))];
276
+ return {
277
+ ...adapterAliasEntries,
278
+ ...mergedBaseAlias
279
+ };
280
+ }
258
281
  function mergeOpenZeppelinAdapterConfig(baseConfig, adapterConfig, options = {}) {
259
282
  const extraPlugins = options.extraPlugins ?? [];
260
283
  const extraAliasEntries = options.extraAliasEntries ?? {};
@@ -267,7 +290,7 @@ function mergeOpenZeppelinAdapterConfig(baseConfig, adapterConfig, options = {})
267
290
  ],
268
291
  resolve: {
269
292
  ...baseConfig.resolve,
270
- alias: mergeResolveAlias(baseConfig.resolve?.alias, extraAliasEntries),
293
+ alias: mergeResolveAliasLayers(adapterConfig.resolve.alias, baseConfig.resolve?.alias, extraAliasEntries),
271
294
  dedupe: mergeUniqueStrings(baseConfig.resolve?.dedupe, adapterConfig.resolve.dedupe)
272
295
  },
273
296
  optimizeDeps: {
@@ -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\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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"}
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 OpenZeppelinAdapterEcosystem,\n OpenZeppelinAdapterViteConfig,\n} from './types';\n\ntype SsrNoExternalValue = NonNullable<NonNullable<UserConfig['ssr']>['noExternal']>;\n\nconst RELAYER_COMPAT_ECOSYSTEMS = new Set<OpenZeppelinAdapterEcosystem>(['evm', 'stellar']);\n// Temporary Vite workaround until the upstream package exposes proper ESM exports:\n// https://github.com/OpenZeppelin/openzeppelin-relayer-sdk/issues/254\nconst RELAYER_SDK_ESM_ALIAS = '@openzeppelin/relayer-sdk/dist/esm/index.js';\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 getSharedAliasEntries(\n ecosystems: readonly OpenZeppelinAdapterEcosystem[]\n): Record<string, string> {\n if (!ecosystems.some((ecosystem) => RELAYER_COMPAT_ECOSYSTEMS.has(ecosystem))) {\n return {};\n }\n\n // Remove this alias once relayer-sdk resolves the upstream ESM packaging issue:\n // https://github.com/OpenZeppelin/openzeppelin-relayer-sdk/issues/254\n return {\n '@openzeppelin/relayer-sdk': RELAYER_SDK_ESM_ALIAS,\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 alias = getSharedAliasEntries(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 alias,\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 mergeResolveAliasLayers(\n adapterAliasEntries: Record<string, string> | undefined,\n baseAlias: NonNullable<NonNullable<UserConfig['resolve']>['alias']> | undefined,\n extraAliasEntries: Record<string, string>\n): NonNullable<NonNullable<UserConfig['resolve']>['alias']> | undefined {\n const mergedBaseAlias = mergeResolveAlias(baseAlias, extraAliasEntries);\n\n if (!adapterAliasEntries || Object.keys(adapterAliasEntries).length === 0) {\n return mergedBaseAlias;\n }\n\n if (!mergedBaseAlias) {\n return adapterAliasEntries;\n }\n\n if (Array.isArray(mergedBaseAlias)) {\n return [\n ...mergedBaseAlias,\n ...Object.entries(adapterAliasEntries).map(([find, replacement]) => ({\n find,\n replacement,\n })),\n ];\n }\n\n return {\n ...adapterAliasEntries,\n ...mergedBaseAlias,\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: mergeResolveAliasLayers(\n adapterConfig.resolve.alias,\n baseConfig.resolve?.alias,\n extraAliasEntries\n ),\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 alias?: Record<string, string>;\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,MAAM,mBAA+E;CACnF,KAAK;EACH,aAAa;EACb,0BAA0B,CAAC,iCAAiC;EAC5D,MAAM,aAAa;GACjB,MAAM,EAAE,qBAAqB,MAAM,OAAO;AAC1C,UAAO,kBAAkB;;EAE5B;CACD,UAAU;EACR,aAAa;EACb,MAAM,WAAW,SAAS;GACxB,MAAM,kBAAkB,QAAQ,iBAAiB;AACjD,OAAI,CAAC,gBACH,OAAM,IAAI,MACR,2GACD;GAGH,MAAM,EAAE,0BAA0B,MAAM,OAAO;AAC/C,UAAO,sBAAsB,gBAAgB;;EAEhD;CACD,UAAU;EACR,aAAa;EACb,MAAM,aAAa;GACjB,MAAM,EAAE,0BAA0B,MAAM,OAAO;AAC/C,UAAO,uBAAuB;;EAEjC;CACD,QAAQ;EACN,aAAa;EACb,MAAM,aAAa;GACjB,MAAM,EAAE,wBAAwB,MAAM,OAAO;AAC7C,UAAO,qBAAqB;;EAE/B;CACD,SAAS;EACP,aAAa;EACb,MAAM,aAAa;GACjB,MAAM,EAAE,yBAAyB,MAAM,OAAO;AAC9C,UAAO,sBAAsB;;EAEhC;CACF;AAED,SAAgB,oBACd,YACgC;AAChC,QAAO,CAAC,GAAG,IAAI,IAAI,WAAW,CAAC;;AAGjC,SAAgB,wBACd,WACsB;AACtB,QAAO,iBAAiB;;AAG1B,SAAgB,mCACd,YACU;AACV,QAAO,oBAAoB,WAAW,CAAC,KACpC,cAAc,iBAAiB,WAAW,YAC5C;;AAGH,SAAgB,sCACd,aACA,YACQ;AACR,KAAI,eAAe,IACjB,QAAO;AAGT,QAAO,GAAG,YAAY,GAAG,WAAW,MAAM,EAAE;;AAG9C,SAAgB,uCACd,YACA,aACU;CACV,MAAM,6BAAa,IAAI,KAAa;AAEpC,MAAK,MAAM,eAAe,mCAAmC,WAAW,CACtE,MAAK,MAAM,cAAc,YACvB,YAAW,IAAI,sCAAsC,aAAa,WAAW,CAAC;AAIlF,QAAO,CAAC,GAAG,WAAW;;;;;AC1FxB,MAAM,4BAA4B,IAAI,IAAkC,CAAC,OAAO,UAAU,CAAC;AAG3F,MAAM,wBAAwB;AAE9B,SAAS,cAAc,QAAwB,SAA+C;AAC5F,KAAI,CAAC,QACH;AAGF,QAAO,KAAK,GAAI,MAAM,QAAQ,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAE;;AAGhE,SAAS,mBAAmB,QAAqB,OAAsC;AACrF,KAAI,CAAC,MACH;CAGF,MAAM,SAAS,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,MAAM;AAErD,MAAK,MAAM,SAAS,OAClB,KAAI,MACF,QAAO,IAAI,MAAM;;AAKvB,SAAS,sBACP,YACwB;AACxB,KAAI,CAAC,WAAW,MAAM,cAAc,0BAA0B,IAAI,UAAU,CAAC,CAC3E,QAAO,EAAE;AAKX,QAAO,EACL,6BAA6B,uBAC9B;;AAGH,SAAS,uBACP,QACA,aACA,OACS;AACT,KAAI,CAAC,MACH,QAAO;AAGT,KAAI,UAAU,KACZ,QAAO;CAGT,MAAM,SAAS,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,MAAM;AAErD,MAAK,MAAM,SAAS,QAAQ;AAC1B,MAAI,OAAO,UAAU,UAAU;AAC7B,OAAI,CAAC,YAAY,IAAI,MAAM,EAAE;AAC3B,gBAAY,IAAI,MAAM;AACtB,WAAO,KAAK,MAAM;;AAEpB;;AAGF,MAAI,iBAAiB,OACnB,QAAO,KAAK,MAAM;;AAItB,QAAO;;AAGT,eAAsB,kCACpB,SACwC;CACxC,MAAM,aAAa,oBAAoB,QAAQ,WAAW;CAC1D,MAAM,QAAQ,sBAAsB,WAAW;CAC/C,MAAM,UAA0B,EAAE;CAClC,MAAM,yBAAS,IAAI,KAAa;CAChC,MAAM,sCAAsB,IAAI,KAAa;CAC7C,MAAM,sCAAsB,IAAI,KAAa;CAC7C,MAAM,gBAAwC,EAAE;CAChD,MAAM,2CAA2B,IAAI,KAAa;CAClD,IAAI,mBAAmB;CACvB,MAAM,eAAe,mCAAmC,WAAW;AAEnE,MAAK,MAAM,eAAe,cAAc;AACtC,sBAAoB,IAAI,YAAY;AACpC,qBACE,uBAAuB,eAAe,0BAA0B,YAAY,IAC5E;;AAGJ,MAAK,MAAM,aAAa,YAAY;EAClC,MAAM,QAAQ,wBAAwB,UAAU;EAEhD,IAAI;AACJ,MAAI;AACF,cAAW,MAAM,MAAM,WAAW,QAAQ;WACnC,OAAO;AACd,SAAM,IAAI,MACR,kBAAkB,MAAM,YAAY,uCACf,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GAC5E;;AAGH,gBAAc,SAAS,SAAS,QAAQ;AACxC,qBAAmB,QAAQ,SAAS,SAAS,OAAO;AACpD,qBAAmB,qBAAqB,SAAS,cAAc,QAAQ;AACvE,qBAAmB,qBAAqB,SAAS,cAAc,QAAQ;AACvE,qBAAmB,qBAAqB,MAAM,yBAAyB;AAEvE,qBACE,uBAAuB,eAAe,0BAA0B,SAAS,KAAK,WAAW,IACzF;;AAGJ,QAAO;EACL;EACA,SAAS;GACP;GACA,QAAQ,CAAC,GAAG,OAAO;GACpB;EACD,cAAc;GACZ,SAAS,CAAC,GAAG,oBAAoB;GACjC,SAAS,CAAC,GAAG,oBAAoB;GAClC;EACD,KAAK,EACH,YAAY,mBAAmB,OAAO,eACvC;EACD;EACD;;;;;ACtIH,MAAM,wCAAkF;CACtF;CACA;CACA;CACD;AASD,SAAS,gBAAgB,kBAEvB;AACA,QAAO,KAAK,MAAMA,gBAAG,aAAaC,kBAAK,KAAK,kBAAkB,eAAe,EAAE,OAAO,CAAC;;AAKzF,SAAS,gBAAgB,OAAsD;AAC7E,KAAI,CAAC,MACH,QAAO;AAGT,KAAI,OAAO,UAAU,SACnB,QAAO;AAGT,KAAI,OAAO,MAAM,WAAW,SAC1B,QAAO,MAAM;AAGf,KACE,MAAM,UACN,OAAO,MAAM,WAAW,YACxB,OAAO,MAAM,OAAO,YAAY,SAEhC,QAAO,MAAM,OAAO;AAGtB,KAAI,OAAO,MAAM,YAAY,SAC3B,QAAO,MAAM;AAGf,QAAO;;AAGT,SAAS,iCAAiC,aAAqB,eAA+B;CAE5F,MAAM,oDADwB,cAAc,CACT,QAAQ,YAAY;AACvD,QAAOA,kBAAK,QAAQA,kBAAK,QAAQ,mBAAmB,EAAE,KAAK;;AAG7D,SAAS,4BACP,aACA,kBACA,YACQ;CAER,MAAM,SAAS,gBADK,gBAAgB,iBAAiB,CACV,UAAU,YAAY;AAEjE,KAAI,CAAC,OACH,OAAM,IAAI,MACR,mBAAmB,WAAW,OAAO,YAAY,6CAClD;AAGH,QAAOA,kBAAK,QAAQ,kBAAkB,OAAO;;AAG/C,SAAgB,2CACd,SACwB;CACxB,MAAM,cAAc,QAAQ,eAAe;CAC3C,MAAM,UAAkC,EAAE;AAE1C,MAAK,MAAM,eAAe,mCAAmC,QAAQ,WAAW,EAAE;EAChF,MAAM,mBAAmB,iCAAiC,aAAa,QAAQ,cAAc;AAE7F,OAAK,MAAM,cAAc,YACvB,SAAQ,sCAAsC,aAAa,WAAW,IACpE,4BAA4B,aAAa,kBAAkB,WAAW;;AAI5E,QAAO;;AAGT,SAAgB,wCACd,SACQ;CACR,MAAM,UAAU,2CAA2C,QAAQ;AAEnE,QAAO;EACL,MAAM;EACN,SAAS;EACT,UAAU,IAAI;AACZ,UAAO,QAAQ,OAAO;;EAEzB;;;;;ACjGH,SAAS,uBAAuB,SAAgD;AAC9E,KAAI,CAAC,QACH,QAAO,EAAE;AAGX,QAAO,MAAM,QAAQ,QAAQ,GAAG,UAAU,CAAC,QAAQ;;AAGrD,SAAS,sBAAsB,OAAgD;AAC7E,KAAI,CAAC,MACH,QAAO,EAAE;AAGX,QAAO,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,MAAM;;AAG/C,SAAS,mBACP,MACA,OACU;CACV,MAAM,SAAmB,EAAE;CAC3B,MAAM,uBAAO,IAAI,KAAa;AAE9B,MAAK,MAAM,SAAS,CAAC,GAAG,sBAAsB,KAAK,EAAE,GAAG,MAAM,EAAE;AAC9D,MAAI,CAAC,SAAS,KAAK,IAAI,MAAM,CAC3B;AAGF,OAAK,IAAI,MAAM;AACf,SAAO,KAAK,MAAM;;AAGpB,QAAO;;AAGT,SAAS,mBACP,MACA,OAC+B;AAC/B,KAAI,SAAS,QAAQ,UAAU,KAC7B,QAAO;CAGT,MAAM,SAAiC,EAAE;CACzC,MAAM,8BAAc,IAAI,KAAa;CACrC,MAAM,SAAS,CACb,GAAI,OAAQ,MAAM,QAAQ,KAAK,GAAG,OAAO,CAAC,KAAK,GAAI,EAAE,EACrD,GAAI,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,MAAM,CAC3C;AAED,MAAK,MAAM,SAAS,QAAQ;AAC1B,MAAI,OAAO,UAAU,UAAU;AAC7B,OAAI,CAAC,YAAY,IAAI,MAAM,EAAE;AAC3B,gBAAY,IAAI,MAAM;AACtB,WAAO,KAAK,MAAM;;AAEpB;;AAGF,MAAI,iBAAiB,OACnB,QAAO,KAAK,MAAM;;AAItB,QAAO;;AAGT,SAAS,kBACP,WACA,mBACsE;AACtE,KAAI,OAAO,KAAK,kBAAkB,CAAC,WAAW,EAC5C,QAAO;AAGT,KAAI,CAAC,UACH,QAAO;AAGT,KAAI,MAAM,QAAQ,UAAU,CAC1B,QAAO,CACL,GAAG,WACH,GAAG,OAAO,QAAQ,kBAAkB,CAAC,KAAK,CAAC,MAAM,kBAAkB;EACjE;EACA;EACD,EAAE,CACJ;AAGH,QAAO;EACL,GAAG;EACH,GAAG;EACJ;;AAGH,SAAS,wBACP,qBACA,WACA,mBACsE;CACtE,MAAM,kBAAkB,kBAAkB,WAAW,kBAAkB;AAEvE,KAAI,CAAC,uBAAuB,OAAO,KAAK,oBAAoB,CAAC,WAAW,EACtE,QAAO;AAGT,KAAI,CAAC,gBACH,QAAO;AAGT,KAAI,MAAM,QAAQ,gBAAgB,CAChC,QAAO,CACL,GAAG,iBACH,GAAG,OAAO,QAAQ,oBAAoB,CAAC,KAAK,CAAC,MAAM,kBAAkB;EACnE;EACA;EACD,EAAE,CACJ;AAGH,QAAO;EACL,GAAG;EACH,GAAG;EACJ;;AAGH,SAAS,+BACP,YACA,eACA,UAGI,EAAE,EACM;CACZ,MAAM,eAAe,QAAQ,gBAAgB,EAAE;CAC/C,MAAM,oBAAoB,QAAQ,qBAAqB,EAAE;AAEzD,QAAO;EACL,GAAG;EACH,SAAS;GACP,GAAG,cAAc;GACjB,GAAG,uBAAuB,WAAW,QAAQ;GAC7C,GAAG;GACJ;EACD,SAAS;GACP,GAAG,WAAW;GACd,OAAO,wBACL,cAAc,QAAQ,OACtB,WAAW,SAAS,OACpB,kBACD;GACD,QAAQ,mBAAmB,WAAW,SAAS,QAAQ,cAAc,QAAQ,OAAO;GACrF;EACD,cAAc;GACZ,GAAG,WAAW;GACd,SAAS,mBACP,WAAW,cAAc,SACzB,cAAc,aAAa,QAC5B;GACD,SAAS,mBACP,WAAW,cAAc,SACzB,cAAc,aAAa,QAC5B;GACF;EACD,KAAK;GACH,GAAG,WAAW;GACd,YAAY,mBAAmB,WAAW,KAAK,YAAY,cAAc,IAAI,WAAW;GACzF;EACF;;AAGH,eAAe,mCACb,SACA,SAAqB,EAAE,EACF;AAErB,QAAO,+BAA+B,QADhB,MAAM,kCAAkC,QAAQ,CACV;;AAG9D,eAAe,qCACb,SACA,SAAqB,EAAE,EACF;AACrB,KAAI,CAAC,QAAQ,cACX,OAAM,IAAI,MACR,iHAED;CAGH,MAAM,gBAAgB,MAAM,kCAAkC,QAAQ;CACtE,MAAM,kBAAkB;EACtB,YAAY,QAAQ;EACpB,eAAe,QAAQ;EACvB,aAAa,QAAQ;EACtB;AAED,QAAO,+BAA+B,QAAQ,eAAe;EAC3D,cAAc,CAAC,wCAAwC,gBAAgB,CAAC;EACxE,mBAAmB,2CAA2C,gBAAgB;EAC/E,CAAC;;AAGJ,SAAgB,qCACd,SACgC;CAChC,MAAM,uBAAuB,kCAAkC,QAAQ;AAEvE,QAAO;EACL,MAAM,KAAK,SAAqB,EAAE,EAAE;AAClC,UAAO,+BAA+B,QAAQ,MAAM,qBAAqB;;EAE3E,MAAM,OAAO,SAAqB,EAAE,EAAE;AACpC,OAAI,CAAC,QAAQ,cACX,OAAM,IAAI,MACR,iHAED;GAGH,MAAM,kBAAkB;IACtB,YAAY,QAAQ;IACpB,eAAe,QAAQ;IACvB,aAAa,QAAQ;IACtB;AAED,UAAO,+BAA+B,QAAQ,MAAM,sBAAsB;IACxE,cAAc,CAAC,wCAAwC,gBAAgB,CAAC;IACxE,mBAAmB,2CAA2C,gBAAgB;IAC/E,CAAC;;EAEL;;AAGH,SAAgB,oCACd,SACqB;CACrB,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,uBAAuB;AAC/C,QAAO,mCAAmC,oBAAoB,OAAO;;AAGvE,SAAgB,sCACd,SACqB;CACrB,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,uBAAuB;AAC/C,QAAO,qCAAqC,oBAAoB,OAAO;;;;;ACrQzE,MAAa,4CAA4C;CACvD;CACA;CACA;CACA;CACA;CACD"}
package/dist/index.d.cts CHANGED
@@ -32,6 +32,7 @@ interface ResolveInstalledOpenZeppelinAdapterEntriesOptions {
32
32
  exportPaths?: readonly OpenZeppelinAdapterExportPath[];
33
33
  }
34
34
  interface OpenZeppelinAdapterResolvedConfig {
35
+ alias?: Record<string, string>;
35
36
  dedupe: string[];
36
37
  }
37
38
  interface OpenZeppelinAdapterOptimizeDepsConfig {
@@ -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;;;iBIoD5F,0CAAA,UACL,oDACR;AJtFU,iBIsGG,uCAAA,CJhGN,OAAA,EIiGC,iDJjGD,CAAA,EIkGP,MJlGO"}
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,kCAwBV;AAIV;AAKiB,UA9BA,qCAAA,SAA8C,wCA+BrC,CAAA;EAGT,aAAA,CAAA,EAAA,MAAA;EACN,WAAA,CAAA,EAAA,SAjCc,6BAiCd,EAAA;;AAEK,UAhCC,0CAAA,SAAmD,wCAgCpD,CAAA;EACT,MAAA,CAAA,EAhCI,UAgCJ;;AAIU,UAjCA,4CAAA,SAAqD,qCAiCvB,CAAA;EAC/B,MAAA,CAAA,EAjCL,UAiCK;EAAqB,aAAA,EAAA,MAAA;;AACnB,UA9BD,iDAAA,CA8BC;EAAqB,UAAA,EAAA,SA7BhB,4BA6BgB,EAAA;EAAR,aAAA,EAAA,MAAA;EAAO,WAAA,CAAA,EAAA,SA3Bb,6BA2Ba,EAAA;AAGtC;AACO,UA5BU,iCAAA,CA4BV;EAAL,KAAA,CAAA,EA3BQ,MA2BR,CAAA,MAAA,EAAA,MAAA,CAAA;EADsC,MAAA,EAAA,MAAA,EAAA;;UAtBvB,qCAAA;;;ACmCjB;AACW,UD/BM,4BAAA,CC+BN;EACA,UAAA,EAAA,IAAA,GD/BU,KC+BV,CAAA,MAAA,GD/ByB,MC+BzB,CAAA;;AAAD,UD5BO,6BAAA,CC4BP;WD3BC;WACA;gBACK;EE2JA,GAAA,EF1JT,4BE0JS;EA+BA,YAAA,EAAA,MAAA,EAAA;;AAEL,UFvLM,8BAAA,CEuLN;EAAR,IAAA,CAAA,MAAA,CAAA,EFtLa,UEsLb,CAAA,EFtL0B,OEsL1B,CFtLkC,UEsLlC,CAAA;EAAO,MAAA,CAAA,MAAA,CAAA,EFrLQ,UEqLR,CAAA,EFrLqB,OEqLrB,CFrL6B,UEqL7B,CAAA;AAKV;AACW,KFxLC,yBAAA,GAA4B,OEwL7B,CFvLT,IEuLS,CFvLJ,UEuLI,EAAA,SAAA,GAAA,SAAA,GAAA,cAAA,GAAA,KAAA,CAAA,CAAA;;;iBD3KW,iCAAA,UACX,2CACR,QAAQ;;;iBCkIK,oCAAA,UACL,wCACR;AF7NU,iBE0PG,mCAAA,CFpPN,OAAA,EEqPC,0CFrPD,CAAA,EEsPP,OFtPO,CEsPC,UFtPD,CAAA;AAEE,iBEyPI,qCAAA,CFxPN,OAAA,EEyPC,4CFzPwC,CAAA,EE0PhD,OF1PgD,CE0PxC,UF1PwC,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 CHANGED
@@ -32,6 +32,7 @@ interface ResolveInstalledOpenZeppelinAdapterEntriesOptions {
32
32
  exportPaths?: readonly OpenZeppelinAdapterExportPath[];
33
33
  }
34
34
  interface OpenZeppelinAdapterResolvedConfig {
35
+ alias?: Record<string, string>;
35
36
  dedupe: string[];
36
37
  }
37
38
  interface OpenZeppelinAdapterOptimizeDepsConfig {
@@ -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;;;iBIoD5F,0CAAA,UACL,oDACR;AJtFU,iBIsGG,uCAAA,CJhGN,OAAA,EIiGC,iDJjGD,CAAA,EIkGP,MJlGO"}
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,kCAwBV;AAIV;AAKiB,UA9BA,qCAAA,SAA8C,wCA+BrC,CAAA;EAGT,aAAA,CAAA,EAAA,MAAA;EACN,WAAA,CAAA,EAAA,SAjCc,6BAiCd,EAAA;;AAEK,UAhCC,0CAAA,SAAmD,wCAgCpD,CAAA;EACT,MAAA,CAAA,EAhCI,UAgCJ;;AAIU,UAjCA,4CAAA,SAAqD,qCAiCvB,CAAA;EAC/B,MAAA,CAAA,EAjCL,UAiCK;EAAqB,aAAA,EAAA,MAAA;;AACnB,UA9BD,iDAAA,CA8BC;EAAqB,UAAA,EAAA,SA7BhB,4BA6BgB,EAAA;EAAR,aAAA,EAAA,MAAA;EAAO,WAAA,CAAA,EAAA,SA3Bb,6BA2Ba,EAAA;AAGtC;AACO,UA5BU,iCAAA,CA4BV;EAAL,KAAA,CAAA,EA3BQ,MA2BR,CAAA,MAAA,EAAA,MAAA,CAAA;EADsC,MAAA,EAAA,MAAA,EAAA;;UAtBvB,qCAAA;;;ACmCjB;AACW,UD/BM,4BAAA,CC+BN;EACA,UAAA,EAAA,IAAA,GD/BU,KC+BV,CAAA,MAAA,GD/ByB,MC+BzB,CAAA;;AAAD,UD5BO,6BAAA,CC4BP;WD3BC;WACA;gBACK;EE2JA,GAAA,EF1JT,4BE0JS;EA+BA,YAAA,EAAA,MAAA,EAAA;;AAEL,UFvLM,8BAAA,CEuLN;EAAR,IAAA,CAAA,MAAA,CAAA,EFtLa,UEsLb,CAAA,EFtL0B,OEsL1B,CFtLkC,UEsLlC,CAAA;EAAO,MAAA,CAAA,MAAA,CAAA,EFrLQ,UEqLR,CAAA,EFrLqB,OEqLrB,CFrL6B,UEqL7B,CAAA;AAKV;AACW,KFxLC,yBAAA,GAA4B,OEwL7B,CFvLT,IEuLS,CFvLJ,UEuLI,EAAA,SAAA,GAAA,SAAA,GAAA,cAAA,GAAA,KAAA,CAAA,CAAA;;;iBD3KW,iCAAA,UACX,2CACR,QAAQ;;;iBCkIK,oCAAA,UACL,wCACR;AF7NU,iBE0PG,mCAAA,CFpPN,OAAA,EEqPC,0CFrPD,CAAA,EEsPP,OFtPO,CEsPC,UFtPD,CAAA;AAEE,iBEyPI,qCAAA,CFxPN,OAAA,EEyPC,4CFzPwC,CAAA,EE0PhD,OF1PgD,CE0PxC,UF1PwC,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
@@ -64,6 +64,8 @@ function getOpenZeppelinAdapterImportSpecifiers(ecosystems, exportPaths) {
64
64
 
65
65
  //#endregion
66
66
  //#region src/config.ts
67
+ const RELAYER_COMPAT_ECOSYSTEMS = new Set(["evm", "stellar"]);
68
+ const RELAYER_SDK_ESM_ALIAS = "@openzeppelin/relayer-sdk/dist/esm/index.js";
67
69
  function appendPlugins(target, plugins) {
68
70
  if (!plugins) return;
69
71
  target.push(...Array.isArray(plugins) ? plugins : [plugins]);
@@ -73,6 +75,10 @@ function appendStringValues(target, value) {
73
75
  const values = Array.isArray(value) ? value : [value];
74
76
  for (const entry of values) if (entry) target.add(entry);
75
77
  }
78
+ function getSharedAliasEntries(ecosystems) {
79
+ if (!ecosystems.some((ecosystem) => RELAYER_COMPAT_ECOSYSTEMS.has(ecosystem))) return {};
80
+ return { "@openzeppelin/relayer-sdk": RELAYER_SDK_ESM_ALIAS };
81
+ }
76
82
  function appendNoExternalValues(target, seenStrings, value) {
77
83
  if (!value) return false;
78
84
  if (value === true) return true;
@@ -91,6 +97,7 @@ function appendNoExternalValues(target, seenStrings, value) {
91
97
  }
92
98
  async function loadOpenZeppelinAdapterViteConfig(options) {
93
99
  const ecosystems = normalizeEcosystems(options.ecosystems);
100
+ const alias = getSharedAliasEntries(ecosystems);
94
101
  const plugins = [];
95
102
  const dedupe = /* @__PURE__ */ new Set();
96
103
  const optimizeDepsInclude = /* @__PURE__ */ new Set();
@@ -120,7 +127,10 @@ async function loadOpenZeppelinAdapterViteConfig(options) {
120
127
  }
121
128
  return {
122
129
  plugins,
123
- resolve: { dedupe: [...dedupe] },
130
+ resolve: {
131
+ alias,
132
+ dedupe: [...dedupe]
133
+ },
124
134
  optimizeDeps: {
125
135
  include: [...optimizeDepsInclude],
126
136
  exclude: [...optimizeDepsExclude]
@@ -226,6 +236,19 @@ function mergeResolveAlias(baseAlias, extraAliasEntries) {
226
236
  ...extraAliasEntries
227
237
  };
228
238
  }
239
+ function mergeResolveAliasLayers(adapterAliasEntries, baseAlias, extraAliasEntries) {
240
+ const mergedBaseAlias = mergeResolveAlias(baseAlias, extraAliasEntries);
241
+ if (!adapterAliasEntries || Object.keys(adapterAliasEntries).length === 0) return mergedBaseAlias;
242
+ if (!mergedBaseAlias) return adapterAliasEntries;
243
+ if (Array.isArray(mergedBaseAlias)) return [...mergedBaseAlias, ...Object.entries(adapterAliasEntries).map(([find, replacement]) => ({
244
+ find,
245
+ replacement
246
+ }))];
247
+ return {
248
+ ...adapterAliasEntries,
249
+ ...mergedBaseAlias
250
+ };
251
+ }
229
252
  function mergeOpenZeppelinAdapterConfig(baseConfig, adapterConfig, options = {}) {
230
253
  const extraPlugins = options.extraPlugins ?? [];
231
254
  const extraAliasEntries = options.extraAliasEntries ?? {};
@@ -238,7 +261,7 @@ function mergeOpenZeppelinAdapterConfig(baseConfig, adapterConfig, options = {})
238
261
  ],
239
262
  resolve: {
240
263
  ...baseConfig.resolve,
241
- alias: mergeResolveAlias(baseConfig.resolve?.alias, extraAliasEntries),
264
+ alias: mergeResolveAliasLayers(adapterConfig.resolve.alias, baseConfig.resolve?.alias, extraAliasEntries),
242
265
  dedupe: mergeUniqueStrings(baseConfig.resolve?.dedupe, adapterConfig.resolve.dedupe)
243
266
  },
244
267
  optimizeDeps: {
@@ -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\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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"}
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 OpenZeppelinAdapterEcosystem,\n OpenZeppelinAdapterViteConfig,\n} from './types';\n\ntype SsrNoExternalValue = NonNullable<NonNullable<UserConfig['ssr']>['noExternal']>;\n\nconst RELAYER_COMPAT_ECOSYSTEMS = new Set<OpenZeppelinAdapterEcosystem>(['evm', 'stellar']);\n// Temporary Vite workaround until the upstream package exposes proper ESM exports:\n// https://github.com/OpenZeppelin/openzeppelin-relayer-sdk/issues/254\nconst RELAYER_SDK_ESM_ALIAS = '@openzeppelin/relayer-sdk/dist/esm/index.js';\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 getSharedAliasEntries(\n ecosystems: readonly OpenZeppelinAdapterEcosystem[]\n): Record<string, string> {\n if (!ecosystems.some((ecosystem) => RELAYER_COMPAT_ECOSYSTEMS.has(ecosystem))) {\n return {};\n }\n\n // Remove this alias once relayer-sdk resolves the upstream ESM packaging issue:\n // https://github.com/OpenZeppelin/openzeppelin-relayer-sdk/issues/254\n return {\n '@openzeppelin/relayer-sdk': RELAYER_SDK_ESM_ALIAS,\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 alias = getSharedAliasEntries(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 alias,\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 mergeResolveAliasLayers(\n adapterAliasEntries: Record<string, string> | undefined,\n baseAlias: NonNullable<NonNullable<UserConfig['resolve']>['alias']> | undefined,\n extraAliasEntries: Record<string, string>\n): NonNullable<NonNullable<UserConfig['resolve']>['alias']> | undefined {\n const mergedBaseAlias = mergeResolveAlias(baseAlias, extraAliasEntries);\n\n if (!adapterAliasEntries || Object.keys(adapterAliasEntries).length === 0) {\n return mergedBaseAlias;\n }\n\n if (!mergedBaseAlias) {\n return adapterAliasEntries;\n }\n\n if (Array.isArray(mergedBaseAlias)) {\n return [\n ...mergedBaseAlias,\n ...Object.entries(adapterAliasEntries).map(([find, replacement]) => ({\n find,\n replacement,\n })),\n ];\n }\n\n return {\n ...adapterAliasEntries,\n ...mergedBaseAlias,\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: mergeResolveAliasLayers(\n adapterConfig.resolve.alias,\n baseConfig.resolve?.alias,\n extraAliasEntries\n ),\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 alias?: Record<string, string>;\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.1",
3
+ "version": "1.3.2",
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-midnight": "1.1.0",
65
- "@openzeppelin/adapter-solana": "1.1.0",
66
64
  "@openzeppelin/adapter-evm": "1.1.0",
65
+ "@openzeppelin/adapter-polkadot": "1.1.0",
66
+ "@openzeppelin/adapter-solana": "1.1.0",
67
67
  "@openzeppelin/adapter-stellar": "1.1.0",
68
- "@openzeppelin/adapter-polkadot": "1.1.0"
68
+ "@openzeppelin/adapter-midnight": "1.1.0"
69
69
  },
70
70
  "exports": {
71
71
  ".": {
@@ -83,6 +83,9 @@ describe('@openzeppelin/adapters-vite', () => {
83
83
  });
84
84
 
85
85
  expect(config.plugins).toHaveLength(1);
86
+ expect(config.resolve.alias).toEqual({
87
+ '@openzeppelin/relayer-sdk': '@openzeppelin/relayer-sdk/dist/esm/index.js',
88
+ });
86
89
  expect(config.resolve.dedupe).toEqual(['viem', 'wagmi', '@stellar/stellar-sdk']);
87
90
  expect(config.optimizeDeps.include).toEqual([
88
91
  'viem',
@@ -160,6 +163,14 @@ describe('@openzeppelin/adapters-vite', () => {
160
163
  expect(config.ssr.noExternal).toBe(true);
161
164
  });
162
165
 
166
+ it('does not inject relayer-sdk alias when no relayer-backed adapter is used', async () => {
167
+ const config = await loadOpenZeppelinAdapterViteConfig({
168
+ ecosystems: ['solana'],
169
+ });
170
+
171
+ expect(config.resolve.alias).toEqual({});
172
+ });
173
+
163
174
  it('returns deduplicated package names and import specifiers', () => {
164
175
  expect(getOpenZeppelinAdapterPackageNames(['evm', 'stellar', 'evm'])).toEqual([
165
176
  '@openzeppelin/adapter-evm',
@@ -16,6 +16,9 @@ const {
16
16
  async () => ({
17
17
  plugins: [{ name: 'adapter-plugin' }],
18
18
  resolve: {
19
+ alias: {
20
+ '@openzeppelin/relayer-sdk': '@openzeppelin/relayer-sdk/dist/esm/index.js',
21
+ },
19
22
  dedupe: ['viem', 'react'],
20
23
  },
21
24
  optimizeDeps: {
@@ -66,6 +69,9 @@ describe('high-level adapters-vite integration helpers', () => {
66
69
  });
67
70
 
68
71
  expect(config.plugins).toEqual([{ name: 'adapter-plugin' }, { name: 'app-plugin' }]);
72
+ expect(config.resolve?.alias).toEqual({
73
+ '@openzeppelin/relayer-sdk': '@openzeppelin/relayer-sdk/dist/esm/index.js',
74
+ });
69
75
  expect(config.resolve?.dedupe).toEqual(['react', 'react-dom', 'viem']);
70
76
  expect(config.optimizeDeps?.include).toEqual(['react', 'viem']);
71
77
  expect(config.optimizeDeps?.exclude).toEqual(['legacy-dep', '@openzeppelin/adapter-evm']);
@@ -92,6 +98,7 @@ describe('high-level adapters-vite integration helpers', () => {
92
98
  { name: 'resolver-plugin' },
93
99
  ]);
94
100
  expect(config.resolve?.alias).toEqual({
101
+ '@openzeppelin/relayer-sdk': '@openzeppelin/relayer-sdk/dist/esm/index.js',
95
102
  '@': '/workspace/apps/builder/src',
96
103
  '@openzeppelin/adapter-evm': '/virtual/adapter-evm/index.mjs',
97
104
  '@openzeppelin/adapter-evm/metadata': '/virtual/adapter-evm/metadata.mjs',
package/src/config.ts CHANGED
@@ -8,11 +8,17 @@ import {
8
8
  import type {
9
9
  AdapterViteConfigFragment,
10
10
  LoadOpenZeppelinAdapterViteConfigOptions,
11
+ OpenZeppelinAdapterEcosystem,
11
12
  OpenZeppelinAdapterViteConfig,
12
13
  } from './types';
13
14
 
14
15
  type SsrNoExternalValue = NonNullable<NonNullable<UserConfig['ssr']>['noExternal']>;
15
16
 
17
+ const RELAYER_COMPAT_ECOSYSTEMS = new Set<OpenZeppelinAdapterEcosystem>(['evm', 'stellar']);
18
+ // Temporary Vite workaround until the upstream package exposes proper ESM exports:
19
+ // https://github.com/OpenZeppelin/openzeppelin-relayer-sdk/issues/254
20
+ const RELAYER_SDK_ESM_ALIAS = '@openzeppelin/relayer-sdk/dist/esm/index.js';
21
+
16
22
  function appendPlugins(target: PluginOption[], plugins: AdapterViteConfigFragment['plugins']) {
17
23
  if (!plugins) {
18
24
  return;
@@ -35,6 +41,20 @@ function appendStringValues(target: Set<string>, value: string | string[] | unde
35
41
  }
36
42
  }
37
43
 
44
+ function getSharedAliasEntries(
45
+ ecosystems: readonly OpenZeppelinAdapterEcosystem[]
46
+ ): Record<string, string> {
47
+ if (!ecosystems.some((ecosystem) => RELAYER_COMPAT_ECOSYSTEMS.has(ecosystem))) {
48
+ return {};
49
+ }
50
+
51
+ // Remove this alias once relayer-sdk resolves the upstream ESM packaging issue:
52
+ // https://github.com/OpenZeppelin/openzeppelin-relayer-sdk/issues/254
53
+ return {
54
+ '@openzeppelin/relayer-sdk': RELAYER_SDK_ESM_ALIAS,
55
+ };
56
+ }
57
+
38
58
  function appendNoExternalValues(
39
59
  target: Array<string | RegExp>,
40
60
  seenStrings: Set<string>,
@@ -71,6 +91,7 @@ export async function loadOpenZeppelinAdapterViteConfig(
71
91
  options: LoadOpenZeppelinAdapterViteConfigOptions
72
92
  ): Promise<OpenZeppelinAdapterViteConfig> {
73
93
  const ecosystems = normalizeEcosystems(options.ecosystems);
94
+ const alias = getSharedAliasEntries(ecosystems);
74
95
  const plugins: PluginOption[] = [];
75
96
  const dedupe = new Set<string>();
76
97
  const optimizeDepsInclude = new Set<string>();
@@ -114,6 +135,7 @@ export async function loadOpenZeppelinAdapterViteConfig(
114
135
  return {
115
136
  plugins,
116
137
  resolve: {
138
+ alias,
117
139
  dedupe: [...dedupe],
118
140
  },
119
141
  optimizeDeps: {
@@ -111,6 +111,37 @@ function mergeResolveAlias(
111
111
  };
112
112
  }
113
113
 
114
+ function mergeResolveAliasLayers(
115
+ adapterAliasEntries: Record<string, string> | undefined,
116
+ baseAlias: NonNullable<NonNullable<UserConfig['resolve']>['alias']> | undefined,
117
+ extraAliasEntries: Record<string, string>
118
+ ): NonNullable<NonNullable<UserConfig['resolve']>['alias']> | undefined {
119
+ const mergedBaseAlias = mergeResolveAlias(baseAlias, extraAliasEntries);
120
+
121
+ if (!adapterAliasEntries || Object.keys(adapterAliasEntries).length === 0) {
122
+ return mergedBaseAlias;
123
+ }
124
+
125
+ if (!mergedBaseAlias) {
126
+ return adapterAliasEntries;
127
+ }
128
+
129
+ if (Array.isArray(mergedBaseAlias)) {
130
+ return [
131
+ ...mergedBaseAlias,
132
+ ...Object.entries(adapterAliasEntries).map(([find, replacement]) => ({
133
+ find,
134
+ replacement,
135
+ })),
136
+ ];
137
+ }
138
+
139
+ return {
140
+ ...adapterAliasEntries,
141
+ ...mergedBaseAlias,
142
+ };
143
+ }
144
+
114
145
  function mergeOpenZeppelinAdapterConfig(
115
146
  baseConfig: UserConfig,
116
147
  adapterConfig: OpenZeppelinAdapterViteConfig,
@@ -131,7 +162,11 @@ function mergeOpenZeppelinAdapterConfig(
131
162
  ],
132
163
  resolve: {
133
164
  ...baseConfig.resolve,
134
- alias: mergeResolveAlias(baseConfig.resolve?.alias, extraAliasEntries),
165
+ alias: mergeResolveAliasLayers(
166
+ adapterConfig.resolve.alias,
167
+ baseConfig.resolve?.alias,
168
+ extraAliasEntries
169
+ ),
135
170
  dedupe: mergeUniqueStrings(baseConfig.resolve?.dedupe, adapterConfig.resolve.dedupe),
136
171
  },
137
172
  optimizeDeps: {
package/src/types.ts CHANGED
@@ -48,6 +48,7 @@ export interface ResolveInstalledOpenZeppelinAdapterEntriesOptions {
48
48
  }
49
49
 
50
50
  export interface OpenZeppelinAdapterResolvedConfig {
51
+ alias?: Record<string, string>;
51
52
  dedupe: string[];
52
53
  }
53
54