@@ -2,6 +2,7 @@ import fs from "fs";
22import yaml from "js-yaml" ;
33import mergeAllOf from "json-schema-merge-allof" ;
44import { dereferenceDocument } from "@open-rpc/schema-utils-js" ;
5+ import { XErrorGroupsJSON } from "@open-rpc/extensions" ;
56
67function sortByMethodName ( methods ) {
78 return methods . slice ( ) . sort ( ( a , b ) => {
@@ -79,6 +80,45 @@ schemaFiles.forEach(file => {
7980 } ;
8081} ) ;
8182
83+ let extensionSpecs = [ ] ;
84+ let extensionSpecsBase = "src/extensions/"
85+ let extensionsSpecsFiles = fs . readdirSync ( extensionSpecsBase ) ;
86+ extensionsSpecsFiles . forEach ( file => {
87+ console . log ( file ) ;
88+ // skip if directory
89+ if ( fs . lstatSync ( extensionSpecsBase + file ) . isDirectory ( ) ) {
90+ return ;
91+ }
92+ let raw = fs . readFileSync ( extensionSpecsBase + file ) ;
93+ let parsed = yaml . load ( raw ) ;
94+ extensionSpecs . push ( parsed ) ;
95+ } ) ;
96+
97+ extensionSpecs . push ( XErrorGroupsJSON ) ;
98+
99+ let extensions = [ ] ;
100+ let extensionsBase = "src/extensions/components/"
101+ let extensionsFiles = fs . readdirSync ( extensionsBase ) ;
102+ extensionsFiles . forEach ( file => {
103+ console . log ( file ) ;
104+ let raw = fs . readFileSync ( extensionsBase + file ) ;
105+ let parsed = yaml . load ( raw ) ;
106+ extensions . push ( parsed ) ;
107+ } ) ;
108+
109+ // if extensions key matches with extensionSpecs name, then add it to an array of extensionSpec name
110+ let extensionsDef = { } ;
111+ extensionSpecs . forEach ( ( extensionSpec ) => {
112+ extensions . forEach ( ( extension ) => {
113+ if ( extension . hasOwnProperty ( extensionSpec . name ) ) {
114+ extensionsDef [ extensionSpec . name ] = {
115+ ...extensionsDef [ extensionSpec . name ] ,
116+ ...extension [ extensionSpec . name ]
117+ }
118+ }
119+ } ) ;
120+ } ) ;
121+
82122const doc = {
83123 openrpc : "1.2.4" ,
84124 info : {
@@ -91,7 +131,9 @@ const doc = {
91131 version : "0.0.0"
92132 } ,
93133 methods : sortByMethodName ( methods ) ,
134+ "x-extensions" : extensionSpecs ,
94135 components : {
136+ ...extensionsDef ,
95137 schemas : schemas
96138 }
97139}
0 commit comments