2021-11-18 22:05:49 +05:30
|
|
|
import ciSchemaPath from '~/editor/schema/ci.json';
|
2021-03-08 18:12:59 +05:30
|
|
|
import { registerSchema } from '~/ide/utils';
|
|
|
|
|
2022-01-26 12:08:38 +05:30
|
|
|
export class CiSchemaExtension {
|
|
|
|
static get extensionName() {
|
|
|
|
return 'CiSchema';
|
|
|
|
}
|
|
|
|
// eslint-disable-next-line class-methods-use-this
|
|
|
|
provides() {
|
|
|
|
return {
|
|
|
|
registerCiSchema: (instance) => {
|
|
|
|
// In order for workers loaded from `data://` as the
|
|
|
|
// ones loaded by monaco editor, we use absolute URLs
|
|
|
|
// to fetch schema files, hence the `gon.gitlab_url`
|
|
|
|
// reference. This prevents error:
|
|
|
|
// "Failed to execute 'fetch' on 'WorkerGlobalScope'"
|
2022-05-07 20:08:51 +05:30
|
|
|
const absoluteSchemaUrl = new URL(ciSchemaPath, gon.gitlab_url).href;
|
2022-01-26 12:08:38 +05:30
|
|
|
const modelFileName = instance.getModel().uri.path.split('/').pop();
|
2021-03-08 18:12:59 +05:30
|
|
|
|
2022-01-26 12:08:38 +05:30
|
|
|
registerSchema({
|
|
|
|
uri: absoluteSchemaUrl,
|
|
|
|
fileMatch: [modelFileName],
|
|
|
|
});
|
|
|
|
},
|
|
|
|
};
|
2021-03-08 18:12:59 +05:30
|
|
|
}
|
|
|
|
}
|