@springfield/ham-radio-registry 1.0.1 → 1.0.3

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/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## [1.0.3](https://gitlab.com/springfield-ham-radio/app/ham-radio-registry/compare/v1.0.2...v1.0.3) (2025-08-18)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * enhance NpmBasedConfigRegistry to handle scoped packages and improve package processing logic ([1e08e7f](https://gitlab.com/springfield-ham-radio/app/ham-radio-registry/commit/1e08e7f7277fbb529011a5d48bc05fa9c14fa7bf))
7
+
8
+ ## [1.0.2](https://gitlab.com/springfield-ham-radio/app/ham-radio-registry/compare/v1.0.1...v1.0.2) (2025-08-01)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **deps:** update dependency loglayer to ^6.6.0 ([08fdc09](https://gitlab.com/springfield-ham-radio/app/ham-radio-registry/commit/08fdc09083c2876762be95e24085fa0a7edfb037))
14
+
1
15
  ## [1.0.1](https://gitlab.com/springfield-ham-radio/app/ham-radio-registry/compare/v1.0.0...v1.0.1) (2025-06-24)
2
16
 
3
17
 
@@ -1,20 +1,34 @@
1
+ import type { RadioCodec, RadioModelId, ValidationResult } from '@springfield/ham-radio-api';
1
2
  import type { ILogLayer } from 'loglayer';
2
- import type { RadioModelId, RadioCodec, ValidationResult } from '@springfield/ham-radio-api';
3
- import type { RegistryRadio } from '../types/radio-config.js';
4
3
  import type { PluginModule } from '../types/plugin-module.js';
4
+ import type { RegistryRadio } from '../types/radio-config.js';
5
+ export interface SpringfieldRadioModuleConfig {
6
+ pluginType: string;
7
+ codecFactory?: string;
8
+ configPath?: string;
9
+ sharedPath?: string;
10
+ manufacturer?: string;
11
+ capabilities?: Record<string, unknown>;
12
+ }
13
+ export interface PackageJson extends Record<string, unknown> {
14
+ name: string;
15
+ version: string;
16
+ keywords?: string[];
17
+ springfield: SpringfieldRadioModuleConfig;
18
+ }
5
19
  /**
6
20
  * Radio configuration registry interface
7
21
  */
8
22
  export interface RadioConfigRegistry {
9
23
  discoverConfigurations(): Promise<RegistryRadio[]>;
10
- getConfiguration(configId: string): Promise<RegistryRadio | null>;
24
+ getConfiguration(configId: string): Promise<RegistryRadio | undefined>;
11
25
  getConfigurationsByManufacturer(manufacturer: string): Promise<RegistryRadio[]>;
12
26
  getConfigurationsByModule(moduleId: string): Promise<RegistryRadio[]>;
13
27
  validateConfiguration(config: RegistryRadio): ValidationResult;
14
28
  registerConfiguration(config: RegistryRadio): Promise<void>;
15
29
  installPlugin(moduleId: string): Promise<void>;
16
30
  listInstalledPlugins(): Promise<PluginModule[]>;
17
- getCodec(modelId: RadioModelId): Promise<RadioCodec | null>;
31
+ getCodec(modelId: RadioModelId): Promise<RadioCodec | undefined>;
18
32
  }
