JezK
Edit File: stringify.js.map
{"version":3,"file":"stringify.js","names":["NODE_VERSION","process","version","shouldWrapKey","str","indexOf","test","maybeWrap","JSON","stringify","priorities","name","uid","resolved","integrity","registry","dependencies","priorityThenAlphaSort","a","b","sortAlpha","_stringify","obj","options","TypeError","indent","lines","keys","Object","sort","addedKeys","i","length","key","val","valKeys","j","push","keyLine","map","join","topLevel","concat","noHeader","enableVersions","LOCKFILE_VERSION","YARN_VERSION"],"sourceRoot":"../../src","sources":["lockfile/stringify.js"],"sourcesContent":["/* @flow */\n\nimport {sortAlpha} from '../util/misc.js';\nimport {LOCKFILE_VERSION} from '../constants.js';\n\nimport {version as YARN_VERSION} from '../../package.json';\nconst NODE_VERSION = process.version;\n\nfunction shouldWrapKey(str: string): boolean {\n return (\n str.indexOf('true') === 0 ||\n str.indexOf('false') === 0 ||\n /[:\\s\\n\\\\\",\\[\\]]/g.test(str) ||\n /^[0-9]/g.test(str) ||\n !/^[a-zA-Z]/g.test(str)\n );\n}\n\nfunction maybeWrap(str: string | boolean | number): string {\n if (typeof str === 'boolean' || typeof str === 'number' || shouldWrapKey(str)) {\n return JSON.stringify(str);\n } else {\n return str;\n }\n}\n\nconst priorities: {[key: string]: number} = {\n name: 1,\n version: 2,\n uid: 3,\n resolved: 4,\n integrity: 5,\n registry: 6,\n dependencies: 7,\n};\n\nfunction priorityThenAlphaSort(a: string, b: string): number {\n if (priorities[a] || priorities[b]) {\n return (priorities[a] || 100) > (priorities[b] || 100) ? 1 : -1;\n } else {\n return sortAlpha(a, b);\n }\n}\n\ntype Options = {\n indent: string,\n topLevel?: boolean,\n};\n\nfunction _stringify(obj: {[key: string]: mixed}, options: Options): string {\n if (typeof obj !== 'object') {\n throw new TypeError();\n }\n\n const indent = options.indent;\n const lines = [];\n\n // Sorting order needs to be consistent between runs, we run native sort by name because there are no\n // problems with it being unstable because there are no to keys the same\n // However priorities can be duplicated and native sort can shuffle things from run to run\n const keys = Object.keys(obj).sort(priorityThenAlphaSort);\n\n let addedKeys = [];\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const val = obj[key];\n if (val == null || addedKeys.indexOf(key) >= 0) {\n continue;\n }\n\n const valKeys = [key];\n\n // get all keys that have the same value equality, we only want this for objects\n if (typeof val === 'object') {\n for (let j = i + 1; j < keys.length; j++) {\n const key = keys[j];\n if (val === obj[key]) {\n valKeys.push(key);\n }\n }\n }\n\n const keyLine = valKeys.sort(sortAlpha).map(maybeWrap).join(', ');\n\n if (typeof val === 'string' || typeof val === 'boolean' || typeof val === 'number') {\n lines.push(`${keyLine} ${maybeWrap(val)}`);\n } else if (typeof val === 'object') {\n lines.push(`${keyLine}:\\n${_stringify(val, {indent: indent + ' '})}` + (options.topLevel ? '\\n' : ''));\n } else {\n throw new TypeError();\n }\n\n addedKeys = addedKeys.concat(valKeys);\n }\n\n return indent + lines.join(`\\n${indent}`);\n}\n\nexport default function stringify(obj: Object, noHeader?: boolean, enableVersions?: boolean): string {\n const val = _stringify(obj, {\n indent: '',\n topLevel: true,\n });\n if (noHeader) {\n return val;\n }\n\n const lines = [];\n lines.push('# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.');\n lines.push(`# yarn lockfile v${LOCKFILE_VERSION}`);\n if (enableVersions) {\n lines.push(`# yarn v${YARN_VERSION}`);\n lines.push(`# node ${NODE_VERSION}`);\n }\n lines.push('\\n');\n lines.push(val);\n\n return lines.join('\\n');\n}\n"],"mappings":"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"}