8 lines
14 KiB
Plaintext
8 lines
14 KiB
Plaintext
|
|
{
|
||
|
|
"version": 3,
|
||
|
|
"sources": ["../../../src/diagrams/packet/db.ts", "../../../src/diagrams/packet/parser.ts", "../../../src/diagrams/packet/renderer.ts", "../../../src/diagrams/packet/styles.ts", "../../../src/diagrams/packet/diagram.ts"],
|
||
|
|
"sourcesContent": ["import { getConfig as commonGetConfig } from '../../config.js';\nimport type { PacketDiagramConfig } from '../../config.type.js';\nimport DEFAULT_CONFIG from '../../defaultConfig.js';\nimport type { DiagramDB } from '../../diagram-api/types.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport {\n clear as commonClear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n} from '../common/commonDb.js';\nimport type { PacketWord } from './types.js';\nconst DEFAULT_PACKET_CONFIG: Required<PacketDiagramConfig> = DEFAULT_CONFIG.packet;\n\nexport class PacketDB implements DiagramDB {\n private packet: PacketWord[] = [];\n\n public getConfig() {\n const config = cleanAndMerge({\n ...DEFAULT_PACKET_CONFIG,\n ...commonGetConfig().packet,\n });\n if (config.showBits) {\n config.paddingY += 10;\n }\n return config;\n }\n\n public getPacket() {\n return this.packet;\n }\n\n public pushWord(word: PacketWord) {\n if (word.length > 0) {\n this.packet.push(word);\n }\n }\n\n public clear() {\n commonClear();\n this.packet = [];\n }\n\n public setAccTitle = setAccTitle;\n public getAccTitle = getAccTitle;\n public setDiagramTitle = setDiagramTitle;\n public getDiagramTitle = getDiagramTitle;\n public getAccDescription = getAccDescription;\n public setAccDescription = setAccDescription;\n}\n", "import type { Packet } from '@mermaid-js/parser';\nimport { parse } from '@mermaid-js/parser';\nimport type { ParserDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { populateCommonDb } from '../common/populateCommonDb.js';\nimport { PacketDB } from './db.js';\nimport type { PacketBlock, PacketWord } from './types.js';\n\nconst maxPacketSize = 10_000;\n\nconst populate = (ast: Packet, db: PacketDB) => {\n populateCommonDb(ast, db);\n let lastBit = -1;\n let word: PacketWord = [];\n let row = 1;\n const { bitsPerRow } = db.getConfig();\n\n for (let { start, end, bits, label } of ast.blocks) {\n if (start !== undefined && end !== undefined && end < start) {\n throw new Error(`Packet block ${start} - ${end} is invalid. End must be greater than start.`);\n }\n start ??= lastBit + 1;\n if (start !== lastBit + 1) {\n throw new Error(\n `Packet block ${start} - ${end ?? start} is not contiguous. It should start from ${\n lastBit + 1\n }.`\n );\n }\n if (bits === 0) {\n throw new Error(`Packet block ${start} is invalid. Cannot have a zero bit field.`);\n }\n end ??= start + (bits ?? 1) - 1;\n bits ??= end - start + 1;\n lastBit = end;\n log.debug(`Packet block ${start} - ${lastBit} with label ${label}`);\n\n while (word.length <= bitsPerRow + 1 && db.getPacket().length < maxPacketSize) {\n const [block, nextBlock] = getNextFittingBlock({ start, end, bits, label }, row, bitsPerRow);\n word.push(block);\n if (block.end + 1 === row * bitsPerRow) {\n db.pushWord(word);\n word = [];\n row++;\n }\n if (!nextBlock) {\n break;\n }\n ({ start, end, bits, label } = nextBlock);\n }\n }\n db.pushWord(word);\n};\n\nconst getNextFittingBlock = (\n block: PacketBlock,\n row: number,\n bitsPerRow: number\n): [Required<PacketBlock>, PacketBlock | undefined] => {\n if (block.start === undefined) {\n throw new Error('start should have been set during first phase');\n }\n if (block.end === undefined) {\n throw new Error('end should have been set during first phase');\n }\n\n if (block.start > block.end) {\n throw new Error(`Block start ${block.start} is greater than block end ${block.end}.`);\n }\n\n if (block.end + 1 <= row * bitsPerRow) {\n return [block as Required<PacketBlock>, undefined];\n }\n\n const rowEnd = row * bitsPerRow - 1;\n const rowStart = row * bitsPerRow;\n return [\n {\n start: block.start,\n end: rowEnd,\n label: block.label,\n bits: rowEnd - block.sta
|
||
|
|
"mappings": "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
|
||
|
|
"names": ["diagram"]
|
||
|
|
}
|