Skip to content

Commit 19ba759

Browse files
Copilothotlong
andcommitted
Fix code review feedback: standardize protocol conventions, guard name overwrite
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
1 parent fb55159 commit 19ba759

3 files changed

Lines changed: 13 additions & 11 deletions

File tree

packages/objectql/src/metadata-facade.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ export class MetadataFacade {
1717
* Register a metadata item
1818
*/
1919
async register(type: string, name: string, data: any): Promise<void> {
20-
const definition = typeof data === 'object' && data !== null ? { ...data, name } : data;
20+
const definition = typeof data === 'object' && data !== null
21+
? { ...data, name: data.name ?? name }
22+
: data;
2123
if (type === 'object') {
2224
SchemaRegistry.registerItem(type, definition, 'name' as any);
2325
} else {

packages/spec/src/kernel/metadata-loader.test.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ describe('MetadataLoaderProtocol', () => {
332332
it('should validate loader contract', () => {
333333
const contract = {
334334
name: 'filesystem',
335-
protocol: 'file',
335+
protocol: 'file:',
336336
capabilities: {
337337
read: true,
338338
write: true,
@@ -344,7 +344,7 @@ describe('MetadataLoaderProtocol', () => {
344344

345345
const validated = MetadataLoaderContractSchema.parse(contract);
346346
expect(validated.name).toBe('filesystem');
347-
expect(validated.protocol).toBe('file');
347+
expect(validated.protocol).toBe('file:');
348348
expect(validated.supportsWatch).toBe(false); // default
349349
expect(validated.supportsWrite).toBe(true); // default
350350
expect(validated.supportsCache).toBe(true); // default
@@ -353,7 +353,7 @@ describe('MetadataLoaderProtocol', () => {
353353
it('should allow custom capabilities', () => {
354354
const contract = {
355355
name: 'http',
356-
protocol: 'http',
356+
protocol: 'http:',
357357
capabilities: {
358358
read: true,
359359
write: false,
@@ -367,26 +367,26 @@ describe('MetadataLoaderProtocol', () => {
367367
};
368368

369369
const validated = MetadataLoaderContractSchema.parse(contract);
370-
expect(validated.protocol).toBe('http');
370+
expect(validated.protocol).toBe('http:');
371371
expect(validated.supportsWrite).toBe(false);
372372
expect(validated.supportsCache).toBe(true);
373373
});
374374

375375
it('should accept datasource protocol', () => {
376376
const contract = {
377377
name: 'database',
378-
protocol: 'datasource',
378+
protocol: 'datasource:',
379379
capabilities: { read: true, write: true, watch: false, list: true },
380380
supportedFormats: ['json'] as const,
381381
};
382382

383383
const validated = MetadataLoaderContractSchema.parse(contract);
384-
expect(validated.protocol).toBe('datasource');
384+
expect(validated.protocol).toBe('datasource:');
385385
expect(validated.capabilities.write).toBe(true);
386386
});
387387

388388
it('should accept all valid protocols', () => {
389-
const protocols = ['file', 'http', 's3', 'datasource'];
389+
const protocols = ['file:', 'http:', 's3:', 'datasource:'];
390390
protocols.forEach((protocol) => {
391391
expect(() => MetadataLoaderContractSchema.parse({
392392
name: 'test', protocol, capabilities: {}, supportedFormats: ['json'],
@@ -396,7 +396,7 @@ describe('MetadataLoaderProtocol', () => {
396396

397397
it('should reject invalid protocol', () => {
398398
expect(() => MetadataLoaderContractSchema.parse({
399-
name: 'test', protocol: 'ftp', capabilities: {}, supportedFormats: ['json'],
399+
name: 'test', protocol: 'ftp:', capabilities: {}, supportedFormats: ['json'],
400400
})).toThrow();
401401
});
402402
});

packages/spec/src/kernel/metadata-loader.zod.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -372,9 +372,9 @@ export const MetadataLoaderContractSchema = z.object({
372372
name: z.string().describe('Loader identifier'),
373373

374374
/**
375-
* Protocol handled by this loader (e.g. 'file', 'http', 's3', 'datasource')
375+
* Protocol handled by this loader (e.g. 'file:', 'http:', 's3:', 'datasource:')
376376
*/
377-
protocol: z.enum(['file', 'http', 's3', 'datasource']).describe('Protocol identifier'),
377+
protocol: z.enum(['file:', 'http:', 's3:', 'datasource:']).describe('Protocol identifier'),
378378

379379
/**
380380
* Detailed capabilities

0 commit comments

Comments
 (0)