pomljs
Version:
Prompt Orchestration Markup Language
1 lines • 50.3 kB
Source Map (JSON)
{"version":3,"file":"base.cjs","sources":["../.build/base.js"],"sourcesContent":["/**\n * The very basic logics that drive \"every\" component in the system.\n * The \"every\" is the criteria whether the logic should serve as a base.\n * For example, the stylesheet is considered as a base, as it's supported in every component,\n * but markup presentation is not.\n */\nimport * as React from 'react';\nimport { distance } from 'closest-match';\nimport { deepMerge } from './util';\nimport componentDocs from './assets/componentDocs.json';\nimport path from 'path';\nimport flattenChildren from 'react-keyed-flatten-children';\nexport const ValidSpeakers = ['system', 'human', 'ai', 'tool'];\nexport function richContentFromSourceMap(contents) {\n const parts = [];\n const append = (txt) => {\n if (parts.length > 0 && typeof parts[parts.length - 1] === 'string') {\n parts[parts.length - 1] = parts[parts.length - 1] + txt;\n }\n else if (txt.length > 0) {\n parts.push(txt);\n }\n };\n for (const seg of contents) {\n const c = seg.content;\n if (typeof c === 'string') {\n append(c);\n }\n else if (Array.isArray(c)) {\n for (const item of c) {\n if (typeof item === 'string') {\n append(item);\n }\n else {\n parts.push(item);\n }\n }\n }\n else {\n parts.push(c);\n }\n }\n if (parts.length === 1) {\n return typeof parts[0] === 'string' ? parts[0] : [parts[0]];\n }\n return parts;\n}\n/**\n * Create an element that will be visible in the IR.\n * Helper function for logging and debugging purposes.\n */\nexport const irElement = (type, props, ...children) => {\n if (props.speaker && !ValidSpeakers.includes(props.speaker)) {\n ErrorCollection.add(ReadError.fromProps(`\"${props.speaker}\" is not a valid speaker.`, props));\n props.speaker = undefined;\n }\n const propsWithoutUndefined = Object.fromEntries(Object.entries(props)\n .filter(([_, v]) => v !== undefined)\n .map(([k, v]) => {\n const hyphenCaseKey = k.replace(/[A-Z]/g, m => '-' + m.toLowerCase());\n if (typeof v === 'boolean') {\n return [hyphenCaseKey, v.toString()];\n }\n else if (typeof v === 'number') {\n return [hyphenCaseKey, v.toString()];\n }\n else if (typeof v === 'object') {\n return [hyphenCaseKey, JSON.stringify(v)];\n }\n else {\n return [hyphenCaseKey, v];\n }\n }));\n const trimmedChildren = trimChildrenWhiteSpace(children, props);\n return React.createElement(type, propsWithoutUndefined, ...trimmedChildren);\n};\nexport function trimChildrenWhiteSpace(children, props) {\n // This is exposed for providers.\n // The children directly under a context provider also needs to be trimmed,\n // otherwise they do not have a chance to be trimmed.\n let flattenedChildren = flattenChildren(children);\n // Merge consecutive strings.\n if (props.whiteSpace !== 'pre') {\n const mergedChildren = [];\n let currentString = '';\n for (const child of flattenedChildren) {\n if (typeof child === 'string') {\n currentString += child;\n }\n else {\n if (currentString) {\n mergedChildren.push(currentString);\n currentString = '';\n }\n mergedChildren.push(child);\n }\n }\n if (currentString) {\n mergedChildren.push(currentString);\n }\n flattenedChildren = mergedChildren;\n }\n const trimmedChildren = flattenedChildren\n .map((child, index) => {\n if (typeof child === 'string') {\n if (props.whiteSpace === 'pre') {\n return child;\n }\n else if (props.whiteSpace === 'filter' || props.whiteSpace === undefined) {\n return trimText(child, index === 0, index === flattenedChildren.length - 1);\n }\n else if (props.whiteSpace === 'trim') {\n let trimmed = child;\n if (index === 0) {\n trimmed = trimmed.trimStart();\n }\n if (index === flattenedChildren.length - 1) {\n trimmed = trimmed.trimEnd();\n }\n return trimmed;\n }\n else {\n ErrorCollection.add(ReadError.fromProps(`\"${props.whiteSpace}\" is not a valid whiteSpace option.`, props));\n return child;\n }\n }\n else {\n return child;\n }\n })\n .filter(c => c !== '');\n return trimmedChildren;\n}\n/**\n * Trim the element tree following the CSS rules\n * https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Whitespace\n */\nconst trimText = (text, isFirst, isLast) => {\n // 1. all spaces and tabs immediately before and after a line break are ignored\n text = text.replace(/[\\t\\n\\r ]*\\n[\\t\\n\\r ]*/g, '\\n');\n // 2. all tab characters and line breaks are handled as space characters\n text = text.replace(/[\\t\\n\\r]/g, ' ');\n // 3. multiple space characters are handled as one space character\n text = text.replace(/ +/g, ' ');\n // 4. sequences of spaces at the beginning and end of an element are removed\n if (isFirst) {\n text = text.replace(/^ +/, '');\n }\n if (isLast) {\n text = text.replace(/ +$/, '');\n }\n return text;\n};\nclass PomlError extends Error {\n severity = 'error';\n constructor(message, options) {\n super(message, options);\n this.name = 'PomlError';\n if (options?.severity) {\n this.severity = options.severity;\n }\n }\n}\nexport class SystemError extends PomlError {\n constructor(message, options) {\n super(message, options);\n this.name = 'SystemError';\n }\n}\nexport class ReadError extends PomlError {\n startIndex;\n endIndex;\n sourcePath;\n constructor(message, startIndex, endIndex, sourcePath, options) {\n super(message, options);\n this.startIndex = startIndex;\n this.endIndex = endIndex;\n this.sourcePath = sourcePath;\n this.name = 'ReadError';\n }\n static fromProps(message, props, options) {\n return new ReadError(message, props.originalStartIndex, props.originalEndIndex, props.sourcePath, options);\n }\n}\nexport class WriteError extends PomlError {\n startIndex;\n endIndex;\n sourcePath;\n irStartIndex;\n irEndIndex;\n relatedIr;\n constructor(message, startIndex, endIndex, sourcePath, irStartIndex, irEndIndex, relatedIr, options) {\n super(message, options);\n this.startIndex = startIndex;\n this.endIndex = endIndex;\n this.sourcePath = sourcePath;\n this.irStartIndex = irStartIndex;\n this.irEndIndex = irEndIndex;\n this.relatedIr = relatedIr;\n this.name = 'WriteError';\n }\n}\n/**\n * A can to hold all the errors.\n */\nexport class ErrorCollection {\n errors = [];\n static _instance;\n constructor() { }\n static get instance() {\n if (!this._instance) {\n this._instance = new ErrorCollection();\n }\n return this._instance;\n }\n static add(error) {\n this.instance.errors.push(error);\n }\n static first() {\n return this.instance.errors[0];\n }\n static last() {\n return this.instance.errors[this.instance.errors.length - 1];\n }\n static list() {\n return this.instance.errors;\n }\n static empty() {\n return this.instance.errors.length === 0;\n }\n static clear() {\n this.instance.errors = [];\n }\n}\nfunction calculateSize(value, visited = new Set()) {\n if (value === null || value === undefined) {\n return 0;\n }\n if (visited.has(value)) {\n return 0;\n }\n if (Buffer.isBuffer(value)) {\n return value.length;\n }\n const t = typeof value;\n if (t === 'string') {\n return Buffer.byteLength(value);\n }\n if (t === 'number' || t === 'boolean' || t === 'bigint') {\n return 8;\n }\n if (Array.isArray(value)) {\n visited.add(value);\n let size = 0;\n for (const item of value) {\n try {\n size += calculateSize(item, visited);\n }\n catch {\n // ignore\n }\n }\n visited.delete(value);\n return size;\n }\n if (t === 'object') {\n visited.add(value);\n let size = 0;\n for (const key in value) {\n try {\n size += calculateSize(value[key], visited);\n }\n catch {\n // ignore\n }\n }\n visited.delete(value);\n return size;\n }\n return 0;\n}\nexport class BufferCollection {\n buffers = new Map();\n totalSize = 0;\n limit = 10 * 1024 * 1024; // 10MB default\n static _instance;\n constructor() { }\n static get instance() {\n if (!this._instance) {\n this._instance = new BufferCollection();\n }\n return this._instance;\n }\n evict() {\n while (this.totalSize > this.limit && this.buffers.size > 0) {\n const oldestKey = this.buffers.keys().next().value;\n const entry = this.buffers.get(oldestKey);\n if (entry) {\n this.totalSize -= entry.size;\n }\n this.buffers.delete(oldestKey);\n }\n }\n static get(key) {\n const entry = this.instance.buffers.get(key);\n return entry ? entry.value : undefined;\n }\n static set(key, value) {\n const inst = this.instance;\n const prev = inst.buffers.get(key);\n if (prev) {\n inst.totalSize -= prev.size;\n }\n const entrySize = calculateSize(value);\n if (entrySize > inst.limit) {\n return;\n }\n inst.buffers.set(key, { value, size: entrySize });\n inst.totalSize += entrySize;\n inst.evict();\n }\n static clear() {\n this.instance.buffers.clear();\n this.instance.totalSize = 0;\n }\n}\nexport const useWithCatch = (promise, props) => {\n const catchedPromise = promise.catch((err) => {\n if (err instanceof PomlError) {\n ErrorCollection.add(err);\n }\n else {\n ErrorCollection.add(ReadError.fromProps(err && err.message\n ? err.message\n : 'Unknown error happened during asynchroneous process of rendering.', props, { cause: err }));\n }\n });\n return React.use(catchedPromise);\n};\nconst StyleSheetContext = React.createContext({});\nexport const StyleSheetProvider = ({ stylesheet, children }) => {\n const currentStylesheet = React.useContext(StyleSheetContext);\n // Deep merge stylesheet\n stylesheet = deepMerge(currentStylesheet, stylesheet);\n return React.createElement(StyleSheetContext.Provider, { value: stylesheet }, children);\n};\nconst useStyleSheet = () => React.useContext(StyleSheetContext);\nconst computeStyles = (currentProps, component, _stylesheet) => {\n const stylesheet = _stylesheet !== undefined ? _stylesheet : useStyleSheet();\n // priority, order, props\n const matches = [];\n Object.entries(stylesheet).forEach(([match, props], index) => {\n if (match === '*') {\n matches.push([0, index, props]);\n }\n else {\n const matchResult = match.split(/\\s+/g).map(indiv => {\n // FIXME: this is different from css rule\n if (indiv.startsWith('.')) {\n const currentClassName = currentProps?.className;\n const currentClasses = currentClassName ? currentClassName.split(/\\s+/g) : [];\n return currentClasses.includes(indiv.slice(1)) ? 2 : 0;\n }\n else {\n return component.getAliases().includes(indiv.toLowerCase()) ? 1 : 0;\n }\n });\n if (matchResult.every(r => r > 0)) {\n matches.push([matchResult.reduce((a, b) => a + b, 0), index, props]);\n }\n }\n });\n matches.sort((a, b) => (a[0] == b[0] ? a[1] - b[1] : a[0] - b[0]));\n const { className, ...restProps } = currentProps;\n matches.push([999, -1, restProps]);\n let finalProps = {};\n matches.forEach(([, , props]) => {\n finalProps = deepMerge(finalProps, props);\n });\n return finalProps;\n};\n// Source provider provides a path to the source file.\n// It's used to find related files specified in the source file.\n// It's also used to locate the source file for debugging purposes.\nconst SourceContext = React.createContext('');\nexport const SourceProvider = ({ source, children }) => {\n return React.createElement(SourceContext.Provider, { value: source }, children);\n};\nexport const expandRelative = (src) => {\n if (path.isAbsolute(src)) {\n return src;\n }\n const pomlSource = React.useContext(SourceContext);\n if (!pomlSource) {\n return src;\n }\n return path.resolve(path.dirname(pomlSource), src);\n};\nexport class PomlComponent {\n officialName;\n componentFunc;\n options;\n constructor(officialName, componentFunc, options) {\n this.officialName = officialName;\n this.componentFunc = componentFunc;\n this.options = options;\n }\n get name() {\n return this.officialName;\n }\n getAliases(lower = true) {\n if (lower) {\n return this.options.aliases.map(alias => alias.toLowerCase());\n }\n else {\n return this.options.aliases;\n }\n }\n warnsIfProvided(props) {\n if (!props) {\n return;\n }\n this.options.unwantedProps.forEach(key => {\n if (props[key] !== undefined) {\n ErrorCollection.add(ReadError.fromProps(`\"${key}\" is not supported (but provided) in ${this.officialName}.`, props, { severity: 'warning' }));\n }\n });\n }\n throwIfMissing(props) {\n this.options.requiredProps.forEach(key => {\n if (!props || props[key] === undefined) {\n throw ReadError.fromProps(`\"${key}\" is required but not provided for ${this.officialName}, available props are ${props ? Object.keys(props) : []}.`, props);\n }\n });\n }\n isPublic() {\n return this.spec() !== undefined;\n }\n static fromSpec(spec) {\n const found = findComponentByAliasOrUndefined(spec.name ?? '');\n if (found !== undefined) {\n return found;\n }\n throw new SystemError(`Component ${spec.name} not found.`);\n }\n spec() {\n return componentDocs.find(document => document.name === this.name);\n }\n parameters() {\n const spec = this.spec();\n if (!spec) {\n return [];\n }\n const bases = this.mro();\n const parameters = [...spec.params];\n for (const base of bases) {\n const baseSpec = base.spec();\n if (baseSpec) {\n parameters.push(...baseSpec.params.filter(p => !parameters.map(p => p.name).includes(p.name)));\n }\n }\n return parameters;\n }\n mro() {\n const spec = this.spec();\n if (!spec) {\n return [];\n }\n const toSearch = [...spec.baseComponents];\n const result = [];\n let searchPointer = 0;\n while (searchPointer < toSearch.length) {\n const component = findComponentByAliasOrUndefined(toSearch[searchPointer]);\n if (component !== undefined) {\n result.push(component);\n const componentSpec = component.spec();\n if (componentSpec) {\n for (const base of componentSpec.baseComponents) {\n if (!toSearch.includes(base) && !result.map(c => c.name).includes(base)) {\n toSearch.push(base);\n }\n }\n }\n }\n searchPointer++;\n }\n return result;\n }\n style(props, stylesheet) {\n return computeStyles(props, this, stylesheet);\n }\n preprocessProps(props) {\n const params = this.parameters();\n return Object.entries(props).reduce((acc, [key, value]) => {\n const param = params.find(param => param.name.toLowerCase() === key.toLowerCase());\n if (!param) {\n // Keep it.\n acc[key] = value;\n return acc;\n }\n const formalKey = param.name;\n if (value === undefined) {\n // TODO: check required parameters\n acc[key] = value;\n return acc;\n }\n if (param.type === 'string') {\n if (typeof value !== 'string' && value !== undefined) {\n value = value.toString();\n }\n }\n else if (param.type === 'number') {\n if (typeof value !== 'number' && value !== undefined) {\n value = parseFloat(value);\n }\n }\n else if (param.type === 'boolean') {\n if (typeof value !== 'boolean') {\n const isTrue = ['1', 'true'].includes(value.toString().toLowerCase());\n const isFalse = ['0', 'false'].includes(value.toString().toLowerCase());\n if (!isTrue && !isFalse) {\n ErrorCollection.add(ReadError.fromProps(`\"${key}\" should be a boolean`, props));\n value = undefined;\n }\n value = isTrue;\n }\n }\n else if (param.type === 'object' || param.type === 'object|string') {\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value);\n }\n catch (e) {\n if (param.fallbackType !== 'string') {\n ErrorCollection.add(ReadError.fromProps(`Fail to parse \\\"${key}\\\" with JSON parser`, props));\n }\n }\n }\n }\n else if (param.type === 'RegExp' || param.type === 'RegExp|string') {\n if (typeof value === 'string') {\n if (value.startsWith('/')) {\n // Extract flags if present\n const lastSlashIndex = value.lastIndexOf('/');\n if (lastSlashIndex > 0) {\n const pattern = value.substring(1, lastSlashIndex);\n const flags = value.substring(lastSlashIndex + 1);\n // Only create RegExp with flags if flags exist and are valid\n if (flags && /^[gimsuy]*$/.test(flags)) {\n value = new RegExp(pattern, flags);\n }\n else if (lastSlashIndex === value.length - 1) {\n // Format is /pattern/ with no flags\n value = new RegExp(pattern);\n }\n }\n }\n else {\n // Default behavior for strings not in /pattern/ format\n value = new RegExp(value);\n }\n }\n }\n else {\n // Keep as is.\n }\n if (param.choices.length > 0) {\n if (!param.choices.includes(value)) {\n ErrorCollection.add(ReadError.fromProps(`\"${key}\" should be one of ${param.choices.join(', ')}, not ${value}`, props));\n }\n }\n acc[formalKey] = value;\n return acc;\n }, {});\n }\n render(props) {\n this.warnsIfProvided(props);\n try {\n // If one of the following steps has error, abort the process.\n this.throwIfMissing(props);\n if (this.options.applyStyleSheet) {\n props = this.style(props);\n }\n props = this.preprocessProps(props);\n if (this.options.asynchorous) {\n const msg = 'This prompt is asynchorous and still loading. Users should not see this message. ' +\n 'If you see this message, please report it to the developer.';\n return (React.createElement(React.Suspense, { fallback: React.createElement(\"div\", null, msg) }, this.componentFunc(props)));\n }\n else {\n return this.componentFunc(props);\n }\n }\n catch (e) {\n if (e &&\n typeof e.message === 'string' &&\n e.message.startsWith('Suspense Exception:')) {\n throw e;\n }\n if (e instanceof PomlError) {\n ErrorCollection.add(e);\n }\n else {\n ErrorCollection.add(ReadError.fromProps(`Error in component render of ${this.officialName}: ${e}`, props, {\n cause: e\n }));\n }\n return null;\n }\n }\n}\nclass ComponentRegistry {\n static _instance;\n components = [];\n constructor() { }\n static get instance() {\n if (!this._instance) {\n this._instance = new ComponentRegistry();\n }\n return this._instance;\n }\n registerComponent(officialName, component, options) {\n if (!options.aliases.includes(officialName)) {\n options.aliases = [officialName, ...options.aliases];\n }\n options.aliases.forEach(alias => {\n const aliasExisting = this.components.filter(c => c.getAliases().includes(alias.toLowerCase()));\n if (aliasExisting.length > 0) {\n throw new SystemError(`Alias \"${alias}\" is already used by ${aliasExisting[0]}.`);\n }\n });\n const registered = new PomlComponent(officialName, component, options);\n this.components.push(registered);\n return registered;\n }\n unregisterComponent(name) {\n const component = this.getComponent(name);\n this.components = this.components.filter(c => c !== component);\n }\n listComponents() {\n return [...this.components];\n }\n getComponent(name, returnReasonIfNotFound = false, disabled = undefined) {\n if (returnReasonIfNotFound instanceof Set) {\n disabled = returnReasonIfNotFound;\n returnReasonIfNotFound = false;\n }\n const hyphenToCamelCase = (s) => {\n return s.toLowerCase().replace(/-([a-z])/g, g => g[1].toUpperCase());\n };\n const nameVariants = [name.toLowerCase(), hyphenToCamelCase(name).toLowerCase()];\n for (const variant of nameVariants) {\n for (const component of this.components) {\n const aliases = component.getAliases();\n if (!aliases.includes(variant)) {\n continue;\n }\n if (disabled?.has(variant)) {\n continue;\n }\n return component;\n }\n }\n if (!returnReasonIfNotFound) {\n return undefined;\n }\n const availableAliases = this.components\n .flatMap(c => c.getAliases())\n .filter(a => !disabled?.has(a));\n const distances = availableAliases.map(alias => {\n return {\n alias: alias,\n dist: distance(alias.toLowerCase(), name.toLowerCase())\n };\n });\n distances.sort((a, b) => a.dist - b.dist);\n const doYouMean = distances.filter((d, index) => index < 1 || d.dist <= 2);\n return `Component ${name} not found. Do you mean: ${doYouMean.map(d => d.alias).join(', ')}?`;\n }\n}\nexport function component(name, options) {\n return (target) => {\n const registered = ComponentRegistry.instance.registerComponent(name, target, options\n ? Array.isArray(options)\n ? {\n aliases: options,\n requiredProps: [],\n unwantedProps: [],\n applyStyleSheet: true,\n asynchorous: false\n }\n : {\n aliases: options.aliases ?? [],\n requiredProps: options.requiredProps ?? [],\n unwantedProps: options.unwantedProps ?? [],\n applyStyleSheet: options.applyStyleSheet ?? true,\n asynchorous: options.asynchorous ?? false\n }\n : {\n aliases: [],\n requiredProps: [],\n unwantedProps: [],\n applyStyleSheet: true,\n asynchorous: false\n });\n return registered.render.bind(registered);\n };\n}\nexport function unregisterComponent(alias) {\n ComponentRegistry.instance.unregisterComponent(alias);\n}\n/**\n * Find a component by its alias. If not found, return a string that suggests the closest match.\n * @param alias Alias or official name.\n */\nexport function findComponentByAlias(alias, disabled) {\n return ComponentRegistry.instance.getComponent(alias, true, disabled);\n}\nexport function findComponentByAliasOrUndefined(alias, disabled) {\n return ComponentRegistry.instance.getComponent(alias, disabled);\n}\nexport function listComponents() {\n return ComponentRegistry.instance.listComponents();\n}\n//# sourceMappingURL=base.js.map"],"names":["React","deepMerge","distance"],"mappings":"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