19
33
  /**
20
34
  * NPM-based configuration registry implementation
@@ -28,14 +42,14 @@ export declare class NpmBasedConfigRegistry implements RadioConfigRegistry {
28
42
  private logger;
29
43
  constructor(logger: ILogLayer);
30
44
  discoverConfigurations(): Promise<RegistryRadio[]>;
31
- getConfiguration(configId: string): Promise<RegistryRadio | null>;
45
+ getConfiguration(configId: string): Promise<RegistryRadio | undefined>;
32
46
  getConfigurationsByManufacturer(manufacturer: string): Promise<RegistryRadio[]>;
33
47
  getConfigurationsByModule(moduleId: string): Promise<RegistryRadio[]>;
34
48
  validateConfiguration(config: RegistryRadio): ValidationResult;
35
49
  registerConfiguration(config: RegistryRadio): Promise<void>;
36
50
  installPlugin(moduleId: string): Promise<void>;
37
51
  listInstalledPlugins(): Promise<PluginModule[]>;
38
- getCodec(modelId: RadioModelId): Promise<RadioCodec | null>;
52
+ getCodec(modelId: RadioModelId): Promise<RadioCodec | undefined>;
39
53
  private discoverPluginModules;
40
54
  private isRadioModule;
41
55
  private loadPluginModule;
@@ -1 +1 @@
1
- {"version":3,"file":"config-registry.d.ts","sourceRoot":"","sources":["../../src/registry/config-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAS9D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAElC,sBAAsB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAGnD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAGlE,+BAA+B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAGhF,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAGtE,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,gBAAgB,CAAC;IAG/D,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAG5D,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAG/C,oBAAoB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAGhD,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;CAC7D;AAED;;GAEG;AACH,qBAAa,sBAAuB,YAAW,mBAAmB;IAChE,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,sBAAsB,CAAyB;IACvD,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,MAAM,CAAY;gBAEd,MAAM,EAAE,SAAS;IAMvB,sBAAsB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAkBlD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAcjE,+BAA+B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAK/E,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAK3E,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,gBAAgB;IAqCxD,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3D,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB9C,oBAAoB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAI/C,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;YAqBnD,qBAAqB;IAmCnC,OAAO,CAAC,aAAa;YAeP,gBAAgB;YAgBhB,4BAA4B;YAoC5B,eAAe;YASf,iBAAiB;YAKjB,uBAAuB;YAavB,mBAAmB;YAanB,cAAc;IA4B5B,OAAO,CAAC,mBAAmB;YAMb,iBAAiB;CAWhC"}
1
+ {"version":3,"file":"config-registry.d.ts","sourceRoot":"","sources":["../../src/registry/config-registry.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { DefaultSharedComponentManager } from './shared-components.js';
2
1
  import { DefaultNpmClient } from '../utils/npm-client.js';
3
- import { readdir, readFile } from 'fs/promises';
4
- import { join } from 'path';
5
- import { existsSync } from 'fs';
2
+ import { readFile, readdir } from 'node:fs/promises';
3
+ import { DefaultSharedComponentManager } from './shared-components.js';
4
+ import { existsSync } from 'node:fs';
5
+ import { join } from 'node:path';
6
6
  /**
7
7
  * NPM-based configuration registry implementation
8
8
  */
@@ -28,7 +28,7 @@ export class NpmBasedConfigRegistry {
28
28
  configs.push(...pluginConfigs);
29
29
  }
30
30
  catch (error) {
31
- this.logger.withError(error).warn('Failed to load configurations from plugin ' + plugin.name);
31
+ this.logger.withMetadata({ pluignName: plugin.name }).withError(error).warn('Failed to load configurations from plugin ');
32
32
  }
33
33
  }
34
34
  return configs;
@@ -42,7 +42,7 @@ export class NpmBasedConfigRegistry {
42
42
  if (this.configCache.size === 0) {
43
43
  await this.discoverConfigurations();
44
44
  }
45
- return this.configCache.get(configId) || null;
45
+ return this.configCache.get(configId);
46
46
  }
47
47
  async getConfigurationsByManufacturer(manufacturer) {
48
48
  const configs = await this.discoverConfigurations();
@@ -76,8 +76,8 @@ export class NpmBasedConfigRegistry {
76
76
  errors.push('Configuration must have settings schema');
77
77
  }
78
78
  return {
79
- isValid: errors.length === 0,
80
79
  errors,
80
+ isValid: errors.length === 0,
81
81
  warnings,
82
82
  };
83
83
  }
@@ -102,7 +102,7 @@ export class NpmBasedConfigRegistry {
102
102
  this.logger.withMetadata({ moduleId }).info('Installed plugin');
103
103
  }
104
104
  async listInstalledPlugins() {
105
- return Array.from(this.pluginCache.values());
105
+ return [...this.pluginCache.values()];
106
106
  }
