@apistudio/apim-cli
Version:
CLI for API Management Products
112 lines (91 loc) • 3.12 kB
text/typescript
/**
* Copyright Super iPaaS Integration LLC, an IBM Company 2024
*/
import { GenericAssetAdaptor } from '@apic/api-model/adaptor/GenericAssetAdaptor.js';
import { DeepRequired } from './generic/deep-required.js';
import { Metadata } from '@apic/api-model/common/Metadata.js';
import { Api, Api_Spec } from '@apic/api-model/api/Api.js';
import { PolicySequence, PolicySequence_Spec } from '@apic/api-model/policy/PolicySeq.js';
import { Routing, Routing_Spec } from '@apic/api-model/policy/routing/Routing.js';
import { Test, Test_Spec } from '@apic/api-model/test/Test.js';
import {Ref} from '@apic/api-model/common/Ref.js';
import {Environment, Environment_Spec } from '@apic/api-model/test/Environment.js';
import { MockEndpoint, MockEndpoint_Spec} from '@apic/api-model/mock/MockEndpoint.js';
import { Plan, Plan_Spec } from '@apic/api-model/package/Plan.js';
import { RequestLimit, RequestLimit_Spec } from '@apic/api-model/package/RequestLimit.js';
import { Product, Product_Spec } from '@apic/api-model/package/Product.js';
// BaseAsset
type BaseAsset = DeepRequired<GenericAssetAdaptor> & Omit<GenericAssetAdaptor, 'metadata'> & {
metadata: DeepRequired<Metadata>
};
// API Kind
type APIAsset = DeepRequired<Api> & Omit<Api, 'spec'> & {
spec: APISpec
}
type APISpec = DeepRequired<Api_Spec> & Omit<Api_Spec, 'policy-seq'> & {
'policy-sequence': RefModel[]
};
type RefModel = DeepRequired<Ref> & Omit<Ref, '$ref'> & {
$ref: string;
}
// PolicySeq Kind
type PolicySeqAsset = DeepRequired<PolicySequence> & Omit<PolicySequence, 'spec'> & {
spec: PolicySeqSpec
}
type PolicySeqSpec = DeepRequired<PolicySequence_Spec>;
// Route Kind
type RouteAsset = DeepRequired<Routing> & Omit<Routing, 'spec'> & {
spec: RoutingSpec
};
type RoutingSpec =DeepRequired<Routing_Spec>;
// Test Kind
type TestAsset = DeepRequired<Test> & Omit <Test, 'spec'> &{
spec: TestSpec
};
type TestSpec =DeepRequired<Test_Spec>;
// Environment Kind
type EnvironmentAsset = DeepRequired<Environment> & Omit <Environment, 'spec'> &{
spec:EnvironmentSpec
};
type EnvironmentSpec = DeepRequired<Environment_Spec>;
//MockEndpoint Kind
type MockEndpointAsset = DeepRequired<MockEndpoint> & Omit <MockEndpoint, 'spec'> &{
spec:MockEndpointSpec
};
type MockEndpointSpec = DeepRequired<MockEndpoint_Spec>;
type PackageAsset = DeepRequired<Product> & Omit<Product, 'spec'> & {
spec: PackageSpec
};
type PackageSpec = DeepRequired<Product_Spec>;
type PlanAsset = DeepRequired<Plan> & Omit<Plan, 'spec'> & {
spec: PlanSpec
};
type PlanSpec = DeepRequired<Plan_Spec>;
type RequestLimitAsset = DeepRequired<RequestLimit> & Omit<RequestLimit, 'spec'> & {
spec: RequestLimitSpec
};
type RequestLimitSpec = DeepRequired<RequestLimit_Spec>;
// Reference Object
type RefObj = { $ref: string };
export { BaseAsset,
APIAsset,
RefModel,
APISpec,
PolicySeqAsset,
PolicySeqSpec,
RouteAsset,
RoutingSpec,
TestAsset,
TestSpec,
EnvironmentAsset,
EnvironmentSpec,
MockEndpointAsset,
MockEndpointSpec,
RefObj,
PackageAsset,
PackageSpec,
PlanAsset,
PlanSpec,
RequestLimitAsset,
RequestLimitSpec,
};