Skip to content

Commit

Permalink
feat: add parser plugins (#142) (#427)
Browse files Browse the repository at this point in the history
Co-authored-by: Joris Molnar <joris.molnar@mediaan.com>
Co-authored-by: Maciej Urbańczyk <urbanczyk.maciej.95@gmail.com>
  • Loading branch information
3 people authored Jan 16, 2023
1 parent e423572 commit 0053f39
Show file tree
Hide file tree
Showing 8 changed files with 61 additions and 3 deletions.
7 changes: 7 additions & 0 deletions scripts/fetch-asyncapi-example.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@ const fs = require('fs');
const unzipper = require('unzipper');
const path = require('path');
const parser = require('@asyncapi/parser');
const openapiSchemaParser = require('@asyncapi/openapi-schema-parser');
const avroSchemaParser = require('@asyncapi/avro-schema-parser');
const ramlDtSchemaParser = require('@asyncapi/raml-dt-schema-parser');

parser.registerSchemaParser(openapiSchemaParser);
parser.registerSchemaParser(avroSchemaParser);
parser.registerSchemaParser(ramlDtSchemaParser);

const SPEC_EXAMPLES_ZIP_URL = 'https://github.com/asyncapi/spec/archive/refs/heads/master.zip';
const EXAMPLE_DIRECTORY = path.join(__dirname, '../assets/examples');
Expand Down
2 changes: 1 addition & 1 deletion src/commands/diff.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
import { Flags } from '@oclif/core';
import * as diff from '@asyncapi/diff';
import AsyncAPIDiff from '@asyncapi/diff/lib/asyncapidiff';
import * as parser from '@asyncapi/parser';
import { promises as fs } from 'fs';
import * as parser from '../utils/parser';
import { load, Specification } from '../models/SpecificationFile';
import Command from '../base';
import { ValidationError } from '../errors/validation-error';
Expand Down
2 changes: 1 addition & 1 deletion src/commands/generate/models.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { CSharpFileGenerator, JavaFileGenerator, JavaScriptFileGenerator, TypeSc
import { Flags } from '@oclif/core';
import Command from '../../base';
import { load } from '../../models/SpecificationFile';
import { parse } from '@asyncapi/parser';
import { parse } from '../../utils/parser';
enum Languages {
typescript = 'typescript',
csharp = 'csharp',
Expand Down
2 changes: 1 addition & 1 deletion src/commands/validate.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Flags } from '@oclif/core';
import * as parser from '@asyncapi/parser';
import * as parser from '../utils/parser';
import Command from '../base';
import { ValidationError } from '../errors/validation-error';
import { load } from '../models/SpecificationFile';
Expand Down
4 changes: 4 additions & 0 deletions src/global.d.ts
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
declare module '@asyncapi/specs';

declare module '@asyncapi/openapi-schema-parser';
declare module '@asyncapi/avro-schema-parser';
declare module '@asyncapi/raml-dt-schema-parser';
10 changes: 10 additions & 0 deletions src/utils/parser.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { parse, registerSchemaParser } from '@asyncapi/parser';
import openapiSchemaParser from '@asyncapi/openapi-schema-parser';
import avroSchemaParser from '@asyncapi/avro-schema-parser';
import ramlDtSchemaParser from '@asyncapi/raml-dt-schema-parser';

registerSchemaParser(openapiSchemaParser);
registerSchemaParser(avroSchemaParser);
registerSchemaParser(ramlDtSchemaParser);

export { parse };
12 changes: 12 additions & 0 deletions test/commands/validate.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,18 @@ describe('validate', () => {
done();
});

test
.stderr()
.stdout()
.command(['validate', './test/specification-avro.yml'])
.it('works when file path is passed and schema is avro', (ctx, done) => {
expect(ctx.stdout).toEqual(
'File ./test/specification-avro.yml successfully validated!\n'
);
expect(ctx.stderr).toEqual('');
done();
});

test
.stderr()
.stdout()
Expand Down
25 changes: 25 additions & 0 deletions test/specification-avro.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
asyncapi: 2.2.0
info:
title: Account Service
version: 1.0.0
description: This service is in charge of processing user signups
channels:
user/signedup:
subscribe:
message:
$ref: '#/components/messages/UserSignedUp'
components:
messages:
UserSignedUp:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
payload:
type: record
namespace: com.example
name: User
fields:
- name: displayName
type: string
doc: Name of the user
- name: email
type: string
doc: Email of the user

0 comments on commit 0053f39

Please sign in to comment.