107
107
  async getCodec(modelId) {
108
108
  // Check cache first
@@ -112,7 +112,7 @@ export class NpmBasedConfigRegistry {
112
112
  // Find configuration for this model
113
113
  const config = await this.getConfiguration(modelId);
114
114
  if (!config || !config.codec) {
115
- return null;
115
+ return undefined;
116
116
  }
117
117
  // Load codec based on configuration
118
118
  const codec = await this.loadCodecFromConfig(config);
@@ -143,7 +143,7 @@ export class NpmBasedConfigRegistry {
143
143
  }
144
144
  catch (error) {
145
145
  // Skip invalid packages
146
- this.logger.withMetadata({ name: entry.name, error }).debug('Skipped invalid package');
146
+ this.logger.withMetadata({ error, name: entry.name }).debug('Skipped invalid package');
147
147
  }
148
148
  }
149
149
  }
@@ -156,21 +156,21 @@ export class NpmBasedConfigRegistry {
156
156
  // Check springfield plugin field
157
157
  const hasSpringfieldField = packageJson.springfield?.pluginType === 'radio-module';
158
158
  // Check keywords
159
- const hasKeywords = packageJson.keywords?.includes('radio-module');
159
+ const hasKeywords = packageJson.keywords?.includes('radio-module') ?? false;
160
160
  return isNamedCorrectly || hasSpringfieldField || hasKeywords;
161
161
  }
162
162
  async loadPluginModule(moduleName, packageJson) {
163
163
  const modulePath = join(process.cwd(), 'node_modules', moduleName);
164
164
  const springfieldConfig = packageJson.springfield || {};
165
165
  return {
166
- name: moduleName,
167
- version: packageJson.version,
168
- manufacturer: springfieldConfig.manufacturer,
169
- configPath: join(modulePath, springfieldConfig.configPath || 'configs'),
170
- sharedPath: join(modulePath, springfieldConfig.sharedPath || 'shared'),
171
- codecFactoryPath: springfieldConfig.codecFactory ? join(modulePath, springfieldConfig.codecFactory) : undefined,
172
166
  capabilities: springfieldConfig.capabilities || {},
167
+ codecFactoryPath: springfieldConfig.codecFactory ? join(modulePath, springfieldConfig.codecFactory) : undefined,
168
+ configPath: join(modulePath, springfieldConfig.configPath || 'configs'),
169
+ manufacturer: springfieldConfig.manufacturer,
170
+ name: moduleName,
173
171
  packageJson,
172
+ sharedPath: join(modulePath, springfieldConfig.sharedPath || 'shared'),
173
+ version: packageJson.version,
174
174
  };
175
175
  }
