@@ -39,7 +39,7 @@ describe('ManifestSchema', () => {
3939 } ) ;
4040
4141 it ( 'should accept all package types' , ( ) => {
42- const types = [ 'app' , 'plugin' , 'driver' , 'module' ] as const ;
42+ const types = [ 'app' , 'plugin' , 'driver' , 'module' , 'objectql' , 'gateway' , 'adapter' ] as const ;
4343
4444 types . forEach ( type => {
4545 const manifest = {
@@ -258,6 +258,84 @@ describe('ManifestSchema', () => {
258258
259259 expect ( ( ) => ManifestSchema . parse ( utilModule ) ) . not . toThrow ( ) ;
260260 } ) ;
261+
262+ it ( 'should accept objectql engine manifest' , ( ) => {
263+ const objectqlEngine : ObjectStackManifest = {
264+ id : 'com.objectstack.engine.objectql' ,
265+ version : '2.0.0' ,
266+ type : 'objectql' ,
267+ name : 'ObjectQL Engine' ,
268+ description : 'Core data layer implementation with query AST and validation' ,
269+ } ;
270+
271+ expect ( ( ) => ManifestSchema . parse ( objectqlEngine ) ) . not . toThrow ( ) ;
272+ } ) ;
273+
274+ it ( 'should accept gateway manifest for GraphQL' , ( ) => {
275+ const graphqlGateway : ObjectStackManifest = {
276+ id : 'com.objectstack.gateway.graphql' ,
277+ version : '1.0.0' ,
278+ type : 'gateway' ,
279+ name : 'GraphQL Gateway' ,
280+ description : 'GraphQL API protocol gateway for ObjectStack' ,
281+ permissions : [
282+ 'system.api.configure' ,
283+ ] ,
284+ } ;
285+
286+ expect ( ( ) => ManifestSchema . parse ( graphqlGateway ) ) . not . toThrow ( ) ;
287+ } ) ;
288+
289+ it ( 'should accept gateway manifest for REST' , ( ) => {
290+ const restGateway : ObjectStackManifest = {
291+ id : 'com.objectstack.gateway.rest' ,
292+ version : '1.0.0' ,
293+ type : 'gateway' ,
294+ name : 'REST API Gateway' ,
295+ description : 'RESTful API protocol gateway for ObjectStack' ,
296+ } ;
297+
298+ expect ( ( ) => ManifestSchema . parse ( restGateway ) ) . not . toThrow ( ) ;
299+ } ) ;
300+
301+ it ( 'should accept adapter manifest for Express' , ( ) => {
302+ const expressAdapter : ObjectStackManifest = {
303+ id : 'com.objectstack.adapter.express' ,
304+ version : '4.0.0' ,
305+ type : 'adapter' ,
306+ name : 'Express Adapter' ,
307+ description : 'Express.js HTTP server adapter for ObjectStack runtime' ,
308+ configuration : {
309+ title : 'Express Server Settings' ,
310+ properties : {
311+ port : {
312+ type : 'number' ,
313+ default : 3000 ,
314+ description : 'HTTP server port' ,
315+ } ,
316+ corsEnabled : {
317+ type : 'boolean' ,
318+ default : true ,
319+ description : 'Enable CORS middleware' ,
320+ } ,
321+ } ,
322+ } ,
323+ } ;
324+
325+ expect ( ( ) => ManifestSchema . parse ( expressAdapter ) ) . not . toThrow ( ) ;
326+ } ) ;
327+
328+ it ( 'should accept adapter manifest for Hono' , ( ) => {
329+ const honoAdapter : ObjectStackManifest = {
330+ id : 'com.objectstack.adapter.hono' ,
331+ version : '1.0.0' ,
332+ type : 'adapter' ,
333+ name : 'Hono Adapter' ,
334+ description : 'Hono ultrafast HTTP server adapter for ObjectStack runtime' ,
335+ } ;
336+
337+ expect ( ( ) => ManifestSchema . parse ( honoAdapter ) ) . not . toThrow ( ) ;
338+ } ) ;
261339 } ) ;
262340
263341 describe ( 'Reverse Domain Notation' , ( ) => {
0 commit comments