Lines 46-86javascript
47 packageName: '@tjalve/qube-adapter-gitlab',
49 capabilities: GITLAB_CAPABILITIES,
50 setup: Object.freeze([
51 'GitLab review-forge support is available through the optional GitLab adapter package.',
52 'Set GITLAB_TOKEN, GITLAB_PROJECT_ID, and optional GITLAB_BASE_URL before reading or mutating GitLab merge request review state.',
54 create: async (options) => {
55 const loaded = await loadOptionalAdapter('@tjalve/qube-adapter-gitlab', 'createGitLabReviewForgeProvider');
57 return wrapAdapterReviewForgeProvider(loaded(options));
58 return new MissingReviewForgeProvider('gitlab', '@tjalve/qube-adapter-gitlab', [
59 'Install the optional GitLab adapter package before selecting providers.review.kind=gitlab.',
60 'Set GITLAB_TOKEN, GITLAB_PROJECT_ID, and optional GITLAB_BASE_URL before running GitLab merge request review commands.',
65async function loadOptionalAdapter(packageName, factoryName) {
67 const imported = await import(packageName);
68 const factory = imported[factoryName];
MediumDynamic Require
Package source references dynamic require/import behavior.
dist/providers/review_forge_adapters.jsView on unpkg · L66 69 return typeof factory === 'function' ? factory : null;
72 if (isModuleMissing(error, packageName))
77function isModuleMissing(error, packageName) {
78 if (!(error instanceof Error))
80 const code = 'code' in error ? String(error.code) : '';
81 return code === 'ERR_MODULE_NOT_FOUND' && error.message.includes(packageName);
83function adapterFor(id) {
84 const adapter = ADAPTERS.find(candidate => candidate.id === id);
86 throw new Error(`Unknown review forge adapter "${id}".`);