polen
Version:
A framework for delightful GraphQL developer portals
38 lines • 1.32 kB
JavaScript
import { createId, markNoPlugins, normalizeId } from './id.js';
export const defaults = {
allowPluginProcessing: false,
separator: `/`,
};
export const create = (parameters) => {
const separator = parameters.separator ?? defaults.separator;
const idNormalized = normalizeId({ id: parameters.id, separator });
const idNamespaced = parameters.namespace
? `${parameters.namespace}${separator}${idNormalized}`
: idNormalized;
const id = createId(idNamespaced);
const resolved = parameters.allowPluginProcessing ? id : markNoPlugins(id);
return {
id,
resolved,
separator,
namespace: parameters.namespace ?? null,
};
};
export const createFactory = (parameters) => {
const { namespace, separator = defaults.separator } = parameters;
const factory = (idSegments, options) => {
const id = idSegments.flatMap(_ => _.split(separator)).join(separator);
return create({
id,
namespace,
separator,
...options,
});
};
factory.prefix = createId(parameters.namespace);
factory.includes = (id) => {
return id.startsWith(factory.prefix) || id.startsWith(markNoPlugins(factory.prefix));
};
return factory;
};
//# sourceMappingURL=identifier.js.map