persona-community-5/.pnpm-store/v3/files/ba/2efa6de2cd3975939e988bd3ced819bb9eaa19dbcb81823139ba1830a46a23c723f69145827c22ea8ca4d699805e61692bb6c0342f6ec3cbefb1d2b072b8b6
rdev-worker a1d0d1bf1c
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
build: /implement-feature community-ui --requirements 'Build the React commu...
2026-02-24 08:22:30 +00:00

95 lines
2.8 KiB
Plaintext

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SpecExtension = void 0;
exports.listOf = listOf;
exports.mapOf = mapOf;
exports.normalizeTypes = normalizeTypes;
exports.isNamedType = isNamedType;
function listOf(typeName) {
return {
name: `${typeName}List`,
properties: {},
items: typeName,
};
}
function mapOf(typeName) {
return {
name: `${typeName}Map`,
properties: {},
additionalProperties: () => typeName,
};
}
exports.SpecExtension = {
name: 'SpecExtension',
properties: {},
// skip validation of additional properties for unknown extensions
additionalProperties: { resolvable: true },
};
function normalizeTypes(types, options = {}) {
const normalizedTypes = {};
for (const typeName of Object.keys(types)) {
normalizedTypes[typeName] = {
...types[typeName],
name: typeName,
};
}
for (const type of Object.values(normalizedTypes)) {
normalizeType(type);
}
// all type trees have a SpecExtension type by default
normalizedTypes['SpecExtension'] = exports.SpecExtension;
return normalizedTypes;
function normalizeType(type) {
if (type.additionalProperties) {
type.additionalProperties = resolveType(type.additionalProperties);
}
if (type.items) {
type.items = resolveType(type.items);
}
if (type.properties) {
const mappedProps = {};
for (const [propName, prop] of Object.entries(type.properties)) {
mappedProps[propName] = resolveType(prop);
if (options.doNotResolveExamples && prop && prop.isExample) {
mappedProps[propName] = {
...prop,
resolvable: false,
};
}
}
type.properties = mappedProps;
}
}
// typings are painful here...
function resolveType(type) {
if (typeof type === 'string') {
if (!normalizedTypes[type]) {
throw new Error(`Unknown type name found: ${type}`);
}
return normalizedTypes[type];
}
else if (typeof type === 'function') {
return (value, key) => {
return resolveType(type(value, key));
};
}
else if (type && type.name) {
type = { ...type };
normalizeType(type);
return type;
}
else if (type && type.directResolveAs) {
return {
...type,
directResolveAs: resolveType(type.directResolveAs),
};
}
else {
return type;
}
}
}
function isNamedType(t) {
return typeof t?.name === 'string';
}