mirror of
https://github.com/marcogll/passkit-generator.git
synced 2026-03-15 16:25:21 +00:00
Added createPass support to AbstractModel
This commit is contained in:
@@ -1,34 +1,65 @@
|
|||||||
import { Pass } from "./pass";
|
import { Pass } from "./pass";
|
||||||
import { FactoryOptions, BundleUnit } from "./schema";
|
import { FactoryOptions, BundleUnit, FinalCertificates } from "./schema";
|
||||||
import formatMessage from "./messages";
|
import formatMessage from "./messages";
|
||||||
import { getModelContents, readCertificatesFromOptions } from "./parser";
|
import { getModelContents, readCertificatesFromOptions } from "./parser";
|
||||||
import { splitBufferBundle } from "./utils";
|
import { splitBufferBundle } from "./utils";
|
||||||
|
import { AbstractModel, AbstractFactoryOptions } from "./abstract";
|
||||||
|
|
||||||
export type Pass = InstanceType<typeof Pass>
|
export async function createPass(
|
||||||
|
options: FactoryOptions | AbstractModel,
|
||||||
export async function createPass(options: FactoryOptions, additionalBuffers?: BundleUnit): Promise<Pass> {
|
additionalBuffers?: BundleUnit,
|
||||||
if (!(options && Object.keys(options).length)) {
|
abstractMissingData?: Omit<AbstractFactoryOptions, "model">
|
||||||
|
): Promise<Pass> {
|
||||||
|
if (!(options && (options instanceof AbstractModel || Object.keys(options).length))) {
|
||||||
throw new Error(formatMessage("CP_NO_OPTS"));
|
throw new Error(formatMessage("CP_NO_OPTS"));
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const [bundle, certificates] = await Promise.all([
|
if (options instanceof AbstractModel) {
|
||||||
getModelContents(options.model),
|
let certificates: FinalCertificates;
|
||||||
readCertificatesFromOptions(options.certificates)
|
|
||||||
]);
|
|
||||||
|
|
||||||
if (additionalBuffers) {
|
if (!(options.certificates && options.certificates.signerCert && options.certificates.signerKey) && abstractMissingData.certificates) {
|
||||||
const [ additionalL10n, additionalBundle ] = splitBufferBundle(additionalBuffers);
|
certificates = Object.assign(
|
||||||
Object.assign(bundle["l10nBundle"], additionalL10n);
|
options.certificates,
|
||||||
Object.assign(bundle["bundle"], additionalBundle);
|
await readCertificatesFromOptions(abstractMissingData.certificates)
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
certificates = options.certificates;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (additionalBuffers) {
|
||||||
|
const [ additionalL10n, additionalBundle ] = splitBufferBundle(additionalBuffers);
|
||||||
|
Object.assign(options.bundle["l10nBundle"], additionalL10n);
|
||||||
|
Object.assign(options.bundle["bundle"], additionalBundle);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Pass({
|
||||||
|
model: options.bundle,
|
||||||
|
certificates: certificates,
|
||||||
|
overrides: {
|
||||||
|
...(options.overrides || {}),
|
||||||
|
...(abstractMissingData && abstractMissingData.overrides || {})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
const [bundle, certificates] = await Promise.all([
|
||||||
|
getModelContents(options.model),
|
||||||
|
readCertificatesFromOptions(options.certificates)
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (additionalBuffers) {
|
||||||
|
const [ additionalL10n, additionalBundle ] = splitBufferBundle(additionalBuffers);
|
||||||
|
Object.assign(bundle["l10nBundle"], additionalL10n);
|
||||||
|
Object.assign(bundle["bundle"], additionalBundle);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Pass({
|
||||||
|
model: bundle,
|
||||||
|
certificates,
|
||||||
|
overrides: options.overrides
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Pass({
|
|
||||||
model: bundle,
|
|
||||||
certificates,
|
|
||||||
overrides: options.overrides
|
|
||||||
});
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
throw new Error(formatMessage("CP_INIT_ERROR", err));
|
throw new Error(formatMessage("CP_INIT_ERROR", "pass", err));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user