keyv-registry 1.0.0 → 1.0.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/keyv/keyv-registry/src/loadAdapter.ts"],"sourcesContent":["import Module from 'node:module';\nimport path from 'node:path';\nimport url from 'node:url';\nimport installModule from 'install-module-linked';\nimport type { LoadAdapterCallback } from './types.ts';\n\n// Create require function for ESM compatibility\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\n// Determine node_modules path\nconst _dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);\nconst nodeModulesPath = path.join(_dirname, '..', '..', 'node_modules');\n\n// Cache loaded adapters\nconst adapterCache = new Map<string, unknown>();\n\n/**\n * Load an adapter, installing it dynamically if needed\n */\nexport default function loadAdapter(packageName: string, exportName: string | undefined, callback: LoadAdapterCallback): void {\n const cacheKey = `${packageName}:${exportName ?? 'default'}`;\n\n // Return cached adapter if available\n if (adapterCache.has(cacheKey)) {\n callback(null, adapterCache.get(cacheKey));\n return;\n }\n\n // Try to require first (may already be installed)\n try {\n const mod = _require(packageName);\n const Adapter = exportName ? mod[exportName] : (mod.default ?? mod);\n adapterCache.set(cacheKey, Adapter);\n callback(null, Adapter);\n return;\n } catch {\n // Not installed - dynamically install then load\n installModule(packageName, nodeModulesPath, {}, (err: Error | null) => {\n if (err) return callback(err);\n try {\n const mod = _require(packageName);\n const Adapter = exportName ? mod[exportName] : (mod.default ?? mod);\n adapterCache.set(cacheKey, Adapter);\n callback(null, Adapter);\n } catch (loadErr) {\n callback(loadErr as Error);\n }\n });\n }\n}\n\n/**\n * Clear the adapter cache (useful for testing)\n */\nexport function clearAdapterCache(): void {\n adapterCache.clear();\n}\n"],"names":["clearAdapterCache","loadAdapter","_require","require","Module","createRequire","_dirname","path","dirname","__filename","url","fileURLToPath","nodeModulesPath","join","adapterCache","Map","packageName","exportName","callback","cacheKey","has","get","mod","Adapter","default","set","installModule","err","loadErr","clear"],"mappings":";;;;;;;;;;;QAsDgBA;eAAAA;;QAtChB;;CAEC,GACD;eAAwBC;;;iEAnBL;+DACF;8DACD;0EACU;;;;;;AAG1B,gDAAgD;AAChD,IAAMC,WAAW,OAAOC,YAAY,cAAcC,mBAAM,CAACC,aAAa,CAAC,uDAAmBF;AAE1F,8BAA8B;AAC9B,IAAMG,WAAWC,iBAAI,CAACC,OAAO,CAAC,OAAOC,eAAe,cAAcC,gBAAG,CAACC,aAAa,CAAC,uDAAmBF;AACvG,IAAMG,kBAAkBL,iBAAI,CAACM,IAAI,CAACP,UAAU,MAAM,MAAM;AAExD,wBAAwB;AACxB,IAAMQ,eAAe,IAAIC;AAKV,SAASd,YAAYe,WAAmB,EAAEC,UAA8B,EAAEC,QAA6B;IACpH,IAAMC,WAAW,AApBnB,AAoBoB,UAAEH,aAAY,KAA2B,OAAxBC,uBAAAA,wBAAAA,aAAc;IAEjD,qCAAqC;IACrC,IAAIH,aAAaM,GAAG,CAACD,WAAW;QAC9BD,SAAS,MAAMJ,aAAaO,GAAG,CAACF;QAChC;IACF;IAEA,kDAAkD;IAClD,IAAI;YAE8CG;QADhD,IAAMA,MAAMpB,SAASc;QACrB,IAAMO,UAAUN,aAAaK,GAAG,CAACL,WAAW,IAAIK,eAAAA,IAAIE,OAAO,cAAXF,0BAAAA,eAAeA;QAC/DR,aAAaW,GAAG,CAACN,UAAUI;QAC3BL,SAAS,MAAMK;QACf;IACF,EAAE,eAAM;QACN,gDAAgD;QAChDG,IAAAA,4BAAa,EAACV,aAAaJ,iBAAiB,CAAC,GAAG,SAACe;YAC/C,IAAIA,KAAK,OAAOT,SAASS;YACzB,IAAI;oBAE8CL;gBADhD,IAAMA,MAAMpB,SAASc;gBACrB,IAAMO,UAAUN,aAAaK,GAAG,CAACL,WAAW,IAAIK,eAAAA,IAAIE,OAAO,cAAXF,0BAAAA,eAAeA;gBAC/DR,aAAaW,GAAG,CAACN,UAAUI;gBAC3BL,SAAS,MAAMK;YACjB,EAAE,OAAOK,SAAS;gBAChBV,SAASU;YACX;QACF;IACF;AACF;AAKO,SAAS5B;IACdc,aAAae,KAAK;AACpB"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/keyv/keyv-registry/src/loadAdapter.ts"],"sourcesContent":["import Module from 'node:module';\nimport path from 'node:path';\nimport url from 'node:url';\nimport installModule from 'install-module-linked';\nimport type { LoadAdapterCallback } from './types.ts';\n\n// Create require function for ESM compatibility\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\n// Determine node_modules path\nconst _dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);\nconst nodeModulesPath = path.join(_dirname, '..', '..', 'node_modules');\n\n// Cache loaded adapters\nconst adapterCache = new Map<string, unknown>();\n\n/**\n * Load an adapter, installing it dynamically if needed\n */\nexport default function loadAdapter(packageName: string, exportName: string | undefined, callback: LoadAdapterCallback): void {\n const cacheKey = `${packageName}:${exportName ?? 'default'}`;\n\n // Return cached adapter if available\n if (adapterCache.has(cacheKey)) {\n callback(null, adapterCache.get(cacheKey));\n return;\n }\n\n // Try to require first (may already be installed)\n try {\n const mod = _require(packageName);\n const Adapter = exportName ? mod[exportName] : (mod.default ?? mod);\n adapterCache.set(cacheKey, Adapter);\n callback(null, Adapter);\n return;\n } catch {\n // Not installed - dynamically install then load\n installModule(packageName, nodeModulesPath, {}, (err?: Error | null) => {\n if (err) return callback(err);\n try {\n const mod = _require(packageName);\n const Adapter = exportName ? mod[exportName] : (mod.default ?? mod);\n adapterCache.set(cacheKey, Adapter);\n callback(null, Adapter);\n } catch (loadErr) {\n callback(loadErr as Error);\n }\n });\n }\n}\n\n/**\n * Clear the adapter cache (useful for testing)\n */\nexport function clearAdapterCache(): void {\n adapterCache.clear();\n}\n"],"names":["clearAdapterCache","loadAdapter","_require","require","Module","createRequire","_dirname","path","dirname","__filename","url","fileURLToPath","nodeModulesPath","join","adapterCache","Map","packageName","exportName","callback","cacheKey","has","get","mod","Adapter","default","set","installModule","err","loadErr","clear"],"mappings":";;;;;;;;;;;QAsDgBA;eAAAA;;QAtChB;;CAEC,GACD;eAAwBC;;;iEAnBL;+DACF;8DACD;0EACU;;;;;;AAG1B,gDAAgD;AAChD,IAAMC,WAAW,OAAOC,YAAY,cAAcC,mBAAM,CAACC,aAAa,CAAC,uDAAmBF;AAE1F,8BAA8B;AAC9B,IAAMG,WAAWC,iBAAI,CAACC,OAAO,CAAC,OAAOC,eAAe,cAAcC,gBAAG,CAACC,aAAa,CAAC,uDAAmBF;AACvG,IAAMG,kBAAkBL,iBAAI,CAACM,IAAI,CAACP,UAAU,MAAM,MAAM;AAExD,wBAAwB;AACxB,IAAMQ,eAAe,IAAIC;AAKV,SAASd,YAAYe,WAAmB,EAAEC,UAA8B,EAAEC,QAA6B;IACpH,IAAMC,WAAW,AApBnB,AAoBoB,UAAEH,aAAY,KAA2B,OAAxBC,uBAAAA,wBAAAA,aAAc;IAEjD,qCAAqC;IACrC,IAAIH,aAAaM,GAAG,CAACD,WAAW;QAC9BD,SAAS,MAAMJ,aAAaO,GAAG,CAACF;QAChC;IACF;IAEA,kDAAkD;IAClD,IAAI;YAE8CG;QADhD,IAAMA,MAAMpB,SAASc;QACrB,IAAMO,UAAUN,aAAaK,GAAG,CAACL,WAAW,IAAIK,eAAAA,IAAIE,OAAO,cAAXF,0BAAAA,eAAeA;QAC/DR,aAAaW,GAAG,CAACN,UAAUI;QAC3BL,SAAS,MAAMK;QACf;IACF,EAAE,eAAM;QACN,gDAAgD;QAChDG,IAAAA,4BAAa,EAACV,aAAaJ,iBAAiB,CAAC,GAAG,SAACe;YAC/C,IAAIA,KAAK,OAAOT,SAASS;YACzB,IAAI;oBAE8CL;gBADhD,IAAMA,MAAMpB,SAASc;gBACrB,IAAMO,UAAUN,aAAaK,GAAG,CAACL,WAAW,IAAIK,eAAAA,IAAIE,OAAO,cAAXF,0BAAAA,eAAeA;gBAC/DR,aAAaW,GAAG,CAACN,UAAUI;gBAC3BL,SAAS,MAAMK;YACjB,EAAE,OAAOK,SAAS;gBAChBV,SAASU;YACX;QACF;IACF;AACF;AAKO,SAAS5B;IACdc,aAAae,KAAK;AACpB"}
@@ -63,7 +63,7 @@ function _object_spread(target) {
63
63
  'postgresql:': {
64
64
  package: '@keyv/postgres',
65
65
  mode: 'options',
66
- optionsMapper: function(url) {
66
+ optionsMapper: function optionsMapper(url) {
67
67
  return {
68
68
  uri: url.toString()
69
69
  };
@@ -72,7 +72,7 @@ function _object_spread(target) {
72
72
  'postgres:': {
73
73
  package: '@keyv/postgres',
74
74
  mode: 'options',
75
- optionsMapper: function(url) {
75
+ optionsMapper: function optionsMapper(url) {
76
76
  return {
77
77
  uri: url.toString()
78
78
  };
@@ -81,7 +81,7 @@ function _object_spread(target) {
81
81
  'mysql:': {
82
82
  package: '@keyv/mysql',
83
83
  mode: 'options',
84
- optionsMapper: function(url) {
84
+ optionsMapper: function optionsMapper(url) {
85
85
  return {
86
86
  uri: url.toString()
87
87
  };
@@ -90,7 +90,7 @@ function _object_spread(target) {
90
90
  'sqlite:': {
91
91
  package: '@keyv/sqlite',
92
92
  mode: 'options',
93
- optionsMapper: function(url) {
93
+ optionsMapper: function optionsMapper(url) {
94
94
  return {
95
95
  uri: url.toString()
96
96
  };
@@ -99,7 +99,7 @@ function _object_spread(target) {
99
99
  'mongodb:': {
100
100
  package: '@keyv/mongo',
101
101
  mode: 'options',
102
- optionsMapper: function(url) {
102
+ optionsMapper: function optionsMapper(url) {
103
103
  return {
104
104
  url: url.toString()
105
105
  };
@@ -108,7 +108,7 @@ function _object_spread(target) {
108
108
  'mongodb+srv:': {
109
109
  package: '@keyv/mongo',
110
110
  mode: 'options',
111
- optionsMapper: function(url) {
111
+ optionsMapper: function optionsMapper(url) {
112
112
  return {
113
113
  url: url.toString()
114
114
  };
@@ -121,7 +121,7 @@ function _object_spread(target) {
121
121
  'etcd:': {
122
122
  package: '@keyv/etcd',
123
123
  mode: 'options',
124
- optionsMapper: function(url) {
124
+ optionsMapper: function optionsMapper(url) {
125
125
  return {
126
126
  url: url.toString()
127
127
  };
@@ -131,7 +131,7 @@ function _object_spread(target) {
131
131
  'file:': {
132
132
  package: 'keyv-file',
133
133
  exportName: 'KeyvFile',
134
- optionsMapper: function(url) {
134
+ optionsMapper: function optionsMapper(url) {
135
135
  return {
136
136
  filename: (0, _utilsts.resolveFilePath)(url)
137
137
  };
@@ -144,7 +144,7 @@ function _object_spread(target) {
144
144
  // Future/custom adapters
145
145
  'duckdb:': {
146
146
  package: 'keyv-duckdb',
147
- optionsMapper: function(url) {
147
+ optionsMapper: function optionsMapper(url) {
148
148
  return {
149
149
  filename: (0, _utilsts.resolveFilePath)(url)
150
150
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/keyv/keyv-registry/src/registry.ts"],"sourcesContent":["import type { AdapterConfig } from './types.ts';\nimport { resolveFilePath } from './utils.ts';\n\n/**\n * Protocol registry mapping URI protocols to adapter configurations\n */\nconst PROTOCOL_REGISTRY: Record<string, AdapterConfig> = {\n // Official @keyv adapters\n 'redis:': { package: '@keyv/redis', mode: 'string' },\n 'rediss:': { package: '@keyv/redis', mode: 'string' },\n 'postgresql:': { package: '@keyv/postgres', mode: 'options', optionsMapper: (url) => ({ uri: url.toString() }) },\n 'postgres:': { package: '@keyv/postgres', mode: 'options', optionsMapper: (url) => ({ uri: url.toString() }) },\n 'mysql:': { package: '@keyv/mysql', mode: 'options', optionsMapper: (url) => ({ uri: url.toString() }) },\n 'sqlite:': { package: '@keyv/sqlite', mode: 'options', optionsMapper: (url) => ({ uri: url.toString() }) },\n 'mongodb:': { package: '@keyv/mongo', mode: 'options', optionsMapper: (url) => ({ url: url.toString() }) },\n 'mongodb+srv:': { package: '@keyv/mongo', mode: 'options', optionsMapper: (url) => ({ url: url.toString() }) },\n 'memcache:': { package: '@keyv/memcache', mode: 'string' },\n 'etcd:': { package: '@keyv/etcd', mode: 'options', optionsMapper: (url) => ({ url: url.toString() }) },\n\n // Third-party adapters\n 'file:': {\n package: 'keyv-file',\n exportName: 'KeyvFile',\n optionsMapper: (url: URL) => ({ filename: resolveFilePath(url) }),\n },\n\n // Built-in (no package needed)\n 'memory:': { package: null },\n\n // Future/custom adapters\n 'duckdb:': {\n package: 'keyv-duckdb',\n optionsMapper: (url: URL) => ({ filename: resolveFilePath(url) }),\n },\n};\n\n/**\n * Register or override a protocol adapter\n */\nexport function registerAdapter(protocol: string, config: AdapterConfig): void {\n const normalizedProtocol = protocol.endsWith(':') ? protocol : `${protocol}:`;\n PROTOCOL_REGISTRY[normalizedProtocol] = config;\n}\n\n/**\n * Get the current registry (read-only copy)\n */\nexport function getRegistry(): Readonly<Record<string, AdapterConfig>> {\n return { ...PROTOCOL_REGISTRY };\n}\n\n/**\n * Get adapter config for a protocol\n */\nexport function getAdapterConfig(protocol: string): AdapterConfig | undefined {\n return PROTOCOL_REGISTRY[protocol];\n}\n"],"names":["getAdapterConfig","getRegistry","registerAdapter","PROTOCOL_REGISTRY","package","mode","optionsMapper","url","uri","toString","exportName","filename","resolveFilePath","protocol","config","normalizedProtocol","endsWith"],"mappings":";;;;;;;;;;;QAsDgBA;eAAAA;;QAPAC;eAAAA;;QARAC;eAAAA;;;uBAtCgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEhC;;CAEC,GACD,IAAMC,oBAAmD;IACvD,0BAA0B;IAC1B,UAAU;QAAEC,SAAS;QAAeC,MAAM;IAAS;IACnD,WAAW;QAAED,SAAS;QAAeC,MAAM;IAAS;IACpD,eAAe;QAAED,SAAS;QAAkBC,MAAM;QAAWC,eAAe,SAACC;mBAAS;gBAAEC,KAAKD,IAAIE,QAAQ;YAAG;;IAAG;IAC/G,aAAa;QAAEL,SAAS;QAAkBC,MAAM;QAAWC,eAAe,SAACC;mBAAS;gBAAEC,KAAKD,IAAIE,QAAQ;YAAG;;IAAG;IAC7G,UAAU;QAAEL,SAAS;QAAeC,MAAM;QAAWC,eAAe,SAACC;mBAAS;gBAAEC,KAAKD,IAAIE,QAAQ;YAAG;;IAAG;IACvG,WAAW;QAAEL,SAAS;QAAgBC,MAAM;QAAWC,eAAe,SAACC;mBAAS;gBAAEC,KAAKD,IAAIE,QAAQ;YAAG;;IAAG;IACzG,YAAY;QAAEL,SAAS;QAAeC,MAAM;QAAWC,eAAe,SAACC;mBAAS;gBAAEA,KAAKA,IAAIE,QAAQ;YAAG;;IAAG;IACzG,gBAAgB;QAAEL,SAAS;QAAeC,MAAM;QAAWC,eAAe,SAACC;mBAAS;gBAAEA,KAAKA,IAAIE,QAAQ;YAAG;;IAAG;IAC7G,aAAa;QAAEL,SAAS;QAAkBC,MAAM;IAAS;IACzD,SAAS;QAAED,SAAS;QAAcC,MAAM;QAAWC,eAAe,SAACC;mBAAS;gBAAEA,KAAKA,IAAIE,QAAQ;YAAG;;IAAG;IAErG,uBAAuB;IACvB,SAAS;QACPL,SAAS;QACTM,YAAY;QACZJ,eAAe,SAACC;mBAAc;gBAAEI,UAAUC,IAAAA,wBAAe,EAACL;YAAK;;IACjE;IAEA,+BAA+B;IAC/B,WAAW;QAAEH,SAAS;IAAK;IAE3B,yBAAyB;IACzB,WAAW;QACTA,SAAS;QACTE,eAAe,SAACC;mBAAc;gBAAEI,UAAUC,IAAAA,wBAAe,EAACL;YAAK;;IACjE;AACF;AAKO,SAASL,gBAAgBW,QAAgB,EAAEC,MAAqB;IACrE,IAAMC,qBAAqBF,SAASG,QAAQ,CAAC,OAAOH,WAAW,AAAC,GAAW,OAATA,UAAS;IAC3EV,iBAAiB,CAACY,mBAAmB,GAAGD;AAC1C;AAKO,SAASb;IACd,OAAO,mBAAKE;AACd;AAKO,SAASH,iBAAiBa,QAAgB;IAC/C,OAAOV,iBAAiB,CAACU,SAAS;AACpC"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/keyv/keyv-registry/src/registry.ts"],"sourcesContent":["import type { AdapterConfig } from './types.ts';\nimport { resolveFilePath } from './utils.ts';\n\n/**\n * Protocol registry mapping URI protocols to adapter configurations\n */\nconst PROTOCOL_REGISTRY: Record<string, AdapterConfig> = {\n // Official @keyv adapters\n 'redis:': { package: '@keyv/redis', mode: 'string' },\n 'rediss:': { package: '@keyv/redis', mode: 'string' },\n 'postgresql:': { package: '@keyv/postgres', mode: 'options', optionsMapper: (url) => ({ uri: url.toString() }) },\n 'postgres:': { package: '@keyv/postgres', mode: 'options', optionsMapper: (url) => ({ uri: url.toString() }) },\n 'mysql:': { package: '@keyv/mysql', mode: 'options', optionsMapper: (url) => ({ uri: url.toString() }) },\n 'sqlite:': { package: '@keyv/sqlite', mode: 'options', optionsMapper: (url) => ({ uri: url.toString() }) },\n 'mongodb:': { package: '@keyv/mongo', mode: 'options', optionsMapper: (url) => ({ url: url.toString() }) },\n 'mongodb+srv:': { package: '@keyv/mongo', mode: 'options', optionsMapper: (url) => ({ url: url.toString() }) },\n 'memcache:': { package: '@keyv/memcache', mode: 'string' },\n 'etcd:': { package: '@keyv/etcd', mode: 'options', optionsMapper: (url) => ({ url: url.toString() }) },\n\n // Third-party adapters\n 'file:': {\n package: 'keyv-file',\n exportName: 'KeyvFile',\n optionsMapper: (url: URL) => ({ filename: resolveFilePath(url) }),\n },\n\n // Built-in (no package needed)\n 'memory:': { package: null },\n\n // Future/custom adapters\n 'duckdb:': {\n package: 'keyv-duckdb',\n optionsMapper: (url: URL) => ({ filename: resolveFilePath(url) }),\n },\n};\n\n/**\n * Register or override a protocol adapter\n */\nexport function registerAdapter(protocol: string, config: AdapterConfig): void {\n const normalizedProtocol = protocol.endsWith(':') ? protocol : `${protocol}:`;\n PROTOCOL_REGISTRY[normalizedProtocol] = config;\n}\n\n/**\n * Get the current registry (read-only copy)\n */\nexport function getRegistry(): Readonly<Record<string, AdapterConfig>> {\n return { ...PROTOCOL_REGISTRY };\n}\n\n/**\n * Get adapter config for a protocol\n */\nexport function getAdapterConfig(protocol: string): AdapterConfig | undefined {\n return PROTOCOL_REGISTRY[protocol];\n}\n"],"names":["getAdapterConfig","getRegistry","registerAdapter","PROTOCOL_REGISTRY","package","mode","optionsMapper","url","uri","toString","exportName","filename","resolveFilePath","protocol","config","normalizedProtocol","endsWith"],"mappings":";;;;;;;;;;;QAsDgBA;eAAAA;;QAPAC;eAAAA;;QARAC;eAAAA;;;uBAtCgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEhC;;CAEC,GACD,IAAMC,oBAAmD;IACvD,0BAA0B;IAC1B,UAAU;QAAEC,SAAS;QAAeC,MAAM;IAAS;IACnD,WAAW;QAAED,SAAS;QAAeC,MAAM;IAAS;IACpD,eAAe;QAAED,SAAS;QAAkBC,MAAM;QAAWC,eAAe,SAAfA,cAAgBC;mBAAS;gBAAEC,KAAKD,IAAIE,QAAQ;YAAG;;IAAG;IAC/G,aAAa;QAAEL,SAAS;QAAkBC,MAAM;QAAWC,eAAe,SAAfA,cAAgBC;mBAAS;gBAAEC,KAAKD,IAAIE,QAAQ;YAAG;;IAAG;IAC7G,UAAU;QAAEL,SAAS;QAAeC,MAAM;QAAWC,eAAe,SAAfA,cAAgBC;mBAAS;gBAAEC,KAAKD,IAAIE,QAAQ;YAAG;;IAAG;IACvG,WAAW;QAAEL,SAAS;QAAgBC,MAAM;QAAWC,eAAe,SAAfA,cAAgBC;mBAAS;gBAAEC,KAAKD,IAAIE,QAAQ;YAAG;;IAAG;IACzG,YAAY;QAAEL,SAAS;QAAeC,MAAM;QAAWC,eAAe,SAAfA,cAAgBC;mBAAS;gBAAEA,KAAKA,IAAIE,QAAQ;YAAG;;IAAG;IACzG,gBAAgB;QAAEL,SAAS;QAAeC,MAAM;QAAWC,eAAe,SAAfA,cAAgBC;mBAAS;gBAAEA,KAAKA,IAAIE,QAAQ;YAAG;;IAAG;IAC7G,aAAa;QAAEL,SAAS;QAAkBC,MAAM;IAAS;IACzD,SAAS;QAAED,SAAS;QAAcC,MAAM;QAAWC,eAAe,SAAfA,cAAgBC;mBAAS;gBAAEA,KAAKA,IAAIE,QAAQ;YAAG;;IAAG;IAErG,uBAAuB;IACvB,SAAS;QACPL,SAAS;QACTM,YAAY;QACZJ,eAAe,SAAfA,cAAgBC;mBAAc;gBAAEI,UAAUC,IAAAA,wBAAe,EAACL;YAAK;;IACjE;IAEA,+BAA+B;IAC/B,WAAW;QAAEH,SAAS;IAAK;IAE3B,yBAAyB;IACzB,WAAW;QACTA,SAAS;QACTE,eAAe,SAAfA,cAAgBC;mBAAc;gBAAEI,UAAUC,IAAAA,wBAAe,EAACL;YAAK;;IACjE;AACF;AAKO,SAASL,gBAAgBW,QAAgB,EAAEC,MAAqB;IACrE,IAAMC,qBAAqBF,SAASG,QAAQ,CAAC,OAAOH,WAAW,AAAC,GAAW,OAATA,UAAS;IAC3EV,iBAAiB,CAACY,mBAAmB,GAAGD;AAC1C;AAKO,SAASb;IACd,OAAO,mBAAKE;AACd;AAKO,SAASH,iBAAiBa,QAAgB;IAC/C,OAAOV,iBAAiB,CAACU,SAAS;AACpC"}
@@ -51,7 +51,7 @@ function _object_without_properties(source, excluded) {
51
51
  if (source == null) return {};
52
52
  var target = {}, sourceKeys, key, i;
53
53
  if (typeof Reflect !== "undefined" && Reflect.ownKeys) {
54
- sourceKeys = Reflect.ownKeys(source);
54
+ sourceKeys = Reflect.ownKeys(Object(source));
55
55
  for(i = 0; i < sourceKeys.length; i++){
56
56
  key = sourceKeys[i];
57
57
  if (excluded.indexOf(key) >= 0) continue;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/keyv/keyv-registry/src/loadAdapter.ts"],"sourcesContent":["import Module from 'node:module';\nimport path from 'node:path';\nimport url from 'node:url';\nimport installModule from 'install-module-linked';\nimport type { LoadAdapterCallback } from './types.ts';\n\n// Create require function for ESM compatibility\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\n// Determine node_modules path\nconst _dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);\nconst nodeModulesPath = path.join(_dirname, '..', '..', 'node_modules');\n\n// Cache loaded adapters\nconst adapterCache = new Map<string, unknown>();\n\n/**\n * Load an adapter, installing it dynamically if needed\n */\nexport default function loadAdapter(packageName: string, exportName: string | undefined, callback: LoadAdapterCallback): void {\n const cacheKey = `${packageName}:${exportName ?? 'default'}`;\n\n // Return cached adapter if available\n if (adapterCache.has(cacheKey)) {\n callback(null, adapterCache.get(cacheKey));\n return;\n }\n\n // Try to require first (may already be installed)\n try {\n const mod = _require(packageName);\n const Adapter = exportName ? mod[exportName] : (mod.default ?? mod);\n adapterCache.set(cacheKey, Adapter);\n callback(null, Adapter);\n return;\n } catch {\n // Not installed - dynamically install then load\n installModule(packageName, nodeModulesPath, {}, (err: Error | null) => {\n if (err) return callback(err);\n try {\n const mod = _require(packageName);\n const Adapter = exportName ? mod[exportName] : (mod.default ?? mod);\n adapterCache.set(cacheKey, Adapter);\n callback(null, Adapter);\n } catch (loadErr) {\n callback(loadErr as Error);\n }\n });\n }\n}\n\n/**\n * Clear the adapter cache (useful for testing)\n */\nexport function clearAdapterCache(): void {\n adapterCache.clear();\n}\n"],"names":["Module","path","url","installModule","_require","require","createRequire","_dirname","dirname","__filename","fileURLToPath","nodeModulesPath","join","adapterCache","Map","loadAdapter","packageName","exportName","callback","cacheKey","has","get","mod","Adapter","default","set","err","loadErr","clearAdapterCache","clear"],"mappings":"AAAA,OAAOA,YAAY,cAAc;AACjC,OAAOC,UAAU,YAAY;AAC7B,OAAOC,SAAS,WAAW;AAC3B,OAAOC,mBAAmB,wBAAwB;AAGlD,gDAAgD;AAChD,MAAMC,WAAW,OAAOC,YAAY,cAAcL,OAAOM,aAAa,CAAC,YAAYJ,GAAG,IAAIG;AAE1F,8BAA8B;AAC9B,MAAME,WAAWN,KAAKO,OAAO,CAAC,OAAOC,eAAe,cAAcP,IAAIQ,aAAa,CAAC,YAAYR,GAAG,IAAIO;AACvG,MAAME,kBAAkBV,KAAKW,IAAI,CAACL,UAAU,MAAM,MAAM;AAExD,wBAAwB;AACxB,MAAMM,eAAe,IAAIC;AAEzB;;CAEC,GACD,eAAe,SAASC,YAAYC,WAAmB,EAAEC,UAA8B,EAAEC,QAA6B;IACpH,MAAMC,WAAW,GAAGH,YAAY,CAAC,EAAEC,uBAAAA,wBAAAA,aAAc,WAAW;IAE5D,qCAAqC;IACrC,IAAIJ,aAAaO,GAAG,CAACD,WAAW;QAC9BD,SAAS,MAAML,aAAaQ,GAAG,CAACF;QAChC;IACF;IAEA,kDAAkD;IAClD,IAAI;YAE8CG;QADhD,MAAMA,MAAMlB,SAASY;QACrB,MAAMO,UAAUN,aAAaK,GAAG,CAACL,WAAW,IAAIK,eAAAA,IAAIE,OAAO,cAAXF,0BAAAA,eAAeA;QAC/DT,aAAaY,GAAG,CAACN,UAAUI;QAC3BL,SAAS,MAAMK;QACf;IACF,EAAE,OAAM;QACN,gDAAgD;QAChDpB,cAAca,aAAaL,iBAAiB,CAAC,GAAG,CAACe;YAC/C,IAAIA,KAAK,OAAOR,SAASQ;YACzB,IAAI;oBAE8CJ;gBADhD,MAAMA,MAAMlB,SAASY;gBACrB,MAAMO,UAAUN,aAAaK,GAAG,CAACL,WAAW,IAAIK,eAAAA,IAAIE,OAAO,cAAXF,0BAAAA,eAAeA;gBAC/DT,aAAaY,GAAG,CAACN,UAAUI;gBAC3BL,SAAS,MAAMK;YACjB,EAAE,OAAOI,SAAS;gBAChBT,SAASS;YACX;QACF;IACF;AACF;AAEA;;CAEC,GACD,OAAO,SAASC;IACdf,aAAagB,KAAK;AACpB"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/keyv/keyv-registry/src/loadAdapter.ts"],"sourcesContent":["import Module from 'node:module';\nimport path from 'node:path';\nimport url from 'node:url';\nimport installModule from 'install-module-linked';\nimport type { LoadAdapterCallback } from './types.ts';\n\n// Create require function for ESM compatibility\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\n// Determine node_modules path\nconst _dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);\nconst nodeModulesPath = path.join(_dirname, '..', '..', 'node_modules');\n\n// Cache loaded adapters\nconst adapterCache = new Map<string, unknown>();\n\n/**\n * Load an adapter, installing it dynamically if needed\n */\nexport default function loadAdapter(packageName: string, exportName: string | undefined, callback: LoadAdapterCallback): void {\n const cacheKey = `${packageName}:${exportName ?? 'default'}`;\n\n // Return cached adapter if available\n if (adapterCache.has(cacheKey)) {\n callback(null, adapterCache.get(cacheKey));\n return;\n }\n\n // Try to require first (may already be installed)\n try {\n const mod = _require(packageName);\n const Adapter = exportName ? mod[exportName] : (mod.default ?? mod);\n adapterCache.set(cacheKey, Adapter);\n callback(null, Adapter);\n return;\n } catch {\n // Not installed - dynamically install then load\n installModule(packageName, nodeModulesPath, {}, (err?: Error | null) => {\n if (err) return callback(err);\n try {\n const mod = _require(packageName);\n const Adapter = exportName ? mod[exportName] : (mod.default ?? mod);\n adapterCache.set(cacheKey, Adapter);\n callback(null, Adapter);\n } catch (loadErr) {\n callback(loadErr as Error);\n }\n });\n }\n}\n\n/**\n * Clear the adapter cache (useful for testing)\n */\nexport function clearAdapterCache(): void {\n adapterCache.clear();\n}\n"],"names":["Module","path","url","installModule","_require","require","createRequire","_dirname","dirname","__filename","fileURLToPath","nodeModulesPath","join","adapterCache","Map","loadAdapter","packageName","exportName","callback","cacheKey","has","get","mod","Adapter","default","set","err","loadErr","clearAdapterCache","clear"],"mappings":"AAAA,OAAOA,YAAY,cAAc;AACjC,OAAOC,UAAU,YAAY;AAC7B,OAAOC,SAAS,WAAW;AAC3B,OAAOC,mBAAmB,wBAAwB;AAGlD,gDAAgD;AAChD,MAAMC,WAAW,OAAOC,YAAY,cAAcL,OAAOM,aAAa,CAAC,YAAYJ,GAAG,IAAIG;AAE1F,8BAA8B;AAC9B,MAAME,WAAWN,KAAKO,OAAO,CAAC,OAAOC,eAAe,cAAcP,IAAIQ,aAAa,CAAC,YAAYR,GAAG,IAAIO;AACvG,MAAME,kBAAkBV,KAAKW,IAAI,CAACL,UAAU,MAAM,MAAM;AAExD,wBAAwB;AACxB,MAAMM,eAAe,IAAIC;AAEzB;;CAEC,GACD,eAAe,SAASC,YAAYC,WAAmB,EAAEC,UAA8B,EAAEC,QAA6B;IACpH,MAAMC,WAAW,GAAGH,YAAY,CAAC,EAAEC,uBAAAA,wBAAAA,aAAc,WAAW;IAE5D,qCAAqC;IACrC,IAAIJ,aAAaO,GAAG,CAACD,WAAW;QAC9BD,SAAS,MAAML,aAAaQ,GAAG,CAACF;QAChC;IACF;IAEA,kDAAkD;IAClD,IAAI;YAE8CG;QADhD,MAAMA,MAAMlB,SAASY;QACrB,MAAMO,UAAUN,aAAaK,GAAG,CAACL,WAAW,IAAIK,eAAAA,IAAIE,OAAO,cAAXF,0BAAAA,eAAeA;QAC/DT,aAAaY,GAAG,CAACN,UAAUI;QAC3BL,SAAS,MAAMK;QACf;IACF,EAAE,OAAM;QACN,gDAAgD;QAChDpB,cAAca,aAAaL,iBAAiB,CAAC,GAAG,CAACe;YAC/C,IAAIA,KAAK,OAAOR,SAASQ;YACzB,IAAI;oBAE8CJ;gBADhD,MAAMA,MAAMlB,SAASY;gBACrB,MAAMO,UAAUN,aAAaK,GAAG,CAACL,WAAW,IAAIK,eAAAA,IAAIE,OAAO,cAAXF,0BAAAA,eAAeA;gBAC/DT,aAAaY,GAAG,CAACN,UAAUI;gBAC3BL,SAAS,MAAMK;YACjB,EAAE,OAAOI,SAAS;gBAChBT,SAASS;YACX;QACF;IACF;AACF;AAEA;;CAEC,GACD,OAAO,SAASC;IACdf,aAAagB,KAAK;AACpB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "keyv-registry",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Protocol-based Keyv adapter registry with dynamic module installation",
5
5
  "keywords": [
6
6
  "keyv",