unleash-server
Version:
Unleash is an enterprise ready feature toggles service. It provides different strategies for handling feature toggles.
192 lines • 8.8 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createOpenApiSchema = exports.removeJsonSchemaProps = exports.schemas = void 0;
const spec_1 = require("./spec");
const util_1 = require("../util");
const util_2 = require("./util");
const url_1 = require("url");
const version_1 = __importDefault(require("../util/version"));
// All schemas in `openapi/spec` should be listed here.
exports.schemas = {
addonParameterSchema: spec_1.addonParameterSchema,
addonSchema: spec_1.addonSchema,
addonsSchema: spec_1.addonsSchema,
addonTypeSchema: spec_1.addonTypeSchema,
apiTokenSchema: spec_1.apiTokenSchema,
apiTokensSchema: spec_1.apiTokensSchema,
applicationSchema: spec_1.applicationSchema,
applicationsSchema: spec_1.applicationsSchema,
changePasswordSchema: spec_1.changePasswordSchema,
clientApplicationSchema: spec_1.clientApplicationSchema,
clientFeatureSchema: spec_1.clientFeatureSchema,
clientFeaturesQuerySchema: spec_1.clientFeaturesQuerySchema,
clientFeaturesSchema: spec_1.clientFeaturesSchema,
clientMetricsSchema: spec_1.clientMetricsSchema,
cloneFeatureSchema: spec_1.cloneFeatureSchema,
constraintSchema: spec_1.constraintSchema,
contextFieldSchema: spec_1.contextFieldSchema,
contextFieldsSchema: spec_1.contextFieldsSchema,
createApiTokenSchema: spec_1.createApiTokenSchema,
createFeatureSchema: spec_1.createFeatureSchema,
createFeatureStrategySchema: spec_1.createFeatureStrategySchema,
createInvitedUserSchema: spec_1.createInvitedUserSchema,
createUserSchema: spec_1.createUserSchema,
dateSchema: spec_1.dateSchema,
edgeTokenSchema: spec_1.edgeTokenSchema,
emailSchema: spec_1.emailSchema,
environmentSchema: spec_1.environmentSchema,
environmentProjectSchema: spec_1.environmentProjectSchema,
environmentsSchema: spec_1.environmentsSchema,
environmentsProjectSchema: spec_1.environmentsProjectSchema,
eventSchema: spec_1.eventSchema,
eventsSchema: spec_1.eventsSchema,
featureEnvironmentMetricsSchema: spec_1.featureEnvironmentMetricsSchema,
featureEnvironmentSchema: spec_1.featureEnvironmentSchema,
featureEventsSchema: spec_1.featureEventsSchema,
featureMetricsSchema: spec_1.featureMetricsSchema,
featureSchema: spec_1.featureSchema,
featuresSchema: spec_1.featuresSchema,
featureStrategySchema: spec_1.featureStrategySchema,
featureStrategySegmentSchema: spec_1.featureStrategySegmentSchema,
featureTagSchema: spec_1.featureTagSchema,
featureTypeSchema: spec_1.featureTypeSchema,
featureTypesSchema: spec_1.featureTypesSchema,
featureUsageSchema: spec_1.featureUsageSchema,
featureVariantsSchema: spec_1.featureVariantsSchema,
feedbackSchema: spec_1.feedbackSchema,
groupSchema: spec_1.groupSchema,
groupsSchema: spec_1.groupsSchema,
groupUserModelSchema: spec_1.groupUserModelSchema,
healthCheckSchema: spec_1.healthCheckSchema,
healthOverviewSchema: spec_1.healthOverviewSchema,
healthReportSchema: spec_1.healthReportSchema,
idSchema: spec_1.idSchema,
instanceAdminStatsSchema: spec_1.instanceAdminStatsSchema,
legalValueSchema: spec_1.legalValueSchema,
loginSchema: spec_1.loginSchema,
meSchema: spec_1.meSchema,
nameSchema: spec_1.nameSchema,
overrideSchema: spec_1.overrideSchema,
parametersSchema: spec_1.parametersSchema,
passwordSchema: spec_1.passwordSchema,
patchesSchema: spec_1.patchesSchema,
patchSchema: spec_1.patchSchema,
patSchema: spec_1.patSchema,
patsSchema: spec_1.patsSchema,
permissionSchema: spec_1.permissionSchema,
playgroundConstraintSchema: spec_1.playgroundConstraintSchema,
playgroundFeatureSchema: spec_1.playgroundFeatureSchema,
playgroundRequestSchema: spec_1.playgroundRequestSchema,
playgroundResponseSchema: spec_1.playgroundResponseSchema,
playgroundSegmentSchema: spec_1.playgroundSegmentSchema,
playgroundStrategySchema: spec_1.playgroundStrategySchema,
profileSchema: spec_1.profileSchema,
projectEnvironmentSchema: spec_1.projectEnvironmentSchema,
projectSchema: spec_1.projectSchema,
projectsSchema: spec_1.projectsSchema,
proxyClientSchema: spec_1.proxyClientSchema,
proxyFeatureSchema: spec_1.proxyFeatureSchema,
proxyFeaturesSchema: spec_1.proxyFeaturesSchema,
proxyMetricsSchema: spec_1.proxyMetricsSchema,
publicSignupTokenCreateSchema: spec_1.publicSignupTokenCreateSchema,
publicSignupTokenSchema: spec_1.publicSignupTokenSchema,
publicSignupTokensSchema: spec_1.publicSignupTokensSchema,
publicSignupTokenUpdateSchema: spec_1.publicSignupTokenUpdateSchema,
resetPasswordSchema: spec_1.resetPasswordSchema,
requestsPerSecondSchema: spec_1.requestsPerSecondSchema,
requestsPerSecondSegmentedSchema: spec_1.requestsPerSecondSegmentedSchema,
roleSchema: spec_1.roleSchema,
sdkContextSchema: spec_1.sdkContextSchema,
searchEventsSchema: spec_1.searchEventsSchema,
segmentSchema: spec_1.segmentSchema,
setStrategySortOrderSchema: spec_1.setStrategySortOrderSchema,
setUiConfigSchema: spec_1.setUiConfigSchema,
sortOrderSchema: spec_1.sortOrderSchema,
splashSchema: spec_1.splashSchema,
stateSchema: spec_1.stateSchema,
strategiesSchema: spec_1.strategiesSchema,
strategySchema: spec_1.strategySchema,
tagSchema: spec_1.tagSchema,
tagsSchema: spec_1.tagsSchema,
tagTypeSchema: spec_1.tagTypeSchema,
tagTypesSchema: spec_1.tagTypesSchema,
tagWithVersionSchema: spec_1.tagWithVersionSchema,
tokenUserSchema: spec_1.tokenUserSchema,
uiConfigSchema: spec_1.uiConfigSchema,
updateApiTokenSchema: spec_1.updateApiTokenSchema,
updateFeatureSchema: spec_1.updateFeatureSchema,
updateFeatureStrategySchema: spec_1.updateFeatureStrategySchema,
updateTagTypeSchema: spec_1.updateTagTypeSchema,
updateUserSchema: spec_1.updateUserSchema,
upsertContextFieldSchema: spec_1.upsertContextFieldSchema,
upsertStrategySchema: spec_1.upsertStrategySchema,
userSchema: spec_1.userSchema,
usersGroupsBaseSchema: spec_1.usersGroupsBaseSchema,
usersSchema: spec_1.usersSchema,
usersSearchSchema: spec_1.usersSearchSchema,
validateEdgeTokensSchema: spec_1.validateEdgeTokensSchema,
validatePasswordSchema: spec_1.validatePasswordSchema,
validateTagTypeSchema: spec_1.validateTagTypeSchema,
variantSchema: spec_1.variantSchema,
variantsSchema: spec_1.variantsSchema,
versionSchema: spec_1.versionSchema,
};
// Remove JSONSchema keys that would result in an invalid OpenAPI spec.
const removeJsonSchemaProps = (schema) => {
return (0, util_1.omitKeys)(schema, '$id', 'components');
};
exports.removeJsonSchemaProps = removeJsonSchemaProps;
const findRootUrl = (unleashUrl, baseUriPath) => {
if (!baseUriPath) {
return unleashUrl;
}
const baseUrl = new url_1.URL(unleashUrl);
if (baseUrl.pathname.indexOf(baseUriPath) >= 0) {
return `${baseUrl.protocol}//${baseUrl.host}`;
}
return baseUrl.toString();
};
const createOpenApiSchema = ({ unleashUrl, baseUriPath, }) => {
const url = findRootUrl(unleashUrl, baseUriPath);
return {
openapi: '3.0.3',
servers: url ? [{ url }] : [],
info: {
title: 'Unleash API',
version: version_1.default,
},
security: [{ apiKey: [] }],
components: {
securitySchemes: {
apiKey: {
type: 'apiKey',
in: 'header',
name: 'Authorization',
},
},
schemas: (0, util_1.mapValues)(exports.schemas, exports.removeJsonSchemaProps),
},
tags: util_2.openApiTags,
};
};
exports.createOpenApiSchema = createOpenApiSchema;
__exportStar(require("./util"), exports);
__exportStar(require("./spec"), exports);
//# sourceMappingURL=index.js.map