2023-10-03 14:19:08 +02:00
|
|
|
// .vite/jisonTransformer.ts
|
2024-01-18 17:07:34 +01:00
|
|
|
import jison from 'file:///Users/knsv/source/git/mermaid/node_modules/.pnpm/jison@0.4.18/node_modules/jison/lib/jison.js';
|
2023-10-03 14:19:08 +02:00
|
|
|
var transformJison = (src) => {
|
|
|
|
const parser = new jison.Generator(src, {
|
2024-01-18 17:07:34 +01:00
|
|
|
moduleType: 'js',
|
|
|
|
'token-stack': true,
|
2023-10-03 14:19:08 +02:00
|
|
|
});
|
2024-01-18 17:07:34 +01:00
|
|
|
const source = parser.generate({ moduleMain: '() => {}' });
|
2023-10-03 14:19:08 +02:00
|
|
|
const exporter = `
|
|
|
|
parser.parser = parser;
|
|
|
|
export { parser };
|
|
|
|
export default parser;
|
|
|
|
`;
|
|
|
|
return `${source} ${exporter}`;
|
|
|
|
};
|
|
|
|
|
|
|
|
// .vite/jisonPlugin.ts
|
|
|
|
var fileRegex = /\.(jison)$/;
|
2024-01-18 18:03:37 +01:00
|
|
|
/**
|
|
|
|
*
|
|
|
|
*/
|
2023-10-03 14:19:08 +02:00
|
|
|
function jison2() {
|
|
|
|
return {
|
2024-01-18 17:07:34 +01:00
|
|
|
name: 'jison',
|
2023-10-03 14:19:08 +02:00
|
|
|
transform(src, id) {
|
|
|
|
if (fileRegex.test(id)) {
|
|
|
|
return {
|
|
|
|
code: transformJison(src),
|
2024-01-18 17:07:34 +01:00
|
|
|
map: null,
|
2023-10-03 14:19:08 +02:00
|
|
|
// provide source map if available
|
|
|
|
};
|
|
|
|
}
|
2024-01-18 17:07:34 +01:00
|
|
|
},
|
2023-10-03 14:19:08 +02:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
// .vite/jsonSchemaPlugin.ts
|
2024-01-18 17:07:34 +01:00
|
|
|
import {
|
|
|
|
load,
|
|
|
|
JSON_SCHEMA,
|
|
|
|
} from 'file:///Users/knsv/source/git/mermaid/node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/dist/js-yaml.mjs';
|
|
|
|
import assert from 'node:assert';
|
|
|
|
import Ajv2019 from 'file:///Users/knsv/source/git/mermaid/node_modules/.pnpm/ajv@8.12.0/node_modules/ajv/dist/2019.js';
|
2023-10-03 14:19:08 +02:00
|
|
|
var MERMAID_CONFIG_DIAGRAM_KEYS = [
|
2024-01-18 17:07:34 +01:00
|
|
|
'flowchart',
|
|
|
|
'sequence',
|
|
|
|
'gantt',
|
|
|
|
'journey',
|
|
|
|
'class',
|
|
|
|
'state',
|
|
|
|
'er',
|
|
|
|
'pie',
|
|
|
|
'quadrantChart',
|
|
|
|
'requirement',
|
|
|
|
'mindmap',
|
|
|
|
'timeline',
|
|
|
|
'gitGraph',
|
|
|
|
'c4',
|
|
|
|
'sankey',
|
2023-10-03 14:19:08 +02:00
|
|
|
];
|
2024-01-18 18:03:37 +01:00
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param mermaidConfigSchema
|
|
|
|
*/
|
2023-10-03 14:19:08 +02:00
|
|
|
function generateDefaults(mermaidConfigSchema) {
|
|
|
|
const ajv = new Ajv2019({
|
|
|
|
useDefaults: true,
|
|
|
|
allowUnionTypes: true,
|
2024-01-18 17:07:34 +01:00
|
|
|
strict: true,
|
2023-10-03 14:19:08 +02:00
|
|
|
});
|
|
|
|
ajv.addKeyword({
|
2024-01-18 17:07:34 +01:00
|
|
|
keyword: 'meta:enum',
|
2023-10-03 14:19:08 +02:00
|
|
|
// used by jsonschema2md
|
2024-01-18 17:07:34 +01:00
|
|
|
errors: false,
|
2023-10-03 14:19:08 +02:00
|
|
|
});
|
|
|
|
ajv.addKeyword({
|
2024-01-18 17:07:34 +01:00
|
|
|
keyword: 'tsType',
|
2023-10-03 14:19:08 +02:00
|
|
|
// used by json-schema-to-typescript
|
2024-01-18 17:07:34 +01:00
|
|
|
errors: false,
|
2023-10-03 14:19:08 +02:00
|
|
|
});
|
|
|
|
const mermaidDefaultConfig = {};
|
|
|
|
assert.ok(mermaidConfigSchema.$defs);
|
|
|
|
const baseDiagramConfig = mermaidConfigSchema.$defs.BaseDiagramConfig;
|
|
|
|
for (const key of MERMAID_CONFIG_DIAGRAM_KEYS) {
|
|
|
|
const subSchemaRef = mermaidConfigSchema.properties[key].$ref;
|
2024-01-18 17:07:34 +01:00
|
|
|
const [root, defs, defName] = subSchemaRef.split('/');
|
|
|
|
assert.strictEqual(root, '#');
|
|
|
|
assert.strictEqual(defs, '$defs');
|
2023-10-03 14:19:08 +02:00
|
|
|
const subSchema = {
|
|
|
|
$schema: mermaidConfigSchema.$schema,
|
|
|
|
$defs: mermaidConfigSchema.$defs,
|
2024-01-18 17:07:34 +01:00
|
|
|
...mermaidConfigSchema.$defs[defName],
|
2023-10-03 14:19:08 +02:00
|
|
|
};
|
|
|
|
const validate2 = ajv.compile(subSchema);
|
|
|
|
mermaidDefaultConfig[key] = {};
|
|
|
|
for (const required of subSchema.required ?? []) {
|
|
|
|
if (subSchema.properties[required] === void 0 && baseDiagramConfig.properties[required]) {
|
|
|
|
mermaidDefaultConfig[key][required] = baseDiagramConfig.properties[required].default;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (!validate2(mermaidDefaultConfig[key])) {
|
|
|
|
throw new Error(
|
|
|
|
`schema for subconfig ${key} does not have valid defaults! Errors were ${JSON.stringify(
|
|
|
|
validate2.errors,
|
|
|
|
void 0,
|
|
|
|
2
|
|
|
|
)}`
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
const validate = ajv.compile(mermaidConfigSchema);
|
|
|
|
if (!validate(mermaidDefaultConfig)) {
|
|
|
|
throw new Error(
|
|
|
|
`Mermaid config JSON Schema does not have valid defaults! Errors were ${JSON.stringify(
|
|
|
|
validate.errors,
|
|
|
|
void 0,
|
|
|
|
2
|
|
|
|
)}`
|
|
|
|
);
|
|
|
|
}
|
|
|
|
return mermaidDefaultConfig;
|
|
|
|
}
|
2024-01-18 18:03:37 +01:00
|
|
|
/**
|
|
|
|
*
|
|
|
|
*/
|
2023-10-03 14:19:08 +02:00
|
|
|
function jsonSchemaPlugin() {
|
|
|
|
return {
|
2024-01-18 17:07:34 +01:00
|
|
|
name: 'json-schema-plugin',
|
2023-10-03 14:19:08 +02:00
|
|
|
transform(src, id) {
|
2024-01-18 17:07:34 +01:00
|
|
|
const idAsUrl = new URL(id, 'file:///');
|
|
|
|
if (!idAsUrl.pathname.endsWith('schema.yaml')) {
|
2023-10-03 14:19:08 +02:00
|
|
|
return;
|
|
|
|
}
|
2024-01-18 17:07:34 +01:00
|
|
|
if (idAsUrl.searchParams.get('only-defaults')) {
|
2023-10-03 14:19:08 +02:00
|
|
|
const jsonSchema = load(src, {
|
|
|
|
filename: idAsUrl.pathname,
|
|
|
|
// only allow JSON types in our YAML doc (will probably be default in YAML 1.3)
|
|
|
|
// e.g. `true` will be parsed a boolean `true`, `True` will be parsed as string `"True"`.
|
2024-01-18 17:07:34 +01:00
|
|
|
schema: JSON_SCHEMA,
|
2023-10-03 14:19:08 +02:00
|
|
|
});
|
|
|
|
return {
|
|
|
|
code: `export default ${JSON.stringify(generateDefaults(jsonSchema), void 0, 2)};`,
|
2024-01-18 17:07:34 +01:00
|
|
|
map: null,
|
2023-10-03 14:19:08 +02:00
|
|
|
// no source map
|
|
|
|
};
|
|
|
|
} else {
|
|
|
|
return {
|
|
|
|
code: `export default ${JSON.stringify(
|
|
|
|
load(src, {
|
|
|
|
filename: idAsUrl.pathname,
|
|
|
|
// only allow JSON types in our YAML doc (will probably be default in YAML 1.3)
|
|
|
|
// e.g. `true` will be parsed a boolean `true`, `True` will be parsed as string `"True"`.
|
2024-01-18 17:07:34 +01:00
|
|
|
schema: JSON_SCHEMA,
|
2023-10-03 14:19:08 +02:00
|
|
|
}),
|
|
|
|
void 0,
|
|
|
|
2
|
|
|
|
)};`,
|
2024-01-18 17:07:34 +01:00
|
|
|
map: null,
|
2023-10-03 14:19:08 +02:00
|
|
|
// provide source map if available
|
|
|
|
};
|
|
|
|
}
|
2024-01-18 17:07:34 +01:00
|
|
|
},
|
2023-10-03 14:19:08 +02:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
// vite.config.ts
|
2024-01-18 17:07:34 +01:00
|
|
|
import typescript from 'file:///Users/knsv/source/git/mermaid/node_modules/.pnpm/@rollup+plugin-typescript@11.1.1_typescript@5.1.3/node_modules/@rollup/plugin-typescript/dist/es/index.js';
|
|
|
|
import { defineConfig } from 'file:///Users/knsv/source/git/mermaid/node_modules/.pnpm/vitest@0.33.0_@vitest+ui@0.33.0_jsdom@22.0.0/node_modules/vitest/dist/config.js';
|
2023-10-03 14:19:08 +02:00
|
|
|
var vite_config_default = defineConfig({
|
|
|
|
resolve: {
|
2024-01-18 17:07:34 +01:00
|
|
|
extensions: ['.js'],
|
2023-10-03 14:19:08 +02:00
|
|
|
},
|
|
|
|
plugins: [
|
|
|
|
jison2(),
|
|
|
|
jsonSchemaPlugin(),
|
|
|
|
// handles .schema.yaml JSON Schema files
|
|
|
|
// @ts-expect-error According to the type definitions, rollup plugins are incompatible with vite
|
2024-01-18 17:07:34 +01:00
|
|
|
typescript({ compilerOptions: { declaration: false } }),
|
2023-10-03 14:19:08 +02:00
|
|
|
],
|
|
|
|
test: {
|
2024-01-18 17:07:34 +01:00
|
|
|
environment: 'jsdom',
|
2023-10-03 14:19:08 +02:00
|
|
|
globals: true,
|
|
|
|
// TODO: should we move this to a mermaid-core package?
|
2024-01-18 17:07:34 +01:00
|
|
|
setupFiles: ['packages/mermaid/src/tests/setup.ts'],
|
2023-10-03 14:19:08 +02:00
|
|
|
coverage: {
|
2024-01-18 17:07:34 +01:00
|
|
|
provider: 'v8',
|
|
|
|
reporter: ['text', 'json', 'html', 'lcov'],
|
|
|
|
reportsDirectory: './coverage/vitest',
|
|
|
|
exclude: ['**/node_modules/**', '**/tests/**', '**/__mocks__/**'],
|
|
|
|
},
|
2023-10-03 14:19:08 +02:00
|
|
|
},
|
|
|
|
build: {
|
|
|
|
/** If you set esmExternals to true, this plugins assumes that
|
|
|
|
all external dependencies are ES modules */
|
|
|
|
commonjsOptions: {
|
2024-01-18 17:07:34 +01:00
|
|
|
esmExternals: true,
|
|
|
|
},
|
|
|
|
},
|
2023-10-03 14:19:08 +02:00
|
|
|
});
|
2024-01-18 17:07:34 +01:00
|
|
|
export { vite_config_default as default };
|
2023-10-03 14:19:08 +02:00
|
|
|
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLnZpdGUvamlzb25UcmFuc2Zvcm1lci50cyIsICIudml0ZS9qaXNvblBsdWdpbi50cyIsICIudml0ZS9qc29uU2NoZW1hUGx1Z2luLnRzIiwgInZpdGUuY29uZmlnLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiL1VzZXJzL2tuc3Yvc291cmNlL2dpdC9tZXJtYWlkLy52aXRlXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCIvVXNlcnMva25zdi9zb3VyY2UvZ2l0L21lcm1haWQvLnZpdGUvamlzb25UcmFuc2Zvcm1lci50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vVXNlcnMva25zdi9zb3VyY2UvZ2l0L21lcm1haWQvLnZpdGUvamlzb25UcmFuc2Zvcm1lci50c1wiO2ltcG9ydCBqaXNvbiBmcm9tICdqaXNvbic7XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1KaXNvbiA9IChzcmM6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHBhcnNlciA9IG5ldyBqaXNvbi5HZW5lcmF0b3Ioc3JjLCB7XG4gICAgbW9kdWxlVHlwZTogJ2pzJyxcbiAgICAndG9rZW4tc3RhY2snOiB0cnVlLFxuICB9KTtcbiAgY29uc3Qgc291cmNlID0gcGFyc2VyLmdlbmVyYXRlKHsgbW9kdWxlTWFpbjogJygpID0+IHt9JyB9KTtcbiAgY29uc3QgZXhwb3J0ZXIgPSBgXG5cdHBhcnNlci5wYXJzZXIgPSBwYXJzZXI7XG5cdGV4cG9ydCB7IHBhcnNlciB9O1xuXHRleHBvcnQgZGVmYXVsdCBwYXJzZXI7XG5cdGA7XG4gIHJldHVybiBgJHtzb3VyY2V9ICR7ZXhwb3J0ZXJ9YDtcbn07XG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIi9Vc2Vycy9rbnN2L3NvdXJjZS9naXQvbWVybWFpZC8udml0ZVwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL1VzZXJzL2tuc3Yvc291cmNlL2dpdC9tZXJtYWlkLy52aXRlL2ppc29uUGx1Z2luLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9rbnN2L3NvdXJjZS9naXQvbWVybWFpZC8udml0ZS9qaXNvblBsdWdpbi50c1wiO2ltcG9ydCB7IHRyYW5zZm9ybUppc29uIH0gZnJvbSAnLi9qaXNvblRyYW5zZm9ybWVyLmpzJztcbmNvbnN0IGZpbGVSZWdleCA9IC9cXC4oamlzb24pJC87XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGppc29uKCkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdqaXNvbicsXG5cbiAgICB0cmFuc2Zvcm0oc3JjOiBzdHJpbmcsIGlkOiBzdHJpbmcpIHtcbiAgICAgIGlmIChmaWxlUmVnZXgudGVzdChpZCkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb2RlOiB0cmFuc2Zvcm1KaXNvbihzcmMpLFxuICAgICAgICAgIG1hcDogbnVsbCwgLy8gcHJvdmlkZSBzb3VyY2UgbWFwIGlmIGF2YWlsYWJsZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIi9Vc2Vycy9rbnN2L3NvdXJjZS9naXQvbWVybWFpZC8udml0ZVwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL1VzZXJzL2tuc3Yvc291cmNlL2dpdC9tZXJtYWlkLy52aXRlL2pzb25TY2hlbWFQbHVnaW4udHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL1VzZXJzL2tuc3Yvc291cmNlL2dpdC9tZXJtYWlkLy52aXRlL2pzb25TY2hlbWFQbHVnaW4udHNcIjtpbXBvcnQgeyBsb2FkLCBKU09OX1NDSEVNQSB9IGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdub2RlOmFzc2VydCc7XG5pbXBvcnQgQWp2MjAxOSwgeyB0eXBlIEpTT05TY2hlbWFUeXBlIH0gZnJvbSAnYWp2L2Rpc3QvMjAxOS5qcyc7XG5pbXBvcnQgeyBQbHVnaW5PcHRpb24gfSBmcm9tICd2aXRlJztcblxuaW1wb3J0IHR5cGUgeyBNZXJtYWlkQ29uZmlnLCBCYXNlRGlhZ3JhbUNvbmZpZyB9IGZyb20gJy4uL3BhY2thZ2VzL21lcm1haWQvc3JjL2NvbmZpZy50eXBlLmpzJztcblxuLyoqXG4gKiBBbGwgb2YgdGhlIGtleXMgaW4gdGhlIG1lcm1haWQgY29uZmlnIHRoYXQgaGF2ZSBhIG1lcm1haWQgZGlhZ3JhbSBjb25maWcuXG4gKi9cbmNvbnN0IE1FUk1BSURfQ09ORklHX0RJQUdSQU1fS0VZUyA9IFtcbiAgJ2Zsb3djaGFydCcsXG4gICdzZXF1ZW5jZScsXG4gICdnYW50dCcsXG4gICdqb3VybmV5JyxcbiAgJ2NsYXNzJyxcbiAgJ3N0YXRlJyxcbiAgJ2VyJyxcbiAgJ3BpZScsXG4gICdxdWFkcmFudENoYXJ0JyxcbiAgJ3JlcXVpcmVtZW50JyxcbiAgJ21pbmRtYXAnLFxuICAndGltZWxpbmUnLFxuICAnZ2l0R3JhcGgnLFxuICAnYzQnLFxuICAnc2Fua2V5Jyxcbl0gYXMgY29uc3Q7XG5cbi8qKlxuICogR2VuZXJhdGUgZGVmYXVsdCB2YWx1ZXMgZnJvbSB0aGUgSlNPTiBTY2hlbWEuXG4gKlxuICogQUpWIGRvZXMgbm90IHN1cHBvcnQgbmVzdGVkIGRlZmF1bHQgdmFsdWVzIHlldCAob3IgZGVmYXVsdCB2YWx1ZXMgd2l0aCAkcmVmKSxcbiAqIHNvIHdlIG5lZWQgdG8gbWFudWFsbHkgZmluZCB0aGVtICh0aGlzIG1heSBiZSBmaXhlZCBpbiBhanYgdjkpLlxuICpcbiAqIEBwYXJhbSBtZXJtYWlkQ29uZmlnU2NoZW1hIC0gVGhlIE1lcm1haWQgSlNPTiBTY2hlbWEgdG8gdXNlLlxuICogQHJldHVybnMgVGhlIGRlZmF1bHQgbWVybWFpZCBjb25maWcgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZURlZmF1bHRzKG1lcm1haWRDb25maWdTY2hlbWE6IEpTT05TY2hlbWFUeXBlPE1lcm1haWRDb25maWc+KSB7XG4gIGNvbnN0IGFqdiA9IG5ldyBBanYyMDE5KHtcbiAgICB1c2VEZWZhdWx0czogdHJ1ZSxcbiAgICBhbGxvd1VuaW9uVHlwZXM6IHRydWUsXG4gICAgc3RyaWN0OiB0cnVlLFxuICB9KTtcblxuICBhanYuYWRkS2V5d29yZCh7XG4gICAga2V5d29yZDogJ21ldGE6Z
|