{"version":3,"file":"name.cjs","names":["Object","defineProperty","exports","value","default","nameTokenizer","util_js_1","require","isQuoted","s","startsWith","endsWith","typeEnd","num","tokens","i","type","spec","finalTypeLine","source","reduce","description","trim","trimStart","quotedGroups","split","length","name","postName","splitSpace","slice","brackets","optional","defaultValue","ch","isSpace","problems","push","code","message","line","number","critical","nameToken","parts","undefined","join","test","eqIndex","search"],"sources":["name.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = nameTokenizer;\nconst util_js_1 = require(\"../../util.js\");\nconst isQuoted = (s) => s && s.startsWith('\"') && s.endsWith('\"');\n/**\n * Splits remaining `spec.lines[].tokens.description` into `name` and `descriptions` tokens,\n * and populates the `spec.name`\n */\nfunction nameTokenizer() {\n    const typeEnd = (num, { tokens }, i) => tokens.type === '' ? num : i;\n    return (spec) => {\n        // look for the name starting in the line where {type} ends\n        let finalTypeLine = spec.source.reduce(typeEnd, 0);\n        let tokens;\n        if (spec.type) {\n            do {\n                ({ tokens } = spec.source[finalTypeLine]);\n                if (tokens.description.trim()) {\n                    break;\n                }\n                finalTypeLine++;\n            } while (spec.source[finalTypeLine]);\n        }\n        else {\n            ({ tokens } = spec.source[finalTypeLine]);\n        }\n        const source = tokens.description.trimStart();\n        const quotedGroups = source.split('\"');\n        // if it starts with quoted group, assume it is a literal\n        if (quotedGroups.length > 1 &&\n            quotedGroups[0] === '' &&\n            quotedGroups.length % 2 === 1) {\n            spec.name = quotedGroups[1];\n            tokens.name = `\"${quotedGroups[1]}\"`;\n            [tokens.postName, tokens.description] = (0, util_js_1.splitSpace)(source.slice(tokens.name.length));\n            return spec;\n        }\n        let brackets = 0;\n        let name = '';\n        let optional = false;\n        let defaultValue;\n        // assume name is non-space string or anything wrapped into brackets\n        for (const ch of source) {\n            if (brackets === 0 && (0, util_js_1.isSpace)(ch))\n                break;\n            if (ch === '[')\n                brackets++;\n            if (ch === ']')\n                brackets--;\n            name += ch;\n        }\n        if (brackets !== 0) {\n            spec.problems.push({\n                code: 'spec:name:unpaired-brackets',\n                message: 'unpaired brackets',\n                line: spec.source[0].number,\n                critical: true,\n            });\n            return spec;\n        }\n        const nameToken = name;\n        if (name[0] === '[' && name[name.length - 1] === ']') {\n            optional = true;\n            name = name.slice(1, -1);\n            const parts = name.split('=');\n            name = parts[0].trim();\n            if (parts[1] !== undefined)\n                defaultValue = parts.slice(1).join('=').trim();\n            if (name === '') {\n                spec.problems.push({\n                    code: 'spec:name:empty-name',\n                    message: 'empty name',\n                    line: spec.source[0].number,\n                    critical: true,\n                });\n                return spec;\n            }\n            if (defaultValue === '') {\n                spec.problems.push({\n                    code: 'spec:name:empty-default',\n                    message: 'empty default value',\n                    line: spec.source[0].number,\n                    critical: true,\n                });\n                return spec;\n            }\n            // has \"=\" and is not a string, except for \"=>\"\n            if (!isQuoted(defaultValue) && /=(?!>)/.test(defaultValue)) {\n                spec.problems.push({\n                    code: 'spec:name:invalid-default',\n                    message: 'invalid default value syntax',\n                    line: spec.source[0].number,\n                    critical: true,\n                });\n                return spec;\n            }\n        }\n        if (!optional) {\n            const eqIndex = name.search(/=(?!>)/);\n            if (eqIndex !== -1) {\n                defaultValue = name.slice(eqIndex + 1).trim();\n                name = name.slice(0, eqIndex).trim();\n                if (name === '') {\n                    spec.problems.push({\n                        code: 'spec:name:empty-name',\n                        message: 'empty name',\n                        line: spec.source[0].number,\n                        critical: true,\n                    });\n                    return spec;\n                }\n                if (defaultValue === '') {\n                    spec.problems.push({\n                        code: 'spec:name:empty-default',\n                        message: 'empty default value',\n                        line: spec.source[0].number,\n                        critical: true,\n                    });\n                    return spec;\n                }\n                if (!isQuoted(defaultValue) && /=(?!>)/.test(defaultValue)) {\n                    spec.problems.push({\n                        code: 'spec:name:invalid-default',\n                        message: 'invalid default value syntax',\n                        line: spec.source[0].number,\n                        critical: true,\n                    });\n                    return spec;\n                }\n            }\n        }\n        spec.optional = optional;\n        spec.name = name;\n        tokens.name = nameToken;\n        if (defaultValue !== undefined)\n            spec.default = defaultValue;\n        [tokens.postName, tokens.description] = (0, util_js_1.splitSpace)(source.slice(tokens.name.length));\n        return spec;\n    };\n}\n"],"mappings":"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","ignoreList":[]}