176
176
  async loadConfigurationsFromPlugin(plugin) {
@@ -228,7 +228,7 @@ export class NpmBasedConfigRegistry {
228
228
  }
229
229
  async loadCodecFromConfig(config) {
230
230
  if (!config.codec || config.codec.type !== 'shared' || !config.codec.reference) {
231
- return null;
231
+ return undefined;
232
232
  }
233
233
  const codecPath = this.sharedComponentManager.resolveReference(config.codec.reference, config.metadata.pluginPath || '');
234
234
  return this.sharedComponentManager.loadCodec(codecPath, {
@@ -255,8 +255,8 @@ export class NpmBasedConfigRegistry {
255
255
  errors.push(`Failed to validate plugin: ${error}`);
256
256
  }
257
257
  return {
258
- isValid: errors.length === 0,
259
258
  errors,
259
+ isValid: errors.length === 0,
260
260
  warnings,
261
261
  };
262
262
  }
@@ -266,8 +266,8 @@ export class NpmBasedConfigRegistry {
266
266
  return true;
267
267
  }
268
268
  async runPackageManager(args) {
269
- const { exec } = await import('child_process');
270
- const { promisify } = await import('util');
269
+ const { exec } = await import('node:child_process');
270
+ const { promisify } = await import('node:util');
271
271
  const execAsync = promisify(exec);
272
272
  try {
273
273
  await execAsync(`yarn ${args.join(' ')}`);
@@ -1 +1 @@
1
- {"version":3,"file":"config-registry.js","sourceRoot":"","sources":["../../src/registry/config-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-registry.js","sourceRoot":"","sources":["../../src/registry/config-registry.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { ILogLayer } from 'loglayer';
2
1
  import type { RadioCodec, SharedComponentManager } from '@springfield/ham-radio-api';
2
+ import type { ILogLayer } from 'loglayer';
3
3
  /**
4
4
  * Default implementation of the shared component manager
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"shared-components.d.ts","sourceRoot":"","sources":["../../src/registry/shared-components.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1C,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAErF;;GAEG;AACH,qBAAa,6BAA8B,YAAW,sBAAsB;IAC1E,OAAO,CAAC,MAAM,CAAY;gBAEd,MAAM,EAAE,SAAS;IAIvB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAahE,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAapE,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAwBxF,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;CAc9D"}
1
+ {"version":3,"file":"shared-components.d.ts","sourceRoot":"","sources":["../../src/registry/shared-components.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAI1C;;GAEG;AACH,qBAAa,6BAA8B,YAAW,sBAAsB;IAC1E,OAAO,CAAC,MAAM,CAAY;gBAEd,MAAM,EAAE,SAAS;IAIvB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAahE,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAapE,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAwBxF,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;CAc9D"}
@@ -1,5 +1,5 @@
1
- import { readFile } from 'fs/promises';
2
- import { join } from 'path';
1
+ import { join } from 'node:path';
2
+ import { readFile } from 'node:fs/promises';
3
3
  /**
4
4
  * Default implementation of the shared component manager
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"shared-components.js","sourceRoot":"","sources":["../../src/registry/shared-components.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B;;GAEG;AACH,MAAM,OAAO,6BAA6B;IAChC,MAAM,CAAY;IAE1B,YAAY,MAAiB;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,UAAkB;QACjC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEnC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;YACvE,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YACnE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,YAAoB;QACrC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAErC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC3E,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACrE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,MAA+B;QAChE,IAAI,CAAC;YACH,gCAAgC;YAChC,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YAE5C,gCAAgC;YAChC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,8CAA8C,SAAS,EAAE,CAAC,CAAC;YAC7E,CAAC;YAED,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;YAC9C,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;YAEnC,kCAAkC;YAClC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,OAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAEpF,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAC7F,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAClE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,SAAiB,EAAE,QAAgB;QAClD,wBAAwB;QACxB,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACnC,CAAC;QAED,wBAAwB;QACxB,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,2BAA2B;QAC3B,OAAO,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACnC,CAAC;CACF"}
1
+ {"version":3,"file":"shared-components.js","sourceRoot":"","sources":["../../src/registry/shared-components.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@springfield/ham-radio-registry",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "author": "Bryan Hunt",
5
5
  "license": "MIT",
6
6
  "packageManager": "yarn@4.9.2",
@@ -59,15 +59,15 @@
59
59
  "@semantic-release/changelog": "6.0.3",
60
60
  "@semantic-release/git": "10.0.1",
61
61
  "@semantic-release/gitlab": "13.2.6",
62
- "chai": "^5.2.0",
62
+ "chai": "5.2.1",
63
63
  "husky": "9.1.7",
64
- "oxlint": "1.3.0",
64
+ "oxlint": "1.12.0",
65
65
  "semantic-release": "23.1.1",
66
66
  "semantic-release-yarn": "3.0.2",
67
- "typescript": "5.8.3"
67
+ "typescript": "5.9.2"
68
68
  },
69
69
  "dependencies": {
70
- "@springfield/ham-radio-api": "^16.1.1",
71
- "loglayer": "^6.4.3"
70
+ "@springfield/ham-radio-api": "^16.1.3",
71
+ "loglayer": "^6.6.0"
72
72
  }
73
73
  }
package/src/index.ts CHANGED
@@ -3,6 +3,7 @@ export type {
3
3
  RadioConfigMetadata,
4
4
  RadioCapabilities,
5
5
  CodecConfig,
6
+ RegistryRadio,
6
7
  } from './types/radio-config.js';
7
8
 
8
9
  // Re-export common types from ham-radio-api
@@ -20,8 +21,8 @@ export type {
20
21
  } from './types/plugin-module.js';
21
22
 
22
23
  // Registry components
23
- import type { RadioConfigRegistry } from './registry/config-registry.js';
24
- import { NpmBasedConfigRegistry } from './registry/config-registry.js';
24
+ export type { RadioConfigRegistry } from './registry/config-registry.js';
25
+ import { NpmBasedConfigRegistry, type RadioConfigRegistry } from './registry/config-registry.js';
25
26
 
26
27
  // Shared components
27
28
  export type { SharedComponentManager } from '@springfield/ham-radio-api';
@@ -1,14 +1,28 @@
1
+ import { DefaultNpmClient, type NpmClient } from '../utils/npm-client.js';
2
+ import type { RadioCodec, RadioModelId, SharedComponentManager, ValidationResult } from '@springfield/ham-radio-api';
3
+ import { readFile, readdir } from 'node:fs/promises';
4
+ import { DefaultSharedComponentManager } from './shared-components.js';
1
5
  import type { ILogLayer } from 'loglayer';
2
- import type { RadioModelId, RadioCodec, ValidationResult } from '@springfield/ham-radio-api';
3
- import type { RegistryRadio } from '../types/radio-config.js';
4
6
  import type { PluginModule } from '../types/plugin-module.js';
5
- import type { SharedComponentManager } from '@springfield/ham-radio-api';
6
- import type { NpmClient } from '../utils/npm-client.js';
7
- import { DefaultSharedComponentManager } from './shared-components.js';
8
- import { DefaultNpmClient } from '../utils/npm-client.js';
9
- import { readdir, readFile } from 'fs/promises';
10
- import { join } from 'path';
11
- import { existsSync } from 'fs';
7
+ import type { RegistryRadio } from '../types/radio-config.js';
8
+ import { existsSync } from 'node:fs';
9
+ import { join } from 'node:path';
10
+
11
+ export interface SpringfieldRadioModuleConfig {
12
+ pluginType: string;
13
+ codecFactory?: string;
14
+ configPath?: string;
15
+ sharedPath?: string;
16
+ manufacturer?: string;
17
+ capabilities?: Record<string, unknown>;
18
+ }
19
+
20
+ export interface PackageJson extends Record<string, unknown> {
21
+ name: string;
22
+ version: string;
23
+ keywords?: string[];
24
+ springfield: SpringfieldRadioModuleConfig;
25
+ }
12
26
 
13
27
  /**
14
28
  * Radio configuration registry interface
@@ -18,7 +32,7 @@ export interface RadioConfigRegistry {
18
32
  discoverConfigurations(): Promise<RegistryRadio[]>;
19
33
 
20
34
  // Get configuration by ID
21
- getConfiguration(configId: string): Promise<RegistryRadio | null>;
35
+ getConfiguration(configId: string): Promise<RegistryRadio | undefined>;
22
36
 
23
37
  // Get configurations by manufacturer
24
38
  getConfigurationsByManufacturer(manufacturer: string): Promise<RegistryRadio[]>;
@@ -39,7 +53,7 @@ export interface RadioConfigRegistry {
39
53
  listInstalledPlugins(): Promise<PluginModule[]>;
40
54
 
41
55
  // Get codec for a radio model
42
- getCodec(modelId: RadioModelId): Promise<RadioCodec | null>;
56
+ getCodec(modelId: RadioModelId): Promise<RadioCodec | undefined>;
43
57
  }
44
58
 
45
59
  /**
@@ -70,17 +84,17 @@ export class NpmBasedConfigRegistry implements RadioConfigRegistry {
70
84
  const pluginConfigs = await this.loadConfigurationsFromPlugin(plugin);
71
85
  configs.push(...pluginConfigs);
72
86
  } catch (error) {
73
- this.logger.withError(error).warn('Failed to load configurations from plugin ' + plugin.name);
87
+ this.logger.withMetadata({ pluignName: plugin.name }).withError(error).warn('Failed to load configurations from plugin ');
74
88
  }
75
89
  }
76
90
 
77
91
  return configs;
78
92
  }
79
93
 
80
- async getConfiguration(configId: string): Promise<RegistryRadio | null> {
94
+ async getConfiguration(configId: string): Promise<RegistryRadio | undefined> {
81
95
  // Check cache first
82
96
  if (this.configCache.has(configId)) {
83
- return this.configCache.get(configId)!;
97
+ return this.configCache.get(configId);
84
98
  }
85
99
 
86
100
  // Discover configurations if cache is empty
@@ -88,7 +102,7 @@ export class NpmBasedConfigRegistry implements RadioConfigRegistry {
88
102
  await this.discoverConfigurations();
89
103
  }
90
104
 
91
- return this.configCache.get(configId) || null;
105
+ return this.configCache.get(configId);
92
106
  }
93
107
 
94
108
  async getConfigurationsByManufacturer(manufacturer: string): Promise<RegistryRadio[]> {
@@ -132,8 +146,8 @@ export class NpmBasedConfigRegistry implements RadioConfigRegistry {
132
146
  }
133
147
 
134
148
  return {
135
- isValid: errors.length === 0,
136
149
  errors,
150
+ isValid: errors.length === 0,
137
151
  warnings,
138
152
  };
139
153
  }
@@ -165,19 +179,19 @@ export class NpmBasedConfigRegistry implements RadioConfigRegistry {
165
179
  }
166
180
 
167
181
  async listInstalledPlugins(): Promise<PluginModule[]> {
168
- return Array.from(this.pluginCache.values());
182
+ return [...this.pluginCache.values()];
169
183
  }
170
184
 
171
- async getCodec(modelId: RadioModelId): Promise<RadioCodec | null> {
185
+ async getCodec(modelId: RadioModelId): Promise<RadioCodec | undefined> {
172
186
  // Check cache first
173
187
  if (this.codecCache.has(modelId)) {
174
- return this.codecCache.get(modelId)!;
188
+ return this.codecCache.get(modelId);
175
189
  }
176
190
 
177
191
  // Find configuration for this model
178
192
  const config = await this.getConfiguration(modelId);
179
193
  if (!config || !config.codec) {
180
- return null;
194
+ return undefined;
181
195
  }
182
196
 
183
197
  // Load codec based on configuration
@@ -203,28 +217,71 @@ export class NpmBasedConfigRegistry implements RadioConfigRegistry {
203
217
 
204
218
  for (const entry of entries) {
205
219
  if (entry.isDirectory()) {
206
- const packageJsonPath = join(nodeModulesPath, entry.name, 'package.json');
220
+ if (entry.name.startsWith('@')) {
221
+ // Handle scoped packages
222
+ await this.processScopedPackage(nodeModulesPath, entry.name, plugins);
223
+ } else {
224
+ // Handle regular packages
225
+ await this.processRegularPackage(nodeModulesPath, entry.name, plugins);
226
+ }
227
+ }
228
+ }
207
229
 
208
- try {
209
- const packageJson = JSON.parse(await readFile(packageJsonPath, 'utf8'));
230
+ return plugins;
231
+ }
210
232
 
211
- // Check if this is a radio module
212
- if (this.isRadioModule(packageJson)) {
213
- const plugin = await this.loadPluginModule(entry.name, packageJson);
214
- plugins.push(plugin);
215
- this.pluginCache.set(entry.name, plugin);
216
- }
217
- } catch (error) {
218
- // Skip invalid packages
219
- this.logger.withMetadata({ name: entry.name, error } as any).debug('Skipped invalid package');
233
+ private async processScopedPackage(nodeModulesPath: string, scopeName: string, plugins: PluginModule[]): Promise<void> {
234
+ // First, try to process the scoped directory as a package itself
235
+ // (some scoped packages like @types/node have their own package.json)
236
+ const scopePackageJsonPath = join(nodeModulesPath, scopeName, 'package.json');
237
+
238
+ try {
239
+ if (existsSync(scopePackageJsonPath)) {
240
+ // The scoped directory itself is a package
241
+ await this.processRegularPackage(nodeModulesPath, scopeName, plugins);
242
+ return; // Don't scan subdirectories if this is a package itself
243
+ }
244
+ } catch (error) {
245
+ // If processing as a package fails, continue to scan subdirectories
246
+ this.logger.withMetadata({ error, scopeName }).debug('Scoped directory is not a package, scanning subdirectories');
247
+ }
248
+
249
+ // If the scoped directory is not a package itself, scan for sub-packages
250
+ try {
251
+ const scopePath = join(nodeModulesPath, scopeName);
252
+ const scopedEntries = await readdir(scopePath, { withFileTypes: true });
253
+
254
+ for (const scopedEntry of scopedEntries) {
255
+ if (scopedEntry.isDirectory()) {
256
+ const fullPackageName = `${scopeName}/${scopedEntry.name}`;
257
+ await this.processRegularPackage(nodeModulesPath, fullPackageName, plugins);
220
258
  }
221
259
  }
260
+ } catch (error) {
261
+ // Skip invalid scoped packages
262
+ this.logger.withMetadata({ error, scopeName }).debug('Skipped invalid scoped package directory');
222
263
  }
264
+ }
223
265
 
224
- return plugins;
266
+ private async processRegularPackage(nodeModulesPath: string, packageName: string, plugins: PluginModule[]): Promise<void> {
267
+ const packageJsonPath = join(nodeModulesPath, packageName, 'package.json');
268
+
269
+ try {
270
+ const packageJson = JSON.parse(await readFile(packageJsonPath, 'utf8'));
271
+
272
+ // Check if this is a radio module
273
+ if (this.isRadioModule(packageJson)) {
274
+ const plugin = await this.loadPluginModule(packageName, packageJson);
275
+ plugins.push(plugin);
276
+ this.pluginCache.set(packageName, plugin);
277
+ }
278
+ } catch (error) {
279
+ // Skip invalid packages
280
+ this.logger.withMetadata({ error, name: packageName }).debug('Skipped invalid package');
281
+ }
225
282
  }
226
283
 
227
- private isRadioModule(packageJson: any): boolean {
284
+ private isRadioModule(packageJson: PackageJson): boolean {
228
285
  const name = packageJson.name || '';
229
286
 
230
287
  // Check naming convention
@@ -234,24 +291,24 @@ export class NpmBasedConfigRegistry implements RadioConfigRegistry {
234
291
  const hasSpringfieldField = packageJson.springfield?.pluginType === 'radio-module';
235
292
 
236
293
  // Check keywords
237
- const hasKeywords = packageJson.keywords?.includes('radio-module');
294
+ const hasKeywords = packageJson.keywords?.includes('radio-module') ?? false;
238
295
 
239
296
  return isNamedCorrectly || hasSpringfieldField || hasKeywords;
240
297
  }
241
298
 
242
- private async loadPluginModule(moduleName: string, packageJson: any): Promise<PluginModule> {
299
+ private async loadPluginModule(moduleName: string, packageJson: PackageJson): Promise<PluginModule> {
243
300
  const modulePath = join(process.cwd(), 'node_modules', moduleName);
244
- const springfieldConfig = packageJson.springfield || {};
301
+ const springfieldConfig = packageJson.springfield|| {};
245
302
 
246
303
  return {
247
- name: moduleName,
248
- version: packageJson.version,
249
- manufacturer: springfieldConfig.manufacturer,
250
- configPath: join(modulePath, springfieldConfig.configPath || 'configs'),
251
- sharedPath: join(modulePath, springfieldConfig.sharedPath || 'shared'),
252
- codecFactoryPath: springfieldConfig.codecFactory ? join(modulePath, springfieldConfig.codecFactory) : undefined,
253
304
  capabilities: springfieldConfig.capabilities || {},
305
+ codecFactoryPath: springfieldConfig.codecFactory ? join(modulePath, springfieldConfig.codecFactory) : undefined,
306
+ configPath: join(modulePath, springfieldConfig.configPath || 'configs'),
307
+ manufacturer: springfieldConfig.manufacturer,
308
+ name: moduleName,
254
309
  packageJson,
310
+ sharedPath: join(modulePath, springfieldConfig.sharedPath || 'shared'),
311
+ version: packageJson.version,
255
312
  } as PluginModule;
256
313
  }
257
314
 
@@ -308,19 +365,19 @@ export class NpmBasedConfigRegistry implements RadioConfigRegistry {
308
365
  private async resolveSharedComponents(config: RegistryRadio, plugin: PluginModule): Promise<void> {
309
366
  // Resolve schema references
310
367
  if (config.settingsSchema.settingsSchema && typeof config.settingsSchema.settingsSchema === 'object' && '$ref' in config.settingsSchema.settingsSchema) {
311
- const schemaPath = this.sharedComponentManager.resolveReference(config.settingsSchema.settingsSchema.$ref, plugin.configPath);
368
+ const schemaPath = this.sharedComponentManager.resolveReference(config.settingsSchema.settingsSchema.$ref as string, plugin.configPath);
312
369
  config.settingsSchema.settingsSchema = await this.sharedComponentManager.loadSchema(schemaPath);
313
370
  }
314
371
 
315
372
  if (config.settingsSchema.channelSchema && typeof config.settingsSchema.channelSchema === 'object' && '$ref' in config.settingsSchema.channelSchema) {
316
- const schemaPath = this.sharedComponentManager.resolveReference(config.settingsSchema.channelSchema.$ref, plugin.configPath);
373
+ const schemaPath = this.sharedComponentManager.resolveReference(config.settingsSchema.channelSchema.$ref as string, plugin.configPath);
317
374
  config.settingsSchema.channelSchema = await this.sharedComponentManager.loadSchema(schemaPath);
318
375
  }
319
376
  }
320
377
 
321
- private async loadCodecFromConfig(config: RegistryRadio): Promise<RadioCodec | null> {
378
+ private async loadCodecFromConfig(config: RegistryRadio): Promise<RadioCodec | undefined> {
322
379
  if (!config.codec || config.codec.type !== 'shared' || !config.codec.reference) {
323
- return null;
380
+ return undefined;
324
381
  }
325
382
 
326
383
  const codecPath = this.sharedComponentManager.resolveReference(config.codec.reference, config.metadata.pluginPath || '');
@@ -353,8 +410,8 @@ export class NpmBasedConfigRegistry implements RadioConfigRegistry {
353
410
  }
354
411
 
355
412
  return {
356
- isValid: errors.length === 0,
357
413
  errors,
414
+ isValid: errors.length === 0,
358
415
  warnings,
359
416
  };
360
417
  }
@@ -366,8 +423,8 @@ export class NpmBasedConfigRegistry implements RadioConfigRegistry {
366
423
  }
367
424
 
368
425
  private async runPackageManager(args: string[]): Promise<void> {
369
- const { exec } = await import('child_process');
370
- const { promisify } = await import('util');
426
+ const { exec } = await import('node:child_process');
427
+ const { promisify } = await import('node:util');
371
428
  const execAsync = promisify(exec);
372
429
 
373
430
  try {
@@ -1,7 +1,7 @@
1
- import type { ILogLayer } from 'loglayer';
2
- import { readFile } from 'fs/promises';
3
- import { join } from 'path';
4
1
  import type { RadioCodec, SharedComponentManager } from '@springfield/ham-radio-api';
2
+ import type { ILogLayer } from 'loglayer';
3
+ import { join } from 'node:path';
4
+ import { readFile } from 'node:fs/promises';
5
5
 
6
6
  /**
7
7
  * Default implementation of the shared component manager
@@ -22,7 +22,7 @@ export interface NpmClient {
22
22
  * NPM search response interface
23
23
  */
24
24
  interface NpmSearchResponse {
25
- objects: Array<{
25
+ objects: {
26
26
  package: {
27
27
  name: string;
28
28
  version: string;
@@ -35,7 +35,7 @@ interface NpmSearchResponse {
35
35
  date?: string;
36
36
  springfield?: any;
37
37
  };
38
- }>;
38
+ }[];
39
39
  }
40
40
 
41
41
  /**