UNPKG

typia

Version:

Superfast runtime validators with only one line

1 lines • 126 kB
{"version":3,"file":"index.mjs","sources":["../node_modules/ret/lib/types.js","../node_modules/ret/lib/sets.js","../node_modules/ret/lib/util.js","../node_modules/ret/lib/positions.js","../node_modules/ret/lib/index.js","../node_modules/drange/lib/index.js","../node_modules/randexp/lib/randexp.js","../src/utils/RandomGenerator/RandomGenerator.ts","../src/functional/$every.ts","../src/TypeGuardError.ts","../src/functional/$guard.ts","../src/functional/$join.ts","../src/functional/$report.ts","../src/functional/$is_between.ts","../src/functional/$stoll.ts","../src/functional/is.ts","../src/functional/Namespace/functional.ts","../src/functional/$number.ts","../src/functional/$rest.ts","../src/functional/$string.ts","../src/functional/$tail.ts","../src/functional/$throws.ts","../src/functional/Namespace/json.ts","../src/functional/$FormDataReader/$FormDataReader.ts","../src/functional/$HeadersReader/$HeadersReader.ts","../src/functional/$ParameterReader/$ParameterReader.ts","../src/functional/$QueryReader/$QueryReader.ts","../src/functional/Namespace/http.ts","../src/utils/StringUtil/StringUtil.ts","../src/utils/NamingConvention/NamingConvention.ts","../src/functional/$convention.ts","../src/functional/Namespace/notations.ts","../src/functional/$clone.ts","../src/functional/$any.ts","../src/functional/Namespace/misc.ts","../src/utils/Singleton.ts","../src/functional/$ProtobufReader.ts","../src/functional/$strlen.ts","../src/functional/$ProtobufSizer.ts","../src/functional/$ProtobufWriter.ts","../src/functional/Namespace/protobuf.ts","../node_modules/@samchon/openapi/lib/utils/LlmTypeChecker.mjs","../node_modules/@samchon/openapi/lib/utils/LlmSchemaSeparator.mjs","../src/functional/Namespace/llm.ts","../src/functional/Namespace/index.ts","../src/functional.ts","../src/http.ts","../src/llm.ts","../src/json.ts","../src/misc.ts","../src/notations.ts","../src/protobuf.ts","../src/reflect.ts","../src/module.ts"],"sourcesContent":["module.exports = {\n ROOT : 0,\n GROUP : 1,\n POSITION : 2,\n SET : 3,\n RANGE : 4,\n REPETITION : 5,\n REFERENCE : 6,\n CHAR : 7,\n};\n","const types = require('./types');\n\nconst INTS = () => [{ type: types.RANGE , from: 48, to: 57 }];\n\nconst WORDS = () => {\n return [\n { type: types.CHAR, value: 95 },\n { type: types.RANGE, from: 97, to: 122 },\n { type: types.RANGE, from: 65, to: 90 }\n ].concat(INTS());\n};\n\nconst WHITESPACE = () => {\n return [\n { type: types.CHAR, value: 9 },\n { type: types.CHAR, value: 10 },\n { type: types.CHAR, value: 11 },\n { type: types.CHAR, value: 12 },\n { type: types.CHAR, value: 13 },\n { type: types.CHAR, value: 32 },\n { type: types.CHAR, value: 160 },\n { type: types.CHAR, value: 5760 },\n { type: types.RANGE, from: 8192, to: 8202 },\n { type: types.CHAR, value: 8232 },\n { type: types.CHAR, value: 8233 },\n { type: types.CHAR, value: 8239 },\n { type: types.CHAR, value: 8287 },\n { type: types.CHAR, value: 12288 },\n { type: types.CHAR, value: 65279 }\n ];\n};\n\nconst NOTANYCHAR = () => {\n return [\n { type: types.CHAR, value: 10 },\n { type: types.CHAR, value: 13 },\n { type: types.CHAR, value: 8232 },\n { type: types.CHAR, value: 8233 },\n ];\n};\n\n// Predefined class objects.\nexports.words = () => ({ type: types.SET, set: WORDS(), not: false });\nexports.notWords = () => ({ type: types.SET, set: WORDS(), not: true });\nexports.ints = () => ({ type: types.SET, set: INTS(), not: false });\nexports.notInts = () => ({ type: types.SET, set: INTS(), not: true });\nexports.whitespace = () => ({ type: types.SET, set: WHITESPACE(), not: false });\nexports.notWhitespace = () => ({ type: types.SET, set: WHITESPACE(), not: true });\nexports.anyChar = () => ({ type: types.SET, set: NOTANYCHAR(), not: true });\n","const types = require('./types');\nconst sets = require('./sets');\n\n\nconst CTRL = '@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^ ?';\nconst SLSH = { '0': 0, 't': 9, 'n': 10, 'v': 11, 'f': 12, 'r': 13 };\n\n/**\n * Finds character representations in str and convert all to\n * their respective characters\n *\n * @param {String} str\n * @return {String}\n */\nexports.strToChars = function(str) {\n /* jshint maxlen: false */\n var chars_regex = /(\\[\\\\b\\])|(\\\\)?\\\\(?:u([A-F0-9]{4})|x([A-F0-9]{2})|(0?[0-7]{2})|c([@A-Z[\\\\\\]^?])|([0tnvfr]))/g;\n str = str.replace(chars_regex, function(s, b, lbs, a16, b16, c8, dctrl, eslsh) {\n if (lbs) {\n return s;\n }\n\n var code = b ? 8 :\n a16 ? parseInt(a16, 16) :\n b16 ? parseInt(b16, 16) :\n c8 ? parseInt(c8, 8) :\n dctrl ? CTRL.indexOf(dctrl) :\n SLSH[eslsh];\n\n var c = String.fromCharCode(code);\n\n // Escape special regex characters.\n if (/[[\\]{}^$.|?*+()]/.test(c)) {\n c = '\\\\' + c;\n }\n\n return c;\n });\n\n return str;\n};\n\n\n/**\n * turns class into tokens\n * reads str until it encounters a ] not preceeded by a \\\n *\n * @param {String} str\n * @param {String} regexpStr\n * @return {Array.<Array.<Object>, Number>}\n */\nexports.tokenizeClass = (str, regexpStr) => {\n /* jshint maxlen: false */\n var tokens = [];\n var regexp = /\\\\(?:(w)|(d)|(s)|(W)|(D)|(S))|((?:(?:\\\\)(.)|([^\\]\\\\]))-(?:\\\\)?([^\\]]))|(\\])|(?:\\\\)?([^])/g;\n var rs, c;\n\n\n while ((rs = regexp.exec(str)) != null) {\n if (rs[1]) {\n tokens.push(sets.words());\n\n } else if (rs[2]) {\n tokens.push(sets.ints());\n\n } else if (rs[3]) {\n tokens.push(sets.whitespace());\n\n } else if (rs[4]) {\n tokens.push(sets.notWords());\n\n } else if (rs[5]) {\n tokens.push(sets.notInts());\n\n } else if (rs[6]) {\n tokens.push(sets.notWhitespace());\n\n } else if (rs[7]) {\n tokens.push({\n type: types.RANGE,\n from: (rs[8] || rs[9]).charCodeAt(0),\n to: rs[10].charCodeAt(0),\n });\n\n } else if ((c = rs[12])) {\n tokens.push({\n type: types.CHAR,\n value: c.charCodeAt(0),\n });\n\n } else {\n return [tokens, regexp.lastIndex];\n }\n }\n\n exports.error(regexpStr, 'Unterminated character class');\n};\n\n\n/**\n * Shortcut to throw errors.\n *\n * @param {String} regexp\n * @param {String} msg\n */\nexports.error = (regexp, msg) => {\n throw new SyntaxError('Invalid regular expression: /' + regexp + '/: ' + msg);\n};\n","const types = require('./types');\nexports.wordBoundary = () => ({ type: types.POSITION, value: 'b' });\nexports.nonWordBoundary = () => ({ type: types.POSITION, value: 'B' });\nexports.begin = () => ({ type: types.POSITION, value: '^' });\nexports.end = () => ({ type: types.POSITION, value: '$' });\n","const util = require('./util');\nconst types = require('./types');\nconst sets = require('./sets');\nconst positions = require('./positions');\n\n\nmodule.exports = (regexpStr) => {\n var i = 0, l, c,\n start = { type: types.ROOT, stack: []},\n\n // Keep track of last clause/group and stack.\n lastGroup = start,\n last = start.stack,\n groupStack = [];\n\n\n var repeatErr = (i) => {\n util.error(regexpStr, `Nothing to repeat at column ${i - 1}`);\n };\n\n // Decode a few escaped characters.\n var str = util.strToChars(regexpStr);\n l = str.length;\n\n // Iterate through each character in string.\n while (i < l) {\n c = str[i++];\n\n switch (c) {\n // Handle escaped characters, inclues a few sets.\n case '\\\\':\n c = str[i++];\n\n switch (c) {\n case 'b':\n last.push(positions.wordBoundary());\n break;\n\n case 'B':\n last.push(positions.nonWordBoundary());\n break;\n\n case 'w':\n last.push(sets.words());\n break;\n\n case 'W':\n last.push(sets.notWords());\n break;\n\n case 'd':\n last.push(sets.ints());\n break;\n\n case 'D':\n last.push(sets.notInts());\n break;\n\n case 's':\n last.push(sets.whitespace());\n break;\n\n case 'S':\n last.push(sets.notWhitespace());\n break;\n\n default:\n // Check if c is integer.\n // In which case it's a reference.\n if (/\\d/.test(c)) {\n last.push({ type: types.REFERENCE, value: parseInt(c, 10) });\n\n // Escaped character.\n } else {\n last.push({ type: types.CHAR, value: c.charCodeAt(0) });\n }\n }\n\n break;\n\n\n // Positionals.\n case '^':\n last.push(positions.begin());\n break;\n\n case '$':\n last.push(positions.end());\n break;\n\n\n // Handle custom sets.\n case '[':\n // Check if this class is 'anti' i.e. [^abc].\n var not;\n if (str[i] === '^') {\n not = true;\n i++;\n } else {\n not = false;\n }\n\n // Get all the characters in class.\n var classTokens = util.tokenizeClass(str.slice(i), regexpStr);\n\n // Increase index by length of class.\n i += classTokens[1];\n last.push({\n type: types.SET,\n set: classTokens[0],\n not,\n });\n\n break;\n\n\n // Class of any character except \\n.\n case '.':\n last.push(sets.anyChar());\n break;\n\n\n // Push group onto stack.\n case '(':\n // Create group.\n var group = {\n type: types.GROUP,\n stack: [],\n remember: true,\n };\n\n c = str[i];\n\n // If if this is a special kind of group.\n if (c === '?') {\n c = str[i + 1];\n i += 2;\n\n // Match if followed by.\n if (c === '=') {\n group.followedBy = true;\n\n // Match if not followed by.\n } else if (c === '!') {\n group.notFollowedBy = true;\n\n } else if (c !== ':') {\n util.error(regexpStr,\n `Invalid group, character '${c}'` +\n ` after '?' at column ${i - 1}`);\n }\n\n group.remember = false;\n }\n\n // Insert subgroup into current group stack.\n last.push(group);\n\n // Remember the current group for when the group closes.\n groupStack.push(lastGroup);\n\n // Make this new group the current group.\n lastGroup = group;\n last = group.stack;\n break;\n\n\n // Pop group out of stack.\n case ')':\n if (groupStack.length === 0) {\n util.error(regexpStr, `Unmatched ) at column ${i - 1}`);\n }\n lastGroup = groupStack.pop();\n\n // Check if this group has a PIPE.\n // To get back the correct last stack.\n last = lastGroup.options ?\n lastGroup.options[lastGroup.options.length - 1] : lastGroup.stack;\n break;\n\n\n // Use pipe character to give more choices.\n case '|':\n // Create array where options are if this is the first PIPE\n // in this clause.\n if (!lastGroup.options) {\n lastGroup.options = [lastGroup.stack];\n delete lastGroup.stack;\n }\n\n // Create a new stack and add to options for rest of clause.\n var stack = [];\n lastGroup.options.push(stack);\n last = stack;\n break;\n\n\n // Repetition.\n // For every repetition, remove last element from last stack\n // then insert back a RANGE object.\n // This design is chosen because there could be more than\n // one repetition symbols in a regex i.e. `a?+{2,3}`.\n case '{':\n var rs = /^(\\d+)(,(\\d+)?)?\\}/.exec(str.slice(i)), min, max;\n if (rs !== null) {\n if (last.length === 0) {\n repeatErr(i);\n }\n min = parseInt(rs[1], 10);\n max = rs[2] ? rs[3] ? parseInt(rs[3], 10) : Infinity : min;\n i += rs[0].length;\n\n last.push({\n type: types.REPETITION,\n min,\n max,\n value: last.pop(),\n });\n } else {\n last.push({\n type: types.CHAR,\n value: 123,\n });\n }\n break;\n\n case '?':\n if (last.length === 0) {\n repeatErr(i);\n }\n last.push({\n type: types.REPETITION,\n min: 0,\n max: 1,\n value: last.pop(),\n });\n break;\n\n case '+':\n if (last.length === 0) {\n repeatErr(i);\n }\n last.push({\n type: types.REPETITION,\n min: 1,\n max: Infinity,\n value: last.pop(),\n });\n break;\n\n case '*':\n if (last.length === 0) {\n repeatErr(i);\n }\n last.push({\n type: types.REPETITION,\n min: 0,\n max: Infinity,\n value: last.pop(),\n });\n break;\n\n\n // Default is a character that is not `\\[](){}?+*^$`.\n default:\n last.push({\n type: types.CHAR,\n value: c.charCodeAt(0),\n });\n }\n\n }\n\n // Check if any groups have not been closed.\n if (groupStack.length !== 0) {\n util.error(regexpStr, 'Unterminated group');\n }\n\n return start;\n};\n\nmodule.exports.types = types;\n","'use strict';\n/* eslint indent: 4 */\n\n\n// Private helper class\nclass SubRange {\n constructor(low, high) {\n this.low = low;\n this.high = high;\n this.length = 1 + high - low;\n }\n\n overlaps(range) {\n return !(this.high < range.low || this.low > range.high);\n }\n\n touches(range) {\n return !(this.high + 1 < range.low || this.low - 1 > range.high);\n }\n\n // Returns inclusive combination of SubRanges as a SubRange.\n add(range) {\n return new SubRange(\n Math.min(this.low, range.low),\n Math.max(this.high, range.high)\n );\n }\n\n // Returns subtraction of SubRanges as an array of SubRanges.\n // (There's a case where subtraction divides it in 2)\n subtract(range) {\n if (range.low <= this.low && range.high >= this.high) {\n return [];\n } else if (range.low > this.low && range.high < this.high) {\n return [\n new SubRange(this.low, range.low - 1),\n new SubRange(range.high + 1, this.high)\n ];\n } else if (range.low <= this.low) {\n return [new SubRange(range.high + 1, this.high)];\n } else {\n return [new SubRange(this.low, range.low - 1)];\n }\n }\n\n toString() {\n return this.low == this.high ?\n this.low.toString() : this.low + '-' + this.high;\n }\n}\n\n\nclass DRange {\n constructor(a, b) {\n this.ranges = [];\n this.length = 0;\n if (a != null) this.add(a, b);\n }\n\n _update_length() {\n this.length = this.ranges.reduce((previous, range) => {\n return previous + range.length;\n }, 0);\n }\n\n add(a, b) {\n var _add = (subrange) => {\n var i = 0;\n while (i < this.ranges.length && !subrange.touches(this.ranges[i])) {\n i++;\n }\n var newRanges = this.ranges.slice(0, i);\n while (i < this.ranges.length && subrange.touches(this.ranges[i])) {\n subrange = subrange.add(this.ranges[i]);\n i++;\n }\n newRanges.push(subrange);\n this.ranges = newRanges.concat(this.ranges.slice(i));\n this._update_length();\n }\n\n if (a instanceof DRange) {\n a.ranges.forEach(_add);\n } else {\n if (b == null) b = a;\n _add(new SubRange(a, b));\n }\n return this;\n }\n\n subtract(a, b) {\n var _subtract = (subrange) => {\n var i = 0;\n while (i < this.ranges.length && !subrange.overlaps(this.ranges[i])) {\n i++;\n }\n var newRanges = this.ranges.slice(0, i);\n while (i < this.ranges.length && subrange.overlaps(this.ranges[i])) {\n newRanges = newRanges.concat(this.ranges[i].subtract(subrange));\n i++;\n }\n this.ranges = newRanges.concat(this.ranges.slice(i));\n this._update_length();\n };\n\n if (a instanceof DRange) {\n a.ranges.forEach(_subtract);\n } else {\n if (b == null) b = a;\n _subtract(new SubRange(a, b));\n }\n return this;\n }\n\n intersect(a, b) {\n var newRanges = [];\n var _intersect = (subrange) => {\n var i = 0;\n while (i < this.ranges.length && !subrange.overlaps(this.ranges[i])) {\n i++;\n }\n while (i < this.ranges.length && subrange.overlaps(this.ranges[i])) {\n var low = Math.max(this.ranges[i].low, subrange.low);\n var high = Math.min(this.ranges[i].high, subrange.high);\n newRanges.push(new SubRange(low, high));\n i++;\n }\n };\n\n if (a instanceof DRange) {\n a.ranges.forEach(_intersect);\n } else {\n if (b == null) b = a;\n _intersect(new SubRange(a, b));\n }\n this.ranges = newRanges;\n this._update_length();\n return this;\n }\n\n index(index) {\n var i = 0;\n while (i < this.ranges.length && this.ranges[i].length <= index) {\n index -= this.ranges[i].length;\n i++;\n }\n return this.ranges[i].low + index;\n }\n\n toString() {\n return '[ ' + this.ranges.join(', ') + ' ]';\n }\n\n clone() {\n return new DRange(this);\n }\n\n numbers() {\n return this.ranges.reduce((result, subrange) => {\n var i = subrange.low;\n while (i <= subrange.high) {\n result.push(i);\n i++;\n }\n return result;\n }, []);\n }\n\n subranges() {\n return this.ranges.map((subrange) => ({\n low: subrange.low,\n high: subrange.high,\n length: 1 + subrange.high - subrange.low\n }));\n }\n}\n\nmodule.exports = DRange;\n","const ret = require('ret');\nconst DRange = require('drange');\nconst types = ret.types;\n\n\nmodule.exports = class RandExp {\n /**\n * @constructor\n * @param {RegExp|String} regexp\n * @param {String} m\n */\n constructor(regexp, m) {\n this._setDefaults(regexp);\n if (regexp instanceof RegExp) {\n this.ignoreCase = regexp.ignoreCase;\n this.multiline = regexp.multiline;\n regexp = regexp.source;\n\n } else if (typeof regexp === 'string') {\n this.ignoreCase = m && m.indexOf('i') !== -1;\n this.multiline = m && m.indexOf('m') !== -1;\n } else {\n throw new Error('Expected a regexp or string');\n }\n\n this.tokens = ret(regexp);\n }\n\n\n /**\n * Checks if some custom properties have been set for this regexp.\n *\n * @param {RandExp} randexp\n * @param {RegExp} regexp\n */\n _setDefaults(regexp) {\n // When a repetitional token has its max set to Infinite,\n // randexp won't actually generate a random amount between min and Infinite\n // instead it will see Infinite as min + 100.\n this.max = regexp.max != null ? regexp.max :\n RandExp.prototype.max != null ? RandExp.prototype.max : 100;\n\n // This allows expanding to include additional characters\n // for instance: RandExp.defaultRange.add(0, 65535);\n this.defaultRange = regexp.defaultRange ?\n regexp.defaultRange : this.defaultRange.clone();\n\n if (regexp.randInt) {\n this.randInt = regexp.randInt;\n }\n }\n\n\n /**\n * Generates the random string.\n *\n * @return {String}\n */\n gen() {\n return this._gen(this.tokens, []);\n }\n\n\n /**\n * Generate random string modeled after given tokens.\n *\n * @param {Object} token\n * @param {Array.<String>} groups\n * @return {String}\n */\n _gen(token, groups) {\n var stack, str, n, i, l;\n\n switch (token.type) {\n case types.ROOT:\n case types.GROUP:\n // Ignore lookaheads for now.\n if (token.followedBy || token.notFollowedBy) { return ''; }\n\n // Insert placeholder until group string is generated.\n if (token.remember && token.groupNumber === undefined) {\n token.groupNumber = groups.push(null) - 1;\n }\n\n stack = token.options ?\n this._randSelect(token.options) : token.stack;\n\n str = '';\n for (i = 0, l = stack.length; i < l; i++) {\n str += this._gen(stack[i], groups);\n }\n\n if (token.remember) {\n groups[token.groupNumber] = str;\n }\n return str;\n\n case types.POSITION:\n // Do nothing for now.\n return '';\n\n case types.SET:\n var expandedSet = this._expand(token);\n if (!expandedSet.length) { return ''; }\n return String.fromCharCode(this._randSelect(expandedSet));\n\n case types.REPETITION:\n // Randomly generate number between min and max.\n n = this.randInt(token.min,\n token.max === Infinity ? token.min + this.max : token.max);\n\n str = '';\n for (i = 0; i < n; i++) {\n str += this._gen(token.value, groups);\n }\n\n return str;\n\n case types.REFERENCE:\n return groups[token.value - 1] || '';\n\n case types.CHAR:\n var code = this.ignoreCase && this._randBool() ?\n this._toOtherCase(token.value) : token.value;\n return String.fromCharCode(code);\n }\n }\n\n\n /**\n * If code is alphabetic, converts to other case.\n * If not alphabetic, returns back code.\n *\n * @param {Number} code\n * @return {Number}\n */\n _toOtherCase(code) {\n return code + (97 <= code && code <= 122 ? -32 :\n 65 <= code && code <= 90 ? 32 : 0);\n }\n\n\n /**\n * Randomly returns a true or false value.\n *\n * @return {Boolean}\n */\n _randBool() {\n return !this.randInt(0, 1);\n }\n\n\n /**\n * Randomly selects and returns a value from the array.\n *\n * @param {Array.<Object>} arr\n * @return {Object}\n */\n _randSelect(arr) {\n if (arr instanceof DRange) {\n return arr.index(this.randInt(0, arr.length - 1));\n }\n return arr[this.randInt(0, arr.length - 1)];\n }\n\n\n /**\n * expands a token to a DiscontinuousRange of characters which has a\n * length and an index function (for random selecting)\n *\n * @param {Object} token\n * @return {DiscontinuousRange}\n */\n _expand(token) {\n if (token.type === ret.types.CHAR) {\n return new DRange(token.value);\n } else if (token.type === ret.types.RANGE) {\n return new DRange(token.from, token.to);\n } else {\n let drange = new DRange();\n for (let i = 0; i < token.set.length; i++) {\n let subrange = this._expand(token.set[i]);\n drange.add(subrange);\n if (this.ignoreCase) {\n for (let j = 0; j < subrange.length; j++) {\n let code = subrange.index(j);\n let otherCaseCode = this._toOtherCase(code);\n if (code !== otherCaseCode) {\n drange.add(otherCaseCode);\n }\n }\n }\n }\n if (token.not) {\n return this.defaultRange.clone().subtract(drange);\n } else {\n return this.defaultRange.clone().intersect(drange);\n }\n }\n }\n\n\n /**\n * Randomly generates and returns a number between a and b (inclusive).\n *\n * @param {Number} a\n * @param {Number} b\n * @return {Number}\n */\n randInt(a, b) {\n return a + Math.floor(Math.random() * (1 + b - a));\n }\n\n\n /**\n * Default range of characters to generate from.\n */\n get defaultRange() {\n return this._range = this._range || new DRange(32, 126);\n }\n\n set defaultRange(range) {\n this._range = range;\n }\n\n\n /**\n *\n * Enables use of randexp with a shorter call.\n *\n * @param {RegExp|String| regexp}\n * @param {String} m\n * @return {String}\n */\n static randexp(regexp, m) {\n var randexp;\n if(typeof regexp === 'string') {\n regexp = new RegExp(regexp, m);\n }\n\n if (regexp._randexp === undefined) {\n randexp = new RandExp(regexp, m);\n regexp._randexp = randexp;\n } else {\n randexp = regexp._randexp;\n randexp._setDefaults(regexp);\n }\n return randexp.gen();\n }\n\n\n /**\n * Enables sugary /regexp/.gen syntax.\n */\n static sugar() {\n /* eshint freeze:false */\n RegExp.prototype.gen = function() {\n return RandExp.randexp(this);\n };\n }\n};\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"var LlmTypeChecker;\n\n(function(LlmTypeChecker) {\n LlmTypeChecker.visit = (schema, callback) => {\n callback(schema);\n if (LlmTypeChecker.isOneOf(schema)) schema.oneOf.forEach((s => LlmTypeChecker.visit(s, callback))); else if (LlmTypeChecker.isObject(schema)) {\n for (const [_, s] of Object.entries(schema.properties ?? {})) LlmTypeChecker.visit(s, callback);\n if (typeof schema.additionalProperties === \"object\" && schema.additionalProperties !== null) LlmTypeChecker.visit(schema.additionalProperties, callback);\n } else if (LlmTypeChecker.isArray(schema)) LlmTypeChecker.visit(schema.items, callback);\n };\n LlmTypeChecker.isOneOf = schema => schema.oneOf !== undefined;\n LlmTypeChecker.isObject = schema => schema.type === \"object\";\n LlmTypeChecker.isArray = schema => schema.type === \"array\";\n LlmTypeChecker.isBoolean = schema => schema.type === \"boolean\";\n LlmTypeChecker.isInteger = schema => schema.type === \"integer\";\n LlmTypeChecker.isNumber = schema => schema.type === \"number\";\n LlmTypeChecker.isString = schema => schema.type === \"string\";\n LlmTypeChecker.isNullOnly = schema => schema.type === \"null\";\n LlmTypeChecker.isNullable = schema => !LlmTypeChecker.isUnknown(schema) && (LlmTypeChecker.isNullOnly(schema) || (LlmTypeChecker.isOneOf(schema) ? schema.oneOf.some(LlmTypeChecker.isNullable) : schema.nullable === true));\n LlmTypeChecker.isUnknown = schema => !LlmTypeChecker.isOneOf(schema) && schema.type === undefined;\n})(LlmTypeChecker || (LlmTypeChecker = {}));\n\nexport { LlmTypeChecker };\n//# sourceMappingURL=LlmTypeChecker.mjs.map\n","import { LlmTypeChecker } from \"./LlmTypeChecker.mjs\";\n\nvar LlmSchemaSeparator;\n\n(function(LlmSchemaSeparator) {\n LlmSchemaSeparator.parameters = props => {\n const indexes = props.parameters.map(LlmSchemaSeparator.schema(props.predicator));\n return {\n llm: indexes.map((([llm], index) => ({\n index,\n schema: llm\n }))).filter((({schema}) => schema !== null)),\n human: indexes.map((([, human], index) => ({\n index,\n schema: human\n }))).filter((({schema}) => schema !== null))\n };\n };\n LlmSchemaSeparator.schema = predicator => input => {\n if (predicator(input) === true) return [ null, input ]; else if (LlmTypeChecker.isUnknown(input) || LlmTypeChecker.isOneOf(input)) return [ input, null ]; else if (LlmTypeChecker.isObject(input)) return separateObject(predicator)(input); else if (LlmTypeChecker.isArray(input)) return separateArray(predicator)(input);\n return [ input, null ];\n };\n const separateArray = predicator => input => {\n const [x, y] = LlmSchemaSeparator.schema(predicator)(input.items);\n return [ x !== null ? {\n ...input,\n items: x\n } : null, y !== null ? {\n ...input,\n items: y\n } : null ];\n };\n const separateObject = predicator => input => {\n if (!!input.additionalProperties || Object.keys(input.properties ?? {}).length === 0) return [ input, null ];\n const llm = {\n ...input,\n properties: {}\n };\n const human = {\n ...input,\n properties: {}\n };\n for (const [key, value] of Object.entries(input.properties ?? {})) {\n const [x, y] = LlmSchemaSeparator.schema(predicator)(value);\n if (x !== null) llm.properties[key] = x;\n if (y !== null) human.properties[key] = y;\n }\n return [ Object.keys(llm.properties).length === 0 ? null : shrinkRequired(llm), Object.keys(human.properties).length === 0 ? null : shrinkRequired(human) ];\n };\n const shrinkRequired = input => {\n if (input.required !== undefined) input.required = input.required.filter((key => input.properties?.[key] !== undefined));\n return input;\n };\n})(LlmSchemaSeparator || (LlmSchemaSeparator = {}));\n\nexport { LlmSchemaSeparator };\n//# sourceMappingURL=LlmSchemaSeparator.mjs.map\n",null,null,null,null,null,null,null,null,null,null,null],"names":["types","require$$0","sets","require$$1","positions","require$$2","require$$3","libModule","DRange","boolean","bigint","number","string","array","is","stringify","toNumber","toBigint","formData","headers","parameter","query","snake","camel","StringUtil.capitalize","pascal","NamingConvention.camel","NamingConvention.pascal","NamingConvention.snake","clone","prune","utf8","decode","encode","application","assert","validate","random","RandomGenerator.pick","halt","Namespace.assert","Namespace.functional.functionalAssert","Namespace.is","Namespace.validate","Namespace.http.formData","Namespace.http.query","Namespace.http.headers","Namespace.http.parameter","Namespace.llm.application","Namespace.json.stringify","Namespace.misc.clone","Namespace.misc.prune","Namespace.notations.camel","Namespace.notations.pascal","Namespace.notations.snake","Namespace.protobuf.decode","Namespace.protobuf.encode","Namespace.random"],"mappings":"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