diff --git a/.storybook/theme.js b/.storybook/theme.js index f4cff0bb1..ab94d8151 100644 --- a/.storybook/theme.js +++ b/.storybook/theme.js @@ -10,7 +10,7 @@ export default create({ brandTitle: 'Code0 Pictor', brandUrl: 'https://code0.tech', - brandImage: 'https://cdn.discordapp.com/attachments/1187919509298888746/1187921987868299388/Logo.png', + brandImage: 'https://code0.tech/code0_logo.png', brandTarget: '_self', // UI @@ -40,4 +40,4 @@ export default create({ inputBorder: '#91949A', inputTextColor: 'rgba(255,255,255, .5)', inputBorderRadius: 2, -}); \ No newline at end of file +}); diff --git a/package-lock.json b/package-lock.json index 91fb932ad..e4c2ed061 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,13 +8,14 @@ "name": "@code0-tech/pictor", "version": "0.0.0", "dependencies": { - "@radix-ui/react-context-menu": "^2.2.16" + "@radix-ui/react-context-menu": "^2.2.16", + "react-contenteditable": "^3.3.7" }, "devDependencies": { "@ariakit/react": "^0.4.17", "@babel/plugin-proposal-decorators": "^7.28.0", "@babel/plugin-transform-class-properties": "^7.27.1", - "@code0-tech/sagittarius-graphql-types": "^0.0.0-968478cecf351385c6c13c2be8aeae5c45da026c", + "@code0-tech/sagittarius-graphql-types": "^0.0.0-a395eea54741fc1bb9649341ff6f082cc1c3e67e", "@dagrejs/dagre": "^2.0.0", "@mdx-js/react": "^3.1.1", "@radix-ui/react-checkbox": "^1.3.3", @@ -41,6 +42,7 @@ "@tabler/icons-react": "3.35.0", "@types/jest-image-snapshot": "^6.4.0", "@types/react": "^19.2.7", + "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^5.1.1", "@vitest/browser-playwright": "^4.0.14", "@vitest/coverage-v8": "^4.0.14", @@ -78,7 +80,7 @@ }, "peerDependencies": { "@ariakit/react": "^0.4.5", - "@code0-tech/sagittarius-graphql-types": "^0.0.0-968478cecf351385c6c13c2be8aeae5c45da026c", + "@code0-tech/sagittarius-graphql-types": "^0.0.0-a395eea54741fc1bb9649341ff6f082cc1c3e67e", "@radix-ui/react-checkbox": "^1.3.2", "@radix-ui/react-dialog": "^1.1.14", "@radix-ui/react-dropdown-menu": "^2.1.15", @@ -1221,9 +1223,9 @@ "license": "MIT" }, "node_modules/@code0-tech/sagittarius-graphql-types": { - "version": "0.0.0-968478cecf351385c6c13c2be8aeae5c45da026c", - "resolved": "https://registry.npmjs.org/@code0-tech/sagittarius-graphql-types/-/sagittarius-graphql-types-0.0.0-968478cecf351385c6c13c2be8aeae5c45da026c.tgz", - "integrity": "sha512-6ndUP/zKixZ/VI7E+u9YSkxkzkeM+MTBhehqv4NDBZgbczXp1hVDBdJ+YEnTd22mLCA0a7EhGGBbBvY3z9WlQw==", + "version": "0.0.0-a395eea54741fc1bb9649341ff6f082cc1c3e67e", + "resolved": "https://registry.npmjs.org/@code0-tech/sagittarius-graphql-types/-/sagittarius-graphql-types-0.0.0-a395eea54741fc1bb9649341ff6f082cc1c3e67e.tgz", + "integrity": "sha512-eFknGhZph0oG8RVdkhe8j83Avlfd1iwyLFh50KOsXSDMc61Mrg0R+JIzgZJJMsDWAAjHgTsaOkCBbHVEpGncIw==", "dev": true }, "node_modules/@cspotcode/source-map-support": { @@ -6427,6 +6429,17 @@ "csstype": "^3.2.2" } }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "devOptional": true, + "license": "MIT", + "peer": true, + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, "node_modules/@types/resolve": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", @@ -9411,7 +9424,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, "license": "MIT" }, "node_modules/fast-json-stable-stringify": { @@ -12748,7 +12760,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, "license": "MIT" }, "node_modules/js-yaml": { @@ -13014,6 +13025,18 @@ "dev": true, "license": "MIT" }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/loupe": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", @@ -13454,6 +13477,15 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", @@ -14152,6 +14184,23 @@ "node": ">= 6" } }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -14199,6 +14248,19 @@ "node": ">=0.10.0" } }, + "node_modules/react-contenteditable": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/react-contenteditable/-/react-contenteditable-3.3.7.tgz", + "integrity": "sha512-GA9NbC0DkDdpN3iGvib/OMHWTJzDX2cfkgy5Tt98JJAbA3kLnyrNbBIpsSpPpq7T8d3scD39DHP+j8mAM7BIfQ==", + "license": "Apache-2.0", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "prop-types": "^15.7.1" + }, + "peerDependencies": { + "react": ">=16.3" + } + }, "node_modules/react-docgen": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-8.0.2.tgz", diff --git a/package.json b/package.json index d4b874491..bdbc706dd 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "@ariakit/react": "^0.4.17", "@babel/plugin-proposal-decorators": "^7.28.0", "@babel/plugin-transform-class-properties": "^7.27.1", - "@code0-tech/sagittarius-graphql-types": "^0.0.0-968478cecf351385c6c13c2be8aeae5c45da026c", + "@code0-tech/sagittarius-graphql-types": "^0.0.0-a395eea54741fc1bb9649341ff6f082cc1c3e67e", "@dagrejs/dagre": "^2.0.0", "@mdx-js/react": "^3.1.1", "@radix-ui/react-checkbox": "^1.3.3", @@ -47,6 +47,7 @@ "@tabler/icons-react": "3.35.0", "@types/jest-image-snapshot": "^6.4.0", "@types/react": "^19.2.7", + "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^5.1.1", "@vitest/browser-playwright": "^4.0.14", "@vitest/coverage-v8": "^4.0.14", @@ -93,7 +94,7 @@ "types": "dist/index.d.ts", "peerDependencies": { "@ariakit/react": "^0.4.5", - "@code0-tech/sagittarius-graphql-types": "^0.0.0-968478cecf351385c6c13c2be8aeae5c45da026c", + "@code0-tech/sagittarius-graphql-types": "^0.0.0-a395eea54741fc1bb9649341ff6f082cc1c3e67e", "@radix-ui/react-checkbox": "^1.3.2", "@radix-ui/react-dialog": "^1.1.14", "@radix-ui/react-dropdown-menu": "^2.1.15", @@ -119,6 +120,7 @@ "access": "public" }, "dependencies": { - "@radix-ui/react-context-menu": "^2.2.16" + "@radix-ui/react-context-menu": "^2.2.16", + "react-contenteditable": "^3.3.7" } } diff --git a/src/components/button-group/ButtonGroup.tsx b/src/components/button-group/ButtonGroup.tsx index c2f8cd4ed..c3c38e7dd 100644 --- a/src/components/button-group/ButtonGroup.tsx +++ b/src/components/button-group/ButtonGroup.tsx @@ -16,9 +16,10 @@ export const ButtonGroup: React.FC = (props) => { {children.map((child, i) => { return
{child}
})} -} \ No newline at end of file +} diff --git a/src/components/d-flow-data-type/DFlowDataType.view.ts b/src/components/d-flow-data-type/DFlowDataType.view.ts index 6a65034af..43b30844a 100644 --- a/src/components/d-flow-data-type/DFlowDataType.view.ts +++ b/src/components/d-flow-data-type/DFlowDataType.view.ts @@ -1,19 +1,18 @@ import type { DataType, DataTypeRuleConnection, - DataTypeVariant, Maybe, Runtime, Scalars, - TranslationConnection + DataTypeVariant, Maybe, Runtime, Scalars, Translation, } from "@code0-tech/sagittarius-graphql-types"; export class DataTypeView { /** Name of the function */ - private readonly _aliases?: Maybe; + private readonly _aliases?: Maybe>; /** Time when this DataType was created */ private readonly _createdAt?: Maybe; /** Display message of the function */ - private readonly _displayMessages?: Maybe; + private readonly _displayMessages?: Maybe>; /** Generic keys of the datatype */ private readonly _genericKeys?: Maybe>; /** Global ID of this DataType */ @@ -21,7 +20,7 @@ export class DataTypeView { /** The identifier scoped to the namespace */ private readonly _identifier?: Maybe; /** Names of the flow type setting */ - private readonly _name?: Maybe; + private readonly _name?: Maybe>; /** Rules of the datatype */ private readonly _rules?: Maybe; /** The namespace where this datatype belongs to */ @@ -45,7 +44,7 @@ export class DataTypeView { this._variant = dataType.variant; } - get aliases(): Maybe | undefined { + get aliases(): Maybe> | undefined { return this._aliases; } @@ -53,7 +52,7 @@ export class DataTypeView { return this._createdAt; } - get displayMessages(): Maybe | undefined { + get displayMessages(): Maybe> | undefined { return this._displayMessages; } @@ -69,7 +68,7 @@ export class DataTypeView { return this._identifier; } - get name(): Maybe | undefined { + get name(): Maybe> | undefined { return this._name; } diff --git a/src/components/d-flow-file/DFlowTabDefault.tsx b/src/components/d-flow-file/DFlowTabDefault.tsx index 4deb344bd..4ac13786d 100644 --- a/src/components/d-flow-file/DFlowTabDefault.tsx +++ b/src/components/d-flow-file/DFlowTabDefault.tsx @@ -1,161 +1,153 @@ import React from "react"; -import {TextInput} from "../form"; +import {useForm} from "../form"; import {Flex} from "../flex/Flex"; -import {useService} from "../../utils"; -import {DFlowFunctionReactiveService} from "../d-flow-function"; -import {useSuggestions} from "../d-flow-suggestion/DFlowSuggestion.hook"; -import {DFlowSuggestionMenuFooter} from "../d-flow-suggestion/DFlowSuggestionMenuFooter"; -import {toInputSuggestions} from "../d-flow-suggestion/DFlowSuggestionMenu.util"; +import {useService, useStore} from "../../utils"; +import {DFlowFunctionReactiveService, ParameterDefinitionView} from "../d-flow-function"; import {DFlowReactiveService} from "../d-flow"; -import {DFlowSuggestion} from "../d-flow-suggestion"; -import {ParameterDefinitionView} from "../d-flow-function"; -import {Badge} from "../badge/Badge"; -import type { +import { LiteralValue, - NodeFunction, NodeParameterValue, + NodeFunction, + NodeParameterValue, ReferenceValue, Scalars } from "@code0-tech/sagittarius-graphql-types"; import {InputSyntaxSegment} from "../form/Input.syntax.hook"; +import {useNodeValidation} from "../d-flow-validation/DNodeValidation.hook"; +import {FileTabsService} from "../file-tabs/FileTabs.service"; +import {DFlowInputDefault} from "../d-flow-input/DFlowInputDefault"; export interface DFlowTabDefaultProps { node: NodeFunction flowId: Scalars["FlowID"]["output"] - depthLevel?: number - scopeLevel?: number[] - nodeLevel?: number } export const DFlowTabDefault: React.FC = (props) => { - const {node, flowId, depthLevel, scopeLevel, nodeLevel} = props + const {node, flowId} = props + const functionService = useService(DFlowFunctionReactiveService) + const functionStore = useStore(DFlowFunctionReactiveService) const flowService = useService(DFlowReactiveService) + const flowStore = useStore(DFlowReactiveService) + const fileTabsService = useService(FileTabsService) + const validation = useNodeValidation(node.id, flowId) + + const changedParameters = React.useRef>(new Set()) const [, startTransition] = React.useTransition() - const definition = functionService.getById(node.functionDefinition?.id!!) + const definition = React.useMemo(() => { + return functionService.getById(node.functionDefinition?.id!!) + }, [functionStore]) + const paramDefinitions = React.useMemo(() => { const map: Record = {} definition?.parameterDefinitions?.forEach(pd => { map[pd.id!!] = pd }) return map - }, [definition?.parameterDefinitions]) + }, [definition]) const sortedParameters = React.useMemo(() => { return [...(node.parameters?.nodes || [])].sort((a, b) => a!!.id!!.localeCompare(b?.id!!)) - }, [node.parameters]) - - const suggestionsById: Record = {} - sortedParameters.forEach(parameter => { - const parameterDefinition = paramDefinitions[parameter?.id!!] - suggestionsById[parameter?.id!!] = useSuggestions(parameterDefinition?.dataTypeIdentifier!!, [], flowId, depthLevel, scopeLevel, nodeLevel) - }) - - return - {sortedParameters.map(parameter => { - - if (!parameter) return null - - const submitValue = (value: NodeFunction | LiteralValue | ReferenceValue | undefined) => { - startTransition(async () => { - await flowService.setParameterValue(flowId, node.id!!, parameter.id!!, value) - }) + }, [node]) + const initialValues = React.useMemo(() => { + const values: Record = {} + sortedParameters.forEach(parameter => { + values[parameter?.id!!] = parameter?.value?.__typename === "LiteralValue" ? (typeof parameter.value?.value === "object" ? JSON.stringify(parameter.value?.value) : parameter.value.value) : JSON.stringify(parameter?.value) + }) + return values + }, [sortedParameters]) + + const validations = React.useMemo(() => { + const values: Record = {} + sortedParameters.forEach(parameter => { + values[parameter?.id!!] = (_: any) => { + const validationForParameter = validation?.find(v => v.parameterId === parameter?.id) + if (validationForParameter) { + return validationForParameter.message!![0]?.content || "Invalid value" + } + return null } + }) + return values + }, [sortedParameters, validation]) + + const onSubmit = React.useCallback((values: any) => { + startTransition(async () => { + for (const paramDefinitions1 of sortedParameters) { + if (!changedParameters.current.has(paramDefinitions1?.id!!)) continue; + const syntaxSegment = values[paramDefinitions1?.id!] + const previousValue = paramDefinitions1?.value as NodeParameterValue + const syntaxValue = syntaxSegment?.[0]?.value as NodeFunction | LiteralValue | ReferenceValue + + if (previousValue && previousValue.__typename === "NodeFunctionIdWrapper" && previousValue.id) { + const linkedNodes = flowService.getLinkedNodesById(flowId, previousValue.id) + linkedNodes.reverse().forEach(node => { + if (node.id) fileTabsService.deleteById(node.id) + }) + } + + if (!syntaxValue || !syntaxSegment) { + await flowService.setParameterValue(flowId, node.id!!, paramDefinitions1!!.id!!, undefined); + } - const submitValueEvent = (event: any) => { try { - const value = JSON.parse(event.target.value) as NodeFunction | LiteralValue | ReferenceValue - if (!value.__typename) { - submitValue(value ? { + const parsedSyntaxValue = JSON.parse(String(syntaxValue)) + if (!syntaxValue?.__typename) { + await flowService.setParameterValue(flowId, node.id!!, paramDefinitions1!!.id!!, syntaxValue ? { __typename: "LiteralValue", - value: value - } : undefined) - return + value: parsedSyntaxValue + } : undefined); + continue; } - submitValue(value.__typename === "LiteralValue" ? (!!value.value ? value : undefined) : value) } catch (e) { - // @ts-ignore - submitValue(event.target.value == "" || !event.target.value ? undefined : { - __typename: "LiteralValue", - value: event.target.value - } as LiteralValue) + if (!syntaxValue?.__typename) { + await flowService.setParameterValue(flowId, node.id!!, paramDefinitions1!!.id!!, syntaxValue ? { + __typename: "LiteralValue", + value: syntaxValue, + } : undefined); + continue; + } } + + await flowService.setParameterValue(flowId, node.id!!, paramDefinitions1!!.id!!, syntaxValue.__typename === "LiteralValue" ? (!!syntaxValue.value ? syntaxValue : undefined) : syntaxValue); } + changedParameters.current.clear() + }) + }, [flowStore, sortedParameters]) + + const [inputs, validate] = useForm>({ + initialValues: initialValues, + validate: validations, + truthyValidationBeforeSubmit: false, + onSubmit: onSubmit + }) + + return + {sortedParameters.map(parameter => { + + if (!parameter) return null const parameterDefinition = paramDefinitions[parameter.id!!] - const result = suggestionsById[parameter.id!!] - const title = parameterDefinition?.names ? parameterDefinition?.names?.nodes!![0]?.content : parameterDefinition?.id - const description = parameterDefinition?.descriptions ? parameterDefinition?.descriptions?.nodes!![0]?.content : JSON.stringify(parameterDefinition?.dataTypeIdentifier) - const defaultValue: string | undefined = parameter.value?.__typename === "LiteralValue" ? (typeof parameter.value?.value === "object" ? JSON.stringify(parameter.value?.value) : parameter.value.value) : JSON.stringify(parameter.value) + const title = parameterDefinition?.names ? parameterDefinition?.names!![0]?.content : parameterDefinition?.id + const description = parameterDefinition?.descriptions ? parameterDefinition?.descriptions!![0]?.content : JSON.stringify(parameterDefinition?.dataTypeIdentifier) return
- { - const rawValue = value ?? "" - const textValue = typeof rawValue === "string" ? rawValue : String(rawValue) - - const buildTextSegment = (text: string): InputSyntaxSegment[] => [{ - type: "text", - start: 0, - end: text.length, - visualLength: text.length, - content: text, - }] - - const buildBlockSegment = (node: React.ReactNode): InputSyntaxSegment[] => [{ - type: "block", - start: 0, - end: textValue.length, - visualLength: 1, - content: node, - }] - - try { - - const parsed = JSON.parse(textValue) as NodeParameterValue - if (parsed?.__typename === "NodeFunctionIdWrapper") { - const node = flowService.getNodeById(flowId, parsed.id) - const functionDefinition = functionService.getById(node?.functionDefinition?.id) - return buildBlockSegment( - {functionDefinition?.names?.nodes!![0]?.content} - ) - } - - if (parsed?.__typename === "ReferenceValue") { - const refObject = parsed as ReferenceValue - return buildBlockSegment( - {refObject.depth}-{refObject.scope}-{refObject.node} - ) - } - } catch (e) { - // fall through to text rendering - } - - return buildTextSegment(textValue) - }} - defaultValue={defaultValue} - onSuggestionSelect={(suggestion) => { - submitValue(suggestion.value) - }} - //TODO: validation - formValidation={{ - setValue: () => {}, - valid: true, - notValidMessage: "" - }} - onBlur={submitValueEvent} - onClear={submitValueEvent} - suggestionsFooter={} - suggestions={toInputSuggestions(result)} - + {/*@ts-ignore*/} + { + changedParameters.current.add(parameter.id!!) + validate() + }} + {...inputs.getInputProps(parameter.id!!)} />
})}
- -} \ No newline at end of file +} diff --git a/src/components/d-flow-file/DFlowTabTrigger.tsx b/src/components/d-flow-file/DFlowTabTrigger.tsx index 1e47f301f..e360d037b 100644 --- a/src/components/d-flow-file/DFlowTabTrigger.tsx +++ b/src/components/d-flow-file/DFlowTabTrigger.tsx @@ -1,15 +1,15 @@ import React from "react"; import {useService} from "../../utils"; import {DFlowReactiveService} from "../d-flow"; -import {TextInput} from "../form"; import {Flex} from "../flex/Flex"; import {DFlowTypeReactiveService} from "../d-flow-type"; import {DFlowSuggestion} from "../d-flow-suggestion"; -import {useSuggestions} from "../d-flow-suggestion/DFlowSuggestion.hook"; -import {DFlowSuggestionMenuFooter} from "../d-flow-suggestion/DFlowSuggestionMenuFooter"; +import {useValueSuggestions} from "../d-flow-suggestion/DFlowValueSuggestions.hook"; +import {useDataTypeSuggestions} from "../d-flow-suggestion/DFlowDataTypeSuggestions.hook"; import {toInputSuggestions} from "../d-flow-suggestion/DFlowSuggestionMenu.util"; import type {DataType, Flow, NodeParameterValue, Scalars} from "@code0-tech/sagittarius-graphql-types"; import {DFlowInputDataType} from "../d-flow-input/DFlowInputDataType"; +import {DFlowInputDefault} from "../d-flow-input/DFlowInputDefault"; export interface DFlowTabTriggerProps { instance: Flow @@ -21,14 +21,19 @@ export const DFlowTabTrigger: React.FC = (props) => { const flowTypeService = useService(DFlowTypeReactiveService) const flowService = useService(DFlowReactiveService) - const [,startTransition] = React.useTransition() + const [, startTransition] = React.useTransition() const definition = flowTypeService.getById(instance.type?.id!!) - const suggestionsById: Record = {} definition?.flowTypeSettings?.forEach(settingDefinition => { - suggestionsById[settingDefinition.identifier!!] = useSuggestions({dataType: settingDefinition.dataType}, [], instance.id, 0, [0], 0) + const dataTypeIdentifier = {dataType: settingDefinition.dataType} + const valueSuggestions = useValueSuggestions(dataTypeIdentifier) + const dataTypeSuggestions = useDataTypeSuggestions(dataTypeIdentifier) + suggestionsById[settingDefinition.identifier!!] = [ + ...valueSuggestions, + ...dataTypeSuggestions, + ].sort() }) @@ -39,8 +44,8 @@ export const DFlowTabTrigger: React.FC = (props) => { }} initialValue={instance.inputType || definition.inputType} blockingDataType={definition.inputType}/> : null} {definition?.flowTypeSettings?.map(settingDefinition => { const setting = instance.settings?.nodes?.find(s => s?.flowSettingIdentifier == settingDefinition.identifier) - const title = settingDefinition.names?.nodes!![0]?.content ?? "" - const description = settingDefinition?.descriptions?.nodes!![0]?.content ?? "" + const title = settingDefinition.names!![0]?.content ?? "" + const description = settingDefinition?.descriptions!![0]?.content ?? "" const result = suggestionsById[settingDefinition.identifier!!] if (!setting) return null @@ -50,10 +55,10 @@ export const DFlowTabTrigger: React.FC = (props) => { const submitValue = (value: NodeParameterValue) => { startTransition(async () => { - if (value.__typename == "LiteralValue") { - await flowService.setSettingValue(props.instance.id, setting.id, value.value) + if (value?.__typename == "LiteralValue") { + await flowService.setSettingValue(props.instance.id, setting.flowSettingIdentifier!, value.value) } else { - await flowService.setSettingValue(props.instance.id, setting.id, value) + await flowService.setSettingValue(props.instance.id, setting.flowSettingIdentifier!, value) } }) @@ -74,19 +79,22 @@ export const DFlowTabTrigger: React.FC = (props) => { } return
- { - submitValue(suggestion.value) - }} - suggestionsFooter={} - suggestions={toInputSuggestions(result)} + { + submitValue(suggestion.value) + }} + suggestions={toInputSuggestions(result)} />
})}
-} \ No newline at end of file +} diff --git a/src/components/d-flow-file/DFlowTabs.tsx b/src/components/d-flow-file/DFlowTabs.tsx index b76837243..739495c51 100644 --- a/src/components/d-flow-file/DFlowTabs.tsx +++ b/src/components/d-flow-file/DFlowTabs.tsx @@ -75,13 +75,12 @@ export const DFlowTabs: React.FC = (props) => { data-id={id} value={activeTabId} onValueChange={(value) => { - fileTabsService.activateTab(value); // mutieren reicht; kein .update() nötig, wenn setState benutzt wird - fileTabsService.update() + fileTabsService.activateTab(value); }} > + - + } > {visibleTabs.map((tab: FileTabsView, _: number) => { diff --git a/src/components/d-flow-folder/DFlowFolder.tsx b/src/components/d-flow-folder/DFlowFolder.tsx index 1667a4fbe..ab3a65951 100644 --- a/src/components/d-flow-folder/DFlowFolder.tsx +++ b/src/components/d-flow-folder/DFlowFolder.tsx @@ -6,7 +6,6 @@ import {Code0Component, mergeCode0Props, useService, useStore} from "../../utils import { IconChevronDown, IconChevronRight, - IconDots, IconFile, IconFolderFilled, IconFolderOpen @@ -23,6 +22,7 @@ import { DFlowFolderContextMenuItemData } from "./DFlowFolderContextMenu"; import {md5} from "js-md5"; +import {hashToColor} from "../d-flow/DFlow.util"; export interface DFlowFolderProps { @@ -216,24 +216,34 @@ export const DFlowFolder = React.forwardRef export const DFlowFolderGroup: React.FC = (props) => { - const {name, flows, defaultOpen = false, children, ...rest} = props + const { + name, + flows, + defaultOpen = false, + children, + onCreate, + onDelete, + onRename, + activeFlowId, + namespaceId, + projectId, + ...code0Props + } = props const [open, setOpen] = React.useState(defaultOpen) + const contextMenuProps = {onCreate, onDelete, onRename, activeFlowId, namespaceId, projectId} return <> -
setOpen(prevState => !prevState)} {...mergeCode0Props(`d-folder`, rest)}> + }} {...contextMenuProps}> +
setOpen(prevState => !prevState)} {...mergeCode0Props(`d-folder`, code0Props)}> {open ? : } {name} - @@ -248,23 +258,31 @@ export const DFlowFolderGroup: React.FC = (props) => { export const DFlowFolderItem: React.FC = (props) => { - const {name, path, flow, onSelect, active, ...rest} = props - - const colorHash = md5(path + name) - const hashToHue = (md5: string): number => { - // nimm z.B. 8 Hex-Zeichen = 32 Bit - const int = parseInt(md5.slice(0, 8), 16) - return int % 360 - } + const { + name, + path, + flow, + onSelect, + active, + onCreate, + onDelete, + onRename, + activeFlowId, + namespaceId, + projectId, + ...code0Props + } = props + + const contextMenuProps = {onCreate, onDelete, onRename, activeFlowId, namespaceId, projectId} return -
+
onSelect?.(flow)}> - + {name}
diff --git a/src/components/d-flow-folder/DFlowFolderContextMenu.tsx b/src/components/d-flow-folder/DFlowFolderContextMenu.tsx index 5562c2258..f8cc7bb2d 100644 --- a/src/components/d-flow-folder/DFlowFolderContextMenu.tsx +++ b/src/components/d-flow-folder/DFlowFolderContextMenu.tsx @@ -69,7 +69,7 @@ export const DFlowFolderContextMenu: React.FC = (pr return { props.onCreate?.(flowType.id) }}> - {flowType.names?.nodes!![0]?.content ?? flowType.id} + {flowType.names!![0]?.content ?? flowType.id} })} diff --git a/src/components/d-flow-folder/DFlowFolderItemPathInput.tsx b/src/components/d-flow-folder/DFlowFolderItemPathInput.tsx index 5753f83eb..cfc9e513a 100644 --- a/src/components/d-flow-folder/DFlowFolderItemPathInput.tsx +++ b/src/components/d-flow-folder/DFlowFolderItemPathInput.tsx @@ -33,6 +33,7 @@ export const DFlowFolderItemPathInput: React.FC = return splitValue.map((value, index) => { const segment = { type: splitValue.length - 1 !== index ? "block" : "text", + value: value, start: cursor, end: cursor + value.length, visualLength: splitValue.length - 1 !== index ? 1 : value.length, @@ -45,4 +46,4 @@ export const DFlowFolderItemPathInput: React.FC = } return -} \ No newline at end of file +} diff --git a/src/components/d-flow-function/DFlowFunction.input.hook.ts b/src/components/d-flow-function/DFlowFunction.input.hook.ts index cdd55fb1d..7d94e7f07 100644 --- a/src/components/d-flow-function/DFlowFunction.input.hook.ts +++ b/src/components/d-flow-function/DFlowFunction.input.hook.ts @@ -10,8 +10,6 @@ export const useInputType = ( dataTypeService: DFlowDataTypeReactiveService ): DataTypeIdentifier | null => { - if (!func.returnType) return null - const genericTypeMap = resolveGenericKeys(func, values, dataTypeService) return replaceGenericKeysInType(type, genericTypeMap) diff --git a/src/components/d-flow-function/DFlowFunction.return.hook.ts b/src/components/d-flow-function/DFlowFunction.return.hook.ts index f8a879854..2dd3dab18 100644 --- a/src/components/d-flow-function/DFlowFunction.return.hook.ts +++ b/src/components/d-flow-function/DFlowFunction.return.hook.ts @@ -9,7 +9,7 @@ export const useReturnType = ( dataTypeService: DFlowDataTypeReactiveService ): DataTypeIdentifier | null => { - if (!func.returnType) return null + if (!func?.returnType) return null const genericTypeMap = resolveGenericKeys(func, values, dataTypeService) return replaceGenericKeysInType(func.returnType, genericTypeMap) diff --git a/src/components/d-flow-function/DFlowFunction.view.ts b/src/components/d-flow-function/DFlowFunction.view.ts index c8bcc0910..f94e2e4c2 100644 --- a/src/components/d-flow-function/DFlowFunction.view.ts +++ b/src/components/d-flow-function/DFlowFunction.view.ts @@ -1,26 +1,25 @@ -import type { +import { DataTypeIdentifier, FunctionDefinition, Maybe, ParameterDefinition, RuntimeFunctionDefinition, - Scalars, - TranslationConnection + Scalars, Translation, } from "@code0-tech/sagittarius-graphql-types"; export class FunctionDefinitionView { /** Name of the function */ - private readonly _aliases?: Maybe; + private readonly _aliases?: Maybe>; /** Time when this FunctionDefinition was created */ private readonly _createdAt?: Maybe; /** Deprecation message of the function */ - private readonly _deprecationMessages?: Maybe; + private readonly _deprecationMessages?: Maybe>; /** Description of the function */ - private readonly _descriptions?: Maybe; + private readonly _descriptions?: Maybe>; /** Display message of the function */ - private readonly _displayMessages?: Maybe; + private readonly _displayMessages?: Maybe>; /** Documentation of the function */ - private readonly _documentations?: Maybe; + private readonly _documentations?: Maybe>; /** Generic keys of the function */ private readonly _genericKeys?: Maybe>; /** Global ID of this FunctionDefinition */ @@ -28,7 +27,7 @@ export class FunctionDefinitionView { /** Identifier of the function */ private readonly _identifier?: Maybe; /** Name of the function */ - private readonly _names?: Maybe; + private readonly _names?: Maybe>; /** Parameters of the function */ private readonly _parameterDefinitions?: Maybe; /** Return type of the function */ @@ -59,7 +58,7 @@ export class FunctionDefinitionView { } - get aliases(): Maybe | undefined { + get aliases(): Maybe> | undefined { return this._aliases; } @@ -67,19 +66,19 @@ export class FunctionDefinitionView { return this._createdAt; } - get deprecationMessages(): Maybe | undefined { + get deprecationMessages(): Maybe> | undefined { return this._deprecationMessages; } - get descriptions(): Maybe | undefined { + get descriptions(): Maybe> | undefined { return this._descriptions; } - get displayMessages(): Maybe | undefined { + get displayMessages(): Maybe> | undefined { return this._displayMessages; } - get documentations(): Maybe | undefined { + get documentations(): Maybe> | undefined { return this._documentations; } @@ -95,7 +94,7 @@ export class FunctionDefinitionView { return this._identifier; } - get names(): Maybe | undefined { + get names(): Maybe> | undefined { return this._names; } @@ -149,15 +148,15 @@ export class ParameterDefinitionView { /** Data type of the parameter */ private readonly _dataTypeIdentifier?: Maybe; /** Description of the parameter */ - private readonly _descriptions?: Maybe; + private readonly _descriptions?: Maybe>; /** Documentation of the parameter */ - private readonly _documentations?: Maybe; + private readonly _documentations?: Maybe>; /** Global ID of this ParameterDefinition */ private readonly _id?: Maybe; /** Identifier of the parameter */ private readonly _identifier?: Maybe; /** Name of the parameter */ - private readonly _names?: Maybe; + private readonly _names?: Maybe>; /** Time when this ParameterDefinition was last updated */ private readonly _updatedAt?: Maybe; @@ -181,11 +180,11 @@ export class ParameterDefinitionView { return this._dataTypeIdentifier; } - get descriptions(): Maybe | undefined { + get descriptions(): Maybe> | undefined { return this._descriptions; } - get documentations(): Maybe | undefined { + get documentations(): Maybe> | undefined { return this._documentations; } @@ -197,7 +196,7 @@ export class ParameterDefinitionView { return this._identifier; } - get names(): Maybe | undefined { + get names(): Maybe> | undefined { return this._names; } diff --git a/src/components/d-flow-function/DFlowFunctionDefaultCard.tsx b/src/components/d-flow-function/DFlowFunctionDefaultCard.tsx index 8a0aac9f2..7f2a60b38 100644 --- a/src/components/d-flow-function/DFlowFunctionDefaultCard.tsx +++ b/src/components/d-flow-function/DFlowFunctionDefaultCard.tsx @@ -1,10 +1,10 @@ -import {Code0Component, InspectionSeverity} from "../../utils"; +import {Code0Component, underlineBySeverity} from "../../utils"; import {Handle, Node, NodeProps, Position, useReactFlow, useStore} from "@xyflow/react"; -import React, {memo} from "react"; +import React, {CSSProperties, memo} from "react"; import {Card} from "../card/Card"; import "./DFlowFunctionDefaultCard.style.scss"; import {Flex} from "../flex/Flex"; -import {IconFile} from "@tabler/icons-react"; +import {IconNote} from "@tabler/icons-react"; import {Text} from "../text/Text"; import {useService, useStore as usePictorStore} from "../../utils/contextStore"; import {DFlowFunctionReactiveService} from "./DFlowFunction.service"; @@ -15,6 +15,10 @@ import {DFlowTabDefault} from "../d-flow-file/DFlowTabDefault"; import type {NodeFunction, Scalars} from "@code0-tech/sagittarius-graphql-types"; import {Badge} from "../badge/Badge"; import {md5} from "js-md5"; +import {DFlowInputLiteralBadge} from "../d-flow-input/DFlowInputLiteralBadge"; +import {DFlowInputReferenceBadge} from "../d-flow-input/DFlowInputReferenceBadge"; +import {DFlowInputNodeBadge} from "../d-flow-input/DFlowInputNodeBadge"; +import {hashToColor} from "../d-flow/DFlow.util"; export interface DFlowFunctionDefaultCardDataProps extends Omit, "scope"> { nodeId: NodeFunction['id'] @@ -74,50 +78,40 @@ export const DFlowFunctionDefaultCard: React.FC = .flatMap(p => p.trim() === "," ? [","] : p.trim() ? [p.trim()] : []) ); - const colorHash = md5(id) - const hashToHue = (md5: string): number => { - // nimm z.B. 8 Hex-Zeichen = 32 Bit - const int = parseInt(md5.slice(0, 8), 16) - return int % 360 - } - - const displayMessage = React.useMemo(() => splitTemplate(definition?.displayMessages?.nodes!![0]?.content ?? "").map(item => { + const displayMessage = React.useMemo(() => splitTemplate(definition?.displayMessages!![0]?.content ?? "").map(item => { const param = node?.parameters?.nodes?.find(p => { const parameterDefinition = definition?.parameterDefinitions?.find(pd => pd.id == p?.id) return parameterDefinition?.identifier == item }) + const parameterValidation = validation?.filter(v => v.parameterId === param?.id) + const decorationStyle: CSSProperties = + parameterValidation?.length + ? underlineBySeverity[parameterValidation[0].type] + : {}; + if (param) { switch (param?.value?.__typename) { case "LiteralValue": - return - - {String(param?.value?.value)} - - + return
+ +
case "ReferenceValue": - return - - {String(param?.value.node)}-{String(param?.value.depth)}-{String(param?.value.scope)} - - + return
+ +
case "NodeFunctionIdWrapper": - const hash = md5(`${id}-param-${JSON.stringify(param)}`) - const node = flowService.getNodeById(props.data.flowId, param.value.id) - return - - {String(functionService.getById(node?.functionDefinition?.id)?.names?.nodes!![0]?.content)} - + return
+ - +
} return @@ -135,11 +129,10 @@ export const DFlowFunctionDefaultCard: React.FC = active: false, closeable: true, children: <> - - {definition?.names?.nodes!![0]?.content} + + {definition?.names!![0]?.content} , - content: + content: }) }, [node?.id, definition, data]) @@ -151,7 +144,7 @@ export const DFlowFunctionDefaultCard: React.FC = outline={firstItem.id === id} borderColor={activeTabId == node?.id ? "info" : undefined} className={activeTabId == node?.id ? "d-flow-viewport-default-card--active" : undefined} - color={(validation?.filter(v => v.type === InspectionSeverity.ERROR)?.length ?? 0) > 0 ? "error" : "primary"} + color={"primary"} onClick={() => { flowInstance.setViewport({ x: (viewportWidth / 2) + (props.positionAbsoluteX * -1) - (width / 2), @@ -181,9 +174,9 @@ export const DFlowFunctionDefaultCard: React.FC = position={data.isParameter ? Position.Left : Position.Bottom} /> - + {displayMessage} ); -}) \ No newline at end of file +}) diff --git a/src/components/d-flow-function/DFlowFunctionSuggestionCard.tsx b/src/components/d-flow-function/DFlowFunctionSuggestionCard.tsx index aa7b05d9d..9eb6b020a 100644 --- a/src/components/d-flow-function/DFlowFunctionSuggestionCard.tsx +++ b/src/components/d-flow-function/DFlowFunctionSuggestionCard.tsx @@ -19,7 +19,7 @@ export type DFlowFunctionSuggestionCardProps = NodeProps = memo((props) => { const [, startTransition] = React.useTransition() - const result = useSuggestions(undefined, [], props.data.flowId, 0, [0], 0) + const result = useSuggestions(props.data.flowId, props.data.parentFunction?.id) const flowService = useService(DFlowReactiveService) const flow = flowService.getById(props.data.flowId) @@ -43,4 +43,4 @@ export const DFlowFunctionSuggestionCard: React.FC }/> -}) \ No newline at end of file +}) diff --git a/src/components/d-flow-function/DFlowFunctionTriggerCard.tsx b/src/components/d-flow-function/DFlowFunctionTriggerCard.tsx index 2516da84b..a5b7fd20f 100644 --- a/src/components/d-flow-function/DFlowFunctionTriggerCard.tsx +++ b/src/components/d-flow-function/DFlowFunctionTriggerCard.tsx @@ -39,12 +39,12 @@ export const DFlowFunctionTriggerCard: React.FC = closeable: true, children: <> - {definition?.names?.nodes!![0]?.content} + {definition?.names!![0]?.content} , content: , show: true }) - }, [definition?.id, data.instance, fileTabsService, definition?.names?.nodes]) + }, [definition?.id, data.instance, fileTabsService, definition?.names]) return Starting node @@ -67,7 +67,7 @@ export const DFlowFunctionTriggerCard: React.FC = - {definition?.names?.nodes!![0]?.content ?? definition?.id} + {definition?.names!![0]?.content ?? definition?.id} diff --git a/src/components/d-flow-input/DFlowInputDataType.tsx b/src/components/d-flow-input/DFlowInputDataType.tsx index 6d9a74616..13b8854b0 100644 --- a/src/components/d-flow-input/DFlowInputDataType.tsx +++ b/src/components/d-flow-input/DFlowInputDataType.tsx @@ -22,7 +22,7 @@ import {Text} from "../text/Text"; import {Flex} from "../flex/Flex"; import {Badge} from "../badge/Badge"; import {InputLabel} from "../form"; -import {useSuggestions} from "../d-flow-suggestion/DFlowSuggestion.hook"; +import {useDataTypeSuggestions} from "../d-flow-suggestion/DFlowDataTypeSuggestions.hook"; import {DFlowSuggestionMenuFooter} from "../d-flow-suggestion/DFlowSuggestionMenuFooter"; import {toInputSuggestions} from "../d-flow-suggestion/DFlowSuggestionMenu.util"; import {DFlowSuggestionType} from "../d-flow-suggestion"; @@ -333,14 +333,14 @@ const RuleItem: React.FC<{ const mapper = genericMap.get(identifier.genericKey) const source = mapper?.sourceDataTypeIdentifiers?.[0] return ( - source?.dataType?.name?.nodes?.[0]?.content ?? - source?.genericType?.dataType?.name?.nodes?.[0]?.content + source?.dataType?.name?.[0]?.content ?? + source?.genericType?.dataType?.name?.[0]?.content ) } return ( - identifier.dataType?.name?.nodes?.[0]?.content ?? - identifier.genericType?.dataType?.name?.nodes?.[0]?.content + identifier.dataType?.name?.[0]?.content ?? + identifier.genericType?.dataType?.name?.[0]?.content ) }, [genericMap, identifier, isTypeRule]) @@ -505,11 +505,11 @@ const RuleHeader: React.FC<{ const variant = rule.variant as DataTypeRulesVariant | undefined const isTypeRule = variant ? !NON_TYPE_RULE_VARIANTS.has(variant) : false - const suggestions = isTypeRule ? useSuggestions({ + const suggestions = isTypeRule ? useDataTypeSuggestions({ dataType: { - id: "gid://sagittarius/DataType/878634678" + id: "gid://sagittarius/DataType/-1" } - }, [], "" as Flow['id'], 0, [0], 1, [DFlowSuggestionType.DATA_TYPE]) : [] + }) : [] const rulesCount = (rule?.config as DataTypeRulesParentTypeConfig)?.dataTypeIdentifier?.dataType?.rules?.nodes?.length ?? (rule?.config as DataTypeRulesParentTypeConfig)?.dataTypeIdentifier?.genericType?.dataType?.rules?.nodes?.length ?? genericMap.get((rule?.config as DataTypeRulesParentTypeConfig)?.dataTypeIdentifier?.genericKey!!)?.sourceDataTypeIdentifiers?.map(type => type?.dataType?.rules?.nodes?.length ?? type.genericType?.dataType?.rules?.nodes?.length) ?? 0 const [keyValue, setKeyValue] = React.useState(() => ("key" in (rule?.config ?? {}) ? (rule?.config as any)?.key ?? "" : "")) diff --git a/src/components/d-flow-input/DFlowInputDefault.tsx b/src/components/d-flow-input/DFlowInputDefault.tsx new file mode 100644 index 000000000..b491aac57 --- /dev/null +++ b/src/components/d-flow-input/DFlowInputDefault.tsx @@ -0,0 +1,189 @@ +import React from "react"; +import {TextInput, TextInputProps} from "../form"; +import {Flow, NodeFunction, NodeParameter, ReferenceValue} from "@code0-tech/sagittarius-graphql-types"; +import {MenuItem} from "../menu/Menu"; +import {Text} from "../text/Text"; +import {DFlowSuggestionMenuFooter} from "../d-flow-suggestion/DFlowSuggestionMenuFooter"; +import {toInputSuggestions} from "../d-flow-suggestion/DFlowSuggestionMenu.util"; +import {InputSyntaxSegment} from "../form/Input.syntax.hook"; +import {useService} from "../../utils"; +import {DFlowFunctionReactiveService} from "../d-flow-function"; +import {DFlowReactiveService} from "../d-flow"; +import {useSuggestions} from "../d-flow-suggestion/DFlowSuggestion.hook"; +import {DFlowSuggestion} from "../d-flow-suggestion"; +import {DFlowInputNodeBadge} from "./DFlowInputNodeBadge"; +import {DFlowInputReferenceBadge} from "./DFlowInputReferenceBadge"; +import {DFlowTypeReactiveService} from "../d-flow-type"; + +export interface DFlowInputDefaultProps extends TextInputProps { + flowId: Flow['id'] + nodeId: NodeFunction['id'] + parameterId: NodeParameter['id'] +} + +export const splitTextAndObjects = (input: string) => { + const result: (string | Record)[] = [] + + let currentText = "" + let currentObject = "" + let braceLevel = 0 + let inString: '"' | "'" | "" = "" + let escaped = false + + const pushText = () => { + if (currentText) result.push(currentText) + currentText = "" + } + + const parseObject = (value: string) => { + try { + return JSON.parse(value) + } catch { + try { + return JSON.parse( + value + .replace(/'/g, `"`) + .replace(/([{,]\s*)([A-Za-z_$][\w$]*)(\s*:)/g, `$1"$2"$3`) + ) + } catch { + return {} + } + } + } + + input.split("").forEach(char => { + if (braceLevel > 0) { + currentObject += char + + if (escaped) { + escaped = false + return + } + + if (char === "\\") { + escaped = true + return + } + + if (inString) { + if (char === inString) inString = "" + return + } + + if (char === `"` || char === `'`) { + inString = char as any + return + } + + if (char === "{") braceLevel++ + if (char === "}") braceLevel-- + + if (braceLevel === 0) { + result.push(parseObject(currentObject)) + currentObject = "" + } + + return + } + + if (char === "{") { + pushText() + braceLevel = 1 + currentObject = "{" + return + } + + currentText += char + }) + + pushText() + return result +} + +export const DFlowInputDefault: React.FC = (props) => { + + const {flowId, nodeId, parameterId, ...rest} = props + + const functionService = useService(DFlowFunctionReactiveService) + const flowService = useService(DFlowReactiveService) + const flowTypeService = useService(DFlowTypeReactiveService) + + const flow = React.useMemo(() => { + return flowService.getById(flowId) + }, [flowService, flowId]) + + const suggestions = rest.suggestions || useSuggestions(flowId, nodeId, parameterId) + + const transformSyntax = React.useCallback((value: string): InputSyntaxSegment[] => { + + const textValue = String(value ?? "") + let cursor = 0 + + const buildTextSegment = (text: string): InputSyntaxSegment => { + const segment = { + type: "text", + value: text, + start: cursor, + end: cursor + text.length, + visualLength: text.length, + content: text, + } as InputSyntaxSegment + cursor += text.length + return segment + } + + const buildBlockSegment = (node: React.ReactNode, value: Record): InputSyntaxSegment => { + const segment = { + type: "block", + value: value, + start: cursor, + end: cursor + JSON.stringify(value).length, + visualLength: 1, + content: node, + } as InputSyntaxSegment + cursor += JSON.stringify(value).length + return segment + } + + return splitTextAndObjects(textValue).map(value => { + + if (typeof value !== "object") { + return buildTextSegment(value) + } + + if (value?.__typename === "NodeFunctionIdWrapper" || value?.__typename === "NodeFunction") { + const node = value?.__typename === "NodeFunction" ? value : flowService.getNodeById(flowId, value.id) + return buildBlockSegment( + , + value + ) + } + + if (value?.__typename === "ReferenceValue") { + const node = (value as ReferenceValue).nodeFunctionId === "gid://sagittarius/NodeFunction/-1" ? flowTypeService.getById(flow?.type?.id) : functionService.getById(flowService.getNodeById(flowId, (value as ReferenceValue).nodeFunctionId)?.functionDefinition?.id) + return buildBlockSegment( + , + value + ) + } + + if (value?.__typename === "LiteralValue") { + return buildTextSegment(value.value) + } + + return buildTextSegment(value as any as string) + }) + }, [functionService, flowService]) + + return No suggestion found} + suggestionsFooter={} + filterSuggestionsByLastToken + enforceUniqueSuggestions + validationUsesSyntax + transformSyntax={transformSyntax} + suggestions={rest.suggestions ? rest.suggestions : toInputSuggestions(suggestions as DFlowSuggestion[])} + {...rest} + + /> +} diff --git a/src/components/d-flow-input/DFlowInputLiteralBadge.tsx b/src/components/d-flow-input/DFlowInputLiteralBadge.tsx new file mode 100644 index 000000000..a6ffab07b --- /dev/null +++ b/src/components/d-flow-input/DFlowInputLiteralBadge.tsx @@ -0,0 +1,21 @@ +import React from "react"; +import {Badge, BadgeType} from "../badge/Badge"; +import {LiteralValue} from "@code0-tech/sagittarius-graphql-types"; +import {Text} from "../text/Text"; + +export interface DFlowInputLiteralBadgeProps extends Omit { + value: LiteralValue +} + +export const DFlowInputLiteralBadge: React.FC = (props) => { + + const {value, ...rest} = props + + return + + {String(value.value)} + + +} \ No newline at end of file diff --git a/src/components/d-flow-input/DFlowInputNodeBadge.tsx b/src/components/d-flow-input/DFlowInputNodeBadge.tsx new file mode 100644 index 000000000..e4dfce249 --- /dev/null +++ b/src/components/d-flow-input/DFlowInputNodeBadge.tsx @@ -0,0 +1,62 @@ +import {Badge, BadgeType} from "../badge/Badge"; +import {Flow, NodeFunction, NodeFunctionIdWrapper} from "@code0-tech/sagittarius-graphql-types"; +import React from "react"; +import {md5} from "js-md5"; +import {IconBolt, IconNote} from "@tabler/icons-react"; +import {Text} from "../text/Text"; +import {useService, useStore} from "../../utils"; +import {DFlowFunctionReactiveService, FunctionDefinitionView} from "../d-flow-function"; +import {DFlowReactiveService} from "../d-flow"; +import {DFlowTypeReactiveService, FlowTypeView} from "../d-flow-type"; +import {hashToColor} from "../d-flow/DFlow.util"; + +export interface DFlowInputNodeBadgeProps extends Omit { + value: NodeFunction | NodeFunctionIdWrapper + flowId: Flow['id'] + definition?: FunctionDefinitionView | FlowTypeView +} + +export const DFlowInputNodeBadge: React.FC = (props) => { + + const {value, flowId, definition, ...rest} = props + + const functionService = definition || useService(DFlowFunctionReactiveService) + const functionStore = definition || useStore(DFlowFunctionReactiveService) + const flowService = definition || useService(DFlowReactiveService) + const flowStore = definition || useStore(DFlowReactiveService) + const flowTypeService = definition || useService(DFlowTypeReactiveService) + const flowTypeStore = definition || useStore(DFlowTypeReactiveService) + + const isTrigger = value.__typename === "NodeFunctionIdWrapper" && value.id === "gid://sagittarius/NodeFunction/-1" + + const node: NodeFunction | FlowTypeView | NodeFunctionIdWrapper | undefined = React.useMemo(() => { + if (isTrigger && !definition) { + const flow = (flowService as DFlowReactiveService).getById(flowId) + return (flowTypeService as DFlowTypeReactiveService).getById(flow?.type?.id) + } + return value.__typename === "NodeFunction" || definition ? value : (flowService as DFlowReactiveService).getNodeById(flowId, value.id) + }, [flowStore, flowTypeStore]) + + const name = React.useMemo(() => { + if (definition) { + return definition.names?.[0]?.content + } else if (isTrigger && node instanceof FlowTypeView) { + return node.names?.[0]?.content + } + return (functionService as DFlowFunctionReactiveService).getById((node as NodeFunction)?.functionDefinition?.id)?.names?.[0]?.content + }, [functionStore, node]) + + return + { + isTrigger + ? + : + } + + {String(name)} + + +} \ No newline at end of file diff --git a/src/components/d-flow-input/DFlowInputReferenceBadge.tsx b/src/components/d-flow-input/DFlowInputReferenceBadge.tsx new file mode 100644 index 000000000..aede523d5 --- /dev/null +++ b/src/components/d-flow-input/DFlowInputReferenceBadge.tsx @@ -0,0 +1,45 @@ +import {Badge, BadgeType} from "../badge/Badge"; +import {Flow, ReferenceValue} from "@code0-tech/sagittarius-graphql-types"; +import React from "react"; +import {Text} from "../text/Text"; +import {Flex} from "../flex/Flex"; +import {DFlowInputNodeBadge} from "./DFlowInputNodeBadge"; +import {FunctionDefinitionView} from "../d-flow-function"; +import {FlowTypeView} from "../d-flow-type"; +import {IconVariable} from "@tabler/icons-react"; + +export interface DFlowInputReferenceBadge extends Omit { + value: ReferenceValue + flowId: Flow['id'] + definition?: FunctionDefinitionView | FlowTypeView +} + +export const DFlowInputReferenceBadge: React.FC = (props) => { + + const {value, flowId, definition, ...rest} = props + const content = React.useMemo(() => { + console.log(value) + if (value.nodeFunctionId && flowId) { + return + + {"inputTypeIdentifier" in value && value.inputTypeIdentifier ? "." + value.inputTypeIdentifier : ""} + {value.referencePath ? "." + (value.referencePath?.map(path => path.path).join(".") ?? "") : ""} + + } + return `{{ ${String(value.depth)}-${String(value.scope)}-${String(value.node)}-${value.referencePath?.map(path => path.path).join(".") ?? ""} }}` + }, [value]) + + return + + + {content} + + +} \ No newline at end of file diff --git a/src/components/d-flow-panel/DFlowPanelControl.tsx b/src/components/d-flow-panel/DFlowPanelControl.tsx index 34a38a298..264f68245 100644 --- a/src/components/d-flow-panel/DFlowPanelControl.tsx +++ b/src/components/d-flow-panel/DFlowPanelControl.tsx @@ -26,23 +26,29 @@ export const DFlowPanelControl: React.FC = (props) => { const fileTabsService = useService(FileTabsService) const fileTabsStore = useStore(FileTabsService) const flowService = useService(DFlowReactiveService) + const flowStore = useStore(DFlowReactiveService) const [, startTransition] = React.useTransition() //memoized values const activeTab = React.useMemo(() => { return fileTabsStore.find((t: any) => (t as any).active) }, [fileTabsStore, fileTabsService]) - const result = useSuggestions(undefined, [], flowId, 0, [0], 0) + const result = useSuggestions(flowId, activeTab?.content?.props?.node?.id as NodeFunction['id'] | undefined) //callbacks const deleteActiveNode = React.useCallback(() => { if (!activeTab) return + if (!(activeTab.content.props.flowId as Flow['id'])) return // @ts-ignore startTransition(async () => { + const linkedNodes = flowService.getLinkedNodesById(flowId, activeTab.content.props.node.id) + linkedNodes.forEach(node => { + if (node.id) fileTabsService.deleteById(node.id) + }) + await flowService.deleteNodeById((activeTab.content.props.flowId as Flow['id']), (activeTab.content.props.node.id as NodeFunction['id'])) }) - fileTabsService.deleteById(activeTab.id) - }, [activeTab, flowService]) + }, [activeTab, flowService, flowStore]) const addNodeToFlow = React.useCallback((suggestion: any) => { if (flowId && suggestion.value.__typename === "NodeFunction" && "node" in activeTab.content.props) { @@ -56,8 +62,6 @@ export const DFlowPanelControl: React.FC = (props) => { } }, [flowId, flowService, activeTab]) - //TODO: Add execute flow button functionality - //TODO: disable button if active tab is the trigger node return @@ -83,7 +87,7 @@ export const DFlowPanelControl: React.FC = (props) => { - @@ -107,4 +111,4 @@ export const DFlowPanelControl: React.FC = (props) => { -} \ No newline at end of file +} diff --git a/src/components/d-flow-suggestion/DFlowDataTypeSuggestions.hook.tsx b/src/components/d-flow-suggestion/DFlowDataTypeSuggestions.hook.tsx new file mode 100644 index 000000000..53027f786 --- /dev/null +++ b/src/components/d-flow-suggestion/DFlowDataTypeSuggestions.hook.tsx @@ -0,0 +1,27 @@ +import React from "react"; +import {useService, useStore} from "../../utils"; +import {DFlowDataTypeReactiveService} from "../d-flow-data-type"; +import {DFlowSuggestion, DFlowSuggestionType} from "./DFlowSuggestion.view"; +import type {DataTypeIdentifier} from "@code0-tech/sagittarius-graphql-types"; + +export const useDataTypeSuggestions = (dataTypeIdentifier?: DataTypeIdentifier): DFlowSuggestion[] => { + const dataTypeService = useService(DFlowDataTypeReactiveService) + const dataTypeStore = useStore(DFlowDataTypeReactiveService) + + const dataType = React.useMemo(() => ( + dataTypeIdentifier ? dataTypeService?.getDataType(dataTypeIdentifier) : undefined + ), [dataTypeIdentifier, dataTypeService, dataTypeStore]) + + // @ts-ignore + return React.useMemo(() => { + if (!dataType || dataType.variant !== "DATA_TYPE") return [] + + return dataTypeService.values().map(nextDataType => ({ + path: [], + type: DFlowSuggestionType.DATA_TYPE, + displayText: [nextDataType.name!![0]?.content!], + /*@ts-ignore*/ + value: nextDataType.json, + })) + }, [dataType, dataTypeService, dataTypeStore]) +} diff --git a/src/components/d-flow-suggestion/DFlowFunctionSuggestions.hook.tsx b/src/components/d-flow-suggestion/DFlowFunctionSuggestions.hook.tsx new file mode 100644 index 000000000..2f74d9f67 --- /dev/null +++ b/src/components/d-flow-suggestion/DFlowFunctionSuggestions.hook.tsx @@ -0,0 +1,83 @@ +import React from "react"; +import {useService, useStore} from "../../utils"; +import {DFlowDataTypeReactiveService} from "../d-flow-data-type"; +import {DFlowSuggestion, DFlowSuggestionType} from "./DFlowSuggestion.view"; +import {DFlowFunctionReactiveService} from "../d-flow-function"; +import {isMatchingType, replaceGenericsAndSortType, resolveType} from "../../utils/generics"; +import type { + DataTypeIdentifier, + LiteralValue, + Maybe, + NodeFunction, + NodeParameter, + ReferenceValue +} from "@code0-tech/sagittarius-graphql-types"; + +export const useFunctionSuggestions = ( + dataTypeIdentifier?: DataTypeIdentifier, + genericKeys: string[] = [] +): DFlowSuggestion[] => { + const dataTypeService = useService(DFlowDataTypeReactiveService) + const functionService = useService(DFlowFunctionReactiveService) + const dataTypeStore = useStore(DFlowDataTypeReactiveService) + const functionStore = useStore(DFlowFunctionReactiveService) + + const dataType = React.useMemo(() => ( + dataTypeIdentifier ? dataTypeService?.getDataType(dataTypeIdentifier) : undefined + ), [dataTypeIdentifier, dataTypeService, dataTypeStore]) + + const resolvedType = React.useMemo(() => ( + dataTypeIdentifier ? replaceGenericsAndSortType(resolveType(dataTypeIdentifier, dataTypeService), genericKeys) : undefined + ), [dataTypeIdentifier, dataTypeService, dataTypeStore, genericKeys]) + + return React.useMemo(() => { + const matchingFunctions = functionService.values().filter(funcDefinition => { + if (!dataTypeIdentifier || !resolvedType) return true + if (funcDefinition.runtimeFunctionDefinition?.identifier == "std::control::return" && dataTypeIdentifier) return false + if (dataType?.variant === "NODE") return true + if (!funcDefinition.returnType) return false + if (!funcDefinition.genericKeys) return false + const resolvedReturnType = replaceGenericsAndSortType(resolveType(funcDefinition.returnType, dataTypeService), funcDefinition.genericKeys) + return isMatchingType(resolvedType, resolvedReturnType) + }).sort((a, b) => { + const [rA, pA, fA] = a.runtimeFunctionDefinition!!.identifier!!.split("::"); + const [rB, pB, fB] = b.runtimeFunctionDefinition!!.identifier!!.split("::"); + + const runtimeCmp = rA.localeCompare(rB); + if (runtimeCmp !== 0) return runtimeCmp; + + const packageCmp = pA.localeCompare(pB); + if (packageCmp !== 0) return packageCmp; + + return fA.localeCompare(fB); + }) + + return matchingFunctions.map(funcDefinition => { + const nodeFunctionSuggestion: LiteralValue | ReferenceValue | NodeFunction = { + __typename: "NodeFunction", + id: `gid://sagittarius/NodeFunction/1`, + functionDefinition: { + id: funcDefinition.id, + runtimeFunctionDefinition: funcDefinition.runtimeFunctionDefinition + }, + parameters: { + nodes: (funcDefinition.parameterDefinitions?.map(definition => { + return { + id: definition.id, + runtimeParameter: { + id: definition.id + } + } + }) ?? []) as Maybe>> + } + } + + return { + path: [], + type: DFlowSuggestionType.FUNCTION, + displayText: [funcDefinition.names!![0]?.content as string], + value: nodeFunctionSuggestion, + } + }) + }, [dataType, dataTypeIdentifier, dataTypeService, functionService, functionStore, resolvedType]) +} diff --git a/src/components/d-flow-suggestion/DFlowReferenceSuggestions.hook.tsx b/src/components/d-flow-suggestion/DFlowReferenceSuggestions.hook.tsx new file mode 100644 index 000000000..9fe34ae02 --- /dev/null +++ b/src/components/d-flow-suggestion/DFlowReferenceSuggestions.hook.tsx @@ -0,0 +1,315 @@ +import React from "react"; +import {useService, useStore} from "../../utils"; +import {DFlowDataTypeReactiveService} from "../d-flow-data-type"; +import {DFlowSuggestion, DFlowSuggestionType} from "./DFlowSuggestion.view"; +import { + isMatchingType, + replaceGenericKeysInType, + replaceGenericsAndSortType, + resolveGenericKeys, + resolveType, + targetForGenericKey +} from "../../utils/generics"; +import { + DataType, + DataTypeIdentifier, + DataTypeRulesContainsKeyConfig, + DataTypeRulesInputTypesConfig, + Flow, + Maybe, + NodeFunction, + NodeFunctionIdWrapper, + NodeParameterValue, + ReferenceValue +} from "@code0-tech/sagittarius-graphql-types"; +import {DFlowFunctionReactiveService} from "../d-flow-function"; +import {DFlowReactiveService} from "../d-flow"; +import {useReturnType} from "../d-flow-function/DFlowFunction.return.hook"; + +interface ExtendedReferenceValue extends ReferenceValue { + parameterIndex?: number + inputTypeIndex?: number + inputTypeIdentifier?: string +} + +export const useReferenceSuggestions = ( + flowId: Flow['id'], + nodeId?: NodeFunction['id'], + dataTypeIdentifier?: DataTypeIdentifier, + genericKeys: string[] = [] +): DFlowSuggestion[] => { + const dataTypeService = useService(DFlowDataTypeReactiveService) + const dataTypeStore = useStore(DFlowDataTypeReactiveService) + const flowService = useService(DFlowReactiveService) + const flowStore = useStore(DFlowReactiveService) + + const nodeContexts = useNodeContext(flowId) + const nodeContext = React.useMemo(() => ( + nodeId ? nodeContexts?.find(context => context.nodeFunctionId === nodeId) : undefined + ), [nodeContexts, nodeId]) + const nodeParameters = React.useMemo(() => { + if (!nodeId) return [] + const node = flowService.getNodeById(flowId, nodeId) + return node?.parameters?.nodes?.map(p => p?.value).filter((value): value is NodeFunctionIdWrapper => value?.__typename === "NodeFunctionIdWrapper") ?? [] + }, [flowId, nodeId, flowService, flowStore]) + + const resolvedType = React.useMemo(() => ( + dataTypeIdentifier ? replaceGenericsAndSortType(resolveType(dataTypeIdentifier, dataTypeService), genericKeys) : undefined + ), [dataTypeIdentifier, dataTypeService, dataTypeStore, genericKeys]) + + const refObjects = useRefObjects(flowId) + + return React.useMemo(() => { + if (!resolvedType || !nodeContext) return [] + + const {depth, scope, node} = nodeContext + return refObjects.flatMap(value => { + if (value.node === null || value.node === undefined) return [] + if (value.depth === null || value.depth === undefined) return [] + if (value.scope === null || value.scope === undefined) return [] + + const isInputTypeRef = value.parameterIndex !== undefined && value.inputTypeIndex !== undefined + const isInputTypeScopeMatch = isInputTypeRef + ? value.scope?.every((scopeId, index) => scope?.[index] === scopeId) + : true + if (isInputTypeRef && !isInputTypeScopeMatch) return [] + if (nodeParameters.some(param => param.id === value.nodeFunctionId)) return [] + if (!isInputTypeRef && value.node >= node!) return [] + if (value.depth > depth!) return [] + if (value.scope.some(r => !scope!.includes(r))) return [] + + const resolvedRefObjectType = replaceGenericsAndSortType(resolveType(value.dataTypeIdentifier!!, dataTypeService), []) + if (!isMatchingType(resolvedType, resolvedRefObjectType)) return [] + + return [{ + path: [], + type: DFlowSuggestionType.REF_OBJECT, + displayText: [`${value.depth}-${value.scope}-${value.node || ''}-${value.referencePath?.map(path => path.path).join(".") ?? ""}`], + value: value as ReferenceValue, + }] + }) + }, [dataTypeService, nodeContext, nodeParameters, refObjects, resolvedType]) +} + + +/** + * Walks the flow starting at its startingNode (depth-first, left-to-right) and collects + * all RefObjects (variables/outputs) with contextual metadata: + * - depth: nesting level (root 0; +1 per NODE-parameter sub-block) + * - scope: PATH of scope ids as number[], e.g. [0], [0,1], [0,2], [0,2,3] ... + * (root is [0]; each NODE-parameter group appends a new unique id) + * - node: GLOBAL visit index across the entire flow (1-based, strictly increasing) + * + * Notes: + * - A NODE-typed parameter opens a new group/lane: depth+1 and scopePath+[newId]. + * - Functions passed as non-NODE parameters are traversed in the SAME depth/scopePath. + * - The `node` id is incremented globally for every visited node and shared by all + * RefObjects (inputs from rules and the return value) produced by that node. + */ +const useRefObjects = (flowId: Flow['id']): Array => { + + const dataTypeService = useService(DFlowDataTypeReactiveService) + const dataTypeStore = useStore(DFlowDataTypeReactiveService) + const functionService = useService(DFlowFunctionReactiveService) + const flowService = useService(DFlowReactiveService) + const flowStore = useStore(DFlowReactiveService) + + const flow = React.useMemo(() => flowService.getById(flowId), [flowId, flowStore]); + const nodeContexts = useNodeContext(flowId) + + const nodeSuggestions = React.useMemo(() => { + return flow?.nodes?.nodes?.map(node => { + + const nodeValues = node?.parameters?.nodes?.map(p => p?.value!!) ?? [] + const functionDefinition = functionService.getById(node?.functionDefinition?.id) + const resolvedReturnType = useReturnType(functionDefinition!, nodeValues as NodeParameterValue[], dataTypeService) + const nodeContext = nodeContexts?.find(context => context.nodeFunctionId === node?.id) + + if (resolvedReturnType && nodeContext) { + return referenceExtraction(nodeContext, resolvedReturnType) + } + + return {} as ReferenceValue + + }) ?? [] + }, [flow]) + + const flowInputSuggestions = React.useMemo(() => { + return referenceExtraction({ + node: 0, + depth: 0, + nodeFunctionId: "gid://sagittarius/NodeFunction/-1", + scope: [0] + }, { + dataType: flow?.inputType + }) + }, [flow]) + + const inputSuggestions: ReferenceValue[] = React.useMemo(() => { + if (!flow?.nodes?.nodes?.length) return [] + + return flow.nodes.nodes.flatMap((node) => { + const functionDefinition = functionService.getById(node?.functionDefinition?.id) + if (!functionDefinition) return [] + + const nodeValues = + node?.parameters?.nodes?.map((p) => p?.value!).filter(Boolean) ?? [] + + return (functionDefinition.parameterDefinitions ?? []).flatMap((paramDef, index) => { + const dataTypeIdentifier = paramDef?.dataTypeIdentifier + if (!dataTypeIdentifier) return [] + + const pType = dataTypeService.getDataType(dataTypeIdentifier) + if (!pType || pType.variant !== "NODE") return [] + + const paramInstance = node?.parameters?.nodes?.find((p) => p?.id === paramDef?.id) + if (!paramInstance?.value || paramInstance.value.__typename !== "NodeFunctionIdWrapper") return [] + + const paramNodeContext = nodeContexts?.find( + (context) => paramInstance?.value?.__typename === "NodeFunctionIdWrapper" && context.nodeFunctionId === paramInstance.value?.id + ) + if (!paramNodeContext) return [] + + const inputTypeRules = + pType.rules?.nodes?.filter((r) => r?.variant === "INPUT_TYPES") ?? [] + + const genericTypeMap = resolveGenericKeys(functionDefinition, nodeValues, dataTypeService) + const genericTargetMap = targetForGenericKey(functionDefinition, dataTypeIdentifier) + const resolvedGenericMap = new Map( + [...genericTypeMap].map(([key, value]) => [genericTargetMap.get(key) ?? key, value]) + ) + + return inputTypeRules.flatMap((rule) => { + const config = rule?.config as DataTypeRulesInputTypesConfig | undefined + const inputTypes = config?.inputTypes ?? [] + + return inputTypes.flatMap((inputType, inputIndex) => { + const resolved = replaceGenericKeysInType( + inputType.dataTypeIdentifier!, + resolvedGenericMap + ) + if (!resolved) return [] + + return referenceExtraction({ + ...paramNodeContext, + nodeFunctionId: node?.id!, + parameterIndex: index, + inputTypeIndex: inputIndex, + inputTypeIdentifier: inputType.inputIdentifier! + }, resolved) + }) + }) + }) + }) + }, [flow, nodeContexts, functionService, dataTypeService]) + + return [ + ...inputSuggestions, + ...flowInputSuggestions, + ...nodeSuggestions + ].flat() +} + +const referenceExtraction = (nodeContext: ExtendedReferenceValue, dataTypeIdentifier: DataTypeIdentifier): ReferenceValue[] => { + + const dataType: Maybe | undefined = dataTypeIdentifier.dataType ?? dataTypeIdentifier.genericType?.dataType + if (!dataType) return [] + + const references = dataType.rules?.nodes?.map(rule => { + if (rule?.variant === "CONTAINS_KEY") { + return referenceExtraction({ + ...nodeContext, + referencePath: [ + ...(nodeContext.referencePath ?? []), + { + path: (rule.config as DataTypeRulesContainsKeyConfig).key!! + } + ] + }, (rule.config as DataTypeRulesContainsKeyConfig).dataTypeIdentifier!!) + } + + return undefined + + }).flat().filter(ref => !!ref) ?? [] + + return [ + ...references, + { + __typename: "ReferenceValue", + dataTypeIdentifier, + nodeFunctionId: nodeContext.nodeFunctionId, + ...nodeContext + }] + +} + +const useNodeContext = ( + flowId: Flow['id'] +): ExtendedReferenceValue[] => { + const dataTypeService = useService(DFlowDataTypeReactiveService); + const flowService = useService(DFlowReactiveService); + const functionService = useService(DFlowFunctionReactiveService); + + const flowStore = useStore(DFlowReactiveService); + const functionStore = useStore(DFlowFunctionReactiveService); + const dataTypeStore = useStore(DFlowDataTypeReactiveService); + + const flow = React.useMemo(() => flowService.getById(flowId), [flowId, flowStore]); + + return React.useMemo(() => { + if (!dataTypeService || !flowService || !functionService) return undefined; + if (!flow?.startingNodeId) return undefined; + + let globalGroupId = 0; + const nextGroupId = () => ++globalGroupId; + + let globalNodeId = 0; + const nextNodeId = () => ++globalNodeId; + + const contexts: ExtendedReferenceValue[] = []; + + const traverse = ( + node: NodeFunctionIdWrapper | NodeFunction | undefined, + depth: number, + scopePath: number[] + ) => { + if (!node) return; + + let current: NodeFunction | undefined = + node.__typename === "NodeFunctionIdWrapper" + ? flowService.getNodeById(flowId, node.id) + : (node as NodeFunction); + + while (current) { + const def = functionService.getById(current.functionDefinition?.id!!); + if (!def) break; + + if (current.parameters && def.parameterDefinitions) { + for (const pDef of def.parameterDefinitions) { + const pType = dataTypeService.getDataType(pDef.dataTypeIdentifier!!); + const paramInstance = current.parameters?.nodes?.find((p) => p?.id === pDef.id); + + if (pType?.variant === "NODE") { + if (paramInstance?.value && paramInstance.value.__typename === "NodeFunctionIdWrapper") { + const childScopePath = [...scopePath, nextGroupId()]; + traverse(paramInstance.value as NodeFunctionIdWrapper, depth + 1, childScopePath); + } + } else if (paramInstance?.value && paramInstance.value.__typename === "NodeFunctionIdWrapper") { + traverse(paramInstance.value as NodeFunctionIdWrapper, depth, scopePath); + } + } + } + + const nodeIndex = nextNodeId(); + contexts.push({node: nodeIndex, depth, scope: scopePath, nodeFunctionId: current.id}); + + current = flowService.getNodeById(flow.id, current.nextNodeId); + } + }; + + + traverse(flowService.getNodeById(flow.id, flow.startingNodeId), 0, [0]); + + return contexts + }, [dataTypeService, flow, flowId, flowService, functionService, dataTypeStore, flowStore, functionStore]) ?? []; +}; diff --git a/src/components/d-flow-suggestion/DFlowSuggestion.hook.tsx b/src/components/d-flow-suggestion/DFlowSuggestion.hook.tsx index 72123b60a..13794c00a 100644 --- a/src/components/d-flow-suggestion/DFlowSuggestion.hook.tsx +++ b/src/components/d-flow-suggestion/DFlowSuggestion.hook.tsx @@ -1,316 +1,50 @@ -import {useService} from "../../utils"; -import {DFlowDataTypeReactiveService} from "../d-flow-data-type"; -import {DFlowSuggestion, DFlowSuggestionType} from "./DFlowSuggestion.view"; +import {useService, useStore} from "../../utils"; +import {DFlowSuggestion} from "./DFlowSuggestion.view"; import {DFlowFunctionReactiveService} from "../d-flow-function"; -import {isMatchingType, replaceGenericsAndSortType, resolveType} from "../../utils/generics"; import {DFlowReactiveService} from "../d-flow"; -import {useReturnType} from "../d-flow-function/DFlowFunction.return.hook"; -import {useInputType} from "../d-flow-function/DFlowFunction.input.hook"; +import React from "react"; import type { - DataTypeIdentifier, - DataTypeRulesInputTypeConfig, - DataTypeRulesItemOfCollectionConfig, - DataTypeRulesNumberRangeConfig, - Flow, LiteralValue, - Maybe, - NodeFunction, NodeFunctionIdWrapper, + Flow, + NodeFunction, NodeParameter, - NodeParameterValue, - ReferenceValue } from "@code0-tech/sagittarius-graphql-types"; +import {useValueSuggestions} from "./DFlowValueSuggestions.hook"; +import {useReferenceSuggestions} from "./DFlowReferenceSuggestions.hook"; +import {useFunctionSuggestions} from "./DFlowFunctionSuggestions.hook"; +import {useDataTypeSuggestions} from "./DFlowDataTypeSuggestions.hook"; //TODO: deep type search //TODO: calculate FUNCTION_COMBINATION deepness max 2 export const useSuggestions = ( - type: DataTypeIdentifier | undefined, - genericKeys: string[] | undefined, flowId: Flow['id'], - depth: number = 0, - scope: number[] = [0], - node: number = 1, - suggestionTypes: DFlowSuggestionType[] = [DFlowSuggestionType.REF_OBJECT, DFlowSuggestionType.VALUE, DFlowSuggestionType.FUNCTION, DFlowSuggestionType.FUNCTION_COMBINATION, DFlowSuggestionType.DATA_TYPE] + nodeId?: NodeFunction['id'], + parameterId?: NodeParameter['id'] ): DFlowSuggestion[] => { - const dataTypeService = useService(DFlowDataTypeReactiveService) const functionService = useService(DFlowFunctionReactiveService) - const dataType = type ? dataTypeService?.getDataType(type) : undefined - - const resolvedType = type ? replaceGenericsAndSortType(resolveType(type, dataTypeService), genericKeys) : undefined - const state: DFlowSuggestion[] = [] - - - if (dataType && suggestionTypes.includes(DFlowSuggestionType.VALUE)) { - //calculate VALUE - dataType.rules?.nodes?.forEach(rule => { - if (rule?.variant === "ITEM_OF_COLLECTION") { - (rule.config as DataTypeRulesItemOfCollectionConfig)!!.items?.forEach(value => { - const suggestion: DFlowSuggestion = { - path: [], - type: DFlowSuggestionType.VALUE, - displayText: [value.toString()], - value: { - __typename: "LiteralValue", - value: value - }, - } - state.push(suggestion) - }) - } else if (rule?.variant === "NUMBER_RANGE") { - const config: DataTypeRulesNumberRangeConfig = rule.config as DataTypeRulesNumberRangeConfig - const suggestion: DFlowSuggestion = { - path: [], - type: DFlowSuggestionType.VALUE, - displayText: [config.from?.toString() ?? ""], - value: { - __typename: "LiteralValue", - value: config.from - }, - } - state.push(suggestion) - } - }) - } - - //TODO: need to validate given type - if (dataType && dataType.variant === "DATA_TYPE" && suggestionTypes.includes(DFlowSuggestionType.DATA_TYPE)) { - dataTypeService.values().forEach(dataType => { - //TODO: need to wait for sagittarius update to support DataTypes as values - const suggestion: DFlowSuggestion = { - path: [], - type: DFlowSuggestionType.DATA_TYPE, - displayText: [dataType.name?.nodes!![0]?.content!], - /*@ts-ignore*/ - value: dataType.json, - } - state.push(suggestion) - }) - } - - - if (suggestionTypes.includes(DFlowSuggestionType.FUNCTION_COMBINATION)) { - //calculate FUNCTION - //generics to be replaced with GENERIC todo is written on top - const matchingFunctions = functionService.values().filter(funcDefinition => { - if (!type || !resolvedType) return true - if (funcDefinition.runtimeFunctionDefinition?.identifier == "std::control::return" && type) return false - if (dataType?.variant === "NODE") return true - if (!funcDefinition.returnType) return false - if (!funcDefinition.genericKeys) return false - const resolvedReturnType = replaceGenericsAndSortType(resolveType(funcDefinition.returnType, dataTypeService), funcDefinition.genericKeys) - return isMatchingType(resolvedType, resolvedReturnType) - }).sort((a, b) => { - const [rA, pA, fA] = a.runtimeFunctionDefinition!!.identifier!!.split("::"); - const [rB, pB, fB] = b.runtimeFunctionDefinition!!.identifier!!.split("::"); - - // Erst runtime vergleichen - const runtimeCmp = rA.localeCompare(rB); - if (runtimeCmp !== 0) return runtimeCmp; - - // Dann package vergleichen - const packageCmp = pA.localeCompare(pB); - if (packageCmp !== 0) return packageCmp; - - // Dann function name - return fA.localeCompare(fB); - }) - - matchingFunctions.forEach(funcDefinition => { - const nodeFunctionSuggestion: LiteralValue | ReferenceValue | NodeFunction = { - __typename: "NodeFunction", - id: `gid://sagittarius/NodeFunction/1`, - functionDefinition: { - id: funcDefinition.id, - runtimeFunctionDefinition: funcDefinition.runtimeFunctionDefinition - }, - parameters: { - nodes: (funcDefinition.parameterDefinitions?.map(definition => { - return { - id: definition.id, - runtimeParameter: { - id: definition.id - } - } - }) ?? []) as Maybe>> - } - } - const suggestion: DFlowSuggestion = { - path: [], - type: DFlowSuggestionType.FUNCTION, - displayText: [funcDefinition.names?.nodes!![0]?.content as string], - value: nodeFunctionSuggestion, - } - state.push(suggestion) - }) - } - - if (suggestionTypes.includes(DFlowSuggestionType.REF_OBJECT)) { - //calculate REF_OBJECTS && FUNCTION_COMBINATION - const refObjects = type ? useRefObjects(flowId) : [] - - refObjects.forEach(value => { - if ((value?.node ?? 0) >= node) return - if ((value?.depth ?? 0) > depth) return - if ((value?.scope ?? []).some(r => !scope.includes(r))) return - if (!resolvedType) return - - const resolvedRefObjectType = replaceGenericsAndSortType(resolveType(value.dataTypeIdentifier!!, dataTypeService), []) - if (!isMatchingType(resolvedType, resolvedRefObjectType)) return - - const suggestion: DFlowSuggestion = { - path: [], - type: DFlowSuggestionType.REF_OBJECT, - displayText: [`${value.depth}-${value.scope}-${value.node || ''}`], - value: value as ReferenceValue, - } - state.push(suggestion) - }) - } - - return state.sort() - + const flowService = useService(DFlowReactiveService) + const functionStore = useStore(DFlowFunctionReactiveService) + const flowStore = useStore(DFlowReactiveService) + + const node = React.useMemo(() => (flowService.getNodeById(flowId, nodeId)), [flowId, flowService, flowStore, nodeId]) + const functionDefinition = React.useMemo(() => (node?.functionDefinition?.id ? functionService.getById(node.functionDefinition.id) : undefined), [functionStore, functionService, node?.functionDefinition?.id]) + const parameterDefinition = React.useMemo(() => (functionDefinition?.parameterDefinitions?.find(definition => definition.id === parameterId)), [functionDefinition?.parameterDefinitions, parameterId]) + + const dataTypeIdentifier = parameterDefinition?.dataTypeIdentifier! + const genericKeys = functionDefinition?.genericKeys ?? [] + + const valueSuggestions = useValueSuggestions(dataTypeIdentifier) + const dataTypeSuggestions = useDataTypeSuggestions(dataTypeIdentifier) + const refObjectSuggestions = useReferenceSuggestions(flowId, nodeId, dataTypeIdentifier, genericKeys) + const functionSuggestions = useFunctionSuggestions(dataTypeIdentifier, genericKeys) + + return React.useMemo(() => { + return [ + ...valueSuggestions, + ...dataTypeSuggestions, + ...refObjectSuggestions, + ...functionSuggestions + ].sort() + }, [flowId, nodeId, parameterId]) } - -/** - * Walks the flow starting at its startingNode (depth-first, left-to-right) and collects - * all RefObjects (variables/outputs) with contextual metadata: - * - depth: nesting level (root 0; +1 per NODE-parameter sub-block) - * - scope: PATH of scope ids as number[], e.g. [0], [0,1], [0,2], [0,2,3] ... - * (root is [0]; each NODE-parameter group appends a new unique id) - * - node: GLOBAL visit index across the entire flow (1-based, strictly increasing) - * - * Notes: - * - A NODE-typed parameter opens a new group/lane: depth+1 and scopePath+[newId]. - * - Functions passed as non-NODE parameters are traversed in the SAME depth/scopePath. - * - The `node` id is incremented globally for every visited node and shared by all - * RefObjects (inputs from rules and the return value) produced by that node. - */ -export const useRefObjects = (flowId: Flow['id']): Array => { - const dataTypeService = useService(DFlowDataTypeReactiveService); - const flowService = useService(DFlowReactiveService); - const functionService = useService(DFlowFunctionReactiveService); - - const refObjects: Array = []; - if (!dataTypeService || !flowService || !functionService) return refObjects; - - const flow = flowService.values().find((f) => f.id === flowId); - if (!flow?.startingNodeId) return refObjects; - - // Global, strictly increasing group id used to extend the scope PATH. - // Root scope path is [0]; first created group gets id 1, then 2, ... - let globalGroupId = 0; - const nextGroupId = () => ++globalGroupId; - - // Global, strictly increasing node id across the ENTIRE flow (1-based). - let globalNodeId = 0; - const nextNodeId = () => ++globalNodeId; - - /** - * DFS across a lane: visit node, recurse into NODE-parameter groups, then follow nextNode. - * `scopePath` is the full scope path (e.g., [0], [0,2], [0,2,4], ...). - */ - const traverse = ( - node: NodeFunctionIdWrapper | NodeFunction | undefined, - depth: number, - scopePath: number[] - ) => { - if (!node) return; - - let current: NodeFunction | undefined = node.__typename === "NodeFunctionIdWrapper" ? flowService.getNodeById(flowId, node.id) : node as NodeFunction; - - while (current) { - const def = functionService.getById(current.functionDefinition?.id!!); - if (!def) break; - - // Assign a single GLOBAL node id for this node (shared by all outputs/inputs it yields). - const nodeIndex = nextNodeId(); - - // 1) INPUT_TYPE rules (variables per input parameter; skip NODE-typed params) - if (current.parameters && def.parameterDefinitions) { - for (const pDef of def.parameterDefinitions) { - const pType = dataTypeService.getDataType(pDef.dataTypeIdentifier!!); - if (!pType || pType.variant === "NODE") continue; - - const inputTypeRules = - pType.rules?.nodes?.filter((r) => r?.variant === "INPUT_TYPES") ?? []; - - if (inputTypeRules.length) { - const paramInstance = current.parameters?.nodes?.find((p) => p?.id === pDef.id); - const rawValue = paramInstance?.value; - const valuesArray = - rawValue !== undefined - ? rawValue?.__typename === "NodeFunctionIdWrapper" - ? [rawValue!!] - : [rawValue!!] - : []; - - for (const rule of inputTypeRules) { - const cfg = rule?.config as DataTypeRulesInputTypeConfig; - const resolved = useInputType(cfg.dataTypeIdentifier!!, def, valuesArray, dataTypeService); - if (resolved) { - refObjects.push({ - __typename: "ReferenceValue", - dataTypeIdentifier: resolved, - depth, - scope: scopePath, - node: nodeIndex, - }); - } - } - } - } - } - - // 2) Return type (main output of the current node) - { - const paramValues = - current.parameters?.nodes?.map((p) => p?.value).filter((v) => v !== undefined) ?? []; - const resolvedReturnType = useReturnType( - def, - paramValues as NodeParameterValue[], - dataTypeService - ); - if (resolvedReturnType) { - refObjects.push({ - __typename: "ReferenceValue", - dataTypeIdentifier: resolvedReturnType, - depth, - scope: scopePath, - node: nodeIndex, - }); - } - } - - // 3) For each NODE-typed parameter: create a NEW group/lane - if (current.parameters && def.parameterDefinitions) { - for (const pDef of def.parameterDefinitions) { - const pType = dataTypeService.getDataType(pDef.dataTypeIdentifier!!); - if (pType?.variant === "NODE") { - const paramInstance = current.parameters?.nodes?.find((p) => p?.id === pDef.id); - if (paramInstance?.value && paramInstance.value.__typename === "NodeFunctionIdWrapper") { - const childFn = paramInstance.value as NodeFunctionIdWrapper; - - // New group: extend the scope path with a fresh id; increase depth by 1. - const childScopePath = [...scopePath, nextGroupId()]; - traverse(childFn, depth + 1, childScopePath); - } - } else { - // Functions passed as NON-NODE parameters: same depth and same scope path. - const paramInstance = current.parameters?.nodes?.find((p) => p?.id === pDef.id); - if (paramInstance?.value && paramInstance.value.__typename === "NodeFunctionIdWrapper") { - traverse(paramInstance.value as NodeFunctionIdWrapper, depth, scopePath); - } - } - } - } - - // 4) Continue the linear chain in the same lane/scope. - current = flowService.getNodeById(flow.id, current.nextNodeId) - } - }; - - // Root lane: depth 0, scope path [0]; node starts at 1 on the first visited node. - traverse(flowService.getNodeById(flow.id, flow.startingNodeId), 0, [0]); - - return refObjects; -}; \ No newline at end of file diff --git a/src/components/d-flow-suggestion/DFlowSuggestionMenu.tsx b/src/components/d-flow-suggestion/DFlowSuggestionMenu.tsx index c8f98e862..bf011ddac 100644 --- a/src/components/d-flow-suggestion/DFlowSuggestionMenu.tsx +++ b/src/components/d-flow-suggestion/DFlowSuggestionMenu.tsx @@ -21,7 +21,6 @@ export const DFlowSuggestionMenu: React.FC = (props) = const {suggestions = [], triggerContent, onSuggestionSelect = () => {}} = props - const flowStoreApi = useStoreApi() const menuRef = React.useRef(null); // Ref to suggestion list const [stateSuggestions, setStateSuggestions] = React.useState(suggestions) @@ -29,15 +28,7 @@ export const DFlowSuggestionMenu: React.FC = (props) = setStateSuggestions(suggestions) }, [suggestions]) - return { - setTimeout(() => { - flowStoreApi.setState({ - nodesDraggable: !event, - nodesConnectable: !event, - elementsSelectable: !event, - }); - }, 250) // Timeout to ensure the menu is fully opened before changing the state - }}> + return {triggerContent} diff --git a/src/components/d-flow-suggestion/DFlowSuggestionMenu.util.tsx b/src/components/d-flow-suggestion/DFlowSuggestionMenu.util.tsx index 59f9440ec..1c3a78ca4 100644 --- a/src/components/d-flow-suggestion/DFlowSuggestionMenu.util.tsx +++ b/src/components/d-flow-suggestion/DFlowSuggestionMenu.util.tsx @@ -50,6 +50,7 @@ export const toInputSuggestions = (suggestions: DFlowSuggestion[]): InputSuggest return { children, + insertMode: "replace", valueData: suggestion, value: suggestion.value, groupBy: groupLabel, diff --git a/src/components/d-flow-suggestion/DFlowSuggestionSearchInput.tsx b/src/components/d-flow-suggestion/DFlowSuggestionSearchInput.tsx index efd633002..52ea31ad4 100644 --- a/src/components/d-flow-suggestion/DFlowSuggestionSearchInput.tsx +++ b/src/components/d-flow-suggestion/DFlowSuggestionSearchInput.tsx @@ -3,15 +3,15 @@ import React, {RefObject} from "react"; import {Button} from "../button/Button"; import {IconX} from "@tabler/icons-react"; import "./DFlowSuggestionSearchInput.style.scss" -import {setElementKey} from "../form/Input.utils"; +import {clearInputElement} from "../form/Input.utils"; interface DFlowSuggestionSearchInputProps extends Omit, "wrapperComponent" | "type"> { //defaults to false clearable?: boolean } -export const DFlowSuggestionSearchInput: React.ForwardRefExoticComponent = React.forwardRef((props, ref: RefObject) => { - ref = ref || React.useRef(null) +export const DFlowSuggestionSearchInput: React.ForwardRefExoticComponent = React.forwardRef((props, ref: RefObject) => { + ref = ref || React.useRef(null) const { clearable = false, @@ -20,7 +20,7 @@ export const DFlowSuggestionSearchInput: React.ForwardRefExoticComponent { - if (ref.current) setElementKey(ref.current, "value", "", "change") + clearInputElement(ref.current) } const rightAction = [right] @@ -33,7 +33,7 @@ export const DFlowSuggestionSearchInput: React.ForwardRefExoticComponent} {...rest} /> -}) \ No newline at end of file +}) diff --git a/src/components/d-flow-suggestion/DFlowValueSuggestions.hook.tsx b/src/components/d-flow-suggestion/DFlowValueSuggestions.hook.tsx new file mode 100644 index 000000000..8682c5f1a --- /dev/null +++ b/src/components/d-flow-suggestion/DFlowValueSuggestions.hook.tsx @@ -0,0 +1,57 @@ +import React from "react"; +import {useService, useStore} from "../../utils"; +import {DFlowDataTypeReactiveService} from "../d-flow-data-type"; +import {DFlowSuggestion, DFlowSuggestionType} from "./DFlowSuggestion.view"; +import type { + DataTypeIdentifier, + DataTypeRulesItemOfCollectionConfig, + DataTypeRulesNumberRangeConfig +} from "@code0-tech/sagittarius-graphql-types"; + +export const useValueSuggestions = (dataTypeIdentifier?: DataTypeIdentifier): DFlowSuggestion[] => { + const dataTypeService = useService(DFlowDataTypeReactiveService) + const dataTypeStore = useStore(DFlowDataTypeReactiveService) + + const dataType = React.useMemo(() => ( + dataTypeIdentifier ? dataTypeService?.getDataType(dataTypeIdentifier) : undefined + ), [dataTypeIdentifier, dataTypeService, dataTypeStore]) + + return React.useMemo(() => { + if (!dataType) return [] + + const suggestions: DFlowSuggestion[] = [] + dataType.rules?.nodes?.forEach(rule => { + if (rule?.variant === "ITEM_OF_COLLECTION") { + (rule.config as DataTypeRulesItemOfCollectionConfig)!!.items?.forEach(value => { + suggestions.push({ + path: [], + type: DFlowSuggestionType.VALUE, + displayText: [value.toString()], + value: { + __typename: "LiteralValue", + value: value + }, + }) + }) + } else if (rule?.variant === "NUMBER_RANGE") { + const config: DataTypeRulesNumberRangeConfig = rule.config as DataTypeRulesNumberRangeConfig + if (config.from === null || config.from === undefined) return + if (config.to === null || config.to === undefined) return + + for (let i = config.from; i <= config.to; i += (config.steps ?? 1)) { + suggestions.push({ + path: [], + type: DFlowSuggestionType.VALUE, + displayText: [i.toString() ?? ""], + value: { + __typename: "LiteralValue", + value: i + }, + }) + } + } + }) + + return suggestions + }, [dataType]) +} diff --git a/src/components/d-flow-type/DFlowType.view.ts b/src/components/d-flow-type/DFlowType.view.ts index f5b98b757..e22f4715c 100644 --- a/src/components/d-flow-type/DFlowType.view.ts +++ b/src/components/d-flow-type/DFlowType.view.ts @@ -3,21 +3,20 @@ import type { FlowType, FlowTypeSetting, Maybe, - Scalars, - TranslationConnection + Scalars, Translation, } from "@code0-tech/sagittarius-graphql-types"; export class FlowTypeView { /** Name of the function */ - private readonly _aliases?: Maybe; + private readonly _aliases?: Maybe>; /** Time when this FlowType was created */ private readonly _createdAt?: Maybe; /** Descriptions of the flow type */ - private readonly _descriptions?: Maybe; + private readonly _descriptions?: Maybe>; /** Display message of the function */ - private readonly _displayMessages?: Maybe; + private readonly _displayMessages?: Maybe>; /** Editable status of the flow type */ private readonly _editable?: Maybe; /** Flow type settings of the flow type */ @@ -29,7 +28,7 @@ export class FlowTypeView { /** Input type of the flow type */ private readonly _inputType?: Maybe; /** Names of the flow type */ - private readonly _names?: Maybe; + private readonly _names?: Maybe>; /** Return type of the flow type */ private readonly _returnType?: Maybe; /** Time when this FlowType was last updated */ @@ -51,7 +50,7 @@ export class FlowTypeView { this._updatedAt = flowType.updatedAt; } - get aliases(): Maybe | undefined { + get aliases(): Maybe> | undefined { return this._aliases; } @@ -59,11 +58,11 @@ export class FlowTypeView { return this._createdAt; } - get descriptions(): Maybe | undefined { + get descriptions(): Maybe> | undefined { return this._descriptions; } - get displayMessages(): Maybe | undefined { + get displayMessages(): Maybe> | undefined { return this._displayMessages; } @@ -87,7 +86,7 @@ export class FlowTypeView { return this._inputType; } - get names(): Maybe | undefined { + get names(): Maybe> | undefined { return this._names; } diff --git a/src/components/d-flow-validation/DNodeValidation.hook.ts b/src/components/d-flow-validation/DNodeValidation.hook.ts index c1259f65f..ab32205d9 100644 --- a/src/components/d-flow-validation/DNodeValidation.hook.ts +++ b/src/components/d-flow-validation/DNodeValidation.hook.ts @@ -42,12 +42,10 @@ const errorResult = ( ): ValidationResult => ({ parameterId, type: InspectionSeverity.ERROR, - message: { - nodes: [{ - code: "en-US", - content: `Argument of type ${actual?.name?.nodes!![0]?.content} is not assignable to parameter of type ${expected?.name?.nodes!![0]?.content}` - }] - } + message: [{ + code: "en-US", + content: `Argument of type ${actual?.name!![0]?.content} is not assignable to parameter of type ${expected?.name!![0]?.content}` + }] }) export const useNodeValidation = ( @@ -95,7 +93,8 @@ export const useNodeValidation = ( if (!value) continue const expectedType = parameter.dataTypeIdentifier - const expectedDT = dataTypeService.getDataType(expectedType!!) + const expectedResolvedType = replaceGenericKeysInType(expectedType!, genericMap) + const expectedDT = dataTypeService.getDataType(expectedResolvedType) const valueType = resolveValueType(value, expectedDT) const valueDT = dataTypeService.getDataType(valueType!!) @@ -112,18 +111,16 @@ export const useNodeValidation = ( if (isGeneric) { const resolvedExpectedDT = resolveDataTypeWithGenerics(expectedDT, genericMap) - if (isReferenceOrNode(value)) { const resolvedValueDT = resolveDataTypeWithGenerics(valueDT, genericMap) isValid = useDataTypeValidation(resolvedExpectedDT, resolvedValueDT) } else { - const resolvedType = replaceGenericKeysInType(expectedType, genericMap) isValid = useValueValidation( value, resolvedExpectedDT, dataTypeService, flow, - resolvedType?.genericType?.genericMappers! + expectedResolvedType?.genericType?.genericMappers! ) } } else { diff --git a/src/components/d-flow-validation/DValueValidation.hook.ts b/src/components/d-flow-validation/DValueValidation.hook.ts index 4c288a067..c4f61e37e 100644 --- a/src/components/d-flow-validation/DValueValidation.hook.ts +++ b/src/components/d-flow-validation/DValueValidation.hook.ts @@ -15,7 +15,7 @@ export const useValueValidation = ( return dataType.rules?.nodes?.every(rule => { if (!rule || !rule.variant || !rule.config) return false - if (!RuleMap.get(rule.variant)) return true + if (!RuleMap.get(rule.variant)) return true //TODO; missing parent type rule return RuleMap.get(rule.variant)?.validate(value, rule.config, map, dataTypeService, flow) }) ?? true } \ No newline at end of file diff --git a/src/components/d-flow/DFlow.edges.hook.ts b/src/components/d-flow/DFlow.edges.hook.ts index 26b2f4917..deb0d64c4 100644 --- a/src/components/d-flow/DFlow.edges.hook.ts +++ b/src/components/d-flow/DFlow.edges.hook.ts @@ -14,6 +14,7 @@ import type { } from "@code0-tech/sagittarius-graphql-types"; import {md5} from "js-md5"; import {DFlowEdgeDataProps} from "./DFlowEdge"; +import {hashToColor} from "./DFlow.util"; export const FLOW_EDGE_RAINBOW: string[] = [ 'rgba(255, 255, 255, 0.25)', @@ -71,7 +72,7 @@ export const useFlowEdges = (flowId: Flow['id'], namespaceId?: Namespace['id'], fnCache = functionCache, dtCache = dataTypeCache, ): string => { - + if (!node) return "" const fnId = `${node.id}-${idCounter++}`; if (idCounter == 1) { @@ -134,33 +135,26 @@ export const useFlowEdges = (flowId: Flow['id'], namespaceId?: Namespace['id'], if (!val) return if (paramDT?.variant === "NODE") { - const groupId = `${fnId}-group-${idCounter++}`; - const hash = md5(`${fnId}-param-${JSON.stringify(param)}`) - const hashToHue = (md5: string): number => { - // nimm z.B. 8 Hex-Zeichen = 32 Bit - const int = parseInt(md5.slice(0, 8), 16) - return int % 360 - } - - edges.push({ - id: `${fnId}-${groupId}-param-${param.id}`, - source: fnId, - target: groupId, - deletable: false, - selectable: false, - animated: true, - label: def?.names?.nodes!![0]?.content ?? param.id, - data: { - color: `hsl(${hashToHue(hash)}, 100%, 72%)`, - type: 'group', - flowId: flowId, - parentNodeId: parentNode?.id - }, - }); - - if (val && val.__typename === "NodeFunctionIdWrapper") { + const groupId = `${fnId}-group-${idCounter++}`; + + edges.push({ + id: `${fnId}-${groupId}-param-${param.id}`, + source: fnId, + target: groupId, + deletable: false, + selectable: false, + animated: true, + label: def?.names!![0]?.content ?? param.id, + data: { + color: hashToColor(val?.id || ""), + type: 'group', + flowId: flowId, + parentNodeId: parentNode?.id + }, + }); + (groupsWithValue.get(fnId) ?? (groupsWithValue.set(fnId, []), groupsWithValue.get(fnId)!)) .push(groupId); @@ -184,13 +178,6 @@ export const useFlowEdges = (flowId: Flow['id'], namespaceId?: Namespace['id'], dtCache ); - const hash = md5(`${fnId}-param-${JSON.stringify(param)}`) - const hashToHue = (md5: string): number => { - // nimm z.B. 8 Hex-Zeichen = 32 Bit - const int = parseInt(md5.slice(0, 8), 16) - return int % 360 - } - edges.push({ id: `${subFnId}-${fnId}-param-${param.id}`, source: subFnId, @@ -200,7 +187,7 @@ export const useFlowEdges = (flowId: Flow['id'], namespaceId?: Namespace['id'], deletable: false, selectable: false, data: { - color: `hsl(${hashToHue(hash)}, 100%, 72%)`, + color: hashToColor(val?.id || ""), type: 'parameter', flowId: flowId, parentNodeId: parentNode?.id diff --git a/src/components/d-flow/DFlow.nodes.hook.ts b/src/components/d-flow/DFlow.nodes.hook.ts index 822c4fdfe..55db5677d 100644 --- a/src/components/d-flow/DFlow.nodes.hook.ts +++ b/src/components/d-flow/DFlow.nodes.hook.ts @@ -17,6 +17,7 @@ import {DFlowFunctionSuggestionCardDataProps} from "../d-flow-function/DFlowFunc import {DFlowFunctionTriggerCardDataProps} from "../d-flow-function/DFlowFunctionTriggerCard"; import {DFlowFunctionGroupCardDataProps} from "../d-flow-function/DFlowFunctionGroupCard"; import {md5} from "js-md5"; +import {hashToColor} from "./DFlow.util"; const packageNodes = new Map([ ['std', 'default'], @@ -173,12 +174,13 @@ export const useFlowNodes = (flowId: Flow['id'], namespaceId?: Namespace['id'], fnCache = functionCache, dtCache = dataTypeCache, ) => { - const id = `${node.id}-${idCounter++}`; + if (!node) return + const id = `${node?.id}-${idCounter++}`; const index = ++globalNodeIndex; // global node level nodes.push({ id, - type: bestMatchValue(packageNodes, node.functionDefinition?.identifier!!), + type: bestMatchValue(packageNodes, node?.functionDefinition?.identifier!!), position: {x: 0, y: 0}, draggable: false, parentId: parentGroup, @@ -194,7 +196,7 @@ export const useFlowNodes = (flowId: Flow['id'], namespaceId?: Namespace['id'], }, }); - const definition = getFunctionDefinitionCached(node.functionDefinition?.id!!, fnCache); + const definition = getFunctionDefinitionCached(node?.functionDefinition?.id!!, fnCache); node.parameters?.nodes?.forEach((param) => { const paramType = definition?.parameterDefinitions!!.find(p => p.id == param?.runtimeParameter?.id)?.dataTypeIdentifier; @@ -207,13 +209,6 @@ export const useFlowNodes = (flowId: Flow['id'], namespaceId?: Namespace['id'], // New group: extend scope PATH with a fresh segment and increase depth. const childScopePath = [...scopePath, nextScopeId()]; - const hash = md5(`${id}-param-${JSON.stringify(param)}`) - const hashToHue = (md5: string): number => { - // nimm z.B. 8 Hex-Zeichen = 32 Bit - const int = parseInt(md5.slice(0, 8), 16) - return int % 360 - } - nodes.push({ id: groupId, type: "group", @@ -227,7 +222,7 @@ export const useFlowNodes = (flowId: Flow['id'], namespaceId?: Namespace['id'], flowId: flowId!!, depth: depth + 1, scope: childScopePath, - color: `hsl(${hashToHue(hash)}, 100%, 72%)`, + color: hashToColor(param.value?.id ?? ""), }, }); diff --git a/src/components/d-flow/DFlow.service.ts b/src/components/d-flow/DFlow.service.ts index e4f5bfd62..9cf1183ea 100644 --- a/src/components/d-flow/DFlow.service.ts +++ b/src/components/d-flow/DFlow.service.ts @@ -5,7 +5,7 @@ import { Flow, FlowInput, FlowSetting, - LiteralValue, + LiteralValue, Maybe, Namespace, NamespaceProject, NamespacesProjectsFlowsCreateInput, @@ -17,7 +17,7 @@ import { NodeFunction, NodeFunctionIdWrapper, NodeParameter, - ReferenceValue + ReferenceValue, Scalars } from "@code0-tech/sagittarius-graphql-types"; export type DFlowDependencies = { @@ -53,6 +53,22 @@ export abstract class DFlowReactiveService extends ReactiveArrayService { + if (p?.value?.__typename === "NodeFunctionIdWrapper") { + const parameterNode = this.getNodeById(flowId, (p.value as NodeFunctionIdWrapper)?.id!!) + if (parameterNode) { + parameterNodes.push(parameterNode) + parameterNodes.push(...(parameterNode ? this.getLinkedNodesById(flowId, parameterNode.nextNodeId) : [])) + } + } + }) + return [...(parentNode ? [parentNode]: []), ...parameterNodes, ...nextNodes] + } + getNodeById(flowId: Flow['id'], nodeId: NodeFunction['id']): NodeFunction | undefined { return this.getById(flowId)?.nodes?.nodes?.find(node => node?.id === nodeId)!! } @@ -122,6 +138,7 @@ export abstract class DFlowReactiveService extends ReactiveArrayService { const flow = this.getById(flowId) const node = this.getNodeById(flowId, nodeId) + const parentNode = flow?.nodes?.nodes?.find(node => node?.parameters?.nodes?.find(p => p?.value?.__typename === "NodeFunctionIdWrapper" && (p.value as NodeFunction)?.id === nodeId)) const previousNodes = flow?.nodes?.nodes?.find(n => n?.nextNodeId === nodeId) const index = this.values().findIndex(f => f.id === flowId) if (!flow || !node) return @@ -129,10 +146,18 @@ export abstract class DFlowReactiveService extends ReactiveArrayService n?.id !== nodeId) node.parameters?.nodes?.forEach(p => this.removeParameterNode(flow, p!!)) + if (previousNodes) { previousNodes.nextNodeId = node.nextNodeId } else { - flow.startingNodeId = node.nextNodeId ?? undefined + if (!parentNode) flow.startingNodeId = node.nextNodeId ?? undefined + } + + if (parentNode) { + const parameter = parentNode.parameters?.nodes?.find(p => p?.value?.__typename === "NodeFunctionIdWrapper" && (p.value as NodeFunction)?.id === nodeId) + if (parameter) { + parameter.value = undefined + } } this.set(index, flow) @@ -149,7 +174,7 @@ export abstract class DFlowReactiveService extends ReactiveArrayService Number(node?.id?.match(/NodeFunction\/(\d+)$/)?.[1] ?? 0)) ?? [0]) const nextNodeId: NodeFunction['id'] = `gid://sagittarius/NodeFunction/${nextNodeIndex + 1}` const addingNode: NodeFunction = { - ...nextNode, + ...JSON.parse(JSON.stringify(nextNode)), id: nextNodeId, } @@ -170,11 +195,11 @@ export abstract class DFlowReactiveService extends ReactiveArrayService { + async setSettingValue(flowId: Flow['id'], settingIdentifier: Maybe, value: FlowSetting['value']): Promise { const flow = this.getById(flowId) const index = this.values().findIndex(f => f.id === flowId) if (!flow) return - const setting = flow.settings?.nodes?.find(s => s?.id === settingId) + const setting = flow.settings?.nodes?.find(s => s?.flowSettingIdentifier === settingIdentifier) if (!setting) return setting.value = value this.set(index, flow) diff --git a/src/components/d-flow/DFlow.tsx b/src/components/d-flow/DFlow.tsx index ca8fe8b2c..0415800d6 100644 --- a/src/components/d-flow/DFlow.tsx +++ b/src/components/d-flow/DFlow.tsx @@ -37,478 +37,562 @@ import {DFlowPanelLayout} from "../d-flow-panel"; * @returns An object containing the new positioned nodes and the unchanged edges. */ const getLayoutElements = (nodes: Node[], dirtyIds?: Set) => { - if (!dirtyIds || dirtyIds.size === 0) { - return {nodes} - } + if (!dirtyIds || dirtyIds.size === 0) return { nodes } + /* Konstanten */ const V = 50; // vertical gap Node ↕ Node const H = 50; // horizontal gap Parent → Param - const PAD = 16; // inner padding einer Group (links+rechts / oben+unten) - const EPS = 0.25; // Toleranz gegen Rundungsdrift + const PAD = 16; // inner padding einer Group (links+rechts / oben+unten) + const EPS = 0.25; // Toleranz gegen Rundungsdrift // Wir iterieren, bis Group-Maße stabil sind - let pass = 0; - let changed = false; - - // Aktueller Arbeitsstand der Nodes (Styles werden in den Pässen fortgeschrieben) - const work = nodes.map(n => ({...n})) + let pass = 0 + let changed = false - // Relationen einmalig ermitteln (IDs behalten) -------------------------------- + // ---------------------------- + // 1) Relationen einmalig ermitteln + // ---------------------------- const rfKidIds = new Map() const paramIds = new Map() - for (const n of work) { - const link = (n.data as any)?.linkingId; + + for (const n of nodes) { + const link = (n.data as any)?.linkingId if (link) { - let arr = paramIds.get(link) - if (!arr) { - arr = []; - paramIds.set(link, arr) - } + const arr = paramIds.get(link) ?? [] arr.push(n.id) + paramIds.set(link, arr) } if (n.parentId && !link) { - let arr = rfKidIds.get(n.parentId) - if (!arr) { - arr = []; - rfKidIds.set(n.parentId, arr) - } + const arr = rfKidIds.get(n.parentId) ?? [] arr.push(n.id) + rfKidIds.set(n.parentId, arr) } } - const rfKids = new Map() - const params = new Map() - - const byId = new Map(work.map(n => [n.id, n])) + const byId = new Map(nodes.map(n => [n.id, n] as const)) + const rfKids = new Map() for (const [k, ids] of rfKidIds) { const arr: Node[] = new Array(ids.length) - for (let i = 0; i < ids.length; i++) arr[i] = byId.get(ids[i])!; + for (let i = 0; i < ids.length; i++) arr[i] = byId.get(ids[i])! rfKids.set(k, arr) } + + const params = new Map() for (const [k, ids] of paramIds) { const arr: Node[] = new Array(ids.length) - for (let i = 0; i < ids.length; i++) arr[i] = byId.get(ids[i])!; + for (let i = 0; i < ids.length; i++) arr[i] = byId.get(ids[i])! params.set(k, arr) } type Size = { w: number; h: number } + type Pos = { x: number; y: number } + + // ---------------------------- + // 2) Working state (nur Daten, KEINE Node-Mutationen) + // ---------------------------- + // Positionen (Top-Left, RF-Koordinaten, relativ zu Parent falls parentId) + const posTL = new Map() + + // Group-Measured/Style (width/height) werden im Bounding geändert + // -> diese Maps repräsentieren den "aktuellen" Stand über Passes hinweg + const styleWH = new Map() + const measuredWH = new Map() + + // baseSizes als Startpunkt (non-group) + wird für groups nach Bounding aktualisiert const baseSizes = new Map() - for (const n of work) { - const styleW = typeof n.style?.width === 'number' ? n.style.width : undefined; - const styleH = typeof n.style?.height === 'number' ? n.style.height : undefined; - const mw = n.measured?.width && n.measured.width > 0 ? n.measured.width : undefined; - const mh = n.measured?.height && n.measured.height > 0 ? n.measured.height : undefined; - baseSizes.set(n.id, {w: styleW ?? mw ?? 200, h: styleH ?? mh ?? 80}) + for (const n of nodes) { + const styleW = typeof n.style?.width === "number" ? (n.style.width as number) : undefined + const styleH = typeof n.style?.height === "number" ? (n.style.height as number) : undefined + const mw = n.measured?.width && n.measured.width > 0 ? n.measured.width : undefined + const mh = n.measured?.height && n.measured.height > 0 ? n.measured.height : undefined + baseSizes.set(n.id, { w: styleW ?? mw ?? 200, h: styleH ?? mh ?? 80 }) } + const getStyleW = (n: Node) => styleWH.get(n.id)?.width + const getStyleH = (n: Node) => styleWH.get(n.id)?.height + const sizeCache = new Map() const size = (n: Node): Size => { - if (sizeCache.has(n.id)) return sizeCache.get(n.id)!; + const cached = sizeCache.get(n.id) + if (cached) return cached - if (n.type !== 'group') { - const s = baseSizes.get(n.id)!; + // non-group: aus baseSizes + if (n.type !== "group") { + const s = baseSizes.get(n.id)! sizeCache.set(n.id, s) - return s; + return s } - const styleW = typeof n.style?.width === 'number' ? n.style.width : undefined; - const styleH = typeof n.style?.height === 'number' ? n.style.height : undefined; - if (styleW !== undefined && styleH !== undefined) { - const s = {w: styleW, h: styleH} + // group: wenn width/height explizit gesetzt (aus styleWH), dann das nehmen + const sw = getStyleW(n) + const sh = getStyleH(n) + if (sw !== undefined && sh !== undefined) { + const s = { w: sw, h: sh } sizeCache.set(n.id, s) - return s; + return s } - const kids = rfKids.get(n.id) ?? []; - let stackH = 0; - let wMax = 0; - let count = 0; + // sonst aus Kindern ableiten + const kids = rfKids.get(n.id) ?? [] + let stackH = 0 + let wMax = 0 + let count = 0 + for (const k of kids) { const ks = size(k) - stackH += ks.h; - if (ks.w > wMax) wMax = ks.w; - count++; + stackH += ks.h + if (ks.w > wMax) wMax = ks.w + count++ } stackH += V * Math.max(0, count - 1) - const g = { - w: wMax + 2 * PAD, - h: (count ? stackH : 0) + 2 * PAD, - } + const g = { w: wMax + 2 * PAD, h: (count ? stackH : 0) + 2 * PAD } sizeCache.set(n.id, g) - return g; + return g } + // ---------------------------- + // 3) Layout-Iteration (wie bisher), nur dass wir am Ende posTL/styleWH/measuredWH updaten + // ---------------------------- do { - changed = false; - pass++; - sizeCache.clear() - for (const n of work) size(n) + changed = false + pass++ - /* ---------- relatives Layout (Zentren in globalen Koordinaten) -------- */ + sizeCache.clear() + for (const n of nodes) size(n) - type Pos = { x: number; y: number } - const rel = new Map() + // relatives Layout (Center in globalen Koordinaten) + const relCenter = new Map() - // Merker: Unterkante je rechter Spalten-"Band", damit Parameter unterschiedlicher Parents - // in derselben Spalte nicht kollidieren. + // Unterkante je rechter Spalten-"Band", damit Parameter nicht kollidieren const columnBottom = new Map() - const colKey = (x: number) => Math.round(x / 10) // 10px-Buckets gegen Floating-Drift + const colKey = (x: number) => Math.round(x / 10) const layoutIter = (root: Node, cx: number, cy: number): number => { type Frame = { - node: Node; - cx: number; - cy: number; - phase: number; - w?: number; - h?: number; - right?: Node[]; - rightIndex?: number; - py?: number; - rightBottom?: number; - childKey?: number; - childPs?: Size; - lastChildBottom?: number; - gParams?: Node[]; - gSizes?: Size[]; - gIndex?: number; - gx?: number; - gy?: number; - rowBottom?: number; - kids?: Node[]; - kidIndex?: number; - curY?: number; - bottom?: number; + node: Node + cx: number + cy: number + phase: number + w?: number + h?: number + right?: Node[] + rightIndex?: number + py?: number + rightBottom?: number + childKey?: number + childPs?: Size + lastChildBottom?: number + + gParams?: Node[] + gSizes?: Size[] + gIndex?: number + gx?: number + gy?: number + rowBottom?: number + + kids?: Node[] + kidIndex?: number + curY?: number + bottom?: number } - const stack: Frame[] = [{node: root, cx, cy, phase: 0}]; - let returnBottom = 0; + + const stack: Frame[] = [{ node: root, cx, cy, phase: 0 }] + let returnBottom = 0 while (stack.length) { - const f = stack[stack.length - 1]; + const f = stack[stack.length - 1] switch (f.phase) { case 0: { - rel.set(f.node.id, {x: f.cx, y: f.cy}) - const {w, h} = size(f.node) - f.w = w; - f.h = h; - - const paramsOf = params.get(f.node.id) ?? []; - const right: Node[] = []; - const gParams: Node[] = []; + relCenter.set(f.node.id, { x: f.cx, y: f.cy }) + const { w, h } = size(f.node) + f.w = w + f.h = h + + const paramsOf = params.get(f.node.id) ?? [] + const right: Node[] = [] + const gParams: Node[] = [] for (const p of paramsOf) { - if (p.type === 'group') gParams.push(p) + if (p.type === "group") gParams.push(p) else right.push(p) } right.sort((a, b) => (+(a.data as any)?.paramIndex) - (+(b.data as any)?.paramIndex)) gParams.sort((a, b) => (+(a.data as any)?.paramIndex) - (+(b.data as any)?.paramIndex)) - f.right = right; - f.gParams = gParams; - let total = 0; - for (const p of right) total += size(p).h; + f.right = right + f.gParams = gParams + + let total = 0 + for (const p of right) total += size(p).h total += V * Math.max(0, right.length - 1) - f.py = f.cy - total / 2; - f.rightBottom = f.cy + h / 2; - f.rightIndex = 0; - f.phase = 1; - break; + + f.py = f.cy - total / 2 + f.rightBottom = f.cy + h / 2 + f.rightIndex = 0 + f.phase = 1 + break } + case 1: { if (f.rightIndex! < f.right!.length) { - const p = f.right![f.rightIndex!]; + const p = f.right![f.rightIndex!] const ps = size(p) - const px = f.cx + f.w! / 2 + H + ps.w / 2; - let pcy = f.py! + ps.h / 2; + const px = f.cx + f.w! / 2 + H + ps.w / 2 + let pcy = f.py! + ps.h / 2 + const key = colKey(px) - const occ = columnBottom.get(key) ?? Number.NEGATIVE_INFINITY; - const minTop = occ + V; - const desiredTop = pcy - ps.h / 2; + const occ = columnBottom.get(key) ?? Number.NEGATIVE_INFINITY + const minTop = occ + V + const desiredTop = pcy - ps.h / 2 + if (desiredTop < minTop) { - pcy = minTop + ps.h / 2; - f.py = pcy - ps.h / 2; + pcy = minTop + ps.h / 2 + f.py = pcy - ps.h / 2 } - f.childKey = key; - f.childPs = ps; - stack.push({node: p, cx: px, cy: pcy, phase: 0}) - f.phase = 10; + + f.childKey = key + f.childPs = ps + stack.push({ node: p, cx: px, cy: pcy, phase: 0 }) + f.phase = 10 } else { f.bottom = Math.max(f.cy + f.h! / 2, f.rightBottom!) - f.phase = 2; + f.phase = 2 } - break; + break } + case 10: { - const subBottom = f.lastChildBottom!; - columnBottom.set(f.childKey!, Math.max(columnBottom.get(f.childKey!) ?? Number.NEGATIVE_INFINITY, subBottom)) + const subBottom = f.lastChildBottom! + columnBottom.set( + f.childKey!, + Math.max(columnBottom.get(f.childKey!) ?? Number.NEGATIVE_INFINITY, subBottom) + ) f.rightBottom = Math.max(f.rightBottom!, subBottom) f.py = Math.max(f.py! + f.childPs!.h + V, subBottom + V) - f.rightIndex!++; - f.phase = 1; - break; + f.rightIndex!++ + f.phase = 1 + break } + case 2: { if (f.gParams && f.gParams.length) { - const gSizes: Size[] = []; - let rowW = 0; + const gSizes: Size[] = [] + let rowW = 0 for (const g of f.gParams) { const gs = size(g) gSizes.push(gs) - rowW += gs.w; + rowW += gs.w } rowW += H * (f.gParams.length - 1) - f.gSizes = gSizes; - f.gx = f.cx - rowW / 2; - f.gy = f.bottom! + V; - f.rowBottom = f.bottom; - f.gIndex = 0; - f.phase = 3; + + f.gSizes = gSizes + f.gx = f.cx - rowW / 2 + f.gy = f.bottom! + V + f.rowBottom = f.bottom + f.gIndex = 0 + f.phase = 3 } else { - f.phase = 4; + f.phase = 4 } - break; + break } + case 3: { if (f.gIndex! < f.gParams!.length) { - const g = f.gParams![f.gIndex!]; - const gs = f.gSizes![f.gIndex!]; - const gcx = f.gx! + gs.w / 2; - const gcy = f.gy! + gs.h / 2; - f.gx! += gs.w + H; - stack.push({node: g, cx: gcx, cy: gcy, phase: 0}) - f.childPs = gs; - f.phase = 30; + const g = f.gParams![f.gIndex!] + const gs = f.gSizes![f.gIndex!] + const gcx = f.gx! + gs.w / 2 + const gcy = f.gy! + gs.h / 2 + f.gx! += gs.w + H + + stack.push({ node: g, cx: gcx, cy: gcy, phase: 0 }) + f.childPs = gs + f.phase = 30 } else { - f.bottom = f.rowBottom; - f.phase = 4; + f.bottom = f.rowBottom + f.phase = 4 } - break; + break } + case 30: { - const subBottom = f.lastChildBottom!; + const subBottom = f.lastChildBottom! f.rowBottom = Math.max(f.rowBottom!, subBottom) - f.gIndex!++; - f.phase = 3; - break; + f.gIndex!++ + f.phase = 3 + break } + case 4: { - if (f.node.type === 'group') { - const kidsAll = rfKids.get(f.node.id) ?? []; - const kids: Node[] = []; + if (f.node.type === "group") { + const kidsAll = rfKids.get(f.node.id) ?? [] + const kids: Node[] = [] for (const k of kidsAll) { if (!(k.data as any)?.linkingId) kids.push(k) } - f.kids = kids; - f.kidIndex = 0; - f.curY = f.cy - f.h! / 2 + PAD; - f.phase = 5; + f.kids = kids + f.kidIndex = 0 + f.curY = f.cy - f.h! / 2 + PAD + f.phase = 5 } else { - f.phase = 6; + f.phase = 6 } - break; + break } + case 5: { if (f.kidIndex! < f.kids!.length) { - const k = f.kids![f.kidIndex!]; + const k = f.kids![f.kidIndex!] const ks = size(k) - const ky = f.curY! + ks.h / 2; - stack.push({node: k, cx: f.cx, cy: ky, phase: 0}) - f.childPs = ks; - f.phase = 50; + const ky = f.curY! + ks.h / 2 + + stack.push({ node: k, cx: f.cx, cy: ky, phase: 0 }) + f.childPs = ks + f.phase = 50 } else { - const contentBottom = f.curY! - V; + const contentBottom = f.curY! - V f.bottom = Math.max(f.bottom!, contentBottom + PAD) - f.phase = 6; + f.phase = 6 } - break; + break } + case 50: { - const subBottom = f.lastChildBottom!; - f.curY = subBottom + V; - f.kidIndex!++; - f.phase = 5; - break; + const subBottom = f.lastChildBottom! + f.curY = subBottom + V + f.kidIndex!++ + f.phase = 5 + break } + case 6: { - const finished = stack.pop()!; + const finished = stack.pop()! if (stack.length) { - stack[stack.length - 1].lastChildBottom = finished.bottom; + stack[stack.length - 1].lastChildBottom = finished.bottom } else { - returnBottom = finished.bottom!; + returnBottom = finished.bottom! } - break; + break } } } - return returnBottom; + return returnBottom } - /* Root-Nodes untereinander stapeln (nur echte Roots, keine Param-Nodes) */ - let yCursor = 0; - for (const r of work) { + // Root-Nodes stapeln + let yCursor = 0 + for (const r of nodes) { if (!(r.data as any)?.linkingId && !r.parentId) { const b = layoutIter(r, 0, yCursor + size(r).h / 2) - yCursor = b + V; + yCursor = b + V } } - /* ---------- rel (Center) → abs (Top-Left) ----------------------------- */ - const absCenter = new Map() - for (const n of work) absCenter.set(n.id, rel.get(n.id)!) - + // rel (Center) → absTL_initial (global Top-Left) const absTL_initial = new Map() - for (const n of work) { - const {w, h} = size(n) - const {x, y} = absCenter.get(n.id)!; - absTL_initial.set(n.id, {x: x - w / 2, y: y - h / 2}) + for (const n of nodes) { + const { w, h } = size(n) + const c = relCenter.get(n.id)! + absTL_initial.set(n.id, { x: c.x - w / 2, y: c.y - h / 2 }) } - /* ---------- positions in RF-Koordinaten (Top-Left), ggf. relativ zu Parent */ - for (const n of work) { - const tl = absTL_initial.get(n.id)!; - let px = tl.x; - let py = tl.y; + // initial posTL setzen (in RF-Koordinaten, relativ zu Parent) + for (const n of nodes) { + const tl = absTL_initial.get(n.id)! + let px = tl.x + let py = tl.y + if (n.parentId) { - const pTL = absTL_initial.get(n.parentId)!; - px -= pTL.x; - py -= pTL.y; + const pTL = absTL_initial.get(n.parentId)! + px -= pTL.x + py -= pTL.y } - n.position = {x: px, y: py} - } - const posById = new Map() - for (const n of work) posById.set(n.id, n) + const prev = posTL.get(n.id) + if (!prev || Math.abs(prev.x - px) > EPS || Math.abs(prev.y - py) > EPS) { + posTL.set(n.id, { x: px, y: py }) + changed = true + } + } - /* ---------- Bounding-Korrektur jeder Group ----------------------------- */ + // Bounding-Korrektur jeder Group const depth = (g: Node) => { - let d = 0, p: Node | undefined = g; + let d = 0 + let p: Node | undefined = g while (p?.parentId) { - d++; - p = posById.get(p.parentId) - if (!p) break; + d++ + p = byId.get(p.parentId) + if (!p) break } - return d; + return d } - const groups: Node[] = []; - for (const n of work) { - if (n.type === 'group') groups.push(n) - } + const groups: Node[] = [] + for (const n of nodes) if (n.type === "group") groups.push(n) groups.sort((a, b) => depth(b) - depth(a)) + const childSize = (n: Node): Size => { + const sw = typeof n.style?.width === "number" ? (n.style.width as number) : undefined + const sh = typeof n.style?.height === "number" ? (n.style.height as number) : undefined + const s = baseSizes.get(n.id)! + return { w: sw ?? s.w, h: sh ?? s.h } + } + for (const g of groups) { - const direct: Node[] = []; - for (const k of work) { + const direct: Node[] = [] + for (const k of nodes) { if (k.parentId === g.id) direct.push(k) } if (!direct.length) { - const gw = typeof g.style?.width === 'number' ? g.style.width : 2 * PAD; - const gh = typeof g.style?.height === 'number' ? g.style.height : 2 * PAD; - g.style = {...(g.style as React.CSSProperties), width: gw, height: gh} - continue; + // minimal group size + const gw = getStyleW(g) ?? (typeof g.style?.width === "number" ? (g.style.width as number) : 2 * PAD) + const gh = getStyleH(g) ?? (typeof g.style?.height === "number" ? (g.style.height as number) : 2 * PAD) + styleWH.set(g.id, { width: gw, height: gh }) + measuredWH.set(g.id, { width: gw, height: gh }) + baseSizes.set(g.id, { w: gw, h: gh }) + continue } - const childSize = (n: Node): Size => { - const sw = typeof n.style?.width === 'number' ? n.style.width : undefined; - const sh = typeof n.style?.height === 'number' ? n.style.height : undefined; - const s = baseSizes.get(n.id)!; - return {w: sw ?? s.w, h: sh ?? s.h} - } - - let minX = Number.POSITIVE_INFINITY, - minY = Number.POSITIVE_INFINITY, - maxX = Number.NEGATIVE_INFINITY, - maxY = Number.NEGATIVE_INFINITY; + let minX = Number.POSITIVE_INFINITY + let minY = Number.POSITIVE_INFINITY + let maxX = Number.NEGATIVE_INFINITY + let maxY = Number.NEGATIVE_INFINITY for (const k of direct) { const ks = childSize(k) - if (k.position.x < minX) minX = k.position.x; - if (k.position.y < minY) minY = k.position.y; - if (k.position.x + ks.w > maxX) maxX = k.position.x + ks.w; - if (k.position.y + ks.h > maxY) maxY = k.position.y + ks.h; + const p = posTL.get(k.id)! + if (p.x < minX) minX = p.x + if (p.y < minY) minY = p.y + if (p.x + ks.w > maxX) maxX = p.x + ks.w + if (p.y + ks.h > maxY) maxY = p.y + ks.h } - const dx = minX - PAD; - const dy = minY - PAD; + const dx = minX - PAD + const dy = minY - PAD if (Math.abs(dx) > EPS || Math.abs(dy) > EPS) { for (const k of direct) { - k.position.x -= dx; - k.position.y -= dy; + const p = posTL.get(k.id)! + const nx = p.x - dx + const ny = p.y - dy + + if (Math.abs(p.x - nx) > EPS || Math.abs(p.y - ny) > EPS) { + posTL.set(k.id, { x: nx, y: ny }) + changed = true + } } - changed = true; } - const newW = (maxX - minX) + 2 * PAD; - const newH = (maxY - minY) + 2 * PAD; + const newW = (maxX - minX) + 2 * PAD + const newH = (maxY - minY) + 2 * PAD - const oldW = typeof g.style?.width === 'number' ? g.style.width : size(g).w; - const oldH = typeof g.style?.height === 'number' ? g.style.height : size(g).h; + const oldW = getStyleW(g) ?? (typeof g.style?.width === "number" ? (g.style.width as number) : size(g).w) + const oldH = getStyleH(g) ?? (typeof g.style?.height === "number" ? (g.style.height as number) : size(g).h) - if (Math.abs(newW - oldW) > EPS || Math.abs(newH - oldH) > EPS) { - changed = true; - } + if (Math.abs(newW - oldW) > EPS || Math.abs(newH - oldH) > EPS) changed = true - g.measured = {width: newW, height: newH} - g.style = {...(g.style as React.CSSProperties), width: newW, height: newH} - baseSizes.set(g.id, {w: newW, h: newH}) + styleWH.set(g.id, { width: newW, height: newH }) + measuredWH.set(g.id, { width: newW, height: newH }) + baseSizes.set(g.id, { w: newW, h: newH }) } - /* ---------- Param-Group-Row nach Bounding sauber zentrieren ----------- */ - // WICHTIG: Größen-Cache invalidieren, da Group-Styles sich geändert haben + // Größen-Cache invalidieren (Group-Styles haben sich ggf. geändert) sizeCache.clear() - for (const n of work) size(n) + for (const n of nodes) size(n) - // Globale Center bleiben in rel; aber Top-Left muss mit NEUEN Größen berechnet werden - const absTL = new Map() + // absTL nach Bounding mit NEUEN Größen + const absTL_after = new Map() const absCenterAfter = new Map() - for (const n of work) { + for (const n of nodes) { const s = size(n) - const c = rel.get(n.id)!; // globales Center aus dem Layout-Durchlauf + const c = relCenter.get(n.id)! absCenterAfter.set(n.id, c) - absTL.set(n.id, {x: c.x - s.w / 2, y: c.y - s.h / 2}) + absTL_after.set(n.id, { x: c.x - s.w / 2, y: c.y - s.h / 2 }) } - for (const parent of work) { - const pGroups: Node[] = []; - const paramList = params.get(parent.id) ?? []; - for (const p of paramList) { - if (p.type === 'group') pGroups.push(p) - } - if (!pGroups.length) continue; + // Param-Group-Row nach Bounding sauber zentrieren + for (const parent of nodes) { + const pGroups: Node[] = [] + const paramList = params.get(parent.id) ?? [] + for (const p of paramList) if (p.type === "group") pGroups.push(p) + if (!pGroups.length) continue const ordered = pGroups.slice().sort((a, b) => (+((a.data as any)?.paramIndex) || 0) - (+((b.data as any)?.paramIndex) || 0) ) - const widths: number[] = []; + const widths: number[] = [] for (const g of ordered) { - const gn = posById.get(g.id)!; - const sw = typeof gn.style?.width === 'number' ? gn.style.width : undefined; - widths.push(sw ?? size(gn).w) + const sw = getStyleW(g) ?? (typeof g.style?.width === "number" ? (g.style.width as number) : undefined) + widths.push(sw ?? size(g).w) } - let rowW = 0; - for (const w of widths) rowW += w; + + let rowW = 0 + for (const w of widths) rowW += w rowW += H * (ordered.length - 1) - const pCenterX = absCenterAfter.get(parent.id)!.x; - let gx = pCenterX - rowW / 2; + const pCenterX = absCenterAfter.get(parent.id)!.x + let gx = pCenterX - rowW / 2 for (let i = 0; i < ordered.length; i++) { - const g = ordered[i]; - const gn = posById.get(g.id)!; - const containerTL = gn.parentId ? absTL.get(gn.parentId)! : {x: 0, y: 0} - gn.position.x = gx - containerTL.x; - gx += widths[i] + H; + const g = ordered[i] + const containerTL = g.parentId ? absTL_after.get(g.parentId)! : { x: 0, y: 0 } + const cur = posTL.get(g.id)! + const nx = gx - containerTL.x + const ny = cur.y + + if (Math.abs(cur.x - nx) > EPS || Math.abs(cur.y - ny) > EPS) { + posTL.set(g.id, { x: nx, y: ny }) + changed = true + } + gx += widths[i] + H } } } while (changed && pass < 5) - return {nodes: work} + // ---------------------------- + // 4) Output: Structural Sharing (nur wirklich geänderte Nodes neu bauen) + // ---------------------------- + const out = nodes.map((n) => { + const nextP = posTL.get(n.id) + const nextM = measuredWH.get(n.id) + const nextS = styleWH.get(n.id) + + let isChanged = false + + if (nextP) { + const op = n.position ?? { x: 0, y: 0 } + if (Math.abs(op.x - nextP.x) > EPS || Math.abs(op.y - nextP.y) > EPS) isChanged = true + } + + if (nextM) { + const om = n.measured ?? ({ width: 0, height: 0 } as any) + if (Math.abs((om as any).width - nextM.width) > EPS || Math.abs((om as any).height - nextM.height) > EPS) isChanged = true + } + + if (nextS) { + const ow = typeof (n.style as any)?.width === "number" ? (n.style as any).width : undefined + const oh = typeof (n.style as any)?.height === "number" ? (n.style as any).height : undefined + if (ow !== nextS.width || oh !== nextS.height) isChanged = true + } + + if (!isChanged) return n + + return { + ...n, + position: nextP ?? n.position, + measured: nextM ? ({ ...(n.measured as any), width: nextM.width, height: nextM.height } as any) : n.measured, + style: nextS + ? ({ ...(n.style as any), width: nextS.width, height: nextS.height } as any) + : n.style, + } as Node + }) + + return { nodes: out } } const getCachedLayoutElements = React.cache(getLayoutElements) @@ -528,16 +612,16 @@ export const DFlow: React.FC = (props) => { const InternalDFlow: React.FC = (props) => { const {flowId, namespaceId, projectId} = props - const nodeTypes = { + const nodeTypes = React.useMemo(() => ({ default: DFlowFunctionDefaultCard, group: DFlowFunctionGroupCard, suggestion: DFlowFunctionSuggestionCard, trigger: DFlowFunctionTriggerCard, - } + }), []) - const edgeTypes = { + const edgeTypes = React.useMemo(() => ({ default: DFlowEdge, - } + }), []) const initialNodes = useFlowNodes(flowId, namespaceId, projectId) const initialEdges = useFlowEdges(flowId, namespaceId, projectId) @@ -612,7 +696,6 @@ const InternalDFlow: React.FC = (props) => { onInit={(rf) => rf.fitView()} onNodesChange={nodeChangeEvent} onEdgesChange={edgeChangeEvent} - fitView {...mergeCode0Props("flow", props)} nodes={nodes} edges={edges} diff --git a/src/components/d-flow/DFlow.util.ts b/src/components/d-flow/DFlow.util.ts new file mode 100644 index 000000000..d2e7a7942 --- /dev/null +++ b/src/components/d-flow/DFlow.util.ts @@ -0,0 +1,21 @@ +import {md5} from "js-md5"; + +const GOLDEN_ANGLE = 137.50776405003785 + +const extractIdNumber = (s: string) => { + const m = s.match(/\/(\d+)\s*$/) + return m ? Number(m[1]) : null +} + +export const hashToColor = (s: string): string => { + const n = extractIdNumber(s) + if (n != null) { + const range = 320 + const hue = 25 + ((n * GOLDEN_ANGLE) % range) + return `hsl(${hue}, 100%, 72%)` + } + + const h = md5(md5(s)) + const a = parseInt(h.slice(0, 8), 16) + return `hsl(${25 + (a % 320)}, 100%, 72%)` +} \ No newline at end of file diff --git a/src/components/d-flow/DFlowEdge.tsx b/src/components/d-flow/DFlowEdge.tsx index f16687169..91974810f 100644 --- a/src/components/d-flow/DFlowEdge.tsx +++ b/src/components/d-flow/DFlowEdge.tsx @@ -54,9 +54,9 @@ export const DFlowEdge: React.FC = memo((props) => { gradientUnits="userSpaceOnUse" > {/* Start: volle Farbe */} - + {/* Ende: gleiche Farbe, aber transparent */} - + diff --git a/src/components/d-resizable/DResizable.stories.tsx b/src/components/d-resizable/DResizable.stories.tsx index e038c8a76..f0a70d9bf 100644 --- a/src/components/d-resizable/DResizable.stories.tsx +++ b/src/components/d-resizable/DResizable.stories.tsx @@ -10,10 +10,9 @@ import { IconFile, IconMessageChatbot } from "@tabler/icons-react"; -import {useReactiveArrayService} from "../../utils"; +import {ContextStoreProvider, useReactiveArrayService} from "../../utils"; import {FileTabsView} from "../file-tabs/FileTabs.view"; import {FileTabsService} from "../file-tabs/FileTabs.service"; -import {ContextStoreProvider} from "../../utils"; import {DFlowTabs} from "../d-flow-file"; import DataTypesData from "./data_types.json"; import FunctionsData from "./runtime_functions.json"; @@ -25,7 +24,9 @@ import { NamespacesProjectsFlowsCreateInput, NamespacesProjectsFlowsCreatePayload, NamespacesProjectsFlowsDeleteInput, - NamespacesProjectsFlowsDeletePayload, NamespacesProjectsFlowsUpdateInput, NamespacesProjectsFlowsUpdatePayload + NamespacesProjectsFlowsDeletePayload, + NamespacesProjectsFlowsUpdateInput, + NamespacesProjectsFlowsUpdatePayload } from "@code0-tech/sagittarius-graphql-types"; import {Flex} from "../flex/Flex"; import {Button} from "../button/Button"; @@ -73,7 +74,7 @@ export const Dashboard = () => { const [flowStore, flowService] = useReactiveArrayService(DFlowReactiveServiceExtend, [{ id: "gid://sagittarius/Flow/1", type: { - id: "gid://sagittarius/FlowType/867", + id: "gid://sagittarius/FlowType/868", }, name: "de/codezero/examples/REST Flow", settings: { @@ -91,7 +92,7 @@ export const Dashboard = () => { }, { id: "gid://sagittarius/Flow/2", type: { - id: "gid://sagittarius/FlowType/867", + id: "gid://sagittarius/FlowType/868", }, name: "de/codezero/examples-2/REST Flow", settings: { @@ -109,7 +110,7 @@ export const Dashboard = () => { }, { id: "gid://sagittarius/Flow/3", type: { - id: "gid://sagittarius/FlowType/867", + id: "gid://sagittarius/FlowType/868", }, name: "en/codezero/examples/REST Flow", settings: { @@ -133,47 +134,54 @@ export const Dashboard = () => { return - - - - - - } bottomContent={ - - - - - }> + - + - + + + + + + } bottomContent={ + + + + + }> + + + + + {show && ( + <> + + + + + + )} + + - {show && ( - <> - - - - - - )} + @@ -184,7 +192,7 @@ const Folder = () => { const ref = React.useRef(null) return + @@ -192,7 +200,7 @@ const Folder = () => { @@ -205,7 +213,7 @@ const Folder = () => { @@ -218,7 +226,7 @@ const Folder = () => { diff --git a/src/components/d-resizable/DResizable.style.scss b/src/components/d-resizable/DResizable.style.scss index 1f983be83..061a83ded 100644 --- a/src/components/d-resizable/DResizable.style.scss +++ b/src/components/d-resizable/DResizable.style.scss @@ -43,12 +43,13 @@ &__handle-bar { z-index: 1; position: relative; - display: flex; - padding: .25rem; border-radius: variables.$xs; + height: 10%; + padding: .2rem; & { @include box.box(variables.$secondary); + border: none; } } diff --git a/src/components/d-resizable/DResizable.tsx b/src/components/d-resizable/DResizable.tsx index 9ca07f4f3..9ea57bbee 100644 --- a/src/components/d-resizable/DResizable.tsx +++ b/src/components/d-resizable/DResizable.tsx @@ -34,9 +34,7 @@ export const DResizableHandle: React.FC = (props) => { return -
- -
+
} diff --git a/src/components/d-resizable/data_types.json b/src/components/d-resizable/data_types.json index 1f978f71a..2df7b8edb 100644 --- a/src/components/d-resizable/data_types.json +++ b/src/components/d-resizable/data_types.json @@ -1 +1,2224 @@ -[{"__typename":"DataType","id":"gid://sagittarius/DataType/0","genericKeys":[],"identifier":"HTTP_HEADER_MAP","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;headers"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Headers"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Headers"}]},"rules":{"count":1,"nodes":[{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/1","genericType":{"id":"gid://sagittarius/GenericType/2","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/5","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/6","genericKeys":[],"identifier":"HTTP_HEADER_ENTRY","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;header;entry"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Header Entry"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Header Entry"}]},"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/7","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"key"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/9","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"value"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"}}],"target":"T","id":"gid://sagittarius/GenericMapper/12"}]}}}}]},"variant":"ARRAY"},{"__typename":"DataType","id":"gid://sagittarius/DataType/13","genericKeys":[],"identifier":"HTTP_ADAPTER_INPUT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;adapter;input"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Adapter Input"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Adapter Input"}]},"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/14","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}},"key":"body"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/15","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/0","genericKeys":[],"identifier":"HTTP_HEADER_MAP","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;headers"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Headers"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Headers"}]},"rules":{"count":1,"nodes":[{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/1","genericType":{"id":"gid://sagittarius/GenericType/2","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/5","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/6","genericKeys":[],"identifier":"HTTP_HEADER_ENTRY","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;header;entry"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Header Entry"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Header Entry"}]},"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/7","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"key"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/9","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"value"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"}}],"target":"T","id":"gid://sagittarius/GenericMapper/12"}]}}}}]},"variant":"ARRAY"}},"key":"headers"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/16","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"},{"__typename":"DataType","id":"gid://sagittarius/DataType/6","genericKeys":[],"identifier":"HTTP_HEADER_ENTRY","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;header;entry"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Header Entry"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Header Entry"}]},"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/7","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"key"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/9","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"value"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"},{"__typename":"DataType","id":"gid://sagittarius/DataType/17","genericKeys":[],"identifier":"HTTP_REQUEST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;request"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Request"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Request"}]},"rules":{"count":5,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/18","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/19","genericKeys":[],"identifier":"HTTP_METHOD","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;method;get;post;put;delete;path;head"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Method"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Method"}]},"rules":{"count":1,"nodes":[{"variant":"ITEM_OF_COLLECTION","config":{"items":["GET","POST","PUT","DELETE","PATCH","HEAD"]}}]},"variant":"TYPE"}},"key":"method"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/20","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/21","genericKeys":[],"identifier":"HTTP_URL","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;route;url"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Route"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Route"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^/\\w+(?:[.:~-]\\w+)*(?:/\\w+(?:[.:~-]\\w+)*)*$"}}]},"variant":"TYPE"}},"key":"url"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/22","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}},"key":"body"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/23","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/0","genericKeys":[],"identifier":"HTTP_HEADER_MAP","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;headers"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Headers"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Headers"}]},"rules":{"count":1,"nodes":[{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/1","genericType":{"id":"gid://sagittarius/GenericType/2","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/5","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/6","genericKeys":[],"identifier":"HTTP_HEADER_ENTRY","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;header;entry"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Header Entry"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Header Entry"}]},"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/7","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"key"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/9","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"value"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"}}],"target":"T","id":"gid://sagittarius/GenericMapper/12"}]}}}}]},"variant":"ARRAY"}},"key":"headers"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/24","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"},{"__typename":"DataType","id":"gid://sagittarius/DataType/25","genericKeys":[],"identifier":"HTTP_RESPONSE","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;response;object"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Response"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Response"}]},"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/26","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/0","genericKeys":[],"identifier":"HTTP_HEADER_MAP","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;headers"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Headers"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Headers"}]},"rules":{"count":1,"nodes":[{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/1","genericType":{"id":"gid://sagittarius/GenericType/2","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/5","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/6","genericKeys":[],"identifier":"HTTP_HEADER_ENTRY","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;header;entry"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Header Entry"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Header Entry"}]},"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/7","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"key"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/9","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"value"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"}}],"target":"T","id":"gid://sagittarius/GenericMapper/12"}]}}}}]},"variant":"ARRAY"}},"key":"headers"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/27","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}},"key":"body"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/28","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"},{"__typename":"DataType","id":"gid://sagittarius/DataType/19","genericKeys":[],"identifier":"HTTP_METHOD","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;method;get;post;put;delete;path;head"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Method"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Method"}]},"rules":{"count":1,"nodes":[{"variant":"ITEM_OF_COLLECTION","config":{"items":["GET","POST","PUT","DELETE","PATCH","HEAD"]}}]},"variant":"TYPE"},{"__typename":"DataType","id":"gid://sagittarius/DataType/29","genericKeys":[],"identifier":"HTTP_STATUS_CODE","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;status;code"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Status Code"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Status Code"}]},"rules":{"count":1,"nodes":[{"variant":"NUMBER_RANGE","config":{"from":100,"to":599}}]},"variant":"TYPE"},{"__typename":"DataType","id":"gid://sagittarius/DataType/21","genericKeys":[],"identifier":"HTTP_URL","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;route;url"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Route"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Route"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^/\\w+(?:[.:~-]\\w+)*(?:/\\w+(?:[.:~-]\\w+)*)*$"}}]},"variant":"TYPE"},{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},{"__typename":"DataType","id":"gid://sagittarius/DataType/30","genericKeys":["I"],"identifier":"COMPARATOR","aliases":{"count":1,"nodes":[{"code":"en-US","content":"compare;comparator"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Compare ${I}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Comparator"}]},"rules":{"count":2,"nodes":[{"variant":"RETURN_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/31","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}},{"variant":"INPUT_TYPES","config":{"inputTypes":[{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/33","genericKey":"I"},"inputIdentifier":"left"},{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/34","genericKey":"I"},"inputIdentifier":"right"}]}}]},"variant":"NODE"},{"__typename":"DataType","id":"gid://sagittarius/DataType/35","genericKeys":["T"],"identifier":"CONSUMER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"use;consumer;consume;lambda"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Use ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Consumer"}]},"rules":{"count":1,"nodes":[{"variant":"INPUT_TYPES","config":{"inputTypes":[{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/36","genericKey":"T"},"inputIdentifier":"consumer"}]}}]},"variant":"NODE"},{"__typename":"DataType","id":"gid://sagittarius/DataType/37","genericKeys":["T"],"identifier":"PREDICATE","aliases":{"count":1,"nodes":[{"code":"en-US","content":"predicate"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Predicate of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Predicate"}]},"rules":{"count":2,"nodes":[{"variant":"RETURN_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/38","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}}},{"variant":"INPUT_TYPES","config":{"inputTypes":[{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/40","genericKey":"T"},"inputIdentifier":"predicate"}]}}]},"variant":"NODE"},{"__typename":"DataType","id":"gid://sagittarius/DataType/41","genericKeys":[],"identifier":"RUNNABLE","aliases":{"count":1,"nodes":[{"code":"en-US","content":"node;function"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Node"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Node"}]},"rules":{"count":0,"nodes":[]},"variant":"NODE"},{"__typename":"DataType","id":"gid://sagittarius/DataType/42","genericKeys":["I","R"],"identifier":"TRANSFORM","aliases":{"count":1,"nodes":[{"code":"en-US","content":"transform"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Transform ${I} to ${R}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Transform"}]},"rules":{"count":2,"nodes":[{"variant":"RETURN_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/43","genericKey":"R"}}},{"variant":"INPUT_TYPES","config":{"inputTypes":[{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/44","genericKey":"I"},"inputIdentifier":"transform"}]}}]},"variant":"NODE"},{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"},{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"},{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"},{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"},{"__typename":"DataType","id":"gid://sagittarius/DataType/45","genericKeys":[],"identifier":"TEXT_ENCODING","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;encoding;base64"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text Encoding"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text Encoding"}]},"rules":{"count":1,"nodes":[{"variant":"ITEM_OF_COLLECTION","config":{"items":["BASE64"]}}]},"variant":"TYPE"}] \ No newline at end of file +[ + { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/82372372783872323", + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Data Type" + } + ], + "variant": "DATA_TYPE" + }, + { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/0", + "genericKeys": [], + "identifier": "REST_HEADER_INPUT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "http;rest;header;entry;input" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Headers" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Headers" + } + ], + "rules": { + "count": 0, + "nodes": [] + }, + "variant": "OBJECT" + }, + { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/1", + "genericKeys": [], + "identifier": "REST_ADAPTER_INPUT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "http;rest;adapter;input" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Rest Adapter Input" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Rest Adapter Input" + } + ], + "rules": { + "count": 3, + "nodes": [ + { + "variant": "CONTAINS_KEY", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/2", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/3", + "genericKeys": [], + "identifier": "OBJECT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "object;struct;data" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "rules": { + "count": 0, + "nodes": [] + }, + "variant": "OBJECT" + } + }, + "key": "body" + } + }, + { + "variant": "CONTAINS_KEY", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/4", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/0", + "genericKeys": [], + "identifier": "REST_HEADER_INPUT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "http;rest;header;entry;input" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Headers" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Headers" + } + ], + "rules": { + "count": 0, + "nodes": [] + }, + "variant": "OBJECT" + } + }, + "key": "headers" + } + }, + { + "variant": "PARENT_TYPE", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/5", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/3", + "genericKeys": [], + "identifier": "OBJECT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "object;struct;data" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "rules": { + "count": 0, + "nodes": [] + }, + "variant": "OBJECT" + } + } + } + } + ] + }, + "variant": "OBJECT" + }, + { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/6", + "genericKeys": [], + "identifier": "HTTP_HEADER_MAP", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "http;headers" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Headers" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Headers" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "PARENT_TYPE", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/7", + "genericType": { + "id": "gid://sagittarius/GenericType/8", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/9", + "genericKeys": [ + "T" + ], + "identifier": "LIST", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "list;array;collection" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "List of ${T}" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Generic List" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "CONTAINS_TYPE", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/10", + "genericKey": "T" + } + } + } + ] + }, + "variant": "ARRAY" + }, + "genericMappers": [ + { + "genericCombinationStrategies": [], + "sourceDataTypeIdentifiers": [ + { + "id": "gid://sagittarius/DataTypeIdentifier/11", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/12", + "genericKeys": [], + "identifier": "HTTP_HEADER_ENTRY", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "http;header;entry" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Header Entry" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Header Entry" + } + ], + "rules": { + "count": 3, + "nodes": [ + { + "variant": "CONTAINS_KEY", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/13", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/14", + "genericKeys": [], + "identifier": "TEXT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "text;char;literal;string" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Text" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Text" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "REGEX", + "config": { + "pattern": "[\\s\\S]*" + } + } + ] + }, + "variant": "PRIMITIVE" + } + }, + "key": "key" + } + }, + { + "variant": "CONTAINS_KEY", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/15", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/14", + "genericKeys": [], + "identifier": "TEXT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "text;char;literal;string" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Text" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Text" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "REGEX", + "config": { + "pattern": "[\\s\\S]*" + } + } + ] + }, + "variant": "PRIMITIVE" + } + }, + "key": "value" + } + }, + { + "variant": "PARENT_TYPE", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/16", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/3", + "genericKeys": [], + "identifier": "OBJECT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "object;struct;data" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "rules": { + "count": 0, + "nodes": [] + }, + "variant": "OBJECT" + } + } + } + } + ] + }, + "variant": "OBJECT" + } + } + ], + "target": "T", + "id": "gid://sagittarius/GenericMapper/17" + } + ] + } + } + } + } + ] + }, + "variant": "ARRAY" + }, + { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/9", + "genericKeys": [ + "T" + ], + "identifier": "LIST", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "list;array;collection" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "List of ${T}" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Generic List" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "CONTAINS_TYPE", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/10", + "genericKey": "T" + } + } + } + ] + }, + "variant": "ARRAY" + }, + { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/18", + "genericKeys": [ + "I" + ], + "identifier": "COMPARATOR", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "compare;comparator" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Compare ${I}" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Comparator" + } + ], + "rules": { + "count": 2, + "nodes": [ + { + "variant": "RETURN_TYPE", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/19", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/20", + "genericKeys": [], + "identifier": "NUMBER", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "number;integer;float;double;long" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Number" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Number" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "REGEX", + "config": { + "pattern": "^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$" + } + } + ] + }, + "variant": "PRIMITIVE" + } + } + } + }, + { + "variant": "INPUT_TYPES", + "config": { + "inputTypes": [ + { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/21", + "genericKey": "I" + }, + "inputIdentifier": "left" + }, + { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/22", + "genericKey": "I" + }, + "inputIdentifier": "right" + } + ] + } + } + ] + }, + "variant": "NODE" + }, + { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/23", + "genericKeys": [ + "T" + ], + "identifier": "CONSUMER", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "use;consumer;consume;lambda" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Use ${T}" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Consumer" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "INPUT_TYPES", + "config": { + "inputTypes": [ + { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/24", + "genericKey": "T" + }, + "inputIdentifier": "item" + } + ] + } + } + ] + }, + "variant": "NODE" + }, + { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/25", + "genericKeys": [ + "T" + ], + "identifier": "PREDICATE", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "predicate" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Predicate of ${T}" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Predicate" + } + ], + "rules": { + "count": 2, + "nodes": [ + { + "variant": "RETURN_TYPE", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/26", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/27", + "genericKeys": [], + "identifier": "BOOLEAN", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "bool;boolean;bit" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Boolean" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Boolean" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "REGEX", + "config": { + "pattern": "^(true|false)$" + } + } + ] + }, + "variant": "PRIMITIVE" + } + } + } + }, + { + "variant": "INPUT_TYPES", + "config": { + "inputTypes": [ + { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/28", + "genericKey": "T" + }, + "inputIdentifier": "predicate" + } + ] + } + } + ] + }, + "variant": "NODE" + }, + { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/29", + "genericKeys": [], + "identifier": "RUNNABLE", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "node;function" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Node" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Node" + } + ], + "rules": { + "count": 0, + "nodes": [] + }, + "variant": "NODE" + }, + { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/30", + "genericKeys": [ + "I", + "R" + ], + "identifier": "TRANSFORM", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "transform" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Transform ${I} to ${R}" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Transform" + } + ], + "rules": { + "count": 2, + "nodes": [ + { + "variant": "RETURN_TYPE", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/31", + "genericKey": "R" + } + } + }, + { + "variant": "INPUT_TYPES", + "config": { + "inputTypes": [ + { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/32", + "genericKey": "I" + }, + "inputIdentifier": "transform" + } + ] + } + } + ] + }, + "variant": "NODE" + }, + { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/12", + "genericKeys": [], + "identifier": "HTTP_HEADER_ENTRY", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "http;header;entry" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Header Entry" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Header Entry" + } + ], + "rules": { + "count": 3, + "nodes": [ + { + "variant": "CONTAINS_KEY", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/13", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/14", + "genericKeys": [], + "identifier": "TEXT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "text;char;literal;string" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Text" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Text" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "REGEX", + "config": { + "pattern": "[\\s\\S]*" + } + } + ] + }, + "variant": "PRIMITIVE" + } + }, + "key": "key" + } + }, + { + "variant": "CONTAINS_KEY", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/15", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/14", + "genericKeys": [], + "identifier": "TEXT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "text;char;literal;string" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Text" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Text" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "REGEX", + "config": { + "pattern": "[\\s\\S]*" + } + } + ] + }, + "variant": "PRIMITIVE" + } + }, + "key": "value" + } + }, + { + "variant": "PARENT_TYPE", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/16", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/3", + "genericKeys": [], + "identifier": "OBJECT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "object;struct;data" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "rules": { + "count": 0, + "nodes": [] + }, + "variant": "OBJECT" + } + } + } + } + ] + }, + "variant": "OBJECT" + }, + { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/33", + "genericKeys": [], + "identifier": "HTTP_REQUEST", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "http;request" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Request" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Request" + } + ], + "rules": { + "count": 5, + "nodes": [ + { + "variant": "CONTAINS_KEY", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/34", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/35", + "genericKeys": [], + "identifier": "HTTP_METHOD", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "http;method;get;post;put;delete;path;head" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Method" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Method" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "ITEM_OF_COLLECTION", + "config": { + "items": [ + "GET", + "POST", + "PUT", + "DELETE", + "PATCH", + "HEAD" + ] + } + } + ] + }, + "variant": "TYPE" + } + }, + "key": "method" + } + }, + { + "variant": "CONTAINS_KEY", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/36", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/37", + "genericKeys": [], + "identifier": "HTTP_URL", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "http;route;url" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Route" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Route" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "REGEX", + "config": { + "pattern": "^/\\w+(?:[.:~-]\\w+)*(?:/\\w+(?:[.:~-]\\w+)*)*$" + } + } + ] + }, + "variant": "TYPE" + } + }, + "key": "url" + } + }, + { + "variant": "CONTAINS_KEY", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/38", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/3", + "genericKeys": [], + "identifier": "OBJECT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "object;struct;data" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "rules": { + "count": 0, + "nodes": [] + }, + "variant": "OBJECT" + } + }, + "key": "body" + } + }, + { + "variant": "CONTAINS_KEY", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/39", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/6", + "genericKeys": [], + "identifier": "HTTP_HEADER_MAP", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "http;headers" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Headers" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Headers" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "PARENT_TYPE", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/7", + "genericType": { + "id": "gid://sagittarius/GenericType/8", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/9", + "genericKeys": [ + "T" + ], + "identifier": "LIST", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "list;array;collection" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "List of ${T}" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Generic List" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "CONTAINS_TYPE", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/10", + "genericKey": "T" + } + } + } + ] + }, + "variant": "ARRAY" + }, + "genericMappers": [ + { + "genericCombinationStrategies": [], + "sourceDataTypeIdentifiers": [ + { + "id": "gid://sagittarius/DataTypeIdentifier/11", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/12", + "genericKeys": [], + "identifier": "HTTP_HEADER_ENTRY", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "http;header;entry" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Header Entry" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Header Entry" + } + ], + "rules": { + "count": 3, + "nodes": [ + { + "variant": "CONTAINS_KEY", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/13", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/14", + "genericKeys": [], + "identifier": "TEXT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "text;char;literal;string" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Text" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Text" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "REGEX", + "config": { + "pattern": "[\\s\\S]*" + } + } + ] + }, + "variant": "PRIMITIVE" + } + }, + "key": "key" + } + }, + { + "variant": "CONTAINS_KEY", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/15", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/14", + "genericKeys": [], + "identifier": "TEXT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "text;char;literal;string" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Text" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Text" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "REGEX", + "config": { + "pattern": "[\\s\\S]*" + } + } + ] + }, + "variant": "PRIMITIVE" + } + }, + "key": "value" + } + }, + { + "variant": "PARENT_TYPE", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/16", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/3", + "genericKeys": [], + "identifier": "OBJECT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "object;struct;data" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "rules": { + "count": 0, + "nodes": [] + }, + "variant": "OBJECT" + } + } + } + } + ] + }, + "variant": "OBJECT" + } + } + ], + "target": "T", + "id": "gid://sagittarius/GenericMapper/17" + } + ] + } + } + } + } + ] + }, + "variant": "ARRAY" + } + }, + "key": "headers" + } + }, + { + "variant": "PARENT_TYPE", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/40", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/3", + "genericKeys": [], + "identifier": "OBJECT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "object;struct;data" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "rules": { + "count": 0, + "nodes": [] + }, + "variant": "OBJECT" + } + } + } + } + ] + }, + "variant": "OBJECT" + }, + { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/41", + "genericKeys": [], + "identifier": "HTTP_RESPONSE", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "http;response;object" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Response" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Response" + } + ], + "rules": { + "count": 3, + "nodes": [ + { + "variant": "CONTAINS_KEY", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/42", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/6", + "genericKeys": [], + "identifier": "HTTP_HEADER_MAP", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "http;headers" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Headers" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Headers" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "PARENT_TYPE", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/7", + "genericType": { + "id": "gid://sagittarius/GenericType/8", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/9", + "genericKeys": [ + "T" + ], + "identifier": "LIST", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "list;array;collection" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "List of ${T}" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Generic List" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "CONTAINS_TYPE", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/10", + "genericKey": "T" + } + } + } + ] + }, + "variant": "ARRAY" + }, + "genericMappers": [ + { + "genericCombinationStrategies": [], + "sourceDataTypeIdentifiers": [ + { + "id": "gid://sagittarius/DataTypeIdentifier/11", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/12", + "genericKeys": [], + "identifier": "HTTP_HEADER_ENTRY", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "http;header;entry" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Header Entry" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Header Entry" + } + ], + "rules": { + "count": 3, + "nodes": [ + { + "variant": "CONTAINS_KEY", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/13", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/14", + "genericKeys": [], + "identifier": "TEXT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "text;char;literal;string" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Text" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Text" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "REGEX", + "config": { + "pattern": "[\\s\\S]*" + } + } + ] + }, + "variant": "PRIMITIVE" + } + }, + "key": "key" + } + }, + { + "variant": "CONTAINS_KEY", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/15", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/14", + "genericKeys": [], + "identifier": "TEXT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "text;char;literal;string" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Text" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Text" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "REGEX", + "config": { + "pattern": "[\\s\\S]*" + } + } + ] + }, + "variant": "PRIMITIVE" + } + }, + "key": "value" + } + }, + { + "variant": "PARENT_TYPE", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/16", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/3", + "genericKeys": [], + "identifier": "OBJECT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "object;struct;data" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "rules": { + "count": 0, + "nodes": [] + }, + "variant": "OBJECT" + } + } + } + } + ] + }, + "variant": "OBJECT" + } + } + ], + "target": "T", + "id": "gid://sagittarius/GenericMapper/17" + } + ] + } + } + } + } + ] + }, + "variant": "ARRAY" + } + }, + "key": "headers" + } + }, + { + "variant": "CONTAINS_KEY", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/43", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/3", + "genericKeys": [], + "identifier": "OBJECT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "object;struct;data" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "rules": { + "count": 0, + "nodes": [] + }, + "variant": "OBJECT" + } + }, + "key": "body" + } + }, + { + "variant": "PARENT_TYPE", + "config": { + "dataTypeIdentifier": { + "id": "gid://sagittarius/DataTypeIdentifier/44", + "dataType": { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/3", + "genericKeys": [], + "identifier": "OBJECT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "object;struct;data" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "rules": { + "count": 0, + "nodes": [] + }, + "variant": "OBJECT" + } + } + } + } + ] + }, + "variant": "OBJECT" + }, + { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/3", + "genericKeys": [], + "identifier": "OBJECT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "object;struct;data" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Object" + } + ], + "rules": { + "count": 0, + "nodes": [] + }, + "variant": "OBJECT" + }, + { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/27", + "genericKeys": [], + "identifier": "BOOLEAN", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "bool;boolean;bit" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Boolean" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Boolean" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "REGEX", + "config": { + "pattern": "^(true|false)$" + } + } + ] + }, + "variant": "PRIMITIVE" + }, + { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/20", + "genericKeys": [], + "identifier": "NUMBER", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "number;integer;float;double;long" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Number" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Number" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "REGEX", + "config": { + "pattern": "^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$" + } + } + ] + }, + "variant": "PRIMITIVE" + }, + { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/14", + "genericKeys": [], + "identifier": "TEXT", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "text;char;literal;string" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Text" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Text" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "REGEX", + "config": { + "pattern": "[\\s\\S]*" + } + } + ] + }, + "variant": "PRIMITIVE" + }, + { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/35", + "genericKeys": [], + "identifier": "HTTP_METHOD", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "http;method;get;post;put;delete;path;head" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Method" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Method" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "ITEM_OF_COLLECTION", + "config": { + "items": [ + "GET", + "POST", + "PUT", + "DELETE", + "PATCH", + "HEAD" + ] + } + } + ] + }, + "variant": "TYPE" + }, + { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/45", + "genericKeys": [], + "identifier": "HTTP_STATUS_CODE", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "http;status;code" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Status Code" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Status Code" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "NUMBER_RANGE", + "config": { + "from": 100, + "to": 599 + } + } + ] + }, + "variant": "TYPE" + }, + { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/37", + "genericKeys": [], + "identifier": "HTTP_URL", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "http;route;url" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Route" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "HTTP Route" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "REGEX", + "config": { + "pattern": "^/\\w+(?:[.:~-]\\w+)*(?:/\\w+(?:[.:~-]\\w+)*)*$" + } + } + ] + }, + "variant": "TYPE" + }, + { + "__typename": "DataType", + "id": "gid://sagittarius/DataType/46", + "genericKeys": [], + "identifier": "TEXT_ENCODING", + "aliases": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "text;encoding;base64" + } + ], + "displayMessages": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Text Encoding" + } + ], + "name": [ + { + "__typename": "Translation", + "code": "en-US", + "content": "Text Encoding" + } + ], + "rules": { + "count": 1, + "nodes": [ + { + "variant": "ITEM_OF_COLLECTION", + "config": { + "items": [ + "BASE64" + ] + } + } + ] + }, + "variant": "TYPE" + } +] \ No newline at end of file diff --git a/src/components/d-resizable/flow_types.json b/src/components/d-resizable/flow_types.json index ea755a010..abffb0cdb 100644 --- a/src/components/d-resizable/flow_types.json +++ b/src/components/d-resizable/flow_types.json @@ -1,1152 +1 @@ -[ - { - "__typename": "FlowType", - "id": "gid://sagittarius/FlowType/867", - "identifier": "HTTP", - "inputType": { - "__typename": "DataType", - "id": "gid://sagittarius/DataType/13", - "genericKeys": [], - "identifier": "HTTP_ADAPTER_INPUT", - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "http;adapter;input" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "HTTP Adapter Input" - } - ] - }, - "name": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "HTTP Adapter Input" - } - ] - }, - "rules": { - "count": 3, - "nodes": [ - { - "variant": "CONTAINS_KEY", - "config": { - "dataTypeIdentifier": { - "id": "gid://sagittarius/DataTypeIdentifier/14", - "dataType": { - "__typename": "DataType", - "id": "gid://sagittarius/DataType/11", - "genericKeys": [], - "identifier": "OBJECT", - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "object;struct;data" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Object" - } - ] - }, - "name": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Object" - } - ] - }, - "rules": { - "count": 0, - "nodes": [] - }, - "variant": "OBJECT" - } - }, - "key": "body" - } - }, - { - "variant": "CONTAINS_KEY", - "config": { - "dataTypeIdentifier": { - "id": "gid://sagittarius/DataTypeIdentifier/15", - "dataType": { - "__typename": "DataType", - "id": "gid://sagittarius/DataType/0", - "genericKeys": [], - "identifier": "HTTP_HEADER_MAP", - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "http;headers" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "HTTP Headers" - } - ] - }, - "name": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "HTTP Headers" - } - ] - }, - "rules": { - "count": 1, - "nodes": [ - { - "variant": "PARENT_TYPE", - "config": { - "dataTypeIdentifier": { - "id": "gid://sagittarius/DataTypeIdentifier/1", - "genericType": { - "id": "gid://sagittarius/GenericType/2", - "dataType": { - "__typename": "DataType", - "id": "gid://sagittarius/DataType/3", - "genericKeys": [ - "T" - ], - "identifier": "LIST", - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "list;array;collection" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "List of ${T}" - } - ] - }, - "name": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Generic List" - } - ] - }, - "rules": { - "count": 1, - "nodes": [ - { - "variant": "CONTAINS_TYPE", - "config": { - "dataTypeIdentifier": { - "id": "gid://sagittarius/DataTypeIdentifier/4", - "genericKey": "T" - } - } - } - ] - }, - "variant": "ARRAY" - }, - "genericMappers": [ - { - "genericCombinationStrategies": [], - "sourceDataTypeIdentifiers": [ - { - "id": "gid://sagittarius/DataTypeIdentifier/5", - "dataType": { - "__typename": "DataType", - "id": "gid://sagittarius/DataType/6", - "genericKeys": [], - "identifier": "HTTP_HEADER_ENTRY", - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "http;header;entry" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "HTTP Header Entry" - } - ] - }, - "name": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "HTTP Header Entry" - } - ] - }, - "rules": { - "count": 3, - "nodes": [ - { - "variant": "CONTAINS_KEY", - "config": { - "dataTypeIdentifier": { - "id": "gid://sagittarius/DataTypeIdentifier/7", - "dataType": { - "__typename": "DataType", - "id": "gid://sagittarius/DataType/8", - "genericKeys": [], - "identifier": "TEXT", - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "text;char;literal;string" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Text" - } - ] - }, - "name": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Text" - } - ] - }, - "rules": { - "count": 1, - "nodes": [ - { - "variant": "REGEX", - "config": { - "pattern": "[\\s\\S]*" - } - } - ] - }, - "variant": "PRIMITIVE" - } - }, - "key": "key" - } - }, - { - "variant": "CONTAINS_KEY", - "config": { - "dataTypeIdentifier": { - "id": "gid://sagittarius/DataTypeIdentifier/9", - "dataType": { - "__typename": "DataType", - "id": "gid://sagittarius/DataType/8", - "genericKeys": [], - "identifier": "TEXT", - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "text;char;literal;string" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Text" - } - ] - }, - "name": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Text" - } - ] - }, - "rules": { - "count": 1, - "nodes": [ - { - "variant": "REGEX", - "config": { - "pattern": "[\\s\\S]*" - } - } - ] - }, - "variant": "PRIMITIVE" - } - }, - "key": "value" - } - }, - { - "variant": "PARENT_TYPE", - "config": { - "dataTypeIdentifier": { - "id": "gid://sagittarius/DataTypeIdentifier/10", - "dataType": { - "__typename": "DataType", - "id": "gid://sagittarius/DataType/11", - "genericKeys": [], - "identifier": "OBJECT", - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "object;struct;data" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Object" - } - ] - }, - "name": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Object" - } - ] - }, - "rules": { - "count": 0, - "nodes": [] - }, - "variant": "OBJECT" - } - } - } - } - ] - }, - "variant": "OBJECT" - } - } - ], - "target": "T", - "id": "gid://sagittarius/GenericMapper/12" - } - ] - } - } - } - } - ] - }, - "variant": "ARRAY" - } - }, - "key": "headers" - } - }, - { - "variant": "PARENT_TYPE", - "config": { - "dataTypeIdentifier": { - "id": "gid://sagittarius/DataTypeIdentifier/16", - "dataType": { - "__typename": "DataType", - "id": "gid://sagittarius/DataType/11", - "genericKeys": [], - "identifier": "OBJECT", - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "object;struct;data" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Object" - } - ] - }, - "name": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Object" - } - ] - }, - "rules": { - "count": 0, - "nodes": [] - }, - "variant": "OBJECT" - } - } - } - } - ] - }, - "variant": "OBJECT" - }, - "returnType": { - "__typename": "DataType", - "id": "gid://sagittarius/DataType/25", - "genericKeys": [], - "identifier": "HTTP_RESPONSE", - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "http;response;object" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "HTTP Response" - } - ] - }, - "name": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "HTTP Response" - } - ] - }, - "rules": { - "count": 3, - "nodes": [ - { - "variant": "CONTAINS_KEY", - "config": { - "dataTypeIdentifier": { - "id": "gid://sagittarius/DataTypeIdentifier/26", - "dataType": { - "__typename": "DataType", - "id": "gid://sagittarius/DataType/0", - "genericKeys": [], - "identifier": "HTTP_HEADER_MAP", - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "http;headers" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "HTTP Headers" - } - ] - }, - "name": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "HTTP Headers" - } - ] - }, - "rules": { - "count": 1, - "nodes": [ - { - "variant": "PARENT_TYPE", - "config": { - "dataTypeIdentifier": { - "id": "gid://sagittarius/DataTypeIdentifier/1", - "genericType": { - "id": "gid://sagittarius/GenericType/2", - "dataType": { - "__typename": "DataType", - "id": "gid://sagittarius/DataType/3", - "genericKeys": [ - "T" - ], - "identifier": "LIST", - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "list;array;collection" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "List of ${T}" - } - ] - }, - "name": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Generic List" - } - ] - }, - "rules": { - "count": 1, - "nodes": [ - { - "variant": "CONTAINS_TYPE", - "config": { - "dataTypeIdentifier": { - "id": "gid://sagittarius/DataTypeIdentifier/4", - "genericKey": "T" - } - } - } - ] - }, - "variant": "ARRAY" - }, - "genericMappers": [ - { - "genericCombinationStrategies": [], - "sourceDataTypeIdentifiers": [ - { - "id": "gid://sagittarius/DataTypeIdentifier/5", - "dataType": { - "__typename": "DataType", - "id": "gid://sagittarius/DataType/6", - "genericKeys": [], - "identifier": "HTTP_HEADER_ENTRY", - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "http;header;entry" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "HTTP Header Entry" - } - ] - }, - "name": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "HTTP Header Entry" - } - ] - }, - "rules": { - "count": 3, - "nodes": [ - { - "variant": "CONTAINS_KEY", - "config": { - "dataTypeIdentifier": { - "id": "gid://sagittarius/DataTypeIdentifier/7", - "dataType": { - "__typename": "DataType", - "id": "gid://sagittarius/DataType/8", - "genericKeys": [], - "identifier": "TEXT", - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "text;char;literal;string" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Text" - } - ] - }, - "name": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Text" - } - ] - }, - "rules": { - "count": 1, - "nodes": [ - { - "variant": "REGEX", - "config": { - "pattern": "[\\s\\S]*" - } - } - ] - }, - "variant": "PRIMITIVE" - } - }, - "key": "key" - } - }, - { - "variant": "CONTAINS_KEY", - "config": { - "dataTypeIdentifier": { - "id": "gid://sagittarius/DataTypeIdentifier/9", - "dataType": { - "__typename": "DataType", - "id": "gid://sagittarius/DataType/8", - "genericKeys": [], - "identifier": "TEXT", - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "text;char;literal;string" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Text" - } - ] - }, - "name": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Text" - } - ] - }, - "rules": { - "count": 1, - "nodes": [ - { - "variant": "REGEX", - "config": { - "pattern": "[\\s\\S]*" - } - } - ] - }, - "variant": "PRIMITIVE" - } - }, - "key": "value" - } - }, - { - "variant": "PARENT_TYPE", - "config": { - "dataTypeIdentifier": { - "id": "gid://sagittarius/DataTypeIdentifier/10", - "dataType": { - "__typename": "DataType", - "id": "gid://sagittarius/DataType/11", - "genericKeys": [], - "identifier": "OBJECT", - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "object;struct;data" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Object" - } - ] - }, - "name": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Object" - } - ] - }, - "rules": { - "count": 0, - "nodes": [] - }, - "variant": "OBJECT" - } - } - } - } - ] - }, - "variant": "OBJECT" - } - } - ], - "target": "T", - "id": "gid://sagittarius/GenericMapper/12" - } - ] - } - } - } - } - ] - }, - "variant": "ARRAY" - } - }, - "key": "headers" - } - }, - { - "variant": "CONTAINS_KEY", - "config": { - "dataTypeIdentifier": { - "id": "gid://sagittarius/DataTypeIdentifier/27", - "dataType": { - "__typename": "DataType", - "id": "gid://sagittarius/DataType/11", - "genericKeys": [], - "identifier": "OBJECT", - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "object;struct;data" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Object" - } - ] - }, - "name": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Object" - } - ] - }, - "rules": { - "count": 0, - "nodes": [] - }, - "variant": "OBJECT" - } - }, - "key": "body" - } - }, - { - "variant": "PARENT_TYPE", - "config": { - "dataTypeIdentifier": { - "id": "gid://sagittarius/DataTypeIdentifier/28", - "dataType": { - "__typename": "DataType", - "id": "gid://sagittarius/DataType/11", - "genericKeys": [], - "identifier": "OBJECT", - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "object;struct;data" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Object" - } - ] - }, - "name": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Object" - } - ] - }, - "rules": { - "count": 0, - "nodes": [] - }, - "variant": "OBJECT" - } - } - } - } - ] - }, - "variant": "OBJECT" - }, - "flowTypeSettings": [ - { - "__typename": "FlowTypeSetting", - "id": "gid://sagittarius/FlowTypeSetting/868", - "names": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "URL" - } - ] - }, - "descriptions": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Specifies the HTTP URL endpoint." - } - ] - }, - "dataType": { - "__typename": "DataType", - "id": "gid://sagittarius/DataType/21", - "genericKeys": [], - "identifier": "HTTP_URL", - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "http;route;url" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "HTTP Route" - } - ] - }, - "name": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "HTTP Route" - } - ] - }, - "rules": { - "count": 1, - "nodes": [ - { - "variant": "REGEX", - "config": { - "pattern": "^/\\w+(?:[.:~-]\\w+)*(?:/\\w+(?:[.:~-]\\w+)*)*$" - } - } - ] - }, - "variant": "TYPE" - }, - "identifier": "HTTP_URL", - "unique": false - }, - { - "__typename": "FlowTypeSetting", - "id": "gid://sagittarius/FlowTypeSetting/869", - "names": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Method" - } - ] - }, - "descriptions": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Specifies the HTTP request method (e.g., GET, POST, PUT, DELETE)." - } - ] - }, - "dataType": { - "__typename": "DataType", - "id": "gid://sagittarius/DataType/19", - "genericKeys": [], - "identifier": "HTTP_METHOD", - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "http;method;get;post;put;delete;path;head" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "HTTP Method" - } - ] - }, - "name": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "HTTP Method" - } - ] - }, - "rules": { - "count": 1, - "nodes": [ - { - "variant": "ITEM_OF_COLLECTION", - "config": { - "items": [ - "GET", - "POST", - "PUT", - "DELETE", - "PATCH", - "HEAD" - ] - } - } - ] - }, - "variant": "TYPE" - }, - "identifier": "HTTP_METHOD", - "unique": false - }, - { - "__typename": "FlowTypeSetting", - "id": "gid://sagittarius/FlowTypeSetting/870", - "names": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Host" - } - ] - }, - "descriptions": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Specifies the target host name or IP address." - } - ] - }, - "dataType": { - "__typename": "DataType", - "id": "gid://sagittarius/DataType/8", - "genericKeys": [], - "identifier": "TEXT", - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "text;char;literal;string" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Text" - } - ] - }, - "name": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Text" - } - ] - }, - "rules": { - "count": 1, - "nodes": [ - { - "variant": "REGEX", - "config": { - "pattern": "[\\s\\S]*" - } - } - ] - }, - "variant": "PRIMITIVE" - }, - "identifier": "HTTP_HOST", - "unique": false - } - ], - "names": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "Rest Endpoint" - } - ] - }, - "descriptions": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "A REST API is a web service that lets clients interact with data on a server using standard HTTP methods like GET, POST, PUT, and DELETE usually returning results in JSON format." - } - ] - }, - "aliases": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "http;rest;route;web;webhook" - } - ] - }, - "displayMessages": { - "count": 1, - "nodes": [ - { - "code": "en-US", - "content": "On ${method} request to ${route}" - } - ] - }, - "editable": false - } -] \ No newline at end of file +[{"__typename":"FlowType","id":"gid://sagittarius/FlowType/868","identifier":"REST","inputType":{"__typename":"DataType","id":"gid://sagittarius/DataType/1","genericKeys":[],"identifier":"REST_ADAPTER_INPUT","aliases":[{"__typename":"Translation","code":"en-US","content":"http;rest;adapter;input"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Rest Adapter Input"}],"name":[{"__typename":"Translation","code":"en-US","content":"Rest Adapter Input"}],"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/2","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":[],"identifier":"OBJECT","aliases":[{"__typename":"Translation","code":"en-US","content":"object;struct;data"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Object"}],"name":[{"__typename":"Translation","code":"en-US","content":"Object"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}},"key":"body"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/0","genericKeys":[],"identifier":"REST_HEADER_INPUT","aliases":[{"__typename":"Translation","code":"en-US","content":"http;rest;header;entry;input"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Headers"}],"name":[{"__typename":"Translation","code":"en-US","content":"Headers"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}},"key":"headers"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/5","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":[],"identifier":"OBJECT","aliases":[{"__typename":"Translation","code":"en-US","content":"object;struct;data"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Object"}],"name":[{"__typename":"Translation","code":"en-US","content":"Object"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"},"returnType":{"__typename":"DataType","id":"gid://sagittarius/DataType/41","genericKeys":[],"identifier":"HTTP_RESPONSE","aliases":[{"__typename":"Translation","code":"en-US","content":"http;response;object"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Response"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Response"}],"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/42","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/6","genericKeys":[],"identifier":"HTTP_HEADER_MAP","aliases":[{"__typename":"Translation","code":"en-US","content":"http;headers"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Headers"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Headers"}],"rules":{"count":1,"nodes":[{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/7","genericType":{"id":"gid://sagittarius/GenericType/8","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/11","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/12","genericKeys":[],"identifier":"HTTP_HEADER_ENTRY","aliases":[{"__typename":"Translation","code":"en-US","content":"http;header;entry"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Header Entry"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Header Entry"}],"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/13","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"key"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/15","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"value"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/16","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":[],"identifier":"OBJECT","aliases":[{"__typename":"Translation","code":"en-US","content":"object;struct;data"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Object"}],"name":[{"__typename":"Translation","code":"en-US","content":"Object"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"}}],"target":"T","id":"gid://sagittarius/GenericMapper/17"}]}}}}]},"variant":"ARRAY"}},"key":"headers"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/43","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":[],"identifier":"OBJECT","aliases":[{"__typename":"Translation","code":"en-US","content":"object;struct;data"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Object"}],"name":[{"__typename":"Translation","code":"en-US","content":"Object"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}},"key":"body"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/44","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":[],"identifier":"OBJECT","aliases":[{"__typename":"Translation","code":"en-US","content":"object;struct;data"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Object"}],"name":[{"__typename":"Translation","code":"en-US","content":"Object"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"},"flowTypeSettings":[{"__typename":"FlowTypeSetting","id":"gid://sagittarius/FlowTypeSetting/869","names":[{"__typename":"Translation","code":"en-US","content":"URL"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Specifies the HTTP URL endpoint."}],"dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/37","genericKeys":[],"identifier":"HTTP_URL","aliases":[{"__typename":"Translation","code":"en-US","content":"http;route;url"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Route"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Route"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^/\\w+(?:[.:~-]\\w+)*(?:/\\w+(?:[.:~-]\\w+)*)*$"}}]},"variant":"TYPE"},"identifier":"HTTP_URL","unique":2},{"__typename":"FlowTypeSetting","id":"gid://sagittarius/FlowTypeSetting/870","names":[{"__typename":"Translation","code":"en-US","content":"Method"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Specifies the HTTP request method (e.g., GET, POST, PUT, DELETE)."}],"dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/35","genericKeys":[],"identifier":"HTTP_METHOD","aliases":[{"__typename":"Translation","code":"en-US","content":"http;method;get;post;put;delete;path;head"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Method"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Method"}],"rules":{"count":1,"nodes":[{"variant":"ITEM_OF_COLLECTION","config":{"items":["GET","POST","PUT","DELETE","PATCH","HEAD"]}}]},"variant":"TYPE"},"identifier":"HTTP_METHOD","unique":1}],"names":[{"__typename":"Translation","code":"en-US","content":"Rest Endpoint"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"A REST API is a web service that lets clients interact with data on a server using standard HTTP methods like GET, POST, PUT, and DELETE usually returning results in JSON format."}],"aliases":[{"__typename":"Translation","code":"en-US","content":"http;rest;route;web;webhook"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"On ${method} request to ${route}"}],"editable":false}] \ No newline at end of file diff --git a/src/components/d-resizable/runtime_functions.json b/src/components/d-resizable/runtime_functions.json index 92ae33c3c..0eac1b223 100644 --- a/src/components/d-resizable/runtime_functions.json +++ b/src/components/d-resizable/runtime_functions.json @@ -1 +1 @@ -[{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/46","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Respond"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Handles an HTTP response object and returns it to the client."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Processes an HTTP response and returns it to the requesting client. This function typically completes the HTTP request–response cycle by delivering the server’s final output, such as headers, status codes, and body content, back to the client."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"http::control::respond","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Apply respond to ${http_response}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"respond;control;http"}]},"throwsError":false,"returnType":null,"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/47","names":{"count":1,"nodes":[{"code":"en-US","content":"Http Response"}]},"identifier":"http_response","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The response object that will be returned to the client."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Takes an HTTP response object and transmits it to the requesting client. This parameter represents the final output of the server, including headers, status code, and body content."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/48","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/25","genericKeys":[],"identifier":"HTTP_RESPONSE","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;response;object"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Response"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Response"}]},"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/26","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/0","genericKeys":[],"identifier":"HTTP_HEADER_MAP","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;headers"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Headers"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Headers"}]},"rules":{"count":1,"nodes":[{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/1","genericType":{"id":"gid://sagittarius/GenericType/2","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/5","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/6","genericKeys":[],"identifier":"HTTP_HEADER_ENTRY","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;header;entry"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Header Entry"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Header Entry"}]},"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/7","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"key"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/9","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"value"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"}}],"target":"T","id":"gid://sagittarius/GenericMapper/12"}]}}}}]},"variant":"ARRAY"}},"key":"headers"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/27","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}},"key":"body"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/28","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/49","identifier":"http::control::respond"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/50","genericKeys":["P"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Construct HTTP Request"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Constructs an HTTP request object using the specified method, headers, URL, and payload."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Generates an HTTP request object that can be sent to a server. The request includes an HTTP method, optional headers, a destination URL, and an optional request body."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"http::request::create","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Apply create to ${http_method}, ${headers}, ${url}, ${payload}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"create;request;http"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/51","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/17","genericKeys":[],"identifier":"HTTP_REQUEST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;request"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Request"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Request"}]},"rules":{"count":5,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/18","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/19","genericKeys":[],"identifier":"HTTP_METHOD","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;method;get;post;put;delete;path;head"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Method"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Method"}]},"rules":{"count":1,"nodes":[{"variant":"ITEM_OF_COLLECTION","config":{"items":["GET","POST","PUT","DELETE","PATCH","HEAD"]}}]},"variant":"TYPE"}},"key":"method"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/20","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/21","genericKeys":[],"identifier":"HTTP_URL","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;route;url"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Route"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Route"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^/\\w+(?:[.:~-]\\w+)*(?:/\\w+(?:[.:~-]\\w+)*)*$"}}]},"variant":"TYPE"}},"key":"url"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/22","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}},"key":"body"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/23","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/0","genericKeys":[],"identifier":"HTTP_HEADER_MAP","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;headers"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Headers"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Headers"}]},"rules":{"count":1,"nodes":[{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/1","genericType":{"id":"gid://sagittarius/GenericType/2","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/5","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/6","genericKeys":[],"identifier":"HTTP_HEADER_ENTRY","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;header;entry"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Header Entry"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Header Entry"}]},"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/7","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"key"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/9","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"value"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"}}],"target":"T","id":"gid://sagittarius/GenericMapper/12"}]}}}}]},"variant":"ARRAY"}},"key":"headers"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/24","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"}},"parameterDefinitions":{"count":4,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/52","names":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Method"}]},"identifier":"http_method","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Defines the HTTP method to be used, such as GET, POST, PUT, or DELETE."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Specifies the request method that determines the type of HTTP operation to perform."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/53","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/19","genericKeys":[],"identifier":"HTTP_METHOD","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;method;get;post;put;delete;path;head"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Method"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Method"}]},"rules":{"count":1,"nodes":[{"variant":"ITEM_OF_COLLECTION","config":{"items":["GET","POST","PUT","DELETE","PATCH","HEAD"]}}]},"variant":"TYPE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/54","names":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Headers"}]},"identifier":"headers","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"A collection of key-value pairs containing additional request metadata."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Optional headers that can define content type, authorization, cookies, caching policies, and more."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/55","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/0","genericKeys":[],"identifier":"HTTP_HEADER_MAP","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;headers"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Headers"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Headers"}]},"rules":{"count":1,"nodes":[{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/1","genericType":{"id":"gid://sagittarius/GenericType/2","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/5","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/6","genericKeys":[],"identifier":"HTTP_HEADER_ENTRY","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;header;entry"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Header Entry"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Header Entry"}]},"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/7","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"key"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/9","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"value"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"}}],"target":"T","id":"gid://sagittarius/GenericMapper/12"}]}}}}]},"variant":"ARRAY"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/56","names":{"count":1,"nodes":[{"code":"en-US","content":"Request URL"}]},"identifier":"url","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The target URL to which the HTTP request will be sent."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Specifies the endpoint address, including protocol, host, path, and query parameters, where the request is directed."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/57","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/21","genericKeys":[],"identifier":"HTTP_URL","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;route;url"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Route"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Route"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^/\\w+(?:[.:~-]\\w+)*(?:/\\w+(?:[.:~-]\\w+)*)*$"}}]},"variant":"TYPE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/58","names":{"count":1,"nodes":[{"code":"en-US","content":"Request Body"}]},"identifier":"payload","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The data to include in the body of the request, typically used with methods like POST or PUT."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Contains the request payload, such as JSON, XML, form data, or binary content, depending on the Content-Type header."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/59","genericKey":"P"}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/60","identifier":"http::request::create"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/61","genericKeys":["P"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Construct HTTP Response"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Builds an HTTP response object using the specified status code, headers, and optional response body."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Creates a complete HTTP response object to be returned from a server. The response includes a status code, headers, and an optional body containing the response content."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"http::response::create","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Apply create to ${http_status_code}, ${headers}, ${payload}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"create;response;http"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/62","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/25","genericKeys":[],"identifier":"HTTP_RESPONSE","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;response;object"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Response"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Response"}]},"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/26","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/0","genericKeys":[],"identifier":"HTTP_HEADER_MAP","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;headers"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Headers"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Headers"}]},"rules":{"count":1,"nodes":[{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/1","genericType":{"id":"gid://sagittarius/GenericType/2","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/5","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/6","genericKeys":[],"identifier":"HTTP_HEADER_ENTRY","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;header;entry"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Header Entry"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Header Entry"}]},"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/7","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"key"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/9","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"value"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"}}],"target":"T","id":"gid://sagittarius/GenericMapper/12"}]}}}}]},"variant":"ARRAY"}},"key":"headers"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/27","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}},"key":"body"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/28","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"}},"parameterDefinitions":{"count":3,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/63","names":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Status Code"}]},"identifier":"http_status_code","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Represents the numeric status code returned by the server in response to an HTTP request."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Indicates the outcome of an HTTP request. Common codes include 200 (OK), 201 (Created), 400 (Bad Request), 401 (Unauthorized), 404 (Not Found), and 500 (Internal Server Error)."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/64","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/29","genericKeys":[],"identifier":"HTTP_STATUS_CODE","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;status;code"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Status Code"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Status Code"}]},"rules":{"count":1,"nodes":[{"variant":"NUMBER_RANGE","config":{"from":100,"to":599}}]},"variant":"TYPE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/65","names":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Headers"}]},"identifier":"headers","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"A collection of key-value pairs containing additional request metadata."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Optional headers that can define content type, authorization, cookies, caching policies, and more."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/66","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/0","genericKeys":[],"identifier":"HTTP_HEADER_MAP","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;headers"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Headers"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Headers"}]},"rules":{"count":1,"nodes":[{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/1","genericType":{"id":"gid://sagittarius/GenericType/2","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/5","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/6","genericKeys":[],"identifier":"HTTP_HEADER_ENTRY","aliases":{"count":1,"nodes":[{"code":"en-US","content":"http;header;entry"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Header Entry"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"HTTP Header Entry"}]},"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/7","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"key"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/9","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"value"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"}}],"target":"T","id":"gid://sagittarius/GenericMapper/12"}]}}}}]},"variant":"ARRAY"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/67","names":{"count":1,"nodes":[{"code":"en-US","content":"Request Body"}]},"identifier":"payload","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The data to include in the body of the request, typically used with methods like POST or PUT."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Contains the request payload, such as JSON, XML, form data, or binary content, depending on the Content-Type header."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/68","genericKey":"P"}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/69","identifier":"http::response::create"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/70","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Get List Element"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Retrieves the element at a specified index from a list."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns the element located at the given zero-based index within the input list."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::at","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Get element at ${index} of ${list}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"at;array;list;collection;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/71","genericKey":"R"},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/72","names":{"count":1,"nodes":[{"code":"en-US","content":"Input List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The list from which to retrieve an element."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"A list containing elements of any type. The element at the specified index will be returned."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/73","genericType":{"id":"gid://sagittarius/GenericType/74","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/75","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/76"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/77","names":{"count":1,"nodes":[{"code":"en-US","content":"Index"}]},"identifier":"index","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The zero-based index of the element to retrieve."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Specifies the position of the element in the list to return. Must be within the bounds of the list."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/78","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/79","identifier":"std::list::at"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/80","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Concatenate Lists"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Concatenates two lists into a single list."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a new list containing all elements of the first list followed by all elements of the second list."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::concat","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Combine ${first} with ${second}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"concat;combine;join;append;array;list;collection;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/81","genericType":{"id":"gid://sagittarius/GenericType/82","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/83","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/84"}]}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/85","names":{"count":1,"nodes":[{"code":"en-US","content":"First List"}]},"identifier":"first","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The first list to concatenate."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The first input list whose elements will appear at the beginning of the resulting list."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/86","genericType":{"id":"gid://sagittarius/GenericType/87","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/88","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/89"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/90","names":{"count":1,"nodes":[{"code":"en-US","content":"Second List"}]},"identifier":"second","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The second list to concatenate."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The second input list whose elements will be appended after the elements of the first list."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/91","genericType":{"id":"gid://sagittarius/GenericType/92","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/93","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/94"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/95","identifier":"std::list::concat"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/96","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Filter List"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Filters elements of a list based on a predicate."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a new list containing only the elements from the input list for which the predicate returns true."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::filter","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Filter out elements in ${list} not matching ${predicate}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"filter;array;list;collection;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/97","genericType":{"id":"gid://sagittarius/GenericType/98","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/99","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/100"}]}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/101","names":{"count":1,"nodes":[{"code":"en-US","content":"Input List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The list to be filtered."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The original list from which elements will be selected based on the predicate."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/102","genericType":{"id":"gid://sagittarius/GenericType/103","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/104","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/105"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/106","names":{"count":1,"nodes":[{"code":"en-US","content":"Filter Predicate"}]},"identifier":"predicate","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"A predicate function to test each element for inclusion in the result."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"A function that takes an element of the list and returns a boolean indicating whether the element should be included in the output list."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/107","genericType":{"id":"gid://sagittarius/GenericType/108","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/37","genericKeys":["T"],"identifier":"PREDICATE","aliases":{"count":1,"nodes":[{"code":"en-US","content":"predicate"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Predicate of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Predicate"}]},"rules":{"count":2,"nodes":[{"variant":"RETURN_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/38","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}}},{"variant":"INPUT_TYPES","config":{"inputTypes":[{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/40","genericKey":"T"},"inputIdentifier":"predicate"}]}}]},"variant":"NODE"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/109","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/110"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/111","identifier":"std::list::filter"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/112","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Find Element in List"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Finds the first element in the list that satisfies the predicate."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns the first element from the input list for which the predicate returns true. If no element matches, returns null or equivalent."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::find","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Find first element in ${list} matching ${predicate}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"find;array;list;collection;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/113","genericKey":"R"},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/114","names":{"count":1,"nodes":[{"code":"en-US","content":"Input List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The list to search through."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The list in which an element satisfying the predicate will be searched."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/115","genericType":{"id":"gid://sagittarius/GenericType/116","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/117","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/118"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/119","names":{"count":1,"nodes":[{"code":"en-US","content":"Search Predicate"}]},"identifier":"predicate","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"A predicate function used to test each element for a match."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"A function that takes an element of the list and returns a boolean indicating if the element matches the search criteria."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/120","genericType":{"id":"gid://sagittarius/GenericType/121","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/37","genericKeys":["T"],"identifier":"PREDICATE","aliases":{"count":1,"nodes":[{"code":"en-US","content":"predicate"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Predicate of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Predicate"}]},"rules":{"count":2,"nodes":[{"variant":"RETURN_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/38","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}}},{"variant":"INPUT_TYPES","config":{"inputTypes":[{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/40","genericKey":"T"},"inputIdentifier":"predicate"}]}}]},"variant":"NODE"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/122","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/123"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/124","identifier":"std::list::find"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/125","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Find Index in List"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Finds the index of the first element in the list that satisfies the predicate."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns the zero-based index of the first element for which the predicate returns true. If no element matches, returns -1."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::find_index","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Index of ${list} matching ${predicate}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"find index;index of;position;array;list;collection;std;find;index"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/126","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/127","names":{"count":1,"nodes":[{"code":"en-US","content":"Input List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The list to search through."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The list in which to find the index of an element that satisfies the predicate."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/128","genericType":{"id":"gid://sagittarius/GenericType/129","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/130","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/131"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/132","names":{"count":1,"nodes":[{"code":"en-US","content":"Search Predicate"}]},"identifier":"predicate","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"A predicate function used to test each element for a match."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"A function that takes an element of the list and returns a boolean indicating if the element satisfies the search criteria."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/133","genericType":{"id":"gid://sagittarius/GenericType/134","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/37","genericKeys":["T"],"identifier":"PREDICATE","aliases":{"count":1,"nodes":[{"code":"en-US","content":"predicate"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Predicate of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Predicate"}]},"rules":{"count":2,"nodes":[{"variant":"RETURN_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/38","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}}},{"variant":"INPUT_TYPES","config":{"inputTypes":[{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/40","genericKey":"T"},"inputIdentifier":"predicate"}]}}]},"variant":"NODE"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/135","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/136"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/137","identifier":"std::list::find_index"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/138","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Find Last Element in List"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Finds the last element in the list that satisfies the predicate."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns the last element from the input list for which the predicate returns true. If no element matches, returns null or equivalent."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::find_last","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Last element of ${list} matching ${predicate}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"find last;last index;last position;array;list;collection;std;find;last"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/139","genericKey":"R"},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/140","names":{"count":1,"nodes":[{"code":"en-US","content":"Input List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The list to search through."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The list in which an element satisfying the predicate will be searched."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/141","genericType":{"id":"gid://sagittarius/GenericType/142","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/143","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/144"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/145","names":{"count":1,"nodes":[{"code":"en-US","content":"Search Predicate"}]},"identifier":"predicate","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"A predicate function used to test each element for a match."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"A function that takes an element of the list and returns a boolean indicating if the element matches the search criteria."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/146","genericType":{"id":"gid://sagittarius/GenericType/147","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/37","genericKeys":["T"],"identifier":"PREDICATE","aliases":{"count":1,"nodes":[{"code":"en-US","content":"predicate"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Predicate of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Predicate"}]},"rules":{"count":2,"nodes":[{"variant":"RETURN_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/38","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}}},{"variant":"INPUT_TYPES","config":{"inputTypes":[{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/40","genericKey":"T"},"inputIdentifier":"predicate"}]}}]},"variant":"NODE"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/148","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/149"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/150","identifier":"std::list::find_last"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/151","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"First Element of List"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Retrieves the first element from the list."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This runtime returns the first element in the given list, if any."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::first","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Get first element in ${list}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"first;array;list;collection;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/152","genericKey":"R"},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/153","names":{"count":1,"nodes":[{"code":"en-US","content":"Input List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The list from which to retrieve the first element."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns the first element of the provided list. If the list is empty, behavior depends on the implementation."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/154","genericType":{"id":"gid://sagittarius/GenericType/155","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/156","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/157"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/158","identifier":"std::list::first"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/159","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Flatten List"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Flattens a nested list into a single-level list."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a new list by concatenating all sub-lists of the input nested list into one flat list."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::flat","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Flatten ${list}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"flat;array;list;collection;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/160","genericType":{"id":"gid://sagittarius/GenericType/161","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/162","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/163"}]}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/164","names":{"count":1,"nodes":[{"code":"en-US","content":"Nested List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The nested list to be flattened."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"A list containing sub-lists that will be flattened into a single-level list."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/165","genericType":{"id":"gid://sagittarius/GenericType/166","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/167","genericType":{"id":"gid://sagittarius/GenericType/168","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/169","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/170"}]}}],"target":"T","id":"gid://sagittarius/GenericMapper/171"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/172","identifier":"std::list::flat"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/173","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"For Each Element"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Executes a consumer function for each element in the list."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This runtime executes the given consumer function on each item in the list without returning a result."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::for_each","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"For each in ${list} do ${consumer}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"for_each;array;list;collection;std;for;each"}]},"throwsError":false,"returnType":null,"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/174","names":{"count":1,"nodes":[{"code":"en-US","content":"Input List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The list of elements to iterate over."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Each element of this list will be passed to the provided consumer function for processing."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/175","genericType":{"id":"gid://sagittarius/GenericType/176","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/177","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/178"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/179","names":{"count":1,"nodes":[{"code":"en-US","content":"Consumer Function"}]},"identifier":"consumer","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"A function that consumes each element of the list."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This function is invoked once for each element in the list. It is not expected to return a value."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/180","genericType":{"id":"gid://sagittarius/GenericType/181","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/35","genericKeys":["T"],"identifier":"CONSUMER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"use;consumer;consume;lambda"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Use ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Consumer"}]},"rules":{"count":1,"nodes":[{"variant":"INPUT_TYPES","config":{"inputTypes":[{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/36","genericKey":"T"},"inputIdentifier":"consumer"}]}}]},"variant":"NODE"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/182","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/183"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/184","identifier":"std::list::for_each"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/185","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Index of Item"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Finds the index of the first occurrence of the specified item in the list."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns the zero-based index of the first occurrence of a given item in the specified list. If the item is not found, it typically returns -1."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::index_of","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Get index of ${item} in ${list}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"index_of;array;list;collection;std;index;of"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/186","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/187","names":{"count":1,"nodes":[{"code":"en-US","content":"List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The list to search within."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"A list of elements in which the specified item will be searched for to determine its index."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/188","genericType":{"id":"gid://sagittarius/GenericType/189","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/190","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/191"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/192","names":{"count":1,"nodes":[{"code":"en-US","content":"Item"}]},"identifier":"item","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The item whose index is to be found in the list."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The item for which the function searches in the list and returns the index of its first occurrence."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/193","genericKey":"R"}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/194","identifier":"std::list::index_of"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/195","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Is List Empty"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Checks if the list has no elements."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns true if the list contains no elements, otherwise returns false."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::is_empty","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Check if ${list} is empty"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"is_empty;array;list;collection;std;is;empty"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/196","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/197","names":{"count":1,"nodes":[{"code":"en-US","content":"List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The list to check for emptiness."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The list whose length will be evaluated to determine if it contains any elements."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/198","genericType":{"id":"gid://sagittarius/GenericType/199","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/200","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/201"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/202","identifier":"std::list::is_empty"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/203","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Join Text List"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Filters the input text list and joins the filtered elements into a single string separated by the specified join text."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Applies a filter operation on the input text list and returns a single concatenated string of filtered elements joined by the provided join text."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::join","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Joins ${list} using '${join_text}'"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"join;array;list;collection;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/204","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/205","names":{"count":1,"nodes":[{"code":"en-US","content":"Text List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"A list of text elements to be filtered."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Input list containing text elements for filtering."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/206","genericType":{"id":"gid://sagittarius/GenericType/207","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/208","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}],"target":"T","id":"gid://sagittarius/GenericMapper/209"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/210","names":{"count":1,"nodes":[{"code":"en-US","content":"Join Text"}]},"identifier":"join_text","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Text to join the filtered elements."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The delimiter or text that will be used to join the filtered list elements into a single string."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/211","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/212","identifier":"std::list::join"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/213","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Last Element of List"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Retrieves the last element from the list."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This runtime returns the last element in the given list, if any."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::last","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Get last element of ${list}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"last;array;list;collection;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/214","genericKey":"R"},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/215","names":{"count":1,"nodes":[{"code":"en-US","content":"Input List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The list from which to retrieve the last element."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns the last element of the provided list. If the list is empty, behavior depends on the implementation."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/216","genericType":{"id":"gid://sagittarius/GenericType/217","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/218","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/219"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/220","identifier":"std::list::last"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/221","genericKeys":["IN","OUT"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Map List"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Transforms each element in the list using the provided function."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This runtime applies the transform function to each element in the list, producing a new list of the results."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::map","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Apply ${transform} for each in ${list}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"map;array;list;collection;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/222","genericType":{"id":"gid://sagittarius/GenericType/223","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/224","genericKey":"OUT"}],"target":"T","id":"gid://sagittarius/GenericMapper/225"}]}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/226","names":{"count":1,"nodes":[{"code":"en-US","content":"Input List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The list to be transformed."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Each element of this list will be passed through the transform function."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/227","genericType":{"id":"gid://sagittarius/GenericType/228","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/229","genericKey":"IN"}],"target":"T","id":"gid://sagittarius/GenericMapper/230"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/231","names":{"count":1,"nodes":[{"code":"en-US","content":"Transform Function"}]},"identifier":"transform","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"A function that transforms each item in the list."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The transform function is applied to every element of the list to produce a new list."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/232","genericType":{"id":"gid://sagittarius/GenericType/233","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/42","genericKeys":["I","R"],"identifier":"TRANSFORM","aliases":{"count":1,"nodes":[{"code":"en-US","content":"transform"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Transform ${I} to ${R}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Transform"}]},"rules":{"count":2,"nodes":[{"variant":"RETURN_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/43","genericKey":"R"}}},{"variant":"INPUT_TYPES","config":{"inputTypes":[{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/44","genericKey":"I"},"inputIdentifier":"transform"}]}}]},"variant":"NODE"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/234","genericKey":"IN"}],"target":"I","id":"gid://sagittarius/GenericMapper/235"},{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/236","genericKey":"OUT"}],"target":"R","id":"gid://sagittarius/GenericMapper/237"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/238","identifier":"std::list::map"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/239","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Find Maximum Number"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Finds the maximum value in a numeric list."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns the largest number contained in the provided list."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::max","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Maximum of ${list}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"max;maximum;largest;greatest;array;list;collection;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/240","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/241","names":{"count":1,"nodes":[{"code":"en-US","content":"Number List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"A list of numbers to find the maximum value from."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns the largest number in the given list of numbers."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/242","genericType":{"id":"gid://sagittarius/GenericType/243","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/244","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/245"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/246","identifier":"std::list::max"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/247","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Find Minimum Number"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Finds the minimum value in a numeric list."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns the smallest number contained in the provided list."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::min","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Minimum of ${list}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"min;minimum;smallest;least;array;list;collection;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/248","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/249","names":{"count":1,"nodes":[{"code":"en-US","content":"Number List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"A list of numbers to find the minimum value from."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns the smallest number in the given list of numbers."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/250","genericType":{"id":"gid://sagittarius/GenericType/251","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/252","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/253"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/254","identifier":"std::list::min"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/255","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Pop from List"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Removes and returns the last item from the list."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Removes the last element from the specified list and returns it. The list is modified in place."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::pop","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Removes the last item of ${list}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"pop;array;list;collection;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/256","genericKey":"R"},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/257","names":{"count":1,"nodes":[{"code":"en-US","content":"List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The list to remove the last item from."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This is the list from which the last element will be removed and returned."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/258","genericType":{"id":"gid://sagittarius/GenericType/259","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/260","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/261"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/262","identifier":"std::list::pop"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/263","genericKeys":["I"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Push to List"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Appends an item to the end of a list."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Adds a new element to the end of the list and returns the new length of the list."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::push","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Push ${item} into ${list}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"push;array;list;collection;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/264","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/265","names":{"count":1,"nodes":[{"code":"en-US","content":"List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The list to which an item will be added."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The list that the new item will be appended to."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/266","genericType":{"id":"gid://sagittarius/GenericType/267","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/268","genericKey":"I"}],"target":"T","id":"gid://sagittarius/GenericMapper/269"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/270","names":{"count":1,"nodes":[{"code":"en-US","content":"Item"}]},"identifier":"item","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The item to add to the list."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The value to be added at the end of the list."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/271","genericKey":"I"}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/272","identifier":"std::list::push"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/273","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Remove from List"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Removes the first occurrence of the specified item from the list."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Removes the first matching item from the given list and returns the resulting list."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::remove","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Remove ${item} from ${list}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"remove;delete;strip;array;list;collection;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/274","genericType":{"id":"gid://sagittarius/GenericType/275","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/276","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/277"}]}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/278","names":{"count":1,"nodes":[{"code":"en-US","content":"List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The list from which the item will be removed."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"A list to process by removing the first occurrence of the specified item."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/279","genericType":{"id":"gid://sagittarius/GenericType/280","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/281","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/282"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/283","names":{"count":1,"nodes":[{"code":"en-US","content":"Item"}]},"identifier":"item","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The item to remove from the list."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The value to search for and remove from the list. Only the first matching item is removed."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/284","genericKey":"R"}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/285","identifier":"std::list::remove"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/286","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Reverse List"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Reverses the order of elements in the list."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a new list with the elements of the input list in reverse order."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::reverse","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Reverse ${list}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"reverse;array;list;collection;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/287","genericType":{"id":"gid://sagittarius/GenericType/288","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/289","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/290"}]}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/291","names":{"count":1,"nodes":[{"code":"en-US","content":"List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The input list to be reversed."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"A list of elements whose order will be reversed."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/292","genericType":{"id":"gid://sagittarius/GenericType/293","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/294","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/295"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/296","identifier":"std::list::reverse"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/297","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"List Size"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the number of elements in the list."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This function returns the count of elements present in the given list."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::size","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Size of ${list}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"size;array;list;collection;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/298","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/299","names":{"count":1,"nodes":[{"code":"en-US","content":"List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The list whose number of elements is to be returned."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Specifies the list for which the total number of elements will be calculated and returned."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/300","genericType":{"id":"gid://sagittarius/GenericType/301","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/302","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/303"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/304","identifier":"std::list::size"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/305","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Sort List"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Sorts the elements of the list using the specified comparator."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a new list with the elements sorted according to the comparator function provided."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::sort","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Sort ${list} using ${comparator}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"sort;array;list;collection;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/306","genericType":{"id":"gid://sagittarius/GenericType/307","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/308","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/309"}]}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/310","names":{"count":1,"nodes":[{"code":"en-US","content":"List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The input list to be sorted."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"A list of elements that will be sorted using the provided comparator function."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/311","genericType":{"id":"gid://sagittarius/GenericType/312","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/313","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/314"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/315","names":{"count":1,"nodes":[{"code":"en-US","content":"Comparator"}]},"identifier":"comparator","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"A comparator function used to determine the sort order of elements."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"A function that takes two elements and returns a negative, zero, or positive number to indicate their ordering."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/316","genericType":{"id":"gid://sagittarius/GenericType/317","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/30","genericKeys":["I"],"identifier":"COMPARATOR","aliases":{"count":1,"nodes":[{"code":"en-US","content":"compare;comparator"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Compare ${I}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Comparator"}]},"rules":{"count":2,"nodes":[{"variant":"RETURN_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/31","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}},{"variant":"INPUT_TYPES","config":{"inputTypes":[{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/33","genericKey":"I"},"inputIdentifier":"left"},{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/34","genericKey":"I"},"inputIdentifier":"right"}]}}]},"variant":"NODE"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/318","genericKey":"R"}],"target":"I","id":"gid://sagittarius/GenericMapper/319"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/320","identifier":"std::list::sort"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/321","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Sort List in Reverse"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Sorts the elements of the list in reverse order using the specified comparator."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a new list with the elements sorted in descending order according to the comparator function provided."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::sort_reverse","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Sort ${list} in reverse order using ${comparator}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"sort_reverse;array;list;collection;std;sort;reverse"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/322","genericType":{"id":"gid://sagittarius/GenericType/323","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/324","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/325"}]}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/326","names":{"count":1,"nodes":[{"code":"en-US","content":"List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The input list to be sorted in reverse order."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"A list of elements that will be sorted in descending order using the provided comparator."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/327","genericType":{"id":"gid://sagittarius/GenericType/328","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/329","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/330"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/331","names":{"count":1,"nodes":[{"code":"en-US","content":"Comparator"}]},"identifier":"comparator","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"A comparator function used to determine the sort order of elements."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"A function that takes two elements and returns a negative, zero, or positive number to indicate their ordering."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/332","genericType":{"id":"gid://sagittarius/GenericType/333","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/30","genericKeys":["I"],"identifier":"COMPARATOR","aliases":{"count":1,"nodes":[{"code":"en-US","content":"compare;comparator"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Compare ${I}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Comparator"}]},"rules":{"count":2,"nodes":[{"variant":"RETURN_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/31","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}},{"variant":"INPUT_TYPES","config":{"inputTypes":[{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/33","genericKey":"I"},"inputIdentifier":"left"},{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/34","genericKey":"I"},"inputIdentifier":"right"}]}}]},"variant":"NODE"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/334","genericKey":"R"}],"target":"I","id":"gid://sagittarius/GenericMapper/335"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/336","identifier":"std::list::sort_reverse"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/337","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Sum of Numbers"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the total sum of the elements in the numeric list."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Adds up all numbers in the input list and returns their sum."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::sum","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Sum of ${list}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"sum;total;add all;array;list;collection;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/338","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/339","names":{"count":1,"nodes":[{"code":"en-US","content":"Number List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"A list of numbers to be summed."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Calculates the sum of all numbers in the given list."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/340","genericType":{"id":"gid://sagittarius/GenericType/341","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/342","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}],"target":"T","id":"gid://sagittarius/GenericMapper/343"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/344","identifier":"std::list::sum"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/345","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"To Unique"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Removes duplicate elements from the input list."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a new list containing only the unique elements from the input list. The original order may or may not be preserved depending on the implementation."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::list::to_unique","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Remove duplicates in ${list}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"to_unique;array;list;collection;std;to;unique"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/346","genericType":{"id":"gid://sagittarius/GenericType/347","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/348","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/349"}]}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/350","names":{"count":1,"nodes":[{"code":"en-US","content":"List"}]},"identifier":"list","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The input list from which duplicates will be removed."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"A list of elements that may contain duplicates. This function will remove any duplicate items and return a new list with unique values only."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/351","genericType":{"id":"gid://sagittarius/GenericType/352","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/353","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/354"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/355","identifier":"std::list::to_unique"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/356","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"As Number"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Will convert the boolean to a number."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Converts a boolean value to a number."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::boolean::as_number","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Convert ${value} to number"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"to number;numeric;boolean;logic;std;as;number"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/357","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/358","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The boolean value to convert."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Converts a boolean value to a number."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/359","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/360","identifier":"std::boolean::as_number"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/361","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"As Text"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Will convert the boolean to text."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Converts a boolean value to a text string."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::boolean::as_text","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Convert ${value} to text"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"to text;string;format number;boolean;logic;std;as;text"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/362","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/363","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The boolean value to convert."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Converts a boolean value to a text string."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/364","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/365","identifier":"std::boolean::as_text"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/366","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"From Number"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Will convert the number to a boolean."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Converts a number to a boolean value. Typically, 0 maps to false and non-zero maps to true."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::boolean::from_number","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Convert ${value} to boolean"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"from number;to boolean;convert;boolean;logic;std;from;number"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/367","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/368","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number to convert."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Converts a number to a boolean value."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/369","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/370","identifier":"std::boolean::from_number"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/371","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"From Text"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Will convert the string to a boolean."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Converts a text string to a boolean value. Recognizes 'true' and 'false' (case-insensitive)."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::boolean::from_text","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Convert ${value} to boolean"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"from text;parse;convert;boolean;logic;std;from;text"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/372","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/373","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The text string to convert."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Converts a text string to a boolean value."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/374","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/375","identifier":"std::boolean::from_text"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/376","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Is Equal"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Will check if the two booleans are equal."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Compares two boolean values for equality. Returns true if they are the same, false otherwise."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::boolean::is_equal","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"${first} equals ${second}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"equal;equals;same;boolean;logic;std;is"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/377","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/378","names":{"count":1,"nodes":[{"code":"en-US","content":"First"}]},"identifier":"first","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The first boolean value to compare."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The first input to compare."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/379","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/380","names":{"count":1,"nodes":[{"code":"en-US","content":"Second"}]},"identifier":"second","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The second boolean value to compare."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The second input to compare."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/381","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/382","identifier":"std::boolean::is_equal"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/383","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Negate"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Negates a boolean value."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Negates a boolean value."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::boolean::negate","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Negate ${value}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"negate;negative;invert;opposite;boolean;logic;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/384","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/385","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The boolean value to negate."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Negates a boolean value."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/386","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/387","identifier":"std::boolean::negate"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/388","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"If"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Executes the specified runnable if the condition evaluates to true."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The 'If' runnable evaluates a boolean condition and, if it is true, executes the provided runnable. If the condition is false, execution continues without running the runnable. This behavior corresponds to a standard 'if' statement in programming languages."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::control::if","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"If ${condition} then do ${then_runnable}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"if;control;std"}]},"throwsError":false,"returnType":null,"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/389","names":{"count":1,"nodes":[{"code":"en-US","content":"Condition"}]},"identifier":"condition","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Boolean condition to evaluate."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Specifies the condition that determines whether the provided runnable should be executed. If this condition evaluates to true, the execution proceeds with the runnable defined in the second parameter."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/390","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/391","names":{"count":1,"nodes":[{"code":"en-US","content":"Then Runnable"}]},"identifier":"then_runnable","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Runnable to execute when the condition is true."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Defines the runnable that runs if the condition evaluates to true."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/392","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/41","genericKeys":[],"identifier":"RUNNABLE","aliases":{"count":1,"nodes":[{"code":"en-US","content":"node;function"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Node"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Node"}]},"rules":{"count":0,"nodes":[]},"variant":"NODE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/393","identifier":"std::control::if"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/394","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"If-Else"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Evaluates a condition and executes either the Then Runnable or the Else Runnable."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Evaluates a boolean condition. If true, executes the Then Runnable; otherwise, executes the Else Runnable. Mirrors a standard 'if/else' control structure in programming languages."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::control::if_else","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"If ${condition} do ${then_runnable} else ${else_runnable}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"if_else;control;std;if;else"}]},"throwsError":false,"returnType":null,"parameterDefinitions":{"count":3,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/395","names":{"count":1,"nodes":[{"code":"en-US","content":"Condition"}]},"identifier":"condition","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Boolean condition to evaluate."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Determines which branch to execute. If true the Then Runnable runs otherwise the Else Runnable runs."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/396","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/397","names":{"count":1,"nodes":[{"code":"en-US","content":"Then Runnable"}]},"identifier":"then_runnable","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Runnable to execute when the condition is true."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Defines the runnable that runs if the condition evaluates to true."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/398","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/41","genericKeys":[],"identifier":"RUNNABLE","aliases":{"count":1,"nodes":[{"code":"en-US","content":"node;function"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Node"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Node"}]},"rules":{"count":0,"nodes":[]},"variant":"NODE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/399","names":{"count":1,"nodes":[{"code":"en-US","content":"Else Runnable"}]},"identifier":"else_runnable","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Runnable to execute when the condition is false."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Defines the runnable that runs if the condition evaluates to false."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/400","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/41","genericKeys":[],"identifier":"RUNNABLE","aliases":{"count":1,"nodes":[{"code":"en-US","content":"node;function"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Node"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Node"}]},"rules":{"count":0,"nodes":[]},"variant":"NODE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/401","identifier":"std::control::if_else"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/402","genericKeys":["R"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Return"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns a value and terminates the current context."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Ends the current context and returns the specified value to the upper scope. This node behaves like a standard 'return' statement in programming languages, stopping further execution within the current flow."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::control::return","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Return ${value}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"return;control;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/403","genericKey":"R"},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/404","names":{"count":1,"nodes":[{"code":"en-US","content":"Return Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The value to be returned to the upper context."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Specifies the value that will be returned to the upper context. When this node executes, it immediately halts the iteration and passes the value upward."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/405","genericKey":"R"}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/406","identifier":"std::control::return"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/407","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Stop"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Completely stops the current context and prevents any further iterations."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Terminates the current execution context entirely, halting all ongoing and future iterations. Once invoked, no additional steps or loops within this context will be executed. This node behaves like a global stop or termination signal within the flow."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::control::stop","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Stop"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"stop;control;std"}]},"throwsError":false,"returnType":null,"parameterDefinitions":{"count":0,"nodes":[]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/408","identifier":"std::control::stop"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/409","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Absolute Value"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the absolute value of a number."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Removes the sign from the input number, returning its non-negative value."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::abs","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Absolute value of ${value}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"absolute;abs;magnitude;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/410","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/411","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number for which to compute the absolute value."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This is the numeric input. The result will be its absolute (non-negative) value."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/412","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/413","identifier":"std::number::abs"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/414","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Adds two numbers together."}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Adds two numbers together."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Adds two numbers together."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::add","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"${first} + ${second}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"add;plus;sum;total;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/415","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/416","names":{"count":1,"nodes":[{"code":"en-US","content":"First Number"}]},"identifier":"first","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The first number to add."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Adds two numbers together."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/417","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/418","names":{"count":1,"nodes":[{"code":"en-US","content":"Second Number"}]},"identifier":"second","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The second number to add."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Adds two numbers together."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/419","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/420","identifier":"std::number::add"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/421","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Arccosine"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the arccosine of a number, in radians."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Computes the angle in radians whose cosine is the given number."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::arccos","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"arccos(${value})"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"arccos;acos;inverse cosine;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/422","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/423","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number representing the cosine value, must be between -1 and 1."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Calculates the arccosine (inverse cosine) of the input value."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/424","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/425","identifier":"std::number::arccos"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/426","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Arcsine"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the arcsine of a number, in radians."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Computes the angle in radians whose sine is the given number."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::arcsin","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"arcsin(${value})"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"arcsin;asin;inverse sine;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/427","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/428","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number representing the sine value, must be between -1 and 1."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Calculates the arcsine (inverse sine) of the input value."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/429","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/430","identifier":"std::number::arcsin"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/431","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Arctangent"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the arctangent of a number, in radians."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Computes the angle in radians whose tangent is the given number."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::arctan","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"arctan(${value})"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"arctan;atan;inverse tangent;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/432","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/433","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number representing the tangent value."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Calculates the arctangent (inverse tangent) of the input value."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/434","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/435","identifier":"std::number::arctan"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/436","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Number as Text"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Converts a number into its textual representation."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Transforms the given numeric value into a string format."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::as_text","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Convert ${number} to text"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"to text;string;format number;number;math;std;as;text"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/437","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/438","names":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"identifier":"number","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number to convert to text."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The numeric input that will be converted to its text representation."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/439","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/440","identifier":"std::number::as_text"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/441","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Clamp"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Limits a number to be within a specified range."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns the given number clamped between the minimum and maximum bounds."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::clamp","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Clamp ${value} between ${min} and ${max}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"clamp;limit;bound;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/442","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":3,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/443","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number to be clamped within the range."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The input number that will be limited to the specified range."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/444","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/445","names":{"count":1,"nodes":[{"code":"en-US","content":"Minimum"}]},"identifier":"min","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The lower bound of the clamping range."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The minimum allowed value in the clamping operation."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/446","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/447","names":{"count":1,"nodes":[{"code":"en-US","content":"Maximum"}]},"identifier":"max","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The upper bound of the clamping range."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The maximum allowed value in the clamping operation."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/448","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/449","identifier":"std::number::clamp"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/450","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Cosine"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the cosine of the specified angle in radians."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Calculates the cosine value of the input angle measured in radians."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::cos","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"cos(${radians})"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"cos;cosine;trigonometry;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/451","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/452","names":{"count":1,"nodes":[{"code":"en-US","content":"Radians"}]},"identifier":"radians","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The angle in radians to compute the cosine of."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Computes the cosine of the given angle in radians."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/453","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/454","identifier":"std::number::cos"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/455","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Hyperbolic Cosine"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the hyperbolic cosine of a number."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Calculates the hyperbolic cosine (cosh) of the input value."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::cosh","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"cosh(${value})"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"cosh;hyperbolic cosine;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/456","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/457","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number for which to calculate the hyperbolic cosine."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Computes the hyperbolic cosine of the given number."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/458","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/459","identifier":"std::number::cosh"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/460","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Divide"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Divides the first number by the second number."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns the result of dividing the first numeric input (dividend) by the second (divisor)."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::divide","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"${first} / ${second}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"divide;division;quotient;div;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/461","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/462","names":{"count":1,"nodes":[{"code":"en-US","content":"Dividend"}]},"identifier":"first","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number to be divided."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This is the numerator or the number that will be divided by the second value."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/463","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/464","names":{"count":1,"nodes":[{"code":"en-US","content":"Divisor"}]},"identifier":"second","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number by which to divide the first number."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This is the denominator or the value that divides the first number."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/465","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/466","identifier":"std::number::divide"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/467","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Euler's Number"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the mathematical constant e (Euler's number)."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Provides the constant value of Euler's number, approximately 2.71828, which is the base of the natural logarithm."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::euler","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Euler"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"euler;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/468","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":0,"nodes":[]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/469","identifier":"std::number::euler"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/470","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Exponential"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Raises a base number to the power of an exponent."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Computes the result of raising the base to the power specified by the exponent."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::exponential","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"e ^ ${base}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"exponential;exp;e power;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/471","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/472","names":{"count":1,"nodes":[{"code":"en-US","content":"Base"}]},"identifier":"base","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The base number to be raised to a power."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This is the numeric value that will be raised to the power of the exponent."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/473","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/474","names":{"count":1,"nodes":[{"code":"en-US","content":"Exponent"}]},"identifier":"exponent","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The exponent to raise the base number by."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This numeric value indicates the power to which the base is raised."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/475","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/476","identifier":"std::number::exponential"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/477","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Number from Text"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Converts a text string into a number if possible."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Attempts to parse the provided text input and return its numeric equivalent."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::from_text","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Convert ${text} to number"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"from text;parse;convert;number;math;std;from;text"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/478","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/479","names":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"identifier":"text","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The text string to convert to a number."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Parses the input text and attempts to convert it to a numeric value."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/480","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/481","identifier":"std::number::from_text"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/482","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Infinity"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the mathematical concept of positive infinity."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Provides the representation of positive infinity, used to represent an unbounded value in computations."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::infinity","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Infinity"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"infinity;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/483","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":0,"nodes":[]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/484","identifier":"std::number::infinity"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/485","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Is Equal"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Checks whether two numbers are equal."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns true if the first number is equal to the second number, otherwise false."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::is_equal","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"${first} == ${second}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"equal;equals;same;number;math;std;is"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/486","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/487","names":{"count":1,"nodes":[{"code":"en-US","content":"First Number"}]},"identifier":"first","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The first number to compare."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The first operand in the equality check."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/488","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/489","names":{"count":1,"nodes":[{"code":"en-US","content":"Second Number"}]},"identifier":"second","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The second number to compare."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The second operand in the equality check."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/490","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/491","identifier":"std::number::is_equal"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/492","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Is Greater"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Checks whether the first number is greater than the second number."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns true if the first numeric input is greater than the second; otherwise, returns false."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::is_greater","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"${first} > ${second}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"greater;larger;more;number;math;std;is"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/493","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/494","names":{"count":1,"nodes":[{"code":"en-US","content":"First Number"}]},"identifier":"first","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number to compare against the second number."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This is the number that will be evaluated to determine if it is greater than the second number."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/495","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/496","names":{"count":1,"nodes":[{"code":"en-US","content":"Second Number"}]},"identifier":"second","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number to compare with the first number."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This is the number that the first number will be compared to."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/497","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/498","identifier":"std::number::is_greater"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/499","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Is Less"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Checks whether the first number is less than the second number."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns true if the first numeric input is less than the second; otherwise, returns false."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::is_less","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"${first} < ${second}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"less;smaller;fewer;number;math;std;is"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/500","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/501","names":{"count":1,"nodes":[{"code":"en-US","content":"First Number"}]},"identifier":"first","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number to compare with the second number."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This is the number that will be evaluated to determine if it is less than the second number."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/502","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/503","names":{"count":1,"nodes":[{"code":"en-US","content":"Second Number"}]},"identifier":"second","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number to compare against the first number."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This is the number that the first number will be compared to."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/504","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/505","identifier":"std::number::is_less"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/506","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Is Positive"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Checks whether a number is greater than zero."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Evaluates the input number and returns true if it is positive (greater than zero), otherwise false."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::is_positive","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"${value} > 0"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"positive;greater than zero;number;math;std;is"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/507","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/508","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number to check for positivity."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This is the numeric input that will be evaluated to determine whether it is greater than zero."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/509","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/510","identifier":"std::number::is_positive"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/511","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Is Zero"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Checks whether the given number is exactly zero."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns true if the input number is zero; otherwise, returns false."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::is_zero","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"${value} == 0"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"zero;equals zero;number;math;std;is"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/512","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/513","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number to check if it is zero."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This is the numeric input evaluated to determine whether it equals zero."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/514","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/515","identifier":"std::number::is_zero"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/516","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Natural Logarithm"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Calculates the natural logarithm (log base e) of a number."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns the natural logarithm of the given value."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::ln","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"ln(${value})"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"natural log;ln;log e;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/517","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/518","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number to compute the natural logarithm for."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The numeric input whose natural logarithm (log base e) will be calculated."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/519","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/520","identifier":"std::number::ln"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/521","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Logarithm"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Calculates the logarithm of a number with respect to a specified base."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns the logarithm of the given value using the specified base."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::log","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"log base ${base} of ${value}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"log;logarithm;log base;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/522","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/523","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number to compute the logarithm for."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The numeric input whose logarithm is to be calculated."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/524","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/525","names":{"count":1,"nodes":[{"code":"en-US","content":"Base"}]},"identifier":"base","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The base of the logarithm."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Specifies the logarithmic base to use (e.g., 10 for common log, e for natural log)."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/526","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/527","identifier":"std::number::log"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/528","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Maximum"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the larger of two numbers."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Compares two numbers and returns the maximum value."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::max","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Maximum of ${first} and ${second}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"max;maximum;largest;greatest;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/529","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/530","names":{"count":1,"nodes":[{"code":"en-US","content":"First Number"}]},"identifier":"first","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The first number to compare."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"One of the two numbers for which the maximum value will be determined."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/531","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/532","names":{"count":1,"nodes":[{"code":"en-US","content":"Second Number"}]},"identifier":"second","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The second number to compare."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The other number involved in the maximum value comparison."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/533","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/534","identifier":"std::number::max"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/535","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Minimum"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the smaller of two numbers."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Compares two numbers and returns the minimum value."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::min","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Minimum of ${first} and ${second}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"min;minimum;smallest;least;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/536","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/537","names":{"count":1,"nodes":[{"code":"en-US","content":"First Number"}]},"identifier":"first","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The first number to compare."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"One of the two numbers for which the minimum value will be determined."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/538","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/539","names":{"count":1,"nodes":[{"code":"en-US","content":"Second Number"}]},"identifier":"second","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The second number to compare."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The other number involved in the minimum value comparison."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/540","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/541","identifier":"std::number::min"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/542","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Modulo"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the remainder after dividing the first number by the second."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Computes the modulus (remainder) of dividing the first numeric input by the second."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::modulo","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"${first} % ${second}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"modulo;mod;remainder;modulus;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/543","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/544","names":{"count":1,"nodes":[{"code":"en-US","content":"Dividend"}]},"identifier":"first","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number to be divided to find the remainder."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This is the number that will be divided by the second value to calculate the remainder."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/545","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/546","names":{"count":1,"nodes":[{"code":"en-US","content":"Divisor"}]},"identifier":"second","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number by which the first number is divided to get the remainder."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This is the number used to divide the dividend and obtain the remainder."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/547","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/548","identifier":"std::number::modulo"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/549","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Multiply"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Multiplies two numbers together."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Takes two numeric inputs and returns their product."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::multiply","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"${first} * ${second}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"multiply;times;product;mul;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/550","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/551","names":{"count":1,"nodes":[{"code":"en-US","content":"First Number"}]},"identifier":"first","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The first number to multiply."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Specifies the first operand in the multiplication operation."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/552","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/553","names":{"count":1,"nodes":[{"code":"en-US","content":"Second Number"}]},"identifier":"second","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The second number to multiply."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Specifies the second operand in the multiplication operation."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/554","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/555","identifier":"std::number::multiply"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/556","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Negate"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the negation of a number (multiplies by -1)."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Calculates the additive inverse of the given number."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::negate","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Negate ${value}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"negate;negative;invert;opposite;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/557","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/558","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number to negate."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The numeric input whose sign will be inverted."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/559","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/560","identifier":"std::number::negate"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/561","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Pi"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the mathematical constant π (pi)."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Provides the constant value of pi, approximately 3.14159, used in many mathematical calculations."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::pi","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Get pi"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"pi;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/562","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":0,"nodes":[]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/563","identifier":"std::number::pi"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/564","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Random Number"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Generates a random number between the specified minimum and maximum values."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a randomly generated number within the given range, inclusive of both minimum and maximum."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::random_number","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Random number between ${min} and ${max}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"random;rand;random number;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/565","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/566","names":{"count":1,"nodes":[{"code":"en-US","content":"Minimum"}]},"identifier":"min","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The minimum value in the random number range."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Defines the lower bound (inclusive) for the random number generation."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/567","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/568","names":{"count":1,"nodes":[{"code":"en-US","content":"Maximum"}]},"identifier":"max","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The maximum value in the random number range."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Defines the upper bound (inclusive) for the random number generation."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/569","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/570","identifier":"std::number::random_number"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/571","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Root"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the root of a number given a root exponent."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Calculates the nth root of the input number, where n is specified by the root exponent."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::root","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"${root_exponent} root of ${value}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"root;nth root;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/572","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/573","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number from which the root will be extracted."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The numeric input for which the root will be calculated."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/574","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/575","names":{"count":1,"nodes":[{"code":"en-US","content":"Root Exponent"}]},"identifier":"root_exponent","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The degree of the root to extract."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Specifies which root to calculate (e.g., 2 for square root, 3 for cube root)."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/576","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/577","identifier":"std::number::root"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/578","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Round"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Rounds a number to the nearest value at the specified number of decimal places."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Performs standard rounding on the given value, rounding up or down depending on the fractional component."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::round","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Round ${value} with ${decimals} decimal places"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"round;nearest;approximate;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/579","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/580","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number to be rounded."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The numeric input that will be rounded to the nearest value."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/581","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/582","names":{"count":1,"nodes":[{"code":"en-US","content":"Decimal Places"}]},"identifier":"decimals","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number of decimal places to round to."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Specifies how many decimal digits to keep after rounding."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/583","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/584","identifier":"std::number::round"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/585","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Round Down"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Rounds a number downward to the specified number of decimal places."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Performs rounding on the given value, always rounding down to the nearest value at the given decimal precision."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::round_down","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Round down ${value} with ${decimals} decimal places"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"round down;floor;number;math;std;round;down"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/586","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/587","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number to be rounded down."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The numeric input that will be rounded downwards."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/588","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/589","names":{"count":1,"nodes":[{"code":"en-US","content":"Decimal Places"}]},"identifier":"decimals","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number of decimal places to round down to."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Specifies how many decimal digits to keep after rounding down."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/590","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/591","identifier":"std::number::round_down"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/592","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Round Up"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Rounds a number upward to the specified number of decimal places."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Performs rounding on the given value, always rounding up to the nearest value at the given decimal precision."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::round_up","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Round up ${value} with ${decimals} decimal places"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"round up;ceil;ceiling;number;math;std;round;up"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/593","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/594","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number to be rounded up."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The numeric input that will be rounded upwards."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/595","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/596","names":{"count":1,"nodes":[{"code":"en-US","content":"Decimal Places"}]},"identifier":"decimals","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number of decimal places to round up to."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Specifies how many decimal digits to keep after rounding up."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/597","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/598","identifier":"std::number::round_up"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/599","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Sine"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the sine of a number."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Calculates the sine of the input value."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::sin","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"sin(${value})"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"sin;sine;trigonometry;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/600","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/601","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number for which to calculate the sine."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Computes the sine of the given number."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/602","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/603","identifier":"std::number::sin"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/604","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Hyperbolic Sine"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the hyperbolic sine of a number."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Calculates the hyperbolic sine (sinh) of the input value."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::sinh","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"sinh(${value})"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"sinh;hyperbolic sine;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/605","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/606","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number for which to calculate the hyperbolic sine."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Computes the hyperbolic sine of the given number."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/607","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/608","identifier":"std::number::sinh"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/609","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Square"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the square of the given number."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Calculates the value multiplied by itself, effectively raising it to the power of 2."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::square","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"${value} squared"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"square;squared;power two;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/610","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/611","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number to be squared."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This is the numeric input that will be multiplied by itself."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/612","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/613","identifier":"std::number::square"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/614","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Square Root"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the square root of the given number."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Calculates the positive square root of the input number."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::square_root","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Square root of ${value}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"square root;sqrt;root;number;math;std;square"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/615","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/616","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number to find the square root of."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The numeric input for which the square root will be calculated."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/617","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/618","identifier":"std::number::square_root"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/619","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Subtract"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Subtracts the second number from the first number."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns the result of subtracting the second numeric input from the first."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::subtract","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"${first} - ${second}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"subtract;minus;difference;sub;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/620","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/621","names":{"count":1,"nodes":[{"code":"en-US","content":"Minuend"}]},"identifier":"first","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number from which another number (the subtrahend) is to be subtracted."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This is the number that will have the second value subtracted from it."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/622","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/623","names":{"count":1,"nodes":[{"code":"en-US","content":"Subtrahend"}]},"identifier":"second","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The number to subtract from the first number (the minuend)."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This is the value that will be subtracted from the first number."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/624","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/625","identifier":"std::number::subtract"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/626","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Tangent"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the tangent of the specified angle in radians."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Calculates the tangent value of the input angle measured in radians."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::number::tan","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"tan(${radians})"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"tan;tangent;trigonometry;number;math;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/627","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/628","names":{"count":1,"nodes":[{"code":"en-US","content":"Radians"}]},"identifier":"radians","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The angle in radians to compute the tangent of."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Computes the tangent of the given angle in radians."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/629","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/630","identifier":"std::number::tan"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/631","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Contains Key"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Checks whether the specified key exists in the object."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns true if the given key is a property of the object; otherwise, returns false."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::object::contains_key","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Checks if ${object} contains ${key}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"contains_key;object;std;contains;key"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/632","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/633","names":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"identifier":"object","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The object to check for the presence of a key."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The object within which the existence of the specified key will be checked."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/634","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/635","names":{"count":1,"nodes":[{"code":"en-US","content":"Key"}]},"identifier":"key","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The key to check for existence in the object."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The property key whose presence in the object is being tested."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/636","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/637","identifier":"std::object::contains_key"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/638","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Get Object Keys"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Retrieves all the keys from the given object as a list of text values."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a list containing all enumerable property names (keys) of the specified object."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::object::keys","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Get all keys of ${object}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"keys;object;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/639","genericType":{"id":"gid://sagittarius/GenericType/640","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/641","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}],"target":"T","id":"gid://sagittarius/GenericMapper/642"}]}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/643","names":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"identifier":"object","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The object whose keys will be retrieved."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a list of all the keys (property names) of the given object."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/644","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/645","identifier":"std::object::keys"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/646","genericKeys":["I"],"names":{"count":1,"nodes":[{"code":"en-US","content":"Set Object Key"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Sets or updates a key-value pair in the given object."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a new object with the specified key set to the given value."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::object::set","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Will set ${key} to ${value} inside of ${object}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"set;object;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/647","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}},"parameterDefinitions":{"count":3,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/648","names":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"identifier":"object","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The object in which the key-value pair will be set."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The original object that will be modified with the specified key-value pair."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/649","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/650","names":{"count":1,"nodes":[{"code":"en-US","content":"Key"}]},"identifier":"key","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The key to set or update in the object."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The property name under which the value will be stored in the object."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/651","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/652","names":{"count":1,"nodes":[{"code":"en-US","content":"Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The value to set for the specified key."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The value to assign to the object property identified by the key."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/653","genericKey":"I"}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/654","identifier":"std::object::set"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/655","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Get Object Size"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Calculates the number of keys in the provided object."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns an integer count of all enumerable property keys in the specified object."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::object::size","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Get size of ${object}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"size;object;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/656","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/657","names":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"identifier":"object","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The object whose size (number of keys) will be calculated."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns the number of enumerable keys (properties) present in the given object."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/658","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/11","genericKeys":[],"identifier":"OBJECT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"object;struct;data"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Object"}]},"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/659","identifier":"std::object::size"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/660","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Append Text"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Concatenates the suffix text to the end of the original text."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a new text string consisting of the original text followed by the specified suffix."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::append","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Append ${value} with ${suffix}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"append;text;string;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/661","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/662","names":{"count":1,"nodes":[{"code":"en-US","content":"Original Text"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The initial text to which the suffix will be appended."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The base text string that will have another string appended to its end."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/663","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/664","names":{"count":1,"nodes":[{"code":"en-US","content":"Suffix"}]},"identifier":"suffix","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The text to append to the original value."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The text string that will be concatenated to the end of the original text."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/665","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/666","identifier":"std::text::append"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/667","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"As Bytes"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Converts a text string into a list of byte values."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a list of bytes representing the UTF-8 encoding of the given text."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::as_bytes","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"As Bytes ${value}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"as_bytes;text;string;std;as;bytes"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/668","genericType":{"id":"gid://sagittarius/GenericType/669","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/670","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}],"target":"T","id":"gid://sagittarius/GenericMapper/671"}]}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/672","names":{"count":1,"nodes":[{"code":"en-US","content":"Text Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The text to convert into bytes."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Converts the input text string into a list of byte values."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/673","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/674","identifier":"std::text::as_bytes"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/675","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Character at Index"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the character at the specified index in the text."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Retrieves a single character from the input text based on the provided zero-based index."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::at","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Get character of ${value} at ${index}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"at;text;string;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/676","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/677","names":{"count":1,"nodes":[{"code":"en-US","content":"Text Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The text string from which to extract the character."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The input text from which a character will be retrieved by index."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/678","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/679","names":{"count":1,"nodes":[{"code":"en-US","content":"Index"}]},"identifier":"index","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The zero-based position of the character to extract."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Specifies which character to return from the text."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/680","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/681","identifier":"std::text::at"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/682","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Byte Size"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the number of bytes required to encode the given text."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Computes the size in bytes of the provided text string, typically by counting UTF-8 encoded bytes."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::byte_size","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Byte-Size of ${value}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"byte_size;text;string;std;byte;size"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/683","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/684","names":{"count":1,"nodes":[{"code":"en-US","content":"Text Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The text whose byte size is to be calculated."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Calculates the size in bytes of the given text, typically its UTF-8 encoding length."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/685","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/686","identifier":"std::text::byte_size"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/687","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Capitalize"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Converts the first character of the text to uppercase and leaves the rest unchanged."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a new text string with the first letter capitalized."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::capitalize","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Capitalize ${value}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"capitalize;title case;upper first;text;string;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/688","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/689","names":{"count":1,"nodes":[{"code":"en-US","content":"Text Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The text string to capitalize."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Capitalizes the first letter of the input text string."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/690","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/691","identifier":"std::text::capitalize"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/692","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Characters"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns a list containing each character from the given text string."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Creates a list where each element is a single character from the original text."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::chars","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Turns ${value} into a list of characters"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"characters;letters;split;text;string;std;chars"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/693","genericType":{"id":"gid://sagittarius/GenericType/694","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/695","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}],"target":"T","id":"gid://sagittarius/GenericMapper/696"}]}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/697","names":{"count":1,"nodes":[{"code":"en-US","content":"Text Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The text string to split into characters."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Splits the input text string into a list of its constituent characters."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/698","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/699","identifier":"std::text::chars"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/700","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Contains"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Checks if the main text contains the specified substring."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns true if the substring is found anywhere in the main text; otherwise, returns false."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::contains","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Check if ${value} contains ${substring}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"contains;text;string;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/701","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/702","names":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The main text to search within."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The main text to search within."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/703","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/704","names":{"count":1,"nodes":[{"code":"en-US","content":"Substring"}]},"identifier":"substring","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The text to search for inside the main text."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The text to search for inside the main text."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/705","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/706","identifier":"std::text::contains"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/707","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Decode Text"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Decodes the input text from the specified encoding format."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Decodes the input text from the specified encoding format."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::decode","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Decode ${value} using ${encoding}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"decode;text;string;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/708","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/709","names":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The text string to decode."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The text string to decode."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/710","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/711","names":{"count":1,"nodes":[{"code":"en-US","content":"Encoding Type"}]},"identifier":"encoding","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The decoding scheme to apply (e.g. Base64)."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The decoding scheme to apply (e.g. Base64)."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/712","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/45","genericKeys":[],"identifier":"TEXT_ENCODING","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;encoding;base64"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text Encoding"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text Encoding"}]},"rules":{"count":1,"nodes":[{"variant":"ITEM_OF_COLLECTION","config":{"items":["BASE64"]}}]},"variant":"TYPE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/713","identifier":"std::text::decode"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/714","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Encode Text"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Encodes the input text into the specified encoding format."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Transforms the given text string into a representation encoded by the specified encoding scheme."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::encode","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Encode ${value} to ${encoding}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"encode;text;string;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/715","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/716","names":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The text string to encode."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The text string to encode."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/717","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/718","names":{"count":1,"nodes":[{"code":"en-US","content":"Encoding Type"}]},"identifier":"encoding","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The encoding scheme to apply (e.g., UTF-8, Base64)."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The encoding scheme to apply (e.g., UTF-8, Base64)."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/719","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/45","genericKeys":[],"identifier":"TEXT_ENCODING","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;encoding;base64"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text Encoding"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text Encoding"}]},"rules":{"count":1,"nodes":[{"variant":"ITEM_OF_COLLECTION","config":{"items":["BASE64"]}}]},"variant":"TYPE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/720","identifier":"std::text::encode"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/721","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Ends With"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Checks if the input text ends with the specified suffix."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns true if the input text ends with the given suffix; otherwise, returns false."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::ends_with","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Check if ${value} ends with ${suffix}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"ends_with;text;string;std;ends;with"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/722","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/723","names":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The input text to check."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The input text to check."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/724","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/725","names":{"count":1,"nodes":[{"code":"en-US","content":"Suffix"}]},"identifier":"suffix","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The suffix to test against the input text."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The suffix to test against the input text."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/726","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/727","identifier":"std::text::ends_with"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/728","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"From ASCII"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Converts a list of ASCII codes back into the corresponding text string."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Takes a list of numbers where each number is an ASCII code, and returns the string they represent."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::from_ascii","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"From ${value} to Text"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"from_ascii;text;string;std;from;ascii"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/729","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/730","names":{"count":1,"nodes":[{"code":"en-US","content":"ASCII Codes"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"List of ASCII numeric codes representing characters."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"List of ASCII numeric codes representing characters."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/731","genericType":{"id":"gid://sagittarius/GenericType/732","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/733","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}],"target":"T","id":"gid://sagittarius/GenericMapper/734"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/735","identifier":"std::text::from_ascii"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/736","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Text to Hexadecimal"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Converts a text string into a hexadecimal representation."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a string containing the hexadecimal values corresponding to each character of the input text."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::hex","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"${value} to Hexadecimal"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"hex;text;string;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/737","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/738","names":{"count":1,"nodes":[{"code":"en-US","content":"Input Text"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The text string to be converted to its hexadecimal representation."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This function converts each character of the input text into its corresponding hexadecimal code, returning the concatenated hex string."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/739","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/740","identifier":"std::text::hex"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/741","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Index Of"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Finds the first occurrence index of the substring within the text."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns the zero-based index of the first occurrence of the substring in the text. Returns -1 if the substring is not found."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::index_of","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Get position of ${substring} inside ${value}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"index_of;text;string;std;index;of"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/742","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/743","names":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The text string to search within."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The text string to search within."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/744","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/745","names":{"count":1,"nodes":[{"code":"en-US","content":"Substring"}]},"identifier":"substring","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The substring to find inside the text."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The substring to find inside the text."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/746","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/747","identifier":"std::text::index_of"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/748","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Insert Text"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Inserts a given text into the original text at the specified position."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a new string where the provided text is inserted at the zero-based position index within the original text."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::insert","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Insert ${value} at ${position} into ${text}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"insert;text;string;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/749","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":3,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/750","names":{"count":1,"nodes":[{"code":"en-US","content":"Original Text"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The original text into which another text will be inserted."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This is the base string where the insertion happens."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/751","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/752","names":{"count":1,"nodes":[{"code":"en-US","content":"Position"}]},"identifier":"position","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The index at which the text will be inserted."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Zero-based index indicating where the new text should be inserted."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/753","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/754","names":{"count":1,"nodes":[{"code":"en-US","content":"Text to Insert"}]},"identifier":"text","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The text that will be inserted into the original text."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The substring to be inserted at the specified position."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/755","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/756","identifier":"std::text::insert"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/757","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Is Equal"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Checks whether the two input text strings are equal."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Determines if the two given text inputs are exactly the same, returning true if equal, false otherwise."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::is_equal","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"${first} equals ${second}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"equal;equals;same;text;string;std;is"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/758","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/759","names":{"count":1,"nodes":[{"code":"en-US","content":"First Text"}]},"identifier":"first","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The first text string to compare."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The first input text for equality comparison."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/760","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/761","names":{"count":1,"nodes":[{"code":"en-US","content":"Second Text"}]},"identifier":"second","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The second text string to compare."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The second input text for equality comparison."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/762","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/763","identifier":"std::text::is_equal"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/764","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Length"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Returns the number of characters in the given text."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Computes the length of the input string in terms of characters."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::length","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Length of ${value}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"length;size;characters;text;string;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/765","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/766","names":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The text whose length will be calculated."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Input string to determine the number of characters it contains."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/767","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/768","identifier":"std::text::length"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/769","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Lowercase"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Transforms all letters in the text to their lowercase equivalents."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a new text string with all characters converted to lowercase."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::lowercase","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"${value} to Lowercase"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"lowercase;text;string;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/770","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/771","names":{"count":1,"nodes":[{"code":"en-US","content":"Text Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The text string to convert to lowercase."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Converts all characters in the input text string to lowercase."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/772","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/773","identifier":"std::text::lowercase"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/774","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Text to Octal"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Converts a text string into an octal representation."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a string containing the octal values corresponding to each character of the input text."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::octal","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"${value} to Octal"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"octal;text;string;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/775","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/776","names":{"count":1,"nodes":[{"code":"en-US","content":"Input Text"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The text string to be converted to its octal representation."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This function converts each character of the input text into its corresponding octal code, returning the concatenated octal string."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/777","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/778","identifier":"std::text::octal"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/779","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Prepend Text"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Concatenates the prefix text to the beginning of the original text."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a new text string consisting of the specified prefix followed by the original text."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::prepend","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Prepend ${value} with ${prefix}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"prepend;text;string;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/780","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/781","names":{"count":1,"nodes":[{"code":"en-US","content":"Original Text"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The initial text to which the prefix will be added."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The base text string that will have another string prepended to its beginning."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/782","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/783","names":{"count":1,"nodes":[{"code":"en-US","content":"Prefix"}]},"identifier":"prefix","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The text to prepend before the original value."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The text string that will be concatenated to the start of the original text."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/784","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/785","identifier":"std::text::prepend"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/786","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Remove Substring"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Removes the substring between the specified start and end indices from the input text."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a new string with characters removed from start up to but not including end."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::remove","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Remove ${value} from ${start}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"remove;delete;strip;text;string;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/787","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":3,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/788","names":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The original text to remove a substring from."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The input text from which a substring will be removed."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/789","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/790","names":{"count":1,"nodes":[{"code":"en-US","content":"Start Index"}]},"identifier":"start","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The zero-based index where removal begins."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The starting position for removing characters from the text."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/791","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/792","names":{"count":1,"nodes":[{"code":"en-US","content":"End Index"}]},"identifier":"end","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The zero-based index where removal ends (exclusive)."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The position just after the last character to be removed."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/793","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/794","identifier":"std::text::remove"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/795","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Replace Substring"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Replaces all occurrences of a specified substring with another substring in the input text."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a new string where every instance of the old substring is replaced by the new substring."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::replace","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"In ${value} replace ${old} with ${new}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"replace;text;string;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/796","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":3,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/797","names":{"count":1,"nodes":[{"code":"en-US","content":"Original Text"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The input text where replacements will be made."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This is the text in which all occurrences of the old substring will be replaced."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/798","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/799","names":{"count":1,"nodes":[{"code":"en-US","content":"Old Substring"}]},"identifier":"old","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The substring to be replaced."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"All occurrences of this substring in the original text will be replaced."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/800","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/801","names":{"count":1,"nodes":[{"code":"en-US","content":"New Substring"}]},"identifier":"new","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The substring to replace with."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This substring will replace each occurrence of the old substring."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/802","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/803","identifier":"std::text::replace"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/804","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Replace First Substring"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Replaces the first occurrence of a specified substring with another substring in the input text."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a new string where only the first instance of the old substring is replaced by the new substring."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::replace_first","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"In ${value} replace first ${old} with ${new}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"replace_first;text;string;std;replace;first"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/805","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":3,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/806","names":{"count":1,"nodes":[{"code":"en-US","content":"Original Text"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The input text where the first replacement will be made."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This text contains the substring that will be replaced only once—the first occurrence."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/807","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/808","names":{"count":1,"nodes":[{"code":"en-US","content":"Old Substring"}]},"identifier":"old","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The substring to be replaced."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Only the first occurrence of this substring will be replaced in the original text."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/809","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/810","names":{"count":1,"nodes":[{"code":"en-US","content":"New Substring"}]},"identifier":"new","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The substring to replace with."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This substring will replace only the first occurrence of the old substring."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/811","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/812","identifier":"std::text::replace_first"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/813","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Replace Last Substring"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Replaces the last occurrence of a specified substring with another substring in the input text."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a new string where only the last instance of the old substring is replaced by the new substring."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::replace_last","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"In ${value} replace the last ${old} with ${new}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"replace_last;text;string;std;replace;last"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/814","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":3,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/815","names":{"count":1,"nodes":[{"code":"en-US","content":"Original Text"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The input text where the last replacement will be made."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This text contains the substring that will be replaced only once—the last occurrence."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/816","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/817","names":{"count":1,"nodes":[{"code":"en-US","content":"Old Substring"}]},"identifier":"old","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The substring to be replaced."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Only the last occurrence of this substring will be replaced in the original text."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/818","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/819","names":{"count":1,"nodes":[{"code":"en-US","content":"New Substring"}]},"identifier":"new","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The substring to replace with."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"This substring will replace only the last occurrence of the old substring."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/820","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/821","identifier":"std::text::replace_last"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/822","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Reverse"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Reverses the characters in the input text."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a new string with the characters of the input text in reverse order."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::reverse","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Reverse ${value}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"reverse;text;string;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/823","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/824","names":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The input text to be reversed."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The input text to be reversed."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/825","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/826","identifier":"std::text::reverse"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/827","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Split"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Splits the input text into a list of substrings based on the specified delimiter."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a list of substrings obtained by splitting the input text at each occurrence of the delimiter."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::split","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Splits ${value} on '${delimiter}'"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"split;text;string;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/828","genericType":{"id":"gid://sagittarius/GenericType/829","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/830","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}],"target":"T","id":"gid://sagittarius/GenericMapper/831"}]}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/832","names":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The input text to be split."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The input text to be split."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/833","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/834","names":{"count":1,"nodes":[{"code":"en-US","content":"Delimiter"}]},"identifier":"delimiter","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The delimiter string to split the text by."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The delimiter string to split the text by."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/835","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/836","identifier":"std::text::split"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/837","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Starts With"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Checks if the input text starts with the specified prefix."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns true if the input text begins with the given prefix; otherwise, returns false."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::start_with","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Check if ${value} starts with ${prefix}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;string;std;start;with"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/838","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/39","genericKeys":[],"identifier":"BOOLEAN","aliases":{"count":1,"nodes":[{"code":"en-US","content":"bool;boolean;bit"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Boolean"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/839","names":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The input text to check."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The input text to check."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/840","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/841","names":{"count":1,"nodes":[{"code":"en-US","content":"Prefix"}]},"identifier":"prefix","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The prefix to test against the input text."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The prefix to test against the input text."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/842","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/843","identifier":"std::text::start_with"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/844","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Swap Case"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Converts uppercase letters to lowercase and lowercase letters to uppercase in the given text."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a new text string with the case of each character inverted."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::swapcase","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Swapcase of ${value}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"swapcase;text;string;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/845","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/846","names":{"count":1,"nodes":[{"code":"en-US","content":"Text Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The text string whose case will be swapped."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Swaps the case of each letter in the input text: uppercase letters become lowercase, and vice versa."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/847","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/848","identifier":"std::text::swapcase"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/849","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"To ASCII"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Converts each character of the input text into its corresponding ASCII numerical code."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a list of numbers where each number represents the ASCII code of the corresponding character in the input text."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::to_ascii","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"${value} To Ascii"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"to_ascii;text;string;std;to;ascii"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/850","genericType":{"id":"gid://sagittarius/GenericType/851","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":["T"],"identifier":"LIST","aliases":{"count":1,"nodes":[{"code":"en-US","content":"list;array;collection"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"List of ${T}"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Generic List"}]},"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/4","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/852","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/32","genericKeys":[],"identifier":"NUMBER","aliases":{"count":1,"nodes":[{"code":"en-US","content":"number;integer;float;double;long"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Number"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}],"target":"T","id":"gid://sagittarius/GenericMapper/853"}]}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/854","names":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Input text to convert to ASCII codes."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Input text to convert to ASCII codes."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/855","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/856","identifier":"std::text::to_ascii"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/857","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Trim Text"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Removes leading and trailing whitespace from the text."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a new string with all leading and trailing whitespace characters removed from the input text."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::trim","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Trim ${value}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"trim;text;string;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/858","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/859","names":{"count":1,"nodes":[{"code":"en-US","content":"Text Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The text string to trim whitespace from."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"The input text from which leading and trailing whitespace characters will be removed."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/860","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/861","identifier":"std::text::trim"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/862","genericKeys":[],"names":{"count":1,"nodes":[{"code":"en-US","content":"Uppercase"}]},"descriptions":{"count":1,"nodes":[{"code":"en-US","content":"Transforms all letters in the text to their uppercase equivalents."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Returns a new text string with all characters converted to uppercase."}]},"deprecationMessages":{"count":0,"nodes":[]},"identifier":"std::text::uppercase","displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Uppercase ${value}"}]},"aliases":{"count":1,"nodes":[{"code":"en-US","content":"uppercase;text;string;std"}]},"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/863","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/864","names":{"count":1,"nodes":[{"code":"en-US","content":"Text Value"}]},"identifier":"value","descriptions":{"count":1,"nodes":[{"code":"en-US","content":"The text string to convert to uppercase."}]},"documentations":{"count":1,"nodes":[{"code":"en-US","content":"Converts all characters in the input text string to uppercase."}]},"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/865","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/8","genericKeys":[],"identifier":"TEXT","aliases":{"count":1,"nodes":[{"code":"en-US","content":"text;char;literal;string"}]},"displayMessages":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"name":{"count":1,"nodes":[{"code":"en-US","content":"Text"}]},"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/866","identifier":"std::text::uppercase"}}] \ No newline at end of file +[{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/47","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Respond"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Handles an HTTP response object and returns it to the client."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Processes an HTTP response and returns it to the requesting client. This function typically completes the HTTP request–response cycle by delivering the server’s final output, such as headers, status codes, and body content, back to the client."}],"deprecationMessages":[],"identifier":"rest::control::respond","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Apply respond to ${http_response}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"respond;control;http"}],"throwsError":false,"returnType":null,"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/48","names":[{"__typename":"Translation","code":"en-US","content":"Http Response"}],"identifier":"http_response","descriptions":[{"__typename":"Translation","code":"en-US","content":"The response object that will be returned to the client."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Takes an HTTP response object and transmits it to the requesting client. This parameter represents the final output of the server, including headers, status code, and body content."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/49","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/41","genericKeys":[],"identifier":"HTTP_RESPONSE","aliases":[{"__typename":"Translation","code":"en-US","content":"http;response;object"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Response"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Response"}],"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/42","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/6","genericKeys":[],"identifier":"HTTP_HEADER_MAP","aliases":[{"__typename":"Translation","code":"en-US","content":"http;headers"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Headers"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Headers"}],"rules":{"count":1,"nodes":[{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/7","genericType":{"id":"gid://sagittarius/GenericType/8","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/11","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/12","genericKeys":[],"identifier":"HTTP_HEADER_ENTRY","aliases":[{"__typename":"Translation","code":"en-US","content":"http;header;entry"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Header Entry"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Header Entry"}],"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/13","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"key"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/15","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"value"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/16","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":[],"identifier":"OBJECT","aliases":[{"__typename":"Translation","code":"en-US","content":"object;struct;data"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Object"}],"name":[{"__typename":"Translation","code":"en-US","content":"Object"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"}}],"target":"T","id":"gid://sagittarius/GenericMapper/17"}]}}}}]},"variant":"ARRAY"}},"key":"headers"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/43","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":[],"identifier":"OBJECT","aliases":[{"__typename":"Translation","code":"en-US","content":"object;struct;data"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Object"}],"name":[{"__typename":"Translation","code":"en-US","content":"Object"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}},"key":"body"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/44","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":[],"identifier":"OBJECT","aliases":[{"__typename":"Translation","code":"en-US","content":"object;struct;data"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Object"}],"name":[{"__typename":"Translation","code":"en-US","content":"Object"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/50","identifier":"rest::control::respond"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/51","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"Get List Element"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Retrieves the element at a specified index from a list."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns the element located at the given zero-based index within the input list."}],"deprecationMessages":[],"identifier":"std::list::at","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Get element at ${index} of ${list}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"at;array;list;collection;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/52","genericKey":"R"},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/53","names":[{"__typename":"Translation","code":"en-US","content":"Input List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"The list from which to retrieve an element."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"A list containing elements of any type. The element at the specified index will be returned."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/54","genericType":{"id":"gid://sagittarius/GenericType/55","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/56","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/57"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/58","names":[{"__typename":"Translation","code":"en-US","content":"Index"}],"identifier":"index","descriptions":[{"__typename":"Translation","code":"en-US","content":"The zero-based index of the element to retrieve."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Specifies the position of the element in the list to return. Must be within the bounds of the list."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/59","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/60","identifier":"std::list::at"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/61","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"Concatenate Lists"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Concatenates two lists into a single list."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a new list containing all elements of the first list followed by all elements of the second list."}],"deprecationMessages":[],"identifier":"std::list::concat","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Combine ${first} with ${second}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"concat;combine;join;append;array;list;collection;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/62","genericType":{"id":"gid://sagittarius/GenericType/63","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/64","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/65"}]}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/66","names":[{"__typename":"Translation","code":"en-US","content":"First List"}],"identifier":"first","descriptions":[{"__typename":"Translation","code":"en-US","content":"The first list to concatenate."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The first input list whose elements will appear at the beginning of the resulting list."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/67","genericType":{"id":"gid://sagittarius/GenericType/68","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/69","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/70"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/71","names":[{"__typename":"Translation","code":"en-US","content":"Second List"}],"identifier":"second","descriptions":[{"__typename":"Translation","code":"en-US","content":"The second list to concatenate."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The second input list whose elements will be appended after the elements of the first list."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/72","genericType":{"id":"gid://sagittarius/GenericType/73","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/74","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/75"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/76","identifier":"std::list::concat"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/77","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"Filter List"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Filters elements of a list based on a predicate."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a new list containing only the elements from the input list for which the predicate returns true."}],"deprecationMessages":[],"identifier":"std::list::filter","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Filter out elements in ${list} not matching ${predicate}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"filter;array;list;collection;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/78","genericType":{"id":"gid://sagittarius/GenericType/79","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/80","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/81"}]}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/82","names":[{"__typename":"Translation","code":"en-US","content":"Input List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"The list to be filtered."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The original list from which elements will be selected based on the predicate."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/83","genericType":{"id":"gid://sagittarius/GenericType/84","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/85","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/86"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/87","names":[{"__typename":"Translation","code":"en-US","content":"Filter Predicate"}],"identifier":"predicate","descriptions":[{"__typename":"Translation","code":"en-US","content":"A predicate function to test each element for inclusion in the result."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"A function that takes an element of the list and returns a boolean indicating whether the element should be included in the output list."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/88","genericType":{"id":"gid://sagittarius/GenericType/89","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/25","genericKeys":["T"],"identifier":"PREDICATE","aliases":[{"__typename":"Translation","code":"en-US","content":"predicate"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Predicate of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Predicate"}],"rules":{"count":2,"nodes":[{"variant":"RETURN_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/26","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}}},{"variant":"INPUT_TYPES","config":{"inputTypes":[{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/28","genericKey":"T"},"inputIdentifier":"predicate"}]}}]},"variant":"NODE"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/90","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/91"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/92","identifier":"std::list::filter"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/93","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"Find Element in List"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Finds the first element in the list that satisfies the predicate."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns the first element from the input list for which the predicate returns true. If no element matches, returns null or equivalent."}],"deprecationMessages":[],"identifier":"std::list::find","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Find first element in ${list} matching ${predicate}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"find;array;list;collection;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/94","genericKey":"R"},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/95","names":[{"__typename":"Translation","code":"en-US","content":"Input List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"The list to search through."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The list in which an element satisfying the predicate will be searched."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/96","genericType":{"id":"gid://sagittarius/GenericType/97","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/98","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/99"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/100","names":[{"__typename":"Translation","code":"en-US","content":"Search Predicate"}],"identifier":"predicate","descriptions":[{"__typename":"Translation","code":"en-US","content":"A predicate function used to test each element for a match."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"A function that takes an element of the list and returns a boolean indicating if the element matches the search criteria."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/101","genericType":{"id":"gid://sagittarius/GenericType/102","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/25","genericKeys":["T"],"identifier":"PREDICATE","aliases":[{"__typename":"Translation","code":"en-US","content":"predicate"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Predicate of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Predicate"}],"rules":{"count":2,"nodes":[{"variant":"RETURN_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/26","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}}},{"variant":"INPUT_TYPES","config":{"inputTypes":[{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/28","genericKey":"T"},"inputIdentifier":"predicate"}]}}]},"variant":"NODE"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/103","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/104"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/105","identifier":"std::list::find"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/106","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"Find Index in List"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Finds the index of the first element in the list that satisfies the predicate."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns the zero-based index of the first element for which the predicate returns true. If no element matches, returns -1."}],"deprecationMessages":[],"identifier":"std::list::find_index","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Index of ${list} matching ${predicate}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"find index;index of;position;array;list;collection;std;find;index"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/107","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/108","names":[{"__typename":"Translation","code":"en-US","content":"Input List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"The list to search through."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The list in which to find the index of an element that satisfies the predicate."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/109","genericType":{"id":"gid://sagittarius/GenericType/110","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/111","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/112"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/113","names":[{"__typename":"Translation","code":"en-US","content":"Search Predicate"}],"identifier":"predicate","descriptions":[{"__typename":"Translation","code":"en-US","content":"A predicate function used to test each element for a match."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"A function that takes an element of the list and returns a boolean indicating if the element satisfies the search criteria."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/114","genericType":{"id":"gid://sagittarius/GenericType/115","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/25","genericKeys":["T"],"identifier":"PREDICATE","aliases":[{"__typename":"Translation","code":"en-US","content":"predicate"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Predicate of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Predicate"}],"rules":{"count":2,"nodes":[{"variant":"RETURN_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/26","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}}},{"variant":"INPUT_TYPES","config":{"inputTypes":[{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/28","genericKey":"T"},"inputIdentifier":"predicate"}]}}]},"variant":"NODE"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/116","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/117"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/118","identifier":"std::list::find_index"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/119","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"Find Last Element in List"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Finds the last element in the list that satisfies the predicate."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns the last element from the input list for which the predicate returns true. If no element matches, returns null or equivalent."}],"deprecationMessages":[],"identifier":"std::list::find_last","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Last element of ${list} matching ${predicate}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"find last;last index;last position;array;list;collection;std;find;last"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/120","genericKey":"R"},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/121","names":[{"__typename":"Translation","code":"en-US","content":"Input List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"The list to search through."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The list in which an element satisfying the predicate will be searched."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/122","genericType":{"id":"gid://sagittarius/GenericType/123","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/124","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/125"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/126","names":[{"__typename":"Translation","code":"en-US","content":"Search Predicate"}],"identifier":"predicate","descriptions":[{"__typename":"Translation","code":"en-US","content":"A predicate function used to test each element for a match."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"A function that takes an element of the list and returns a boolean indicating if the element matches the search criteria."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/127","genericType":{"id":"gid://sagittarius/GenericType/128","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/25","genericKeys":["T"],"identifier":"PREDICATE","aliases":[{"__typename":"Translation","code":"en-US","content":"predicate"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Predicate of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Predicate"}],"rules":{"count":2,"nodes":[{"variant":"RETURN_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/26","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}}},{"variant":"INPUT_TYPES","config":{"inputTypes":[{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/28","genericKey":"T"},"inputIdentifier":"predicate"}]}}]},"variant":"NODE"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/129","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/130"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/131","identifier":"std::list::find_last"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/132","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"First Element of List"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Retrieves the first element from the list."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This runtime returns the first element in the given list, if any."}],"deprecationMessages":[],"identifier":"std::list::first","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Get first element in ${list}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"first;array;list;collection;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/133","genericKey":"R"},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/134","names":[{"__typename":"Translation","code":"en-US","content":"Input List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"The list from which to retrieve the first element."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns the first element of the provided list. If the list is empty, behavior depends on the implementation."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/135","genericType":{"id":"gid://sagittarius/GenericType/136","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/137","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/138"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/139","identifier":"std::list::first"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/140","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"Flatten List"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Flattens a nested list into a single-level list."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a new list by concatenating all sub-lists of the input nested list into one flat list."}],"deprecationMessages":[],"identifier":"std::list::flat","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Flatten ${list}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"flat;array;list;collection;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/141","genericType":{"id":"gid://sagittarius/GenericType/142","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/143","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/144"}]}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/145","names":[{"__typename":"Translation","code":"en-US","content":"Nested List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"The nested list to be flattened."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"A list containing sub-lists that will be flattened into a single-level list."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/146","genericType":{"id":"gid://sagittarius/GenericType/147","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/148","genericType":{"id":"gid://sagittarius/GenericType/149","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/150","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/151"}]}}],"target":"T","id":"gid://sagittarius/GenericMapper/152"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/153","identifier":"std::list::flat"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/154","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"For Each Element"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Executes a consumer function for each element in the list."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This runtime executes the given consumer function on each item in the list without returning a result."}],"deprecationMessages":[],"identifier":"std::list::for_each","displayMessages":[{"__typename":"Translation","code":"en-US","content":"For each in ${list} do ${consumer}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"for_each;array;list;collection;std;for;each"}],"throwsError":false,"returnType":null,"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/155","names":[{"__typename":"Translation","code":"en-US","content":"Input List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"The list of elements to iterate over."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Each element of this list will be passed to the provided consumer function for processing."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/156","genericType":{"id":"gid://sagittarius/GenericType/157","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/158","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/159"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/160","names":[{"__typename":"Translation","code":"en-US","content":"Consumer Function"}],"identifier":"consumer","descriptions":[{"__typename":"Translation","code":"en-US","content":"A function that consumes each element of the list."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This function is invoked once for each element in the list. It is not expected to return a value."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/161","genericType":{"id":"gid://sagittarius/GenericType/162","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/23","genericKeys":["T"],"identifier":"CONSUMER","aliases":[{"__typename":"Translation","code":"en-US","content":"use;consumer;consume;lambda"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Use ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Consumer"}],"rules":{"count":1,"nodes":[{"variant":"INPUT_TYPES","config":{"inputTypes":[{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/24","genericKey":"T"},"inputIdentifier":"consumer"}]}}]},"variant":"NODE"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/163","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/164"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/165","identifier":"std::list::for_each"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/166","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"Index of Item"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Finds the index of the first occurrence of the specified item in the list."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns the zero-based index of the first occurrence of a given item in the specified list. If the item is not found, it typically returns -1."}],"deprecationMessages":[],"identifier":"std::list::index_of","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Get index of ${item} in ${list}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"index_of;array;list;collection;std;index;of"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/167","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/168","names":[{"__typename":"Translation","code":"en-US","content":"List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"The list to search within."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"A list of elements in which the specified item will be searched for to determine its index."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/169","genericType":{"id":"gid://sagittarius/GenericType/170","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/171","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/172"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/173","names":[{"__typename":"Translation","code":"en-US","content":"Item"}],"identifier":"item","descriptions":[{"__typename":"Translation","code":"en-US","content":"The item whose index is to be found in the list."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The item for which the function searches in the list and returns the index of its first occurrence."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/174","genericKey":"R"}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/175","identifier":"std::list::index_of"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/176","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"Is List Empty"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Checks if the list has no elements."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns true if the list contains no elements, otherwise returns false."}],"deprecationMessages":[],"identifier":"std::list::is_empty","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Check if ${list} is empty"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"is_empty;array;list;collection;std;is;empty"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/177","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/178","names":[{"__typename":"Translation","code":"en-US","content":"List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"The list to check for emptiness."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The list whose length will be evaluated to determine if it contains any elements."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/179","genericType":{"id":"gid://sagittarius/GenericType/180","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/181","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/182"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/183","identifier":"std::list::is_empty"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/184","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Join Text List"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Filters the input text list and joins the filtered elements into a single string separated by the specified join text."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Applies a filter operation on the input text list and returns a single concatenated string of filtered elements joined by the provided join text."}],"deprecationMessages":[],"identifier":"std::list::join","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Joins ${list} using '${join_text}'"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"join;array;list;collection;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/185","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/186","names":[{"__typename":"Translation","code":"en-US","content":"Text List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"A list of text elements to be filtered."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Input list containing text elements for filtering."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/187","genericType":{"id":"gid://sagittarius/GenericType/188","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/189","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}],"target":"T","id":"gid://sagittarius/GenericMapper/190"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/191","names":[{"__typename":"Translation","code":"en-US","content":"Join Text"}],"identifier":"join_text","descriptions":[{"__typename":"Translation","code":"en-US","content":"Text to join the filtered elements."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The delimiter or text that will be used to join the filtered list elements into a single string."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/192","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/193","identifier":"std::list::join"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/194","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"Last Element of List"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Retrieves the last element from the list."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This runtime returns the last element in the given list, if any."}],"deprecationMessages":[],"identifier":"std::list::last","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Get last element of ${list}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"last;array;list;collection;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/195","genericKey":"R"},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/196","names":[{"__typename":"Translation","code":"en-US","content":"Input List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"The list from which to retrieve the last element."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns the last element of the provided list. If the list is empty, behavior depends on the implementation."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/197","genericType":{"id":"gid://sagittarius/GenericType/198","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/199","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/200"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/201","identifier":"std::list::last"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/202","genericKeys":["IN","OUT"],"names":[{"__typename":"Translation","code":"en-US","content":"Map List"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Transforms each element in the list using the provided function."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This runtime applies the transform function to each element in the list, producing a new list of the results."}],"deprecationMessages":[],"identifier":"std::list::map","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Apply ${transform} for each in ${list}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"map;array;list;collection;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/203","genericType":{"id":"gid://sagittarius/GenericType/204","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/205","genericKey":"OUT"}],"target":"T","id":"gid://sagittarius/GenericMapper/206"}]}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/207","names":[{"__typename":"Translation","code":"en-US","content":"Input List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"The list to be transformed."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Each element of this list will be passed through the transform function."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/208","genericType":{"id":"gid://sagittarius/GenericType/209","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/210","genericKey":"IN"}],"target":"T","id":"gid://sagittarius/GenericMapper/211"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/212","names":[{"__typename":"Translation","code":"en-US","content":"Transform Function"}],"identifier":"transform","descriptions":[{"__typename":"Translation","code":"en-US","content":"A function that transforms each item in the list."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The transform function is applied to every element of the list to produce a new list."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/213","genericType":{"id":"gid://sagittarius/GenericType/214","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/30","genericKeys":["I","R"],"identifier":"TRANSFORM","aliases":[{"__typename":"Translation","code":"en-US","content":"transform"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Transform ${I} to ${R}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Transform"}],"rules":{"count":2,"nodes":[{"variant":"RETURN_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/31","genericKey":"R"}}},{"variant":"INPUT_TYPES","config":{"inputTypes":[{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/32","genericKey":"I"},"inputIdentifier":"transform"}]}}]},"variant":"NODE"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/215","genericKey":"IN"}],"target":"I","id":"gid://sagittarius/GenericMapper/216"},{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/217","genericKey":"OUT"}],"target":"R","id":"gid://sagittarius/GenericMapper/218"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/219","identifier":"std::list::map"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/220","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"Find Maximum Number"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Finds the maximum value in a numeric list."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns the largest number contained in the provided list."}],"deprecationMessages":[],"identifier":"std::list::max","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Maximum of ${list}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"max;maximum;largest;greatest;array;list;collection;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/221","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/222","names":[{"__typename":"Translation","code":"en-US","content":"Number List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"A list of numbers to find the maximum value from."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns the largest number in the given list of numbers."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/223","genericType":{"id":"gid://sagittarius/GenericType/224","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/225","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/226"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/227","identifier":"std::list::max"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/228","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"Find Minimum Number"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Finds the minimum value in a numeric list."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns the smallest number contained in the provided list."}],"deprecationMessages":[],"identifier":"std::list::min","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Minimum of ${list}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"min;minimum;smallest;least;array;list;collection;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/229","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/230","names":[{"__typename":"Translation","code":"en-US","content":"Number List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"A list of numbers to find the minimum value from."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns the smallest number in the given list of numbers."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/231","genericType":{"id":"gid://sagittarius/GenericType/232","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/233","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/234"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/235","identifier":"std::list::min"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/236","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"Pop from List"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Removes and returns the last item from the list."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Removes the last element from the specified list and returns it. The list is modified in place."}],"deprecationMessages":[],"identifier":"std::list::pop","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Removes the last item of ${list}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"pop;array;list;collection;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/237","genericKey":"R"},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/238","names":[{"__typename":"Translation","code":"en-US","content":"List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"The list to remove the last item from."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This is the list from which the last element will be removed and returned."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/239","genericType":{"id":"gid://sagittarius/GenericType/240","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/241","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/242"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/243","identifier":"std::list::pop"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/244","genericKeys":["I"],"names":[{"__typename":"Translation","code":"en-US","content":"Push to List"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Appends an item to the end of a list."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Adds a new element to the end of the list and returns the new length of the list."}],"deprecationMessages":[],"identifier":"std::list::push","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Push ${item} into ${list}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"push;array;list;collection;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/245","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/246","names":[{"__typename":"Translation","code":"en-US","content":"List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"The list to which an item will be added."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The list that the new item will be appended to."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/247","genericType":{"id":"gid://sagittarius/GenericType/248","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/249","genericKey":"I"}],"target":"T","id":"gid://sagittarius/GenericMapper/250"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/251","names":[{"__typename":"Translation","code":"en-US","content":"Item"}],"identifier":"item","descriptions":[{"__typename":"Translation","code":"en-US","content":"The item to add to the list."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The value to be added at the end of the list."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/252","genericKey":"I"}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/253","identifier":"std::list::push"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/254","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"Remove from List"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Removes the first occurrence of the specified item from the list."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Removes the first matching item from the given list and returns the resulting list."}],"deprecationMessages":[],"identifier":"std::list::remove","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Remove ${item} from ${list}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"remove;delete;strip;array;list;collection;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/255","genericType":{"id":"gid://sagittarius/GenericType/256","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/257","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/258"}]}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/259","names":[{"__typename":"Translation","code":"en-US","content":"List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"The list from which the item will be removed."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"A list to process by removing the first occurrence of the specified item."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/260","genericType":{"id":"gid://sagittarius/GenericType/261","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/262","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/263"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/264","names":[{"__typename":"Translation","code":"en-US","content":"Item"}],"identifier":"item","descriptions":[{"__typename":"Translation","code":"en-US","content":"The item to remove from the list."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The value to search for and remove from the list. Only the first matching item is removed."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/265","genericKey":"R"}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/266","identifier":"std::list::remove"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/267","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"Reverse List"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Reverses the order of elements in the list."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a new list with the elements of the input list in reverse order."}],"deprecationMessages":[],"identifier":"std::list::reverse","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Reverse ${list}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"reverse;array;list;collection;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/268","genericType":{"id":"gid://sagittarius/GenericType/269","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/270","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/271"}]}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/272","names":[{"__typename":"Translation","code":"en-US","content":"List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"The input list to be reversed."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"A list of elements whose order will be reversed."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/273","genericType":{"id":"gid://sagittarius/GenericType/274","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/275","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/276"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/277","identifier":"std::list::reverse"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/278","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"List Size"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the number of elements in the list."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This function returns the count of elements present in the given list."}],"deprecationMessages":[],"identifier":"std::list::size","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Size of ${list}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"size;array;list;collection;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/279","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/280","names":[{"__typename":"Translation","code":"en-US","content":"List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"The list whose number of elements is to be returned."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Specifies the list for which the total number of elements will be calculated and returned."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/281","genericType":{"id":"gid://sagittarius/GenericType/282","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/283","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/284"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/285","identifier":"std::list::size"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/286","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"Sort List"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Sorts the elements of the list using the specified comparator."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a new list with the elements sorted according to the comparator function provided."}],"deprecationMessages":[],"identifier":"std::list::sort","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Sort ${list} using ${comparator}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"sort;array;list;collection;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/287","genericType":{"id":"gid://sagittarius/GenericType/288","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/289","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/290"}]}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/291","names":[{"__typename":"Translation","code":"en-US","content":"List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"The input list to be sorted."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"A list of elements that will be sorted using the provided comparator function."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/292","genericType":{"id":"gid://sagittarius/GenericType/293","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/294","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/295"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/296","names":[{"__typename":"Translation","code":"en-US","content":"Comparator"}],"identifier":"comparator","descriptions":[{"__typename":"Translation","code":"en-US","content":"A comparator function used to determine the sort order of elements."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"A function that takes two elements and returns a negative, zero, or positive number to indicate their ordering."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/297","genericType":{"id":"gid://sagittarius/GenericType/298","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/18","genericKeys":["I"],"identifier":"COMPARATOR","aliases":[{"__typename":"Translation","code":"en-US","content":"compare;comparator"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Compare ${I}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Comparator"}],"rules":{"count":2,"nodes":[{"variant":"RETURN_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/19","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}},{"variant":"INPUT_TYPES","config":{"inputTypes":[{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/21","genericKey":"I"},"inputIdentifier":"left"},{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/22","genericKey":"I"},"inputIdentifier":"right"}]}}]},"variant":"NODE"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/299","genericKey":"R"}],"target":"I","id":"gid://sagittarius/GenericMapper/300"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/301","identifier":"std::list::sort"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/302","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"Sort List in Reverse"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Sorts the elements of the list in reverse order using the specified comparator."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a new list with the elements sorted in descending order according to the comparator function provided."}],"deprecationMessages":[],"identifier":"std::list::sort_reverse","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Sort ${list} in reverse order using ${comparator}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"sort_reverse;array;list;collection;std;sort;reverse"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/303","genericType":{"id":"gid://sagittarius/GenericType/304","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/305","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/306"}]}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/307","names":[{"__typename":"Translation","code":"en-US","content":"List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"The input list to be sorted in reverse order."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"A list of elements that will be sorted in descending order using the provided comparator."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/308","genericType":{"id":"gid://sagittarius/GenericType/309","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/310","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/311"}]}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/312","names":[{"__typename":"Translation","code":"en-US","content":"Comparator"}],"identifier":"comparator","descriptions":[{"__typename":"Translation","code":"en-US","content":"A comparator function used to determine the sort order of elements."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"A function that takes two elements and returns a negative, zero, or positive number to indicate their ordering."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/313","genericType":{"id":"gid://sagittarius/GenericType/314","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/18","genericKeys":["I"],"identifier":"COMPARATOR","aliases":[{"__typename":"Translation","code":"en-US","content":"compare;comparator"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Compare ${I}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Comparator"}],"rules":{"count":2,"nodes":[{"variant":"RETURN_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/19","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}},{"variant":"INPUT_TYPES","config":{"inputTypes":[{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/21","genericKey":"I"},"inputIdentifier":"left"},{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/22","genericKey":"I"},"inputIdentifier":"right"}]}}]},"variant":"NODE"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/315","genericKey":"R"}],"target":"I","id":"gid://sagittarius/GenericMapper/316"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/317","identifier":"std::list::sort_reverse"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/318","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Sum of Numbers"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the total sum of the elements in the numeric list."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Adds up all numbers in the input list and returns their sum."}],"deprecationMessages":[],"identifier":"std::list::sum","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Sum of ${list}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"sum;total;add all;array;list;collection;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/319","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/320","names":[{"__typename":"Translation","code":"en-US","content":"Number List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"A list of numbers to be summed."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Calculates the sum of all numbers in the given list."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/321","genericType":{"id":"gid://sagittarius/GenericType/322","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/323","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}],"target":"T","id":"gid://sagittarius/GenericMapper/324"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/325","identifier":"std::list::sum"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/326","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"To Unique"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Removes duplicate elements from the input list."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a new list containing only the unique elements from the input list. The original order may or may not be preserved depending on the implementation."}],"deprecationMessages":[],"identifier":"std::list::to_unique","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Remove duplicates in ${list}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"to_unique;array;list;collection;std;to;unique"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/327","genericType":{"id":"gid://sagittarius/GenericType/328","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/329","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/330"}]}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/331","names":[{"__typename":"Translation","code":"en-US","content":"List"}],"identifier":"list","descriptions":[{"__typename":"Translation","code":"en-US","content":"The input list from which duplicates will be removed."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"A list of elements that may contain duplicates. This function will remove any duplicate items and return a new list with unique values only."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/332","genericType":{"id":"gid://sagittarius/GenericType/333","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/334","genericKey":"R"}],"target":"T","id":"gid://sagittarius/GenericMapper/335"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/336","identifier":"std::list::to_unique"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/337","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"As Number"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Will convert the boolean to a number."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Converts a boolean value to a number."}],"deprecationMessages":[],"identifier":"std::boolean::as_number","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Convert ${value} to number"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"to number;numeric;boolean;logic;std;as;number"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/338","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/339","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The boolean value to convert."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Converts a boolean value to a number."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/340","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/341","identifier":"std::boolean::as_number"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/342","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"As Text"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Will convert the boolean to text."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Converts a boolean value to a text string."}],"deprecationMessages":[],"identifier":"std::boolean::as_text","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Convert ${value} to text"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"to text;string;format number;boolean;logic;std;as;text"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/343","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/344","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The boolean value to convert."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Converts a boolean value to a text string."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/345","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/346","identifier":"std::boolean::as_text"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/347","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"From Number"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Will convert the number to a boolean."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Converts a number to a boolean value. Typically, 0 maps to false and non-zero maps to true."}],"deprecationMessages":[],"identifier":"std::boolean::from_number","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Convert ${value} to boolean"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"from number;to boolean;convert;boolean;logic;std;from;number"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/348","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/349","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number to convert."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Converts a number to a boolean value."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/350","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/351","identifier":"std::boolean::from_number"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/352","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"From Text"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Will convert the string to a boolean."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Converts a text string to a boolean value. Recognizes 'true' and 'false' (case-insensitive)."}],"deprecationMessages":[],"identifier":"std::boolean::from_text","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Convert ${value} to boolean"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"from text;parse;convert;boolean;logic;std;from;text"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/353","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/354","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The text string to convert."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Converts a text string to a boolean value."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/355","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/356","identifier":"std::boolean::from_text"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/357","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Is Equal"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Will check if the two booleans are equal."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Compares two boolean values for equality. Returns true if they are the same, false otherwise."}],"deprecationMessages":[],"identifier":"std::boolean::is_equal","displayMessages":[{"__typename":"Translation","code":"en-US","content":"${first} equals ${second}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"equal;equals;same;boolean;logic;std;is"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/358","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/359","names":[{"__typename":"Translation","code":"en-US","content":"First"}],"identifier":"first","descriptions":[{"__typename":"Translation","code":"en-US","content":"The first boolean value to compare."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The first input to compare."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/360","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/361","names":[{"__typename":"Translation","code":"en-US","content":"Second"}],"identifier":"second","descriptions":[{"__typename":"Translation","code":"en-US","content":"The second boolean value to compare."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The second input to compare."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/362","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/363","identifier":"std::boolean::is_equal"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/364","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Negate"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Negates a boolean value."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Negates a boolean value."}],"deprecationMessages":[],"identifier":"std::boolean::negate","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Negate ${value}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"negate;negative;invert;opposite;boolean;logic;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/365","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/366","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The boolean value to negate."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Negates a boolean value."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/367","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/368","identifier":"std::boolean::negate"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/369","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"If"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Executes the specified runnable if the condition evaluates to true."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The 'If' runnable evaluates a boolean condition and, if it is true, executes the provided runnable. If the condition is false, execution continues without running the runnable. This behavior corresponds to a standard 'if' statement in programming languages."}],"deprecationMessages":[],"identifier":"std::control::if","displayMessages":[{"__typename":"Translation","code":"en-US","content":"If ${condition} then do ${then_runnable}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"if;control;std"}],"throwsError":false,"returnType":null,"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/370","names":[{"__typename":"Translation","code":"en-US","content":"Condition"}],"identifier":"condition","descriptions":[{"__typename":"Translation","code":"en-US","content":"Boolean condition to evaluate."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Specifies the condition that determines whether the provided runnable should be executed. If this condition evaluates to true, the execution proceeds with the runnable defined in the second parameter."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/371","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/372","names":[{"__typename":"Translation","code":"en-US","content":"Then Runnable"}],"identifier":"then_runnable","descriptions":[{"__typename":"Translation","code":"en-US","content":"Runnable to execute when the condition is true."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Defines the runnable that runs if the condition evaluates to true."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/373","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/29","genericKeys":[],"identifier":"RUNNABLE","aliases":[{"__typename":"Translation","code":"en-US","content":"node;function"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Node"}],"name":[{"__typename":"Translation","code":"en-US","content":"Node"}],"rules":{"count":0,"nodes":[]},"variant":"NODE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/374","identifier":"std::control::if"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/375","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"If-Else"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Evaluates a condition and executes either the Then Runnable or the Else Runnable."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Evaluates a boolean condition. If true, executes the Then Runnable; otherwise, executes the Else Runnable. Mirrors a standard 'if/else' control structure in programming languages."}],"deprecationMessages":[],"identifier":"std::control::if_else","displayMessages":[{"__typename":"Translation","code":"en-US","content":"If ${condition} do ${then_runnable} else ${else_runnable}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"if_else;control;std;if;else"}],"throwsError":false,"returnType":null,"parameterDefinitions":{"count":3,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/376","names":[{"__typename":"Translation","code":"en-US","content":"Condition"}],"identifier":"condition","descriptions":[{"__typename":"Translation","code":"en-US","content":"Boolean condition to evaluate."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Determines which branch to execute. If true the Then Runnable runs otherwise the Else Runnable runs."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/377","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/378","names":[{"__typename":"Translation","code":"en-US","content":"Then Runnable"}],"identifier":"then_runnable","descriptions":[{"__typename":"Translation","code":"en-US","content":"Runnable to execute when the condition is true."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Defines the runnable that runs if the condition evaluates to true."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/379","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/29","genericKeys":[],"identifier":"RUNNABLE","aliases":[{"__typename":"Translation","code":"en-US","content":"node;function"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Node"}],"name":[{"__typename":"Translation","code":"en-US","content":"Node"}],"rules":{"count":0,"nodes":[]},"variant":"NODE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/380","names":[{"__typename":"Translation","code":"en-US","content":"Else Runnable"}],"identifier":"else_runnable","descriptions":[{"__typename":"Translation","code":"en-US","content":"Runnable to execute when the condition is false."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Defines the runnable that runs if the condition evaluates to false."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/381","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/29","genericKeys":[],"identifier":"RUNNABLE","aliases":[{"__typename":"Translation","code":"en-US","content":"node;function"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Node"}],"name":[{"__typename":"Translation","code":"en-US","content":"Node"}],"rules":{"count":0,"nodes":[]},"variant":"NODE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/382","identifier":"std::control::if_else"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/383","genericKeys":["R"],"names":[{"__typename":"Translation","code":"en-US","content":"Return"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns a value and terminates the current context."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Ends the current context and returns the specified value to the upper scope. This node behaves like a standard 'return' statement in programming languages, stopping further execution within the current flow."}],"deprecationMessages":[],"identifier":"std::control::return","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Return ${value}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"return;control;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/384","genericKey":"R"},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/385","names":[{"__typename":"Translation","code":"en-US","content":"Return Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The value to be returned to the upper context."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Specifies the value that will be returned to the upper context. When this node executes, it immediately halts the iteration and passes the value upward."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/386","genericKey":"R"}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/387","identifier":"std::control::return"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/388","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Stop"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Completely stops the current context and prevents any further iterations."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Terminates the current execution context entirely, halting all ongoing and future iterations. Once invoked, no additional steps or loops within this context will be executed. This node behaves like a global stop or termination signal within the flow."}],"deprecationMessages":[],"identifier":"std::control::stop","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Stop"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"stop;control;std"}],"throwsError":false,"returnType":null,"parameterDefinitions":{"count":0,"nodes":[]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/389","identifier":"std::control::stop"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/390","genericKeys":["P"],"names":[{"__typename":"Translation","code":"en-US","content":"Construct HTTP Request"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Constructs an HTTP request object using the specified method, headers, URL, and payload."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Generates an HTTP request object that can be sent to a server. The request includes an HTTP method, optional headers, a destination URL, and an optional request body."}],"deprecationMessages":[],"identifier":"http::request::create","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Apply create to ${http_method}, ${headers}, ${url}, ${payload}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"create;request;http"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/391","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/33","genericKeys":[],"identifier":"HTTP_REQUEST","aliases":[{"__typename":"Translation","code":"en-US","content":"http;request"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Request"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Request"}],"rules":{"count":5,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/34","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/35","genericKeys":[],"identifier":"HTTP_METHOD","aliases":[{"__typename":"Translation","code":"en-US","content":"http;method;get;post;put;delete;path;head"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Method"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Method"}],"rules":{"count":1,"nodes":[{"variant":"ITEM_OF_COLLECTION","config":{"items":["GET","POST","PUT","DELETE","PATCH","HEAD"]}}]},"variant":"TYPE"}},"key":"method"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/36","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/37","genericKeys":[],"identifier":"HTTP_URL","aliases":[{"__typename":"Translation","code":"en-US","content":"http;route;url"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Route"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Route"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^/\\w+(?:[.:~-]\\w+)*(?:/\\w+(?:[.:~-]\\w+)*)*$"}}]},"variant":"TYPE"}},"key":"url"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/38","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":[],"identifier":"OBJECT","aliases":[{"__typename":"Translation","code":"en-US","content":"object;struct;data"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Object"}],"name":[{"__typename":"Translation","code":"en-US","content":"Object"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}},"key":"body"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/39","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/6","genericKeys":[],"identifier":"HTTP_HEADER_MAP","aliases":[{"__typename":"Translation","code":"en-US","content":"http;headers"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Headers"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Headers"}],"rules":{"count":1,"nodes":[{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/7","genericType":{"id":"gid://sagittarius/GenericType/8","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/11","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/12","genericKeys":[],"identifier":"HTTP_HEADER_ENTRY","aliases":[{"__typename":"Translation","code":"en-US","content":"http;header;entry"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Header Entry"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Header Entry"}],"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/13","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"key"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/15","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"value"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/16","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":[],"identifier":"OBJECT","aliases":[{"__typename":"Translation","code":"en-US","content":"object;struct;data"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Object"}],"name":[{"__typename":"Translation","code":"en-US","content":"Object"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"}}],"target":"T","id":"gid://sagittarius/GenericMapper/17"}]}}}}]},"variant":"ARRAY"}},"key":"headers"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/40","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":[],"identifier":"OBJECT","aliases":[{"__typename":"Translation","code":"en-US","content":"object;struct;data"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Object"}],"name":[{"__typename":"Translation","code":"en-US","content":"Object"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"}},"parameterDefinitions":{"count":4,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/392","names":[{"__typename":"Translation","code":"en-US","content":"HTTP Method"}],"identifier":"http_method","descriptions":[{"__typename":"Translation","code":"en-US","content":"Defines the HTTP method to be used, such as GET, POST, PUT, or DELETE."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Specifies the request method that determines the type of HTTP operation to perform."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/393","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/35","genericKeys":[],"identifier":"HTTP_METHOD","aliases":[{"__typename":"Translation","code":"en-US","content":"http;method;get;post;put;delete;path;head"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Method"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Method"}],"rules":{"count":1,"nodes":[{"variant":"ITEM_OF_COLLECTION","config":{"items":["GET","POST","PUT","DELETE","PATCH","HEAD"]}}]},"variant":"TYPE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/394","names":[{"__typename":"Translation","code":"en-US","content":"HTTP Headers"}],"identifier":"headers","descriptions":[{"__typename":"Translation","code":"en-US","content":"A collection of key-value pairs containing additional request metadata."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Optional headers that can define content type, authorization, cookies, caching policies, and more."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/395","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/6","genericKeys":[],"identifier":"HTTP_HEADER_MAP","aliases":[{"__typename":"Translation","code":"en-US","content":"http;headers"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Headers"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Headers"}],"rules":{"count":1,"nodes":[{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/7","genericType":{"id":"gid://sagittarius/GenericType/8","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/11","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/12","genericKeys":[],"identifier":"HTTP_HEADER_ENTRY","aliases":[{"__typename":"Translation","code":"en-US","content":"http;header;entry"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Header Entry"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Header Entry"}],"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/13","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"key"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/15","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"value"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/16","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":[],"identifier":"OBJECT","aliases":[{"__typename":"Translation","code":"en-US","content":"object;struct;data"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Object"}],"name":[{"__typename":"Translation","code":"en-US","content":"Object"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"}}],"target":"T","id":"gid://sagittarius/GenericMapper/17"}]}}}}]},"variant":"ARRAY"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/396","names":[{"__typename":"Translation","code":"en-US","content":"Request URL"}],"identifier":"url","descriptions":[{"__typename":"Translation","code":"en-US","content":"The target URL to which the HTTP request will be sent."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Specifies the endpoint address, including protocol, host, path, and query parameters, where the request is directed."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/397","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/37","genericKeys":[],"identifier":"HTTP_URL","aliases":[{"__typename":"Translation","code":"en-US","content":"http;route;url"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Route"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Route"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^/\\w+(?:[.:~-]\\w+)*(?:/\\w+(?:[.:~-]\\w+)*)*$"}}]},"variant":"TYPE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/398","names":[{"__typename":"Translation","code":"en-US","content":"Request Body"}],"identifier":"payload","descriptions":[{"__typename":"Translation","code":"en-US","content":"The data to include in the body of the request, typically used with methods like POST or PUT."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Contains the request payload, such as JSON, XML, form data, or binary content, depending on the Content-Type header."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/399","genericKey":"P"}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/400","identifier":"http::request::create"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/401","genericKeys":["P"],"names":[{"__typename":"Translation","code":"en-US","content":"Construct HTTP Response"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Builds an HTTP response object using the specified status code, headers, and optional response body."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Creates a complete HTTP response object to be returned from a server. The response includes a status code, headers, and an optional body containing the response content."}],"deprecationMessages":[],"identifier":"http::response::create","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Apply create to ${http_status_code}, ${headers}, ${payload}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"create;response;http"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/402","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/41","genericKeys":[],"identifier":"HTTP_RESPONSE","aliases":[{"__typename":"Translation","code":"en-US","content":"http;response;object"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Response"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Response"}],"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/42","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/6","genericKeys":[],"identifier":"HTTP_HEADER_MAP","aliases":[{"__typename":"Translation","code":"en-US","content":"http;headers"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Headers"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Headers"}],"rules":{"count":1,"nodes":[{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/7","genericType":{"id":"gid://sagittarius/GenericType/8","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/11","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/12","genericKeys":[],"identifier":"HTTP_HEADER_ENTRY","aliases":[{"__typename":"Translation","code":"en-US","content":"http;header;entry"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Header Entry"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Header Entry"}],"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/13","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"key"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/15","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"value"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/16","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":[],"identifier":"OBJECT","aliases":[{"__typename":"Translation","code":"en-US","content":"object;struct;data"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Object"}],"name":[{"__typename":"Translation","code":"en-US","content":"Object"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"}}],"target":"T","id":"gid://sagittarius/GenericMapper/17"}]}}}}]},"variant":"ARRAY"}},"key":"headers"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/43","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":[],"identifier":"OBJECT","aliases":[{"__typename":"Translation","code":"en-US","content":"object;struct;data"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Object"}],"name":[{"__typename":"Translation","code":"en-US","content":"Object"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}},"key":"body"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/44","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":[],"identifier":"OBJECT","aliases":[{"__typename":"Translation","code":"en-US","content":"object;struct;data"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Object"}],"name":[{"__typename":"Translation","code":"en-US","content":"Object"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"}},"parameterDefinitions":{"count":3,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/403","names":[{"__typename":"Translation","code":"en-US","content":"HTTP Status Code"}],"identifier":"http_status_code","descriptions":[{"__typename":"Translation","code":"en-US","content":"Represents the numeric status code returned by the server in response to an HTTP request."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Indicates the outcome of an HTTP request. Common codes include 200 (OK), 201 (Created), 400 (Bad Request), 401 (Unauthorized), 404 (Not Found), and 500 (Internal Server Error)."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/404","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/45","genericKeys":[],"identifier":"HTTP_STATUS_CODE","aliases":[{"__typename":"Translation","code":"en-US","content":"http;status;code"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Status Code"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Status Code"}],"rules":{"count":1,"nodes":[{"variant":"NUMBER_RANGE","config":{"from":100,"to":599}}]},"variant":"TYPE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/405","names":[{"__typename":"Translation","code":"en-US","content":"HTTP Headers"}],"identifier":"headers","descriptions":[{"__typename":"Translation","code":"en-US","content":"A collection of key-value pairs containing additional request metadata."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Optional headers that can define content type, authorization, cookies, caching policies, and more."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/406","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/6","genericKeys":[],"identifier":"HTTP_HEADER_MAP","aliases":[{"__typename":"Translation","code":"en-US","content":"http;headers"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Headers"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Headers"}],"rules":{"count":1,"nodes":[{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/7","genericType":{"id":"gid://sagittarius/GenericType/8","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/11","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/12","genericKeys":[],"identifier":"HTTP_HEADER_ENTRY","aliases":[{"__typename":"Translation","code":"en-US","content":"http;header;entry"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"HTTP Header Entry"}],"name":[{"__typename":"Translation","code":"en-US","content":"HTTP Header Entry"}],"rules":{"count":3,"nodes":[{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/13","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"key"}},{"variant":"CONTAINS_KEY","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/15","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"key":"value"}},{"variant":"PARENT_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/16","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":[],"identifier":"OBJECT","aliases":[{"__typename":"Translation","code":"en-US","content":"object;struct;data"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Object"}],"name":[{"__typename":"Translation","code":"en-US","content":"Object"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}}]},"variant":"OBJECT"}}],"target":"T","id":"gid://sagittarius/GenericMapper/17"}]}}}}]},"variant":"ARRAY"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/407","names":[{"__typename":"Translation","code":"en-US","content":"Request Body"}],"identifier":"payload","descriptions":[{"__typename":"Translation","code":"en-US","content":"The data to include in the body of the request, typically used with methods like POST or PUT."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Contains the request payload, such as JSON, XML, form data, or binary content, depending on the Content-Type header."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/408","genericKey":"P"}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/409","identifier":"http::response::create"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/410","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Absolute Value"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the absolute value of a number."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Removes the sign from the input number, returning its non-negative value."}],"deprecationMessages":[],"identifier":"std::number::abs","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Absolute value of ${value}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"absolute;abs;magnitude;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/411","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/412","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number for which to compute the absolute value."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This is the numeric input. The result will be its absolute (non-negative) value."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/413","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/414","identifier":"std::number::abs"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/415","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Adds two numbers together."}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Adds two numbers together."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Adds two numbers together."}],"deprecationMessages":[],"identifier":"std::number::add","displayMessages":[{"__typename":"Translation","code":"en-US","content":"${first} + ${second}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"add;plus;sum;total;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/416","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/417","names":[{"__typename":"Translation","code":"en-US","content":"First Number"}],"identifier":"first","descriptions":[{"__typename":"Translation","code":"en-US","content":"The first number to add."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Adds two numbers together."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/418","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/419","names":[{"__typename":"Translation","code":"en-US","content":"Second Number"}],"identifier":"second","descriptions":[{"__typename":"Translation","code":"en-US","content":"The second number to add."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Adds two numbers together."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/420","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/421","identifier":"std::number::add"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/422","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Arccosine"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the arccosine of a number, in radians."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Computes the angle in radians whose cosine is the given number."}],"deprecationMessages":[],"identifier":"std::number::arccos","displayMessages":[{"__typename":"Translation","code":"en-US","content":"arccos(${value})"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"arccos;acos;inverse cosine;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/423","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/424","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number representing the cosine value, must be between -1 and 1."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Calculates the arccosine (inverse cosine) of the input value."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/425","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/426","identifier":"std::number::arccos"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/427","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Arcsine"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the arcsine of a number, in radians."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Computes the angle in radians whose sine is the given number."}],"deprecationMessages":[],"identifier":"std::number::arcsin","displayMessages":[{"__typename":"Translation","code":"en-US","content":"arcsin(${value})"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"arcsin;asin;inverse sine;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/428","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/429","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number representing the sine value, must be between -1 and 1."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Calculates the arcsine (inverse sine) of the input value."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/430","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/431","identifier":"std::number::arcsin"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/432","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Arctangent"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the arctangent of a number, in radians."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Computes the angle in radians whose tangent is the given number."}],"deprecationMessages":[],"identifier":"std::number::arctan","displayMessages":[{"__typename":"Translation","code":"en-US","content":"arctan(${value})"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"arctan;atan;inverse tangent;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/433","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/434","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number representing the tangent value."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Calculates the arctangent (inverse tangent) of the input value."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/435","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/436","identifier":"std::number::arctan"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/437","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Number as Text"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Converts a number into its textual representation."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Transforms the given numeric value into a string format."}],"deprecationMessages":[],"identifier":"std::number::as_text","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Convert ${number} to text"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"to text;string;format number;number;math;std;as;text"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/438","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/439","names":[{"__typename":"Translation","code":"en-US","content":"Number"}],"identifier":"number","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number to convert to text."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The numeric input that will be converted to its text representation."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/440","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/441","identifier":"std::number::as_text"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/442","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Clamp"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Limits a number to be within a specified range."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns the given number clamped between the minimum and maximum bounds."}],"deprecationMessages":[],"identifier":"std::number::clamp","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Clamp ${value} between ${min} and ${max}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"clamp;limit;bound;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/443","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":3,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/444","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number to be clamped within the range."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The input number that will be limited to the specified range."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/445","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/446","names":[{"__typename":"Translation","code":"en-US","content":"Minimum"}],"identifier":"min","descriptions":[{"__typename":"Translation","code":"en-US","content":"The lower bound of the clamping range."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The minimum allowed value in the clamping operation."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/447","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/448","names":[{"__typename":"Translation","code":"en-US","content":"Maximum"}],"identifier":"max","descriptions":[{"__typename":"Translation","code":"en-US","content":"The upper bound of the clamping range."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The maximum allowed value in the clamping operation."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/449","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/450","identifier":"std::number::clamp"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/451","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Cosine"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the cosine of the specified angle in radians."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Calculates the cosine value of the input angle measured in radians."}],"deprecationMessages":[],"identifier":"std::number::cos","displayMessages":[{"__typename":"Translation","code":"en-US","content":"cos(${radians})"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"cos;cosine;trigonometry;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/452","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/453","names":[{"__typename":"Translation","code":"en-US","content":"Radians"}],"identifier":"radians","descriptions":[{"__typename":"Translation","code":"en-US","content":"The angle in radians to compute the cosine of."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Computes the cosine of the given angle in radians."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/454","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/455","identifier":"std::number::cos"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/456","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Hyperbolic Cosine"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the hyperbolic cosine of a number."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Calculates the hyperbolic cosine (cosh) of the input value."}],"deprecationMessages":[],"identifier":"std::number::cosh","displayMessages":[{"__typename":"Translation","code":"en-US","content":"cosh(${value})"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"cosh;hyperbolic cosine;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/457","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/458","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number for which to calculate the hyperbolic cosine."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Computes the hyperbolic cosine of the given number."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/459","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/460","identifier":"std::number::cosh"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/461","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Divide"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Divides the first number by the second number."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns the result of dividing the first numeric input (dividend) by the second (divisor)."}],"deprecationMessages":[],"identifier":"std::number::divide","displayMessages":[{"__typename":"Translation","code":"en-US","content":"${first} / ${second}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"divide;division;quotient;div;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/462","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/463","names":[{"__typename":"Translation","code":"en-US","content":"Dividend"}],"identifier":"first","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number to be divided."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This is the numerator or the number that will be divided by the second value."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/464","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/465","names":[{"__typename":"Translation","code":"en-US","content":"Divisor"}],"identifier":"second","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number by which to divide the first number."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This is the denominator or the value that divides the first number."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/466","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/467","identifier":"std::number::divide"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/468","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Euler's Number"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the mathematical constant e (Euler's number)."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Provides the constant value of Euler's number, approximately 2.71828, which is the base of the natural logarithm."}],"deprecationMessages":[],"identifier":"std::number::euler","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Euler"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"euler;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/469","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":0,"nodes":[]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/470","identifier":"std::number::euler"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/471","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Exponential"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Raises a base number to the power of an exponent."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Computes the result of raising the base to the power specified by the exponent."}],"deprecationMessages":[],"identifier":"std::number::exponential","displayMessages":[{"__typename":"Translation","code":"en-US","content":"e ^ ${base}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"exponential;exp;e power;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/472","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/473","names":[{"__typename":"Translation","code":"en-US","content":"Base"}],"identifier":"base","descriptions":[{"__typename":"Translation","code":"en-US","content":"The base number to be raised to a power."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This is the numeric value that will be raised to the power of the exponent."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/474","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/475","names":[{"__typename":"Translation","code":"en-US","content":"Exponent"}],"identifier":"exponent","descriptions":[{"__typename":"Translation","code":"en-US","content":"The exponent to raise the base number by."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This numeric value indicates the power to which the base is raised."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/476","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/477","identifier":"std::number::exponential"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/478","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Number from Text"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Converts a text string into a number if possible."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Attempts to parse the provided text input and return its numeric equivalent."}],"deprecationMessages":[],"identifier":"std::number::from_text","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Convert ${text} to number"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"from text;parse;convert;number;math;std;from;text"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/479","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/480","names":[{"__typename":"Translation","code":"en-US","content":"Text"}],"identifier":"text","descriptions":[{"__typename":"Translation","code":"en-US","content":"The text string to convert to a number."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Parses the input text and attempts to convert it to a numeric value."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/481","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/482","identifier":"std::number::from_text"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/483","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Infinity"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the mathematical concept of positive infinity."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Provides the representation of positive infinity, used to represent an unbounded value in computations."}],"deprecationMessages":[],"identifier":"std::number::infinity","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Infinity"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"infinity;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/484","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":0,"nodes":[]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/485","identifier":"std::number::infinity"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/486","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Is Equal"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Checks whether two numbers are equal."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns true if the first number is equal to the second number, otherwise false."}],"deprecationMessages":[],"identifier":"std::number::is_equal","displayMessages":[{"__typename":"Translation","code":"en-US","content":"${first} == ${second}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"equal;equals;same;number;math;std;is"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/487","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/488","names":[{"__typename":"Translation","code":"en-US","content":"First Number"}],"identifier":"first","descriptions":[{"__typename":"Translation","code":"en-US","content":"The first number to compare."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The first operand in the equality check."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/489","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/490","names":[{"__typename":"Translation","code":"en-US","content":"Second Number"}],"identifier":"second","descriptions":[{"__typename":"Translation","code":"en-US","content":"The second number to compare."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The second operand in the equality check."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/491","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/492","identifier":"std::number::is_equal"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/493","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Is Greater"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Checks whether the first number is greater than the second number."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns true if the first numeric input is greater than the second; otherwise, returns false."}],"deprecationMessages":[],"identifier":"std::number::is_greater","displayMessages":[{"__typename":"Translation","code":"en-US","content":"${first} > ${second}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"greater;larger;more;number;math;std;is"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/494","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/495","names":[{"__typename":"Translation","code":"en-US","content":"First Number"}],"identifier":"first","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number to compare against the second number."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This is the number that will be evaluated to determine if it is greater than the second number."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/496","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/497","names":[{"__typename":"Translation","code":"en-US","content":"Second Number"}],"identifier":"second","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number to compare with the first number."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This is the number that the first number will be compared to."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/498","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/499","identifier":"std::number::is_greater"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/500","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Is Less"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Checks whether the first number is less than the second number."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns true if the first numeric input is less than the second; otherwise, returns false."}],"deprecationMessages":[],"identifier":"std::number::is_less","displayMessages":[{"__typename":"Translation","code":"en-US","content":"${first} < ${second}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"less;smaller;fewer;number;math;std;is"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/501","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/502","names":[{"__typename":"Translation","code":"en-US","content":"First Number"}],"identifier":"first","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number to compare with the second number."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This is the number that will be evaluated to determine if it is less than the second number."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/503","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/504","names":[{"__typename":"Translation","code":"en-US","content":"Second Number"}],"identifier":"second","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number to compare against the first number."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This is the number that the first number will be compared to."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/505","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/506","identifier":"std::number::is_less"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/507","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Is Positive"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Checks whether a number is greater than zero."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Evaluates the input number and returns true if it is positive (greater than zero), otherwise false."}],"deprecationMessages":[],"identifier":"std::number::is_positive","displayMessages":[{"__typename":"Translation","code":"en-US","content":"${value} > 0"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"positive;greater than zero;number;math;std;is"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/508","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/509","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number to check for positivity."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This is the numeric input that will be evaluated to determine whether it is greater than zero."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/510","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/511","identifier":"std::number::is_positive"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/512","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Is Zero"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Checks whether the given number is exactly zero."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns true if the input number is zero; otherwise, returns false."}],"deprecationMessages":[],"identifier":"std::number::is_zero","displayMessages":[{"__typename":"Translation","code":"en-US","content":"${value} == 0"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"zero;equals zero;number;math;std;is"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/513","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/514","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number to check if it is zero."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This is the numeric input evaluated to determine whether it equals zero."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/515","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/516","identifier":"std::number::is_zero"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/517","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Natural Logarithm"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Calculates the natural logarithm (log base e) of a number."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns the natural logarithm of the given value."}],"deprecationMessages":[],"identifier":"std::number::ln","displayMessages":[{"__typename":"Translation","code":"en-US","content":"ln(${value})"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"natural log;ln;log e;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/518","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/519","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number to compute the natural logarithm for."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The numeric input whose natural logarithm (log base e) will be calculated."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/520","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/521","identifier":"std::number::ln"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/522","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Logarithm"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Calculates the logarithm of a number with respect to a specified base."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns the logarithm of the given value using the specified base."}],"deprecationMessages":[],"identifier":"std::number::log","displayMessages":[{"__typename":"Translation","code":"en-US","content":"log base ${base} of ${value}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"log;logarithm;log base;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/523","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/524","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number to compute the logarithm for."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The numeric input whose logarithm is to be calculated."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/525","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/526","names":[{"__typename":"Translation","code":"en-US","content":"Base"}],"identifier":"base","descriptions":[{"__typename":"Translation","code":"en-US","content":"The base of the logarithm."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Specifies the logarithmic base to use (e.g., 10 for common log, e for natural log)."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/527","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/528","identifier":"std::number::log"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/529","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Maximum"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the larger of two numbers."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Compares two numbers and returns the maximum value."}],"deprecationMessages":[],"identifier":"std::number::max","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Maximum of ${first} and ${second}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"max;maximum;largest;greatest;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/530","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/531","names":[{"__typename":"Translation","code":"en-US","content":"First Number"}],"identifier":"first","descriptions":[{"__typename":"Translation","code":"en-US","content":"The first number to compare."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"One of the two numbers for which the maximum value will be determined."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/532","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/533","names":[{"__typename":"Translation","code":"en-US","content":"Second Number"}],"identifier":"second","descriptions":[{"__typename":"Translation","code":"en-US","content":"The second number to compare."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The other number involved in the maximum value comparison."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/534","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/535","identifier":"std::number::max"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/536","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Minimum"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the smaller of two numbers."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Compares two numbers and returns the minimum value."}],"deprecationMessages":[],"identifier":"std::number::min","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Minimum of ${first} and ${second}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"min;minimum;smallest;least;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/537","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/538","names":[{"__typename":"Translation","code":"en-US","content":"First Number"}],"identifier":"first","descriptions":[{"__typename":"Translation","code":"en-US","content":"The first number to compare."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"One of the two numbers for which the minimum value will be determined."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/539","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/540","names":[{"__typename":"Translation","code":"en-US","content":"Second Number"}],"identifier":"second","descriptions":[{"__typename":"Translation","code":"en-US","content":"The second number to compare."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The other number involved in the minimum value comparison."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/541","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/542","identifier":"std::number::min"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/543","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Modulo"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the remainder after dividing the first number by the second."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Computes the modulus (remainder) of dividing the first numeric input by the second."}],"deprecationMessages":[],"identifier":"std::number::modulo","displayMessages":[{"__typename":"Translation","code":"en-US","content":"${first} % ${second}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"modulo;mod;remainder;modulus;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/544","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/545","names":[{"__typename":"Translation","code":"en-US","content":"Dividend"}],"identifier":"first","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number to be divided to find the remainder."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This is the number that will be divided by the second value to calculate the remainder."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/546","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/547","names":[{"__typename":"Translation","code":"en-US","content":"Divisor"}],"identifier":"second","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number by which the first number is divided to get the remainder."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This is the number used to divide the dividend and obtain the remainder."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/548","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/549","identifier":"std::number::modulo"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/550","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Multiply"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Multiplies two numbers together."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Takes two numeric inputs and returns their product."}],"deprecationMessages":[],"identifier":"std::number::multiply","displayMessages":[{"__typename":"Translation","code":"en-US","content":"${first} * ${second}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"multiply;times;product;mul;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/551","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/552","names":[{"__typename":"Translation","code":"en-US","content":"First Number"}],"identifier":"first","descriptions":[{"__typename":"Translation","code":"en-US","content":"The first number to multiply."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Specifies the first operand in the multiplication operation."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/553","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/554","names":[{"__typename":"Translation","code":"en-US","content":"Second Number"}],"identifier":"second","descriptions":[{"__typename":"Translation","code":"en-US","content":"The second number to multiply."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Specifies the second operand in the multiplication operation."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/555","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/556","identifier":"std::number::multiply"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/557","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Negate"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the negation of a number (multiplies by -1)."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Calculates the additive inverse of the given number."}],"deprecationMessages":[],"identifier":"std::number::negate","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Negate ${value}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"negate;negative;invert;opposite;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/558","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/559","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number to negate."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The numeric input whose sign will be inverted."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/560","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/561","identifier":"std::number::negate"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/562","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Pi"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the mathematical constant π (pi)."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Provides the constant value of pi, approximately 3.14159, used in many mathematical calculations."}],"deprecationMessages":[],"identifier":"std::number::pi","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Get pi"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"pi;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/563","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":0,"nodes":[]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/564","identifier":"std::number::pi"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/565","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Random Number"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Generates a random number between the specified minimum and maximum values."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a randomly generated number within the given range, inclusive of both minimum and maximum."}],"deprecationMessages":[],"identifier":"std::number::random_number","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Random number between ${min} and ${max}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"random;rand;random number;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/566","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/567","names":[{"__typename":"Translation","code":"en-US","content":"Minimum"}],"identifier":"min","descriptions":[{"__typename":"Translation","code":"en-US","content":"The minimum value in the random number range."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Defines the lower bound (inclusive) for the random number generation."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/568","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/569","names":[{"__typename":"Translation","code":"en-US","content":"Maximum"}],"identifier":"max","descriptions":[{"__typename":"Translation","code":"en-US","content":"The maximum value in the random number range."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Defines the upper bound (inclusive) for the random number generation."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/570","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/571","identifier":"std::number::random_number"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/572","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Root"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the root of a number given a root exponent."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Calculates the nth root of the input number, where n is specified by the root exponent."}],"deprecationMessages":[],"identifier":"std::number::root","displayMessages":[{"__typename":"Translation","code":"en-US","content":"${root_exponent} root of ${value}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"root;nth root;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/573","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/574","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number from which the root will be extracted."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The numeric input for which the root will be calculated."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/575","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/576","names":[{"__typename":"Translation","code":"en-US","content":"Root Exponent"}],"identifier":"root_exponent","descriptions":[{"__typename":"Translation","code":"en-US","content":"The degree of the root to extract."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Specifies which root to calculate (e.g., 2 for square root, 3 for cube root)."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/577","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/578","identifier":"std::number::root"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/579","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Round"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Rounds a number to the nearest value at the specified number of decimal places."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Performs standard rounding on the given value, rounding up or down depending on the fractional component."}],"deprecationMessages":[],"identifier":"std::number::round","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Round ${value} with ${decimals} decimal places"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"round;nearest;approximate;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/580","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/581","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number to be rounded."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The numeric input that will be rounded to the nearest value."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/582","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/583","names":[{"__typename":"Translation","code":"en-US","content":"Decimal Places"}],"identifier":"decimals","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number of decimal places to round to."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Specifies how many decimal digits to keep after rounding."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/584","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/585","identifier":"std::number::round"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/586","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Round Down"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Rounds a number downward to the specified number of decimal places."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Performs rounding on the given value, always rounding down to the nearest value at the given decimal precision."}],"deprecationMessages":[],"identifier":"std::number::round_down","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Round down ${value} with ${decimals} decimal places"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"round down;floor;number;math;std;round;down"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/587","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/588","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number to be rounded down."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The numeric input that will be rounded downwards."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/589","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/590","names":[{"__typename":"Translation","code":"en-US","content":"Decimal Places"}],"identifier":"decimals","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number of decimal places to round down to."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Specifies how many decimal digits to keep after rounding down."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/591","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/592","identifier":"std::number::round_down"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/593","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Round Up"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Rounds a number upward to the specified number of decimal places."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Performs rounding on the given value, always rounding up to the nearest value at the given decimal precision."}],"deprecationMessages":[],"identifier":"std::number::round_up","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Round up ${value} with ${decimals} decimal places"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"round up;ceil;ceiling;number;math;std;round;up"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/594","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/595","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number to be rounded up."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The numeric input that will be rounded upwards."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/596","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/597","names":[{"__typename":"Translation","code":"en-US","content":"Decimal Places"}],"identifier":"decimals","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number of decimal places to round up to."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Specifies how many decimal digits to keep after rounding up."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/598","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/599","identifier":"std::number::round_up"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/600","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Sine"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the sine of a number."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Calculates the sine of the input value."}],"deprecationMessages":[],"identifier":"std::number::sin","displayMessages":[{"__typename":"Translation","code":"en-US","content":"sin(${value})"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"sin;sine;trigonometry;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/601","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/602","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number for which to calculate the sine."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Computes the sine of the given number."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/603","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/604","identifier":"std::number::sin"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/605","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Hyperbolic Sine"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the hyperbolic sine of a number."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Calculates the hyperbolic sine (sinh) of the input value."}],"deprecationMessages":[],"identifier":"std::number::sinh","displayMessages":[{"__typename":"Translation","code":"en-US","content":"sinh(${value})"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"sinh;hyperbolic sine;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/606","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/607","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number for which to calculate the hyperbolic sine."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Computes the hyperbolic sine of the given number."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/608","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/609","identifier":"std::number::sinh"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/610","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Square"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the square of the given number."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Calculates the value multiplied by itself, effectively raising it to the power of 2."}],"deprecationMessages":[],"identifier":"std::number::square","displayMessages":[{"__typename":"Translation","code":"en-US","content":"${value} squared"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"square;squared;power two;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/611","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/612","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number to be squared."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This is the numeric input that will be multiplied by itself."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/613","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/614","identifier":"std::number::square"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/615","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Square Root"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the square root of the given number."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Calculates the positive square root of the input number."}],"deprecationMessages":[],"identifier":"std::number::square_root","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Square root of ${value}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"square root;sqrt;root;number;math;std;square"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/616","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/617","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number to find the square root of."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The numeric input for which the square root will be calculated."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/618","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/619","identifier":"std::number::square_root"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/620","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Subtract"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Subtracts the second number from the first number."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns the result of subtracting the second numeric input from the first."}],"deprecationMessages":[],"identifier":"std::number::subtract","displayMessages":[{"__typename":"Translation","code":"en-US","content":"${first} - ${second}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"subtract;minus;difference;sub;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/621","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/622","names":[{"__typename":"Translation","code":"en-US","content":"Minuend"}],"identifier":"first","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number from which another number (the subtrahend) is to be subtracted."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This is the number that will have the second value subtracted from it."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/623","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/624","names":[{"__typename":"Translation","code":"en-US","content":"Subtrahend"}],"identifier":"second","descriptions":[{"__typename":"Translation","code":"en-US","content":"The number to subtract from the first number (the minuend)."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This is the value that will be subtracted from the first number."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/625","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/626","identifier":"std::number::subtract"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/627","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Tangent"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the tangent of the specified angle in radians."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Calculates the tangent value of the input angle measured in radians."}],"deprecationMessages":[],"identifier":"std::number::tan","displayMessages":[{"__typename":"Translation","code":"en-US","content":"tan(${radians})"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"tan;tangent;trigonometry;number;math;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/628","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/629","names":[{"__typename":"Translation","code":"en-US","content":"Radians"}],"identifier":"radians","descriptions":[{"__typename":"Translation","code":"en-US","content":"The angle in radians to compute the tangent of."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Computes the tangent of the given angle in radians."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/630","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/631","identifier":"std::number::tan"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/632","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Contains Key"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Checks whether the specified key exists in the object."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns true if the given key is a property of the object; otherwise, returns false."}],"deprecationMessages":[],"identifier":"std::object::contains_key","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Checks if ${object} contains ${key}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"contains_key;object;std;contains;key"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/633","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/634","names":[{"__typename":"Translation","code":"en-US","content":"Object"}],"identifier":"object","descriptions":[{"__typename":"Translation","code":"en-US","content":"The object to check for the presence of a key."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The object within which the existence of the specified key will be checked."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/635","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":[],"identifier":"OBJECT","aliases":[{"__typename":"Translation","code":"en-US","content":"object;struct;data"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Object"}],"name":[{"__typename":"Translation","code":"en-US","content":"Object"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/636","names":[{"__typename":"Translation","code":"en-US","content":"Key"}],"identifier":"key","descriptions":[{"__typename":"Translation","code":"en-US","content":"The key to check for existence in the object."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The property key whose presence in the object is being tested."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/637","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/638","identifier":"std::object::contains_key"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/639","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Get Object Keys"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Retrieves all the keys from the given object as a list of text values."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a list containing all enumerable property names (keys) of the specified object."}],"deprecationMessages":[],"identifier":"std::object::keys","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Get all keys of ${object}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"keys;object;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/640","genericType":{"id":"gid://sagittarius/GenericType/641","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/642","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}],"target":"T","id":"gid://sagittarius/GenericMapper/643"}]}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/644","names":[{"__typename":"Translation","code":"en-US","content":"Object"}],"identifier":"object","descriptions":[{"__typename":"Translation","code":"en-US","content":"The object whose keys will be retrieved."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a list of all the keys (property names) of the given object."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/645","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":[],"identifier":"OBJECT","aliases":[{"__typename":"Translation","code":"en-US","content":"object;struct;data"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Object"}],"name":[{"__typename":"Translation","code":"en-US","content":"Object"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/646","identifier":"std::object::keys"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/647","genericKeys":["I"],"names":[{"__typename":"Translation","code":"en-US","content":"Set Object Key"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Sets or updates a key-value pair in the given object."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a new object with the specified key set to the given value."}],"deprecationMessages":[],"identifier":"std::object::set","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Will set ${key} to ${value} inside of ${object}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"set;object;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/648","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":[],"identifier":"OBJECT","aliases":[{"__typename":"Translation","code":"en-US","content":"object;struct;data"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Object"}],"name":[{"__typename":"Translation","code":"en-US","content":"Object"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}},"parameterDefinitions":{"count":3,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/649","names":[{"__typename":"Translation","code":"en-US","content":"Object"}],"identifier":"object","descriptions":[{"__typename":"Translation","code":"en-US","content":"The object in which the key-value pair will be set."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The original object that will be modified with the specified key-value pair."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/650","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":[],"identifier":"OBJECT","aliases":[{"__typename":"Translation","code":"en-US","content":"object;struct;data"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Object"}],"name":[{"__typename":"Translation","code":"en-US","content":"Object"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/651","names":[{"__typename":"Translation","code":"en-US","content":"Key"}],"identifier":"key","descriptions":[{"__typename":"Translation","code":"en-US","content":"The key to set or update in the object."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The property name under which the value will be stored in the object."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/652","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/653","names":[{"__typename":"Translation","code":"en-US","content":"Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The value to set for the specified key."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The value to assign to the object property identified by the key."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/654","genericKey":"I"}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/655","identifier":"std::object::set"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/656","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Get Object Size"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Calculates the number of keys in the provided object."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns an integer count of all enumerable property keys in the specified object."}],"deprecationMessages":[],"identifier":"std::object::size","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Get size of ${object}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"size;object;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/657","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/658","names":[{"__typename":"Translation","code":"en-US","content":"Object"}],"identifier":"object","descriptions":[{"__typename":"Translation","code":"en-US","content":"The object whose size (number of keys) will be calculated."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns the number of enumerable keys (properties) present in the given object."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/659","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/3","genericKeys":[],"identifier":"OBJECT","aliases":[{"__typename":"Translation","code":"en-US","content":"object;struct;data"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Object"}],"name":[{"__typename":"Translation","code":"en-US","content":"Object"}],"rules":{"count":0,"nodes":[]},"variant":"OBJECT"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/660","identifier":"std::object::size"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/661","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Append Text"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Concatenates the suffix text to the end of the original text."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a new text string consisting of the original text followed by the specified suffix."}],"deprecationMessages":[],"identifier":"std::text::append","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Append ${value} with ${suffix}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"append;text;string;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/662","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/663","names":[{"__typename":"Translation","code":"en-US","content":"Original Text"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The initial text to which the suffix will be appended."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The base text string that will have another string appended to its end."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/664","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/665","names":[{"__typename":"Translation","code":"en-US","content":"Suffix"}],"identifier":"suffix","descriptions":[{"__typename":"Translation","code":"en-US","content":"The text to append to the original value."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The text string that will be concatenated to the end of the original text."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/666","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/667","identifier":"std::text::append"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/668","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"As Bytes"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Converts a text string into a list of byte values."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a list of bytes representing the UTF-8 encoding of the given text."}],"deprecationMessages":[],"identifier":"std::text::as_bytes","displayMessages":[{"__typename":"Translation","code":"en-US","content":"As Bytes ${value}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"as_bytes;text;string;std;as;bytes"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/669","genericType":{"id":"gid://sagittarius/GenericType/670","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/671","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}],"target":"T","id":"gid://sagittarius/GenericMapper/672"}]}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/673","names":[{"__typename":"Translation","code":"en-US","content":"Text Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The text to convert into bytes."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Converts the input text string into a list of byte values."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/674","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/675","identifier":"std::text::as_bytes"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/676","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Character at Index"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the character at the specified index in the text."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Retrieves a single character from the input text based on the provided zero-based index."}],"deprecationMessages":[],"identifier":"std::text::at","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Get character of ${value} at ${index}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"at;text;string;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/677","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/678","names":[{"__typename":"Translation","code":"en-US","content":"Text Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The text string from which to extract the character."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The input text from which a character will be retrieved by index."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/679","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/680","names":[{"__typename":"Translation","code":"en-US","content":"Index"}],"identifier":"index","descriptions":[{"__typename":"Translation","code":"en-US","content":"The zero-based position of the character to extract."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Specifies which character to return from the text."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/681","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/682","identifier":"std::text::at"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/683","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Byte Size"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the number of bytes required to encode the given text."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Computes the size in bytes of the provided text string, typically by counting UTF-8 encoded bytes."}],"deprecationMessages":[],"identifier":"std::text::byte_size","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Byte-Size of ${value}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"byte_size;text;string;std;byte;size"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/684","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/685","names":[{"__typename":"Translation","code":"en-US","content":"Text Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The text whose byte size is to be calculated."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Calculates the size in bytes of the given text, typically its UTF-8 encoding length."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/686","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/687","identifier":"std::text::byte_size"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/688","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Capitalize"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Converts the first character of the text to uppercase and leaves the rest unchanged."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a new text string with the first letter capitalized."}],"deprecationMessages":[],"identifier":"std::text::capitalize","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Capitalize ${value}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"capitalize;title case;upper first;text;string;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/689","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/690","names":[{"__typename":"Translation","code":"en-US","content":"Text Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The text string to capitalize."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Capitalizes the first letter of the input text string."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/691","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/692","identifier":"std::text::capitalize"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/693","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Characters"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns a list containing each character from the given text string."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Creates a list where each element is a single character from the original text."}],"deprecationMessages":[],"identifier":"std::text::chars","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Turns ${value} into a list of characters"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"characters;letters;split;text;string;std;chars"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/694","genericType":{"id":"gid://sagittarius/GenericType/695","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/696","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}],"target":"T","id":"gid://sagittarius/GenericMapper/697"}]}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/698","names":[{"__typename":"Translation","code":"en-US","content":"Text Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The text string to split into characters."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Splits the input text string into a list of its constituent characters."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/699","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/700","identifier":"std::text::chars"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/701","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Contains"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Checks if the main text contains the specified substring."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns true if the substring is found anywhere in the main text; otherwise, returns false."}],"deprecationMessages":[],"identifier":"std::text::contains","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Check if ${value} contains ${substring}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"contains;text;string;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/702","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/703","names":[{"__typename":"Translation","code":"en-US","content":"Text"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The main text to search within."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The main text to search within."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/704","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/705","names":[{"__typename":"Translation","code":"en-US","content":"Substring"}],"identifier":"substring","descriptions":[{"__typename":"Translation","code":"en-US","content":"The text to search for inside the main text."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The text to search for inside the main text."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/706","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/707","identifier":"std::text::contains"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/708","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Decode Text"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Decodes the input text from the specified encoding format."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Decodes the input text from the specified encoding format."}],"deprecationMessages":[],"identifier":"std::text::decode","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Decode ${value} using ${encoding}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"decode;text;string;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/709","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/710","names":[{"__typename":"Translation","code":"en-US","content":"Text"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The text string to decode."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The text string to decode."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/711","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/712","names":[{"__typename":"Translation","code":"en-US","content":"Encoding Type"}],"identifier":"encoding","descriptions":[{"__typename":"Translation","code":"en-US","content":"The decoding scheme to apply (e.g. Base64)."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The decoding scheme to apply (e.g. Base64)."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/713","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/46","genericKeys":[],"identifier":"TEXT_ENCODING","aliases":[{"__typename":"Translation","code":"en-US","content":"text;encoding;base64"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text Encoding"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text Encoding"}],"rules":{"count":1,"nodes":[{"variant":"ITEM_OF_COLLECTION","config":{"items":["BASE64"]}}]},"variant":"TYPE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/714","identifier":"std::text::decode"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/715","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Encode Text"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Encodes the input text into the specified encoding format."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Transforms the given text string into a representation encoded by the specified encoding scheme."}],"deprecationMessages":[],"identifier":"std::text::encode","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Encode ${value} to ${encoding}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"encode;text;string;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/716","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/717","names":[{"__typename":"Translation","code":"en-US","content":"Text"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The text string to encode."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The text string to encode."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/718","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/719","names":[{"__typename":"Translation","code":"en-US","content":"Encoding Type"}],"identifier":"encoding","descriptions":[{"__typename":"Translation","code":"en-US","content":"The encoding scheme to apply (e.g., UTF-8, Base64)."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The encoding scheme to apply (e.g., UTF-8, Base64)."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/720","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/46","genericKeys":[],"identifier":"TEXT_ENCODING","aliases":[{"__typename":"Translation","code":"en-US","content":"text;encoding;base64"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text Encoding"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text Encoding"}],"rules":{"count":1,"nodes":[{"variant":"ITEM_OF_COLLECTION","config":{"items":["BASE64"]}}]},"variant":"TYPE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/721","identifier":"std::text::encode"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/722","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Ends With"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Checks if the input text ends with the specified suffix."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns true if the input text ends with the given suffix; otherwise, returns false."}],"deprecationMessages":[],"identifier":"std::text::ends_with","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Check if ${value} ends with ${suffix}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"ends_with;text;string;std;ends;with"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/723","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/724","names":[{"__typename":"Translation","code":"en-US","content":"Text"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The input text to check."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The input text to check."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/725","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/726","names":[{"__typename":"Translation","code":"en-US","content":"Suffix"}],"identifier":"suffix","descriptions":[{"__typename":"Translation","code":"en-US","content":"The suffix to test against the input text."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The suffix to test against the input text."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/727","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/728","identifier":"std::text::ends_with"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/729","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"From ASCII"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Converts a list of ASCII codes back into the corresponding text string."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Takes a list of numbers where each number is an ASCII code, and returns the string they represent."}],"deprecationMessages":[],"identifier":"std::text::from_ascii","displayMessages":[{"__typename":"Translation","code":"en-US","content":"From ${value} to Text"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"from_ascii;text;string;std;from;ascii"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/730","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/731","names":[{"__typename":"Translation","code":"en-US","content":"ASCII Codes"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"List of ASCII numeric codes representing characters."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"List of ASCII numeric codes representing characters."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/732","genericType":{"id":"gid://sagittarius/GenericType/733","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/734","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}],"target":"T","id":"gid://sagittarius/GenericMapper/735"}]}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/736","identifier":"std::text::from_ascii"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/737","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Text to Hexadecimal"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Converts a text string into a hexadecimal representation."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a string containing the hexadecimal values corresponding to each character of the input text."}],"deprecationMessages":[],"identifier":"std::text::hex","displayMessages":[{"__typename":"Translation","code":"en-US","content":"${value} to Hexadecimal"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"hex;text;string;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/738","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/739","names":[{"__typename":"Translation","code":"en-US","content":"Input Text"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The text string to be converted to its hexadecimal representation."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This function converts each character of the input text into its corresponding hexadecimal code, returning the concatenated hex string."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/740","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/741","identifier":"std::text::hex"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/742","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Index Of"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Finds the first occurrence index of the substring within the text."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns the zero-based index of the first occurrence of the substring in the text. Returns -1 if the substring is not found."}],"deprecationMessages":[],"identifier":"std::text::index_of","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Get position of ${substring} inside ${value}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"index_of;text;string;std;index;of"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/743","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/744","names":[{"__typename":"Translation","code":"en-US","content":"Text"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The text string to search within."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The text string to search within."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/745","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/746","names":[{"__typename":"Translation","code":"en-US","content":"Substring"}],"identifier":"substring","descriptions":[{"__typename":"Translation","code":"en-US","content":"The substring to find inside the text."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The substring to find inside the text."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/747","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/748","identifier":"std::text::index_of"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/749","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Insert Text"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Inserts a given text into the original text at the specified position."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a new string where the provided text is inserted at the zero-based position index within the original text."}],"deprecationMessages":[],"identifier":"std::text::insert","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Insert ${value} at ${position} into ${text}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"insert;text;string;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/750","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":3,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/751","names":[{"__typename":"Translation","code":"en-US","content":"Original Text"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The original text into which another text will be inserted."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This is the base string where the insertion happens."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/752","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/753","names":[{"__typename":"Translation","code":"en-US","content":"Position"}],"identifier":"position","descriptions":[{"__typename":"Translation","code":"en-US","content":"The index at which the text will be inserted."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Zero-based index indicating where the new text should be inserted."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/754","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/755","names":[{"__typename":"Translation","code":"en-US","content":"Text to Insert"}],"identifier":"text","descriptions":[{"__typename":"Translation","code":"en-US","content":"The text that will be inserted into the original text."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The substring to be inserted at the specified position."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/756","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/757","identifier":"std::text::insert"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/758","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Is Equal"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Checks whether the two input text strings are equal."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Determines if the two given text inputs are exactly the same, returning true if equal, false otherwise."}],"deprecationMessages":[],"identifier":"std::text::is_equal","displayMessages":[{"__typename":"Translation","code":"en-US","content":"${first} equals ${second}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"equal;equals;same;text;string;std;is"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/759","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/760","names":[{"__typename":"Translation","code":"en-US","content":"First Text"}],"identifier":"first","descriptions":[{"__typename":"Translation","code":"en-US","content":"The first text string to compare."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The first input text for equality comparison."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/761","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/762","names":[{"__typename":"Translation","code":"en-US","content":"Second Text"}],"identifier":"second","descriptions":[{"__typename":"Translation","code":"en-US","content":"The second text string to compare."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The second input text for equality comparison."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/763","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/764","identifier":"std::text::is_equal"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/765","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Length"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Returns the number of characters in the given text."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Computes the length of the input string in terms of characters."}],"deprecationMessages":[],"identifier":"std::text::length","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Length of ${value}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"length;size;characters;text;string;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/766","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/767","names":[{"__typename":"Translation","code":"en-US","content":"Text"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The text whose length will be calculated."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Input string to determine the number of characters it contains."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/768","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/769","identifier":"std::text::length"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/770","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Lowercase"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Transforms all letters in the text to their lowercase equivalents."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a new text string with all characters converted to lowercase."}],"deprecationMessages":[],"identifier":"std::text::lowercase","displayMessages":[{"__typename":"Translation","code":"en-US","content":"${value} to Lowercase"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"lowercase;text;string;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/771","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/772","names":[{"__typename":"Translation","code":"en-US","content":"Text Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The text string to convert to lowercase."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Converts all characters in the input text string to lowercase."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/773","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/774","identifier":"std::text::lowercase"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/775","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Text to Octal"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Converts a text string into an octal representation."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a string containing the octal values corresponding to each character of the input text."}],"deprecationMessages":[],"identifier":"std::text::octal","displayMessages":[{"__typename":"Translation","code":"en-US","content":"${value} to Octal"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"octal;text;string;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/776","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/777","names":[{"__typename":"Translation","code":"en-US","content":"Input Text"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The text string to be converted to its octal representation."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This function converts each character of the input text into its corresponding octal code, returning the concatenated octal string."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/778","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/779","identifier":"std::text::octal"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/780","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Prepend Text"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Concatenates the prefix text to the beginning of the original text."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a new text string consisting of the specified prefix followed by the original text."}],"deprecationMessages":[],"identifier":"std::text::prepend","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Prepend ${value} with ${prefix}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"prepend;text;string;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/781","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/782","names":[{"__typename":"Translation","code":"en-US","content":"Original Text"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The initial text to which the prefix will be added."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The base text string that will have another string prepended to its beginning."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/783","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/784","names":[{"__typename":"Translation","code":"en-US","content":"Prefix"}],"identifier":"prefix","descriptions":[{"__typename":"Translation","code":"en-US","content":"The text to prepend before the original value."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The text string that will be concatenated to the start of the original text."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/785","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/786","identifier":"std::text::prepend"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/787","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Remove Substring"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Removes the substring between the specified start and end indices from the input text."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a new string with characters removed from start up to but not including end."}],"deprecationMessages":[],"identifier":"std::text::remove","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Remove ${value} from ${start}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"remove;delete;strip;text;string;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/788","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":3,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/789","names":[{"__typename":"Translation","code":"en-US","content":"Text"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The original text to remove a substring from."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The input text from which a substring will be removed."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/790","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/791","names":[{"__typename":"Translation","code":"en-US","content":"Start Index"}],"identifier":"start","descriptions":[{"__typename":"Translation","code":"en-US","content":"The zero-based index where removal begins."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The starting position for removing characters from the text."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/792","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/793","names":[{"__typename":"Translation","code":"en-US","content":"End Index"}],"identifier":"end","descriptions":[{"__typename":"Translation","code":"en-US","content":"The zero-based index where removal ends (exclusive)."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The position just after the last character to be removed."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/794","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/795","identifier":"std::text::remove"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/796","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Replace Substring"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Replaces all occurrences of a specified substring with another substring in the input text."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a new string where every instance of the old substring is replaced by the new substring."}],"deprecationMessages":[],"identifier":"std::text::replace","displayMessages":[{"__typename":"Translation","code":"en-US","content":"In ${value} replace ${old} with ${new}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"replace;text;string;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/797","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":3,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/798","names":[{"__typename":"Translation","code":"en-US","content":"Original Text"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The input text where replacements will be made."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This is the text in which all occurrences of the old substring will be replaced."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/799","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/800","names":[{"__typename":"Translation","code":"en-US","content":"Old Substring"}],"identifier":"old","descriptions":[{"__typename":"Translation","code":"en-US","content":"The substring to be replaced."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"All occurrences of this substring in the original text will be replaced."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/801","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/802","names":[{"__typename":"Translation","code":"en-US","content":"New Substring"}],"identifier":"new","descriptions":[{"__typename":"Translation","code":"en-US","content":"The substring to replace with."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This substring will replace each occurrence of the old substring."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/803","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/804","identifier":"std::text::replace"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/805","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Replace First Substring"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Replaces the first occurrence of a specified substring with another substring in the input text."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a new string where only the first instance of the old substring is replaced by the new substring."}],"deprecationMessages":[],"identifier":"std::text::replace_first","displayMessages":[{"__typename":"Translation","code":"en-US","content":"In ${value} replace first ${old} with ${new}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"replace_first;text;string;std;replace;first"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/806","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":3,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/807","names":[{"__typename":"Translation","code":"en-US","content":"Original Text"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The input text where the first replacement will be made."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This text contains the substring that will be replaced only once—the first occurrence."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/808","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/809","names":[{"__typename":"Translation","code":"en-US","content":"Old Substring"}],"identifier":"old","descriptions":[{"__typename":"Translation","code":"en-US","content":"The substring to be replaced."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Only the first occurrence of this substring will be replaced in the original text."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/810","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/811","names":[{"__typename":"Translation","code":"en-US","content":"New Substring"}],"identifier":"new","descriptions":[{"__typename":"Translation","code":"en-US","content":"The substring to replace with."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This substring will replace only the first occurrence of the old substring."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/812","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/813","identifier":"std::text::replace_first"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/814","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Replace Last Substring"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Replaces the last occurrence of a specified substring with another substring in the input text."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a new string where only the last instance of the old substring is replaced by the new substring."}],"deprecationMessages":[],"identifier":"std::text::replace_last","displayMessages":[{"__typename":"Translation","code":"en-US","content":"In ${value} replace the last ${old} with ${new}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"replace_last;text;string;std;replace;last"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/815","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":3,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/816","names":[{"__typename":"Translation","code":"en-US","content":"Original Text"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The input text where the last replacement will be made."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This text contains the substring that will be replaced only once—the last occurrence."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/817","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/818","names":[{"__typename":"Translation","code":"en-US","content":"Old Substring"}],"identifier":"old","descriptions":[{"__typename":"Translation","code":"en-US","content":"The substring to be replaced."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Only the last occurrence of this substring will be replaced in the original text."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/819","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/820","names":[{"__typename":"Translation","code":"en-US","content":"New Substring"}],"identifier":"new","descriptions":[{"__typename":"Translation","code":"en-US","content":"The substring to replace with."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"This substring will replace only the last occurrence of the old substring."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/821","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/822","identifier":"std::text::replace_last"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/823","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Reverse"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Reverses the characters in the input text."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a new string with the characters of the input text in reverse order."}],"deprecationMessages":[],"identifier":"std::text::reverse","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Reverse ${value}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"reverse;text;string;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/824","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/825","names":[{"__typename":"Translation","code":"en-US","content":"Text"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The input text to be reversed."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The input text to be reversed."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/826","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/827","identifier":"std::text::reverse"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/828","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Split"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Splits the input text into a list of substrings based on the specified delimiter."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a list of substrings obtained by splitting the input text at each occurrence of the delimiter."}],"deprecationMessages":[],"identifier":"std::text::split","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Splits ${value} on '${delimiter}'"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"split;text;string;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/829","genericType":{"id":"gid://sagittarius/GenericType/830","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/831","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}],"target":"T","id":"gid://sagittarius/GenericMapper/832"}]}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/833","names":[{"__typename":"Translation","code":"en-US","content":"Text"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The input text to be split."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The input text to be split."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/834","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/835","names":[{"__typename":"Translation","code":"en-US","content":"Delimiter"}],"identifier":"delimiter","descriptions":[{"__typename":"Translation","code":"en-US","content":"The delimiter string to split the text by."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The delimiter string to split the text by."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/836","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/837","identifier":"std::text::split"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/838","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Starts With"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Checks if the input text starts with the specified prefix."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns true if the input text begins with the given prefix; otherwise, returns false."}],"deprecationMessages":[],"identifier":"std::text::start_with","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Check if ${value} starts with ${prefix}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"text;string;std;start;with"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/839","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/27","genericKeys":[],"identifier":"BOOLEAN","aliases":[{"__typename":"Translation","code":"en-US","content":"bool;boolean;bit"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"name":[{"__typename":"Translation","code":"en-US","content":"Boolean"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(true|false)$"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":2,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/840","names":[{"__typename":"Translation","code":"en-US","content":"Text"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The input text to check."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The input text to check."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/841","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}},{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/842","names":[{"__typename":"Translation","code":"en-US","content":"Prefix"}],"identifier":"prefix","descriptions":[{"__typename":"Translation","code":"en-US","content":"The prefix to test against the input text."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The prefix to test against the input text."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/843","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/844","identifier":"std::text::start_with"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/845","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Swap Case"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Converts uppercase letters to lowercase and lowercase letters to uppercase in the given text."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a new text string with the case of each character inverted."}],"deprecationMessages":[],"identifier":"std::text::swapcase","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Swapcase of ${value}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"swapcase;text;string;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/846","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/847","names":[{"__typename":"Translation","code":"en-US","content":"Text Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The text string whose case will be swapped."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Swaps the case of each letter in the input text: uppercase letters become lowercase, and vice versa."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/848","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/849","identifier":"std::text::swapcase"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/850","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"To ASCII"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Converts each character of the input text into its corresponding ASCII numerical code."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a list of numbers where each number represents the ASCII code of the corresponding character in the input text."}],"deprecationMessages":[],"identifier":"std::text::to_ascii","displayMessages":[{"__typename":"Translation","code":"en-US","content":"${value} To Ascii"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"to_ascii;text;string;std;to;ascii"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/851","genericType":{"id":"gid://sagittarius/GenericType/852","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/9","genericKeys":["T"],"identifier":"LIST","aliases":[{"__typename":"Translation","code":"en-US","content":"list;array;collection"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"List of ${T}"}],"name":[{"__typename":"Translation","code":"en-US","content":"Generic List"}],"rules":{"count":1,"nodes":[{"variant":"CONTAINS_TYPE","config":{"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/10","genericKey":"T"}}}]},"variant":"ARRAY"},"genericMappers":[{"genericCombinationStrategies":[],"sourceDataTypeIdentifiers":[{"id":"gid://sagittarius/DataTypeIdentifier/853","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/20","genericKeys":[],"identifier":"NUMBER","aliases":[{"__typename":"Translation","code":"en-US","content":"number;integer;float;double;long"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Number"}],"name":[{"__typename":"Translation","code":"en-US","content":"Number"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"^(?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|)$"}}]},"variant":"PRIMITIVE"}}],"target":"T","id":"gid://sagittarius/GenericMapper/854"}]}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/855","names":[{"__typename":"Translation","code":"en-US","content":"Text"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"Input text to convert to ASCII codes."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Input text to convert to ASCII codes."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/856","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/857","identifier":"std::text::to_ascii"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/858","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Trim Text"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Removes leading and trailing whitespace from the text."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a new string with all leading and trailing whitespace characters removed from the input text."}],"deprecationMessages":[],"identifier":"std::text::trim","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Trim ${value}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"trim;text;string;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/859","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/860","names":[{"__typename":"Translation","code":"en-US","content":"Text Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The text string to trim whitespace from."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"The input text from which leading and trailing whitespace characters will be removed."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/861","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/862","identifier":"std::text::trim"}},{"__typename":"FunctionDefinition","id":"gid://sagittarius/FunctionDefinition/863","genericKeys":[],"names":[{"__typename":"Translation","code":"en-US","content":"Uppercase"}],"descriptions":[{"__typename":"Translation","code":"en-US","content":"Transforms all letters in the text to their uppercase equivalents."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Returns a new text string with all characters converted to uppercase."}],"deprecationMessages":[],"identifier":"std::text::uppercase","displayMessages":[{"__typename":"Translation","code":"en-US","content":"Uppercase ${value}"}],"aliases":[{"__typename":"Translation","code":"en-US","content":"uppercase;text;string;std"}],"throwsError":false,"returnType":{"id":"gid://sagittarius/DataTypeIdentifier/864","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}},"parameterDefinitions":{"count":1,"nodes":[{"__typename":"ParameterDefinition","id":"gid://sagittarius/ParameterDefinition/865","names":[{"__typename":"Translation","code":"en-US","content":"Text Value"}],"identifier":"value","descriptions":[{"__typename":"Translation","code":"en-US","content":"The text string to convert to uppercase."}],"documentations":[{"__typename":"Translation","code":"en-US","content":"Converts all characters in the input text string to uppercase."}],"dataTypeIdentifier":{"id":"gid://sagittarius/DataTypeIdentifier/866","dataType":{"__typename":"DataType","id":"gid://sagittarius/DataType/14","genericKeys":[],"identifier":"TEXT","aliases":[{"__typename":"Translation","code":"en-US","content":"text;char;literal;string"}],"displayMessages":[{"__typename":"Translation","code":"en-US","content":"Text"}],"name":[{"__typename":"Translation","code":"en-US","content":"Text"}],"rules":{"count":1,"nodes":[{"variant":"REGEX","config":{"pattern":"[\\s\\S]*"}}]},"variant":"PRIMITIVE"}}}]},"runtimeFunctionDefinition":{"id":"gid://sagittarius/RuntimeFunctionDefinition/867","identifier":"std::text::uppercase"}}] \ No newline at end of file diff --git a/src/components/d-user/DUser.stories.tsx b/src/components/d-user/DUser.stories.tsx index 5bacb6e9a..708f4074b 100644 --- a/src/components/d-user/DUser.stories.tsx +++ b/src/components/d-user/DUser.stories.tsx @@ -32,11 +32,6 @@ import {ContextStoreProvider, useReactiveArrayService} from "../../utils"; import {DUserView} from "./DUser.view"; import React from "react"; import {DUserInput} from "./DUserInput"; -import {Text} from "../text/Text"; -import {Badge} from "../badge/Badge"; -import {IconArrowDown, IconArrowUp, IconCornerDownLeft} from "@tabler/icons-react"; -import {Spacing} from "../spacing/Spacing"; -import {Flex} from "../flex/Flex"; const meta: Meta = { title: "DUser", @@ -132,7 +127,10 @@ export const Input = () => { ]) return - + } \ No newline at end of file diff --git a/src/components/d-user/DUserInput.tsx b/src/components/d-user/DUserInput.tsx index 40e1cfa8e..9cd2284d1 100644 --- a/src/components/d-user/DUserInput.tsx +++ b/src/components/d-user/DUserInput.tsx @@ -45,6 +45,7 @@ export const DUserInput: React.FC = (props) => { if (typeof part === "object") { const segment = { type: "block", + value: part.valueData, start: cursor, end: cursor + part.value.length, visualLength: 1, @@ -63,6 +64,7 @@ export const DUserInput: React.FC = (props) => { if (index == appliedParts.length - 1) { const segment = { type: "text", + value: textString, start: cursor, end: cursor + textString.length, visualLength: textString.length, @@ -101,4 +103,4 @@ export const DUserInput: React.FC = (props) => { enforceUniqueSuggestions transformSyntax={transformSyntax} {...rest} suggestions={suggestions}/> -} \ No newline at end of file +} diff --git a/src/components/file-tabs/FileTabs.service.ts b/src/components/file-tabs/FileTabs.service.ts index bee6bf65f..b3b516366 100644 --- a/src/components/file-tabs/FileTabs.service.ts +++ b/src/components/file-tabs/FileTabs.service.ts @@ -71,26 +71,17 @@ export class FileTabsService extends ReactiveArrayService { this.update() } - public delete(index: number) { + deleteById(id: string) { + const index = this.values().findIndex((item: FileTabsView) => item.id === id) const tab = this.get(index) - if (tab.active && this.has(index - 1)) { + if (tab && tab.active && this.has(index - 1)) { this.activateTab(this.get(index - 1).id!!) - } else if (tab.active && this.has(index + 1)) { + } else if (tab && tab.active && this.has(index + 1)) { this.activateTab(this.get(index + 1).id!!) } - super.delete(index); - this.update() - } - - deleteById(id: string) { - const index = this.values().findIndex((item: FileTabsView) => item.id === id) - - if (index !== -1) { - this.delete(index) - } - this.update() + if (tab) this.access.setState(prev => prev.filter((tab) => tab.id !== id)) } registerTab(value: FileTabsView) { diff --git a/src/components/file-tabs/FileTabs.tsx b/src/components/file-tabs/FileTabs.tsx index 223b6d20c..c3f23745e 100644 --- a/src/components/file-tabs/FileTabs.tsx +++ b/src/components/file-tabs/FileTabs.tsx @@ -12,7 +12,7 @@ import { import {mergeCode0Props} from "../../utils/utils"; import {Code0ComponentProps} from "../../utils/types"; import "./FileTabs.style.scss" -import {IconFile, IconX} from "@tabler/icons-react"; +import {IconX} from "@tabler/icons-react"; import {ScrollArea, ScrollAreaScrollbar, ScrollAreaThumb, ScrollAreaViewport} from "../scroll-area/ScrollArea"; type FileTabsProps = Code0ComponentProps & TabsProps diff --git a/src/components/form/EmailInput.tsx b/src/components/form/EmailInput.tsx index e0a698177..c11979ad8 100644 --- a/src/components/form/EmailInput.tsx +++ b/src/components/form/EmailInput.tsx @@ -2,7 +2,7 @@ import React, {RefObject} from "react"; import {Input, InputProps} from "./Input"; import {IconX} from "@tabler/icons-react"; import {Button} from "../button/Button"; -import {setElementKey} from "./Input.utils"; +import {clearInputElement} from "./Input.utils"; /** * This regex is based on the validation behind the type="email" validation of html. @@ -17,9 +17,9 @@ interface EmailInputProps extends Omit, "wrapperCompon export const emailValidation = (email: string) => EMAIL_REGEX.test(email) -export const EmailInput: React.ForwardRefExoticComponent = React.forwardRef((props, ref: RefObject) => { +export const EmailInput: React.ForwardRefExoticComponent = React.forwardRef((props, ref: RefObject) => { - ref = ref || React.useRef(null) + ref = ref || React.useRef(null) const { clearable = false, @@ -28,7 +28,7 @@ export const EmailInput: React.ForwardRefExoticComponent = Reac } = props const toClearable = () => { - if (ref.current) setElementKey(ref.current, "value", "", "change") + clearInputElement(ref.current) } const rightAction = [right] @@ -38,8 +38,8 @@ export const EmailInput: React.ForwardRefExoticComponent = Reac return } {...rest} /> -}) \ No newline at end of file +}) diff --git a/src/components/form/Input.selection.hook.ts b/src/components/form/Input.selection.hook.ts deleted file mode 100644 index 5854e800b..000000000 --- a/src/components/form/Input.selection.hook.ts +++ /dev/null @@ -1,134 +0,0 @@ -import React, {RefObject} from "react" - -import {getSelectionMetrics, setSelectionRangeSafe, useSyncSyntaxScroll} from "./Input.utils" -import {ResolvedVisualSelectionRange} from "./InputSyntax" -import {VisualizedInputSyntaxSegment} from "./Input.syntax.hook" -import {InputSuggestion} from "./InputSuggestion" - -export const useSelectionVisibility = ( - inputRef: RefObject, - syntaxRef: RefObject, -) => { - const ensureVisualIndexVisible = React.useCallback((visualIndex: number | null) => { - if (visualIndex === null) return - if (!inputRef.current || !syntaxRef.current) return - - const syntaxElement = syntaxRef.current - const roundedIndex = Math.round(visualIndex) - - const caretElement = syntaxElement.querySelector(`[data-visual-index="${roundedIndex}"]`) - - let offsetStart: number | null = null - let offsetEnd: number | null = null - - if (caretElement) { - offsetStart = caretElement.offsetLeft - offsetEnd = caretElement.offsetLeft + caretElement.offsetWidth - } else { - const segments = Array.from( - syntaxElement.querySelectorAll("[data-visual-start][data-visual-end]"), - ) - - const matchingSegment = segments.find((segment) => { - const segmentStart = Number(segment.dataset.visualStart) - const segmentEnd = Number(segment.dataset.visualEnd) - - return Number.isFinite(segmentStart) - && Number.isFinite(segmentEnd) - && roundedIndex >= segmentStart - && roundedIndex <= segmentEnd - }) - - if (matchingSegment) { - const segmentStart = Number(matchingSegment.dataset.visualStart) || 0 - const segmentEnd = Number(matchingSegment.dataset.visualEnd) || segmentStart - const segmentWidth = matchingSegment.offsetWidth - const ratio = segmentEnd === segmentStart - ? 0 - : (roundedIndex - segmentStart) / (segmentEnd - segmentStart) - - offsetStart = matchingSegment.offsetLeft + segmentWidth * ratio - offsetEnd = offsetStart - } - } - - if (offsetStart === null || offsetEnd === null) return - - const viewStart = syntaxElement.scrollLeft - const viewEnd = viewStart + syntaxElement.clientWidth - const padding = 8 - - let nextScrollLeft = viewStart - - if (offsetStart - padding < viewStart) { - nextScrollLeft = Math.max(offsetStart - padding, 0) - } else if (offsetEnd + padding > viewEnd) { - nextScrollLeft = Math.max(offsetEnd + padding - syntaxElement.clientWidth, 0) - } - - if (nextScrollLeft === viewStart) return - - inputRef.current.scrollLeft = nextScrollLeft - syntaxElement.scrollLeft = nextScrollLeft - }, [inputRef, syntaxRef]) - - const syncSyntaxScroll = useSyncSyntaxScroll(inputRef, syntaxRef) - - return {ensureVisualIndexVisible, syncSyntaxScroll} -} - -export const useSelectionNormalization = ( - transformSyntax: ( - (value: any, appliedSyntaxParts?: (InputSuggestion | any)[]) => any - ) | undefined, - expandSelectionRangeToBlockBoundaries: (rawStart: number, rawEnd: number) => {start: number, end: number, hasBlockOverlap: boolean}, -) => React.useCallback((target: HTMLInputElement) => { - if (!transformSyntax) return - - const {selectionStart, selectionEnd} = getSelectionMetrics(target) - if (selectionStart === selectionEnd) return - - const {start, end, hasBlockOverlap} = expandSelectionRangeToBlockBoundaries(selectionStart, selectionEnd) - - if (!hasBlockOverlap) return - if (start === selectionStart && end === selectionEnd) return - - setSelectionRangeSafe(target, start, end) -}, [expandSelectionRangeToBlockBoundaries, transformSyntax]) - -export const useSelectionResolution = ( - transformSyntax: ( - (value: any, appliedSyntaxParts?: (InputSuggestion | any)[]) => any - ) | undefined, - inputRef: RefObject, - visualSelectionRange: {start: number, end: number} | null, - visualizedSyntaxSegments: VisualizedInputSyntaxSegment[], - mapRawIndexToVisualIndex: (rawIndex: number) => number, -) => React.useMemo((): ResolvedVisualSelectionRange => { - if (!transformSyntax) return null - - const target = inputRef.current - if (!target) return visualSelectionRange - - const {rawStart, rawEnd} = getSelectionMetrics(target) - - if (rawStart === rawEnd) return null - - let visualStart = mapRawIndexToVisualIndex(rawStart) - let visualEnd = mapRawIndexToVisualIndex(rawEnd) - - visualizedSyntaxSegments.forEach((segment) => { - if (segment.type !== "block") return - - const overlaps = rawStart < segment.end && rawEnd > segment.start - if (!overlaps) return - - visualStart = Math.min(visualStart, segment.visualStart) - visualEnd = Math.max(visualEnd, segment.visualEnd) - }) - - const clampedStart = Math.min(visualStart, visualEnd) - const clampedEnd = Math.max(visualStart, visualEnd) - - return {start: clampedStart, end: clampedEnd} -}, [inputRef, mapRawIndexToVisualIndex, transformSyntax, visualSelectionRange, visualizedSyntaxSegments]) diff --git a/src/components/form/Input.style.scss b/src/components/form/Input.style.scss index fd543d63b..b54c3ac40 100644 --- a/src/components/form/Input.style.scss +++ b/src/components/form/Input.style.scss @@ -8,7 +8,7 @@ $padding: variables.$xs; display: flex; z-index: 1; - align-items: stretch; + align-items: center; box-sizing: border-box; & { @@ -19,7 +19,8 @@ @include helpers.borderRadius(); } - &:has(&__control:focus) { + &:has(&__control:focus), + &:has(&__control[contenteditable="true"]:focus) { @include box.boxActiveStyle(variables.$primary, variables.$white, variables.$white); } @@ -27,71 +28,6 @@ @include box.box(variables.$error, variables.$white, variables.$error); } - &__syntax { - position: absolute; - z-index: -1; - overflow: hidden; - font-size: variables.$sm; - color: rgba(variables.$white, .5); - white-space: pre; - padding: $padding $padding; - box-sizing: border-box; - top: 0; - left: 0; - width: 100%; - height: 100%; - display: flex; - align-items: center; - pointer-events: none; - user-select: none; - -webkit-user-select: none; - -moz-user-select: none; - - } - - &__syntax-caret { - display: inline-block; - width: 1px; - height: 1rem; - background: rgba(variables.$white, .7); - vertical-align: text-bottom; - animation: caret-blink 1s steps(1) infinite; - pointer-events: none; - } - - @keyframes caret-blink { - 0%, 50% { - opacity: 1; - } - - 50.01%, 100% { - opacity: 0; - } - } - - &__syntax-char { - pointer-events: none; - user-select: none; - -webkit-user-select: none; - -moz-user-select: none; - - &--selected { - background: rgba(variables.$white, .1); - padding: 4px 0; - } - } - - &__syntax-block { - user-select: none; - -webkit-user-select: none; - -moz-user-select: none; - - &--selected { - background: rgba(variables.$white, .1); - padding: 4px 0; - } - } - &__left, &__right { display: flex; align-items: stretch; @@ -104,9 +40,7 @@ padding-right: 0; } - &--action { - padding: 0; - } + &--action { padding: 0; } &--placeholder { @include box.box(variables.$primary); @@ -114,7 +48,6 @@ border-radius: variables.$borderRadius - ($padding / 4); padding: $padding; } - } &__left { @@ -137,7 +70,8 @@ background: none; border: none; outline: none; - padding: $padding $padding; + margin: $padding $padding; + vertical-align: middle; flex: 1; width: 100%; font-size: variables.$sm; @@ -147,28 +81,25 @@ & { @include helpers.fontStyle(); } - - &--syntax { - color: transparent; - caret-color: transparent; - - &::selection { - background: transparent; - } - } } + // Token spans inside the ContentEditable + &__token { + display: inline-flex; + align-items: center; + vertical-align: middle; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + } &__label { text-transform: uppercase; color: rgba(variables.$white, .5); font-size: variables.$xs; - //margin: $padding 0; display: block; - & { - @include helpers.fontStyle(); - } + & { @include helpers.fontStyle(); } } &__description { @@ -177,9 +108,7 @@ margin: calc($padding / 2) 0 $padding; display: block; - & { - @include helpers.fontStyle(); - } + & { @include helpers.fontStyle(); } } &__message { @@ -231,9 +160,7 @@ } } -.radio-group { - -} +.radio-group { } .radio-input { background: transparent !important; @@ -261,7 +188,6 @@ &[data-state="checked"] { @include box.boxActiveStyle(); } - } &__indicator { @@ -273,13 +199,9 @@ &[data-state="checked"] { background-color: variables.$info; - & { - @include helpers.borderRadius(); - } + & { @include helpers.borderRadius(); } } - } - } .radio-button { @@ -300,7 +222,6 @@ padding: $padding 0; &__button { - aspect-ratio: 1/1; width: variables.$xl; height: variables.$xl; @@ -320,7 +241,6 @@ &[data-state="checked"] { @include box.boxActiveStyle(variables.$info); } - } &__indicator { @@ -340,7 +260,6 @@ background: transparent !important; border: none !important; - .input__control { position: relative; @@ -367,7 +286,6 @@ } &:before { - & { @include box.box(variables.$info); position: absolute; @@ -375,7 +293,6 @@ height: $size + $padding; } } - } &:after { @@ -406,8 +323,5 @@ height: $size + $padding; } } - - } - } \ No newline at end of file diff --git a/src/components/form/Input.syntax.hook.ts b/src/components/form/Input.syntax.hook.ts index e075cf8ff..1a97bda20 100644 --- a/src/components/form/Input.syntax.hook.ts +++ b/src/components/form/Input.syntax.hook.ts @@ -1,148 +1,24 @@ import React from "react" -import {InputSuggestion} from "./InputSuggestion" - export type InputSyntaxSegment = { type: "text" | "block" + value?: any start: number end: number visualLength?: number content?: string | React.ReactNode } -export type VisualizedInputSyntaxSegment = InputSyntaxSegment & { - visualStart: number - visualEnd: number -} - export const buildDefaultSyntax = (value: any): InputSyntaxSegment[] => { const rawValue = value ?? "" const textValue = typeof rawValue === "string" ? rawValue : String(rawValue) return [{ type: "text", + value: textValue, start: 0, end: textValue.length, visualLength: textValue.length, content: textValue, }] } - -export const visualizeSyntaxSegments = ( - syntaxSegments: InputSyntaxSegment[], -): VisualizedInputSyntaxSegment[] => { - let visualStart = 0 - - return syntaxSegments.map((segment) => { - const nextSegment: VisualizedInputSyntaxSegment = { - ...segment, - visualStart, - visualEnd: visualStart + (segment?.visualLength ?? 0), - } - - visualStart = nextSegment.visualEnd - - return nextSegment - }) -} - -const clamp = (value: number, min: number, max: number) => Math.max(min, Math.min(value, max)) - -export const useSyntaxModel = ( - value: any, - transformSyntax: ( - (value: any, appliedSyntaxParts?: (InputSuggestion | any)[]) => InputSyntaxSegment[] - ) | undefined, - inputRef: React.RefObject, - appliedSyntaxParts?: (InputSuggestion | any)[], -) => { - const syntaxSegments = React.useMemo(() => { - if (transformSyntax) { - const segments = transformSyntax(value, appliedSyntaxParts) - if (segments?.length) return segments - } - - return buildDefaultSyntax(value) - }, [appliedSyntaxParts, transformSyntax, value]) - - const visualizedSyntaxSegments = React.useMemo( - () => visualizeSyntaxSegments(syntaxSegments), - [syntaxSegments], - ) - - const expandSelectionRangeToBlockBoundaries = React.useCallback((rawStart: number, rawEnd: number) => { - let adjustedStart = Math.min(rawStart, rawEnd) - let adjustedEnd = Math.max(rawStart, rawEnd) - let hasBlockOverlap = false - - visualizedSyntaxSegments.forEach((segment) => { - if (segment.type !== "block") return - - const overlaps = adjustedStart < segment.end && adjustedEnd > segment.start - if (!overlaps) return - - adjustedStart = Math.min(adjustedStart, segment.start) - adjustedEnd = Math.max(adjustedEnd, segment.end) - hasBlockOverlap = true - }) - - return {start: adjustedStart, end: adjustedEnd, hasBlockOverlap} - }, [visualizedSyntaxSegments]) - - const mapVisualIndexToRawIndex = React.useCallback((visualIndex: number): number => { - const segment = visualizedSyntaxSegments.find((item) => visualIndex >= item.visualStart && visualIndex <= item.visualEnd) - if (!segment) { - const inputLength = inputRef.current?.value.length ?? 0 - return clamp(visualIndex, 0, inputLength) - } - - const rawLength = segment.end - segment.start - const clampedVisual = clamp(visualIndex - segment.visualStart, 0, (segment?.visualLength ?? 0)) - - if (rawLength <= 0) return segment.start - if (segment.type === "text") { - return Math.min(segment.start + Math.round(clampedVisual), segment.end) - } - - if ((segment?.visualLength ?? 0) <= 0) return segment.start - - const ratio = clampedVisual / (segment?.visualLength ?? 0) - return Math.round(segment.start + ratio * rawLength) - }, [inputRef, visualizedSyntaxSegments]) - - const mapRawIndexToVisualIndex = React.useCallback((rawIndex: number): number => { - const segment = visualizedSyntaxSegments.find((item) => rawIndex >= item.start && rawIndex <= item.end) - - if (!segment) { - const inputLength = inputRef.current?.value.length ?? 0 - return clamp(rawIndex, 0, inputLength) - } - - const rawLength = segment.end - segment.start - const clampedRaw = clamp(rawIndex - segment.start, 0, rawLength) - - if (rawLength <= 0) return segment.visualStart - if (segment.type === "text") { - return Math.min(segment.visualStart + clampedRaw, segment.visualEnd) - } - - if ((segment?.visualLength ?? 0) <= 0) return segment.visualStart - - const ratio = clampedRaw / rawLength - return Math.min(segment.visualStart + ratio * (segment?.visualLength ?? 0), segment.visualEnd) - }, [inputRef, visualizedSyntaxSegments]) - - const totalVisualLength = React.useMemo(() => { - const lastSegment = visualizedSyntaxSegments[visualizedSyntaxSegments.length - 1] - return lastSegment ? lastSegment.visualEnd : 0 - }, [visualizedSyntaxSegments]) - - return { - syntaxSegments, - visualizedSyntaxSegments, - expandSelectionRangeToBlockBoundaries, - mapVisualIndexToRawIndex, - mapRawIndexToVisualIndex, - totalVisualLength, - } -} diff --git a/src/components/form/Input.tsx b/src/components/form/Input.tsx index 00d43f82b..0c7f74f83 100644 --- a/src/components/form/Input.tsx +++ b/src/components/form/Input.tsx @@ -8,6 +8,7 @@ */ import React, {LegacyRef, RefObject, useEffect, useMemo, useRef, useState} from "react" +import ContentEditable from "react-contenteditable" import {Code0Component, mergeCode0Props} from "../../utils" import {ValidationProps} from "./useForm" @@ -25,11 +26,12 @@ import { InputSuggestionMenuContentItems, InputSuggestionMenuContentItemsHandle, } from "./InputSuggestion" -import {InputSyntax, ResolvedVisualSelectionRange} from "./InputSyntax" -import {InputSyntaxSegment, useSyntaxModel} from "./Input.syntax.hook" -import {useSelectionNormalization, useSelectionResolution, useSelectionVisibility} from "./Input.selection.hook" + +import {InputSyntaxSegment} from "./Input.syntax.hook" import {getSelectionMetrics, setElementKey, setSelectionRangeSafe} from "./Input.utils" -import {Card} from "../card/Card"; +import {Card} from "../card/Card" + +import {useContentEditableController} from "./InputContentEditable.hook" export type Code0Input = Omit< Omit, "left">, "right">, @@ -37,13 +39,12 @@ export type Code0Input = Omit< > export interface InputProps extends Code0Input, ValidationProps { - suggestions?: InputSuggestion[] suggestionsHeader?: React.ReactNode suggestionsFooter?: React.ReactNode onSuggestionSelect?: (suggestion: InputSuggestion) => void transformSyntax?: (value: T, appliedSyntaxParts?: (InputSuggestion | any)[]) => InputSyntaxSegment[] - validationUsesSuggestions?: boolean + validationUsesSyntax?: boolean disableOnValue?: (value: T) => boolean filterSuggestionsByLastToken?: boolean onLastTokenChange?: (token: string | null) => void @@ -57,9 +58,10 @@ export interface InputProps extends Code0Input, ValidationProps { rightType?: "action" | "placeholder" | "icon" title?: React.ReactNode description?: React.ReactNode - } +export type InputElement = HTMLInputElement | HTMLDivElement + export type InputActiveSuggestionSpan = { id: number suggestion: InputSuggestion @@ -68,8 +70,36 @@ export type InputActiveSuggestionSpan = { end: number } -const InputComponent = React.forwardRef>( - (props: InputProps, ref: RefObject) => { +const normalizeTextValue = (rawValue: any): string => { + const normalized = rawValue ?? "" + return typeof normalized === "string" ? normalized : String(normalized) +} + +const normalizeTokenValue = (value: any) => { + if (value === undefined || value === null) return "" + if (typeof value === "string") return value + try { + return JSON.stringify(value) + } catch { + return String(value ?? "") + } +} + +const getLastTokenBeforeCaretInInput = (inputEl: HTMLInputElement | null) => { + if (!inputEl) return null + const value = inputEl.value ?? "" + const caret = inputEl.selectionStart ?? value.length + const textBeforeCaret = value.slice(0, caret) + const match = textBeforeCaret.match(/\S+$/) + if (!match || match.index === undefined) return null + const token = match[0] + const start = match.index + const end = start + token.length + return {token, start, end} +} + +const InputComponent = React.forwardRef>( + (props: InputProps, ref: React.Ref) => { const { wrapperComponent = {}, title, @@ -86,7 +116,7 @@ const InputComponent = React.forwardRef>( onSuggestionSelect, disableOnValue = () => false, transformSyntax, - validationUsesSuggestions = false, + validationUsesSyntax = false, filterSuggestionsByLastToken = false, enforceUniqueSuggestions = false, onLastTokenChange, @@ -104,884 +134,624 @@ const InputComponent = React.forwardRef>( ...inputProps } = rest - const inputRef = ref || useRef(null) + const wrapperRef = useRef(null) + const inputRef = useRef(null) + const editorRef = useRef(null as any) + const menuRef = useRef(null) - const syntaxRef = useRef(null) - const shouldPreventCloseRef = useRef(true) - const selectionAnchorRef = useRef(null) + const menuContentRef = useRef(null) + + const shouldPreventCloseRef = useRef(false) const suggestionIdRef = useRef(0) - const activeSuggestionsRef = useRef([]) const lastValidationValueRef = useRef(null) + const externalValue = inputProps.value ?? props.initialValue ?? props.defaultValue + const [open, setOpen] = useState(false) - const [value, setValue] = useState(props.defaultValue || props.initialValue) + const openRef = useRef(false) + const setOpenSafe = React.useCallback((next: boolean) => { + openRef.current = next + setOpen(next) + }, []) + + const [value, setValue] = useState(externalValue) const [activeSuggestionSpans, setActiveSuggestionSpans] = useState([]) const [activeSuggestions, setActiveSuggestions] = useState([]) - const [visualSelectionRange, setVisualSelectionRange] = useState<{ start: number, end: number } | null>(null) - const [visualCaretIndex, setVisualCaretIndex] = useState(null) - const [isFocused, setIsFocused] = useState(false) + const [lastTokenBeforeCaret, setLastTokenBeforeCaret] = useState(null) + const [syntaxSegments, setSyntaxSegments] = useState(null) + + const isSyntaxMode = Boolean(transformSyntax) + const disabledOnValue = useMemo(() => disableOnValue(value), [disableOnValue, value]) + const activeControlRef = useMemo( + () => (isSyntaxMode ? (editorRef as any) : inputRef) as RefObject, + [isSyntaxMode], + ) - const disabledOnValue = React.useMemo(() => disableOnValue(value), [value, disableOnValue]) + React.useImperativeHandle(ref, () => activeControlRef.current ?? null, [activeControlRef]) - const mergedInputProps = React.useMemo( + const mergedInputProps = useMemo( () => ({...inputProps, onChange: userOnChange, onInput: userOnInput}), [inputProps, userOnChange, userOnInput], ) - const normalizeTextValue = React.useCallback((rawValue: any): string => { - const normalized = rawValue ?? "" - return typeof normalized === "string" ? normalized : String(normalized) - }, []) - - const findClosestOccurrence = React.useCallback((text: string, targetIndex: number, currentValue: string): number | null => { - if (text.length === 0) return targetIndex <= currentValue.length ? targetIndex : null - - let closestIndex = currentValue.indexOf(text) - if (closestIndex === -1) return null - - let searchIndex = closestIndex - while (searchIndex !== -1) { - if (Math.abs(searchIndex - targetIndex) < Math.abs(closestIndex - targetIndex)) { - closestIndex = searchIndex - } - searchIndex = currentValue.indexOf(text, searchIndex + 1) - } - - return closestIndex - }, []) - - const reconcileSuggestionSpans = React.useCallback((spans: InputActiveSuggestionSpan[], currentValue: string) => { - const nextSpans: InputActiveSuggestionSpan[] = [] + const mergedEditableProps = useMemo(() => { + const {value: _value, defaultValue: _defaultValue, ...restProps} = inputProps as Record + return mergeCode0Props("input__control", restProps) + }, [inputProps]) + + const focusControl = React.useCallback(() => { + const target = activeControlRef.current + if (!target || disabled || disabledOnValue) return + target.focus({preventScroll: true}) + }, [activeControlRef, disabled, disabledOnValue]) + + const openIfSuggestions = React.useCallback(() => { + if (suggestions) setOpenSafe(true) + }, [suggestions, setOpenSafe]) + + const updateLastTokenState = React.useCallback( + (token: string | null) => { + if (!filterSuggestionsByLastToken) return + setLastTokenBeforeCaret(token) + if (token) setOpenSafe(true) + onLastTokenChange?.(token) + }, + [filterSuggestionsByLastToken, onLastTokenChange, setOpenSafe], + ) - spans.forEach((span) => { - const nextStart = findClosestOccurrence(span.text, span.start, currentValue) - if (nextStart === null) return + const syncValidationValue = React.useCallback( + (currentValue: any, currentSegments: InputSyntaxSegment[] | null) => { + if (!formValidation?.setValue) return - const nextEnd = nextStart + span.text.length - const candidateSlice = currentValue.slice(nextStart, nextEnd) + const currentValueNormalized = inputProps.type !== "checkbox" ? normalizeTextValue(currentValue) : currentValue + const validationValue = validationUsesSyntax ? currentSegments : currentValueNormalized - if (candidateSlice !== span.text) return + if (Object.is(lastValidationValueRef.current, validationValue)) return + lastValidationValueRef.current = validationValue + formValidation.setValue(validationValue) + }, + [formValidation?.setValue, inputProps.type, validationUsesSyntax], + ) - nextSpans.push({...span, start: nextStart, end: nextEnd}) - }) + const contentEditable = useContentEditableController({ + editorRef, + transformSyntax: transformSyntax as any, + filterSuggestionsByLastToken, + onLastTokenChange: updateLastTokenState, + onStateChange: ({value: nextValue, tokens, segments}) => { + setValue(nextValue) + setActiveSuggestions(tokens) + setSyntaxSegments(segments ?? null) + syncValidationValue(nextValue, segments ?? null) + }, + }) + + /** + * ✅ FIX: ContentEditable has no defaultValue; init once, never re-init while typing + * (prevents "1ms visible then disappears") + */ + const didInitSyntaxRef = useRef(false) + useEffect(() => { + if (!isSyntaxMode || !transformSyntax) return + if (didInitSyntaxRef.current) return + + const nextValue = normalizeTextValue(externalValue) + setValue(nextValue) + contentEditable.initializeFromExternalValue(nextValue) + if (validationUsesSyntax && transformSyntax) { + setSyntaxSegments(transformSyntax(nextValue as any, [])) + } - return nextSpans - }, [findClosestOccurrence]) + didInitSyntaxRef.current = true + }, [isSyntaxMode, transformSyntax, externalValue, validationUsesSyntax, contentEditable]) + /** + * Controlled sync for plain input only + */ useEffect(() => { - activeSuggestionsRef.current = activeSuggestions - }, [activeSuggestions]) - + if (isSyntaxMode) return + if (inputProps.value === undefined) return + setValue(inputProps.value) + }, [inputProps.value, isSyntaxMode]) + + /** + * Validation sync + */ useEffect(() => { - const el = inputRef.current - if (!el || !formValidation?.setValue) return - - const handleChange = (event: any) => { - const nextValue = inputProps.type !== "checkbox" ? event.target.value : event.target.checked - const validationValue = validationUsesSuggestions ? activeSuggestionsRef.current : nextValue - formValidation.setValue?.(validationValue) - } - - el.addEventListener("change", handleChange) - return () => el.removeEventListener("change", handleChange) - }, [formValidation?.setValue, inputProps.type, inputRef, validationUsesSuggestions]) + syncValidationValue(value, syntaxSegments) + }, [syncValidationValue, syntaxSegments, value]) + // GLOBAL pointerdown capture: keep open when clicking inside, otherwise close immediately useEffect(() => { if (!suggestions) return - const handlePointerDown = (event: PointerEvent) => { + const onPointerDownCapture = (event: PointerEvent) => { const target = event.target as Node + const insideEditor = !!editorRef.current?.contains(target) const insideInput = !!inputRef.current?.contains(target) - const insideSyntax = !!syntaxRef.current?.contains(target) + const insideMenu = !!menuContentRef.current?.contains(target) + const insideWrapper = !!wrapperRef.current?.contains(target) + + const inside = insideEditor || insideInput || insideMenu || insideWrapper + shouldPreventCloseRef.current = inside - shouldPreventCloseRef.current = insideInput || insideSyntax + // ✅ THIS is the important part: if click is outside, close NOW (not via blur) + if (!inside && openRef.current) setOpenSafe(false) } - document.addEventListener("pointerdown", handlePointerDown, true) - return () => document.removeEventListener("pointerdown", handlePointerDown, true) - }, [inputRef, suggestions]) + document.addEventListener("pointerdown", onPointerDownCapture, true) + return () => document.removeEventListener("pointerdown", onPointerDownCapture, true) + }, [suggestions, setOpenSafe]) useEffect(() => { - const target = inputRef.current - if (!target) return - - const syncValue = (e: any) => { - if (disabledOnValue) return - setValue(e.target.value) - } - - target.addEventListener("change", syncValue) - target.addEventListener("input", syncValue) + const wrapperEl = wrapperRef.current + if (!wrapperEl) return + + const handleFocusIn = () => openIfSuggestions() + wrapperEl.addEventListener("focusin", handleFocusIn) + + return () => wrapperEl.removeEventListener("focusin", handleFocusIn) + }, [openIfSuggestions]) + + /** + * ========================= + * Suggestions / filtering + * ========================= + */ + const findClosestOccurrence = React.useCallback( + (text: string, targetIndex: number, currentValue: string): number | null => { + if (text.length === 0) return targetIndex <= currentValue.length ? targetIndex : null + let closestIndex = currentValue.indexOf(text) + if (closestIndex === -1) return null + let searchIndex = closestIndex + while (searchIndex !== -1) { + if (Math.abs(searchIndex - targetIndex) < Math.abs(closestIndex - targetIndex)) closestIndex = searchIndex + searchIndex = currentValue.indexOf(text, searchIndex + 1) + } + return closestIndex + }, + [], + ) - return () => { - target.removeEventListener("change", syncValue) - target.removeEventListener("input", syncValue) - } - }, [disabledOnValue, inputRef]) + const reconcileSuggestionSpans = React.useCallback( + (spans: InputActiveSuggestionSpan[], currentValue: string) => { + const nextSpans: InputActiveSuggestionSpan[] = [] + spans.forEach((span) => { + const nextStart = findClosestOccurrence(span.text, span.start, currentValue) + if (nextStart === null) return + const nextEnd = nextStart + span.text.length + if (currentValue.slice(nextStart, nextEnd) !== span.text) return + nextSpans.push({...span, start: nextStart, end: nextEnd}) + }) + return nextSpans + }, + [findClosestOccurrence], + ) useEffect(() => { + if (isSyntaxMode) return const currentValue = normalizeTextValue(inputRef.current?.value ?? value) - setActiveSuggestionSpans((prev) => { const nextSpans = reconcileSuggestionSpans(prev, currentValue) - setActiveSuggestions(nextSpans.map((item) => item.suggestion)) + setActiveSuggestions(nextSpans.map((s) => s.suggestion)) return nextSpans }) - }, [normalizeTextValue, reconcileSuggestionSpans, value]) - - const buildAppliedSyntaxParts = React.useCallback(( - rawValue: any, - spans: InputActiveSuggestionSpan[], - ): (InputSuggestion | any)[] => { - const textValue = normalizeTextValue(rawValue) - const sortedSpans = [...spans].sort((a, b) => a.start - b.start) - - const parts: (InputSuggestion | string)[] = [] - let cursor = 0 - - sortedSpans.forEach((span) => { - if (span.start < cursor) return - - const clampedEnd = Math.min(span.end, textValue.length) - - if (cursor < span.start) { - parts.push(textValue.slice(cursor, span.start)) - } - - const suggestionValue = span.suggestion?.value ?? span.text ?? "" - const suggestionText = suggestionValue === undefined || suggestionValue === null - ? "" - : String(suggestionValue) - const spanLength = Math.max(clampedEnd - span.start, suggestionText.length) - - if (spanLength > 0) { - parts.push(span.suggestion) - cursor = span.start + spanLength - } else { - cursor = span.start - } - }) - - if (cursor < textValue.length) { - parts.push(textValue.slice(cursor)) - } - - return parts.length ? parts : [textValue] - }, [normalizeTextValue]) + }, [isSyntaxMode, reconcileSuggestionSpans, value]) useEffect(() => { - if (!formValidation?.setValue) return - - const currentValue = inputProps.type !== "checkbox" - ? normalizeTextValue(inputRef.current?.value ?? value) - : value + if (!filterSuggestionsByLastToken || isSyntaxMode) return - const validationValue = validationUsesSuggestions - ? activeSuggestions - : currentValue - - if (Object.is(lastValidationValueRef.current, validationValue)) return - - lastValidationValueRef.current = validationValue - formValidation.setValue(validationValue) - }, [activeSuggestions, formValidation?.setValue, inputProps.type, inputRef, normalizeTextValue, validationUsesSuggestions, value]) - - const focusInputCaretAtEnd = React.useCallback(() => { - setTimeout(() => { - const target = inputRef.current - if (!target) return - - target.focus({preventScroll: true}) - const caretPosition = target.value.length - - setSelectionRangeSafe(target, caretPosition, caretPosition) - - target.scrollLeft = target.scrollWidth - }, 0) - }, [inputRef]) - - const appliedSyntaxParts = React.useMemo( - () => buildAppliedSyntaxParts(value, activeSuggestionSpans), - [activeSuggestionSpans, buildAppliedSyntaxParts, value], - ) - - const transformSyntaxWithAppliedParts = React.useMemo(() => { - if (!transformSyntax) return undefined - - return (nextValue: any, nextParts: (InputSuggestion | any)[] = appliedSyntaxParts) => - transformSyntax(nextValue, nextParts) - }, [appliedSyntaxParts, transformSyntax]) - - const { - syntaxSegments, - visualizedSyntaxSegments, - expandSelectionRangeToBlockBoundaries, - mapVisualIndexToRawIndex, - mapRawIndexToVisualIndex, - totalVisualLength, - } = useSyntaxModel(value, transformSyntaxWithAppliedParts, inputRef, appliedSyntaxParts) - - const trailingTextTokenData = React.useMemo(() => { - const currentValue = normalizeTextValue(inputRef.current?.value ?? value) - if (!filterSuggestionsByLastToken) return null - if (!syntaxSegments?.length) return null - - const trailingTextSegment = [...syntaxSegments] - .reverse() - .find((segment) => segment?.type === "text" && segment?.end === currentValue.length) - - if (!trailingTextSegment) return null - - const rawTrailingText = currentValue.slice(trailingTextSegment.start, trailingTextSegment.end) - const trimmed = rawTrailingText.trim() - if (!trimmed.length) return null + const target = inputRef.current + if (!target) return - const trailingParts = trimmed.split(/\s+/) - const trailingToken = trailingParts[trailingParts.length - 1]?.trim() - if (!trailingToken) return null + const updateToken = () => updateLastTokenState(getLastTokenBeforeCaretInInput(target)?.token ?? null) - const leadingWhitespace = rawTrailingText.search(/\S/) - const leadingOffset = leadingWhitespace === -1 ? 0 : leadingWhitespace - const lastTokenIndexInTrimmed = trimmed.lastIndexOf(trailingToken) - const tokenStart = trailingTextSegment.start + leadingOffset + lastTokenIndexInTrimmed - const tokenEnd = tokenStart + trailingToken.length + target.addEventListener("input", updateToken) + target.addEventListener("keyup", updateToken) + target.addEventListener("mouseup", updateToken) + updateToken() - return { - token: trailingToken, - start: tokenStart, - end: tokenEnd, + return () => { + target.removeEventListener("input", updateToken) + target.removeEventListener("keyup", updateToken) + target.removeEventListener("mouseup", updateToken) } - }, [filterSuggestionsByLastToken, inputRef, normalizeTextValue, syntaxSegments, value]) - - useEffect(() => { - if (!filterSuggestionsByLastToken) return - if (!onLastTokenChange) return - trailingTextTokenData?.token && setOpen(true) - onLastTokenChange(trailingTextTokenData?.token ?? null) - }, [filterSuggestionsByLastToken, onLastTokenChange, trailingTextTokenData?.token]) + }, [filterSuggestionsByLastToken, isSyntaxMode, updateLastTokenState]) - const filteredSuggestions = React.useMemo(() => { + const filteredSuggestions = useMemo(() => { if (!filterSuggestionsByLastToken) return suggestions if (!suggestions) return suggestions - const normalizedToken = trailingTextTokenData?.token?.trim() - if (!normalizedToken?.length) return suggestions + const token = lastTokenBeforeCaret?.trim() + if (!token?.length) return suggestions - return suggestions.filter((suggestion) => { - const suggestionValue = suggestion?.value ?? "" - const suggestionText = suggestionValue === undefined || suggestionValue === null - ? "" - : String(suggestionValue) + return suggestions.filter((s) => String(s?.value ?? "").toLowerCase().startsWith(token.toLowerCase())) + }, [filterSuggestionsByLastToken, lastTokenBeforeCaret, suggestions]) - return suggestionText.toLowerCase().startsWith(normalizedToken.toLowerCase()) - }) - }, [filterSuggestionsByLastToken, trailingTextTokenData?.token, suggestions]) - - const availableSuggestions = React.useMemo(() => { + const availableSuggestions = useMemo(() => { if (!enforceUniqueSuggestions) return filteredSuggestions if (!filteredSuggestions) return filteredSuggestions - const activeSet = new Set(activeSuggestionSpans.map((span) => span.suggestion)) - - return filteredSuggestions.filter((suggestion) => !activeSet.has(suggestion)) - }, [activeSuggestionSpans, enforceUniqueSuggestions, filteredSuggestions]) - - const {ensureVisualIndexVisible, syncSyntaxScroll} = useSelectionVisibility(inputRef, syntaxRef) - - const normalizeSelectionForAtomicBlocks = useSelectionNormalization( - transformSyntaxWithAppliedParts, - expandSelectionRangeToBlockBoundaries, - ) - - const updateVisualSelectionRange = React.useCallback(() => { - if (!transformSyntaxWithAppliedParts) return - - const target = inputRef.current - if (!target) return - - const {rawStart, rawEnd} = getSelectionMetrics(target) - - const blockAtCaret = visualizedSyntaxSegments.find((segment) => { - if (segment?.type !== "block") return false - return rawStart > segment?.start && rawStart < segment?.end - }) - - if (blockAtCaret && rawStart === rawEnd) { - const distanceToStart = rawStart - blockAtCaret.start - const distanceToEnd = blockAtCaret.end - rawStart - const snapRawIndex = distanceToStart <= distanceToEnd ? blockAtCaret.start : blockAtCaret.end - - setSelectionRangeSafe(target, snapRawIndex, snapRawIndex) - - const caretVisualIndex = snapRawIndex === blockAtCaret.start - ? blockAtCaret.visualStart - : blockAtCaret.visualEnd - - setVisualSelectionRange(null) - setVisualCaretIndex(caretVisualIndex) - requestAnimationFrame(() => { - syncSyntaxScroll() - ensureVisualIndexVisible(caretVisualIndex) - }) - return + if (isSyntaxMode) { + const activeKeys = new Set((activeSuggestions ?? []).map((s) => normalizeTokenValue((s as any)?.value ?? s))) + return filteredSuggestions.filter((s) => !activeKeys.has(normalizeTokenValue(s?.value ?? s))) } - if (rawStart === rawEnd) { - const caretVisualIndex = Math.round(mapRawIndexToVisualIndex(rawStart)) + const activeSet = new Set(activeSuggestionSpans.map((span) => span.suggestion)) + return filteredSuggestions.filter((s) => !activeSet.has(s)) + }, [activeSuggestionSpans, activeSuggestions, enforceUniqueSuggestions, filteredSuggestions, isSyntaxMode]) + + /** + * ========================= + * Apply suggestions (plain) + * ========================= + */ + const applySuggestionValuePlain = React.useCallback( + (suggestion: InputSuggestion) => { + if (!inputRef.current) return + + const suggestionRaw = typeof value == "object" ? JSON.stringify(suggestion.value) : suggestion.value + const suggestionValue = suggestionRaw === undefined || suggestionRaw === null ? "" : String(suggestionRaw) + const insertMode = suggestion.insertMode ?? "replace" + const currentValue = inputRef.current.value ?? "" + + let nextValue = currentValue + let nextCaretPosition: number | null = null + let insertionStart = 0 + + const tokenMatch = filterSuggestionsByLastToken ? getLastTokenBeforeCaretInInput(inputRef.current) : null + if (filterSuggestionsByLastToken && tokenMatch) { + nextValue = `${currentValue.slice(0, tokenMatch.start)}${suggestionValue}${currentValue.slice(tokenMatch.end)}` + nextCaretPosition = tokenMatch.start + suggestionValue.length + insertionStart = tokenMatch.start + } else { + switch (insertMode) { + case "append": + nextValue = `${currentValue}${suggestionValue}` + nextCaretPosition = nextValue.length + insertionStart = currentValue.length + break + case "prepend": + nextValue = `${suggestionValue}${currentValue}` + nextCaretPosition = suggestionValue.length + insertionStart = 0 + break + case "insert": { + const {rawStart, rawEnd} = getSelectionMetrics(inputRef.current) + nextValue = `${currentValue.slice(0, rawStart)}${suggestionValue}${currentValue.slice(rawEnd)}` + nextCaretPosition = rawStart + suggestionValue.length + insertionStart = rawStart + break + } + case "replace": + default: + nextValue = suggestionValue + nextCaretPosition = suggestionValue.length + insertionStart = 0 + break + } + } - setVisualSelectionRange(null) - setVisualCaretIndex(Number.isFinite(caretVisualIndex) ? caretVisualIndex : null) - requestAnimationFrame(() => { - syncSyntaxScroll() - ensureVisualIndexVisible(caretVisualIndex) + setElementKey(inputRef.current, "value", nextValue, "change") + + setActiveSuggestionSpans((prev) => { + const nextTextValue = normalizeTextValue(nextValue) + const reconciledSpans = reconcileSuggestionSpans(prev, nextTextValue) + const nextSpan: InputActiveSuggestionSpan | null = suggestionValue.length + ? { + id: suggestionIdRef.current++, + suggestion, + text: suggestionValue, + start: insertionStart, + end: insertionStart + suggestionValue.length, + } + : null + + const updated = nextSpan ? [...reconciledSpans, nextSpan] : reconciledSpans + setActiveSuggestions(updated.map((i) => i.suggestion)) + return updated }) - return - } - - let visualStart = mapRawIndexToVisualIndex(rawStart) - let visualEnd = mapRawIndexToVisualIndex(rawEnd) - - visualizedSyntaxSegments.forEach((segment) => { - if (segment?.type !== "block") return - const overlaps = rawStart < segment?.end && rawEnd > segment?.start - if (!overlaps) return - - visualStart = Math.min(visualStart, segment?.visualStart) - visualEnd = Math.max(visualEnd, segment?.visualEnd) - }) - - const clampedStart = Math.min(visualStart, visualEnd) - const clampedEnd = Math.max(visualStart, visualEnd) - - setVisualCaretIndex(null) - setVisualSelectionRange({ - start: clampedStart, - end: clampedEnd, - }) - const selectionDirection = target.selectionDirection === "backward" ? "backward" : "forward" - const activeBoundary = selectionDirection === "backward" ? clampedStart : clampedEnd - - requestAnimationFrame(() => { - syncSyntaxScroll() - ensureVisualIndexVisible(activeBoundary) - }) - }, [ensureVisualIndexVisible, inputRef, mapRawIndexToVisualIndex, syncSyntaxScroll, transformSyntaxWithAppliedParts, visualizedSyntaxSegments]) - - const resolvedVisualSelectionRange: ResolvedVisualSelectionRange = useSelectionResolution( - transformSyntaxWithAppliedParts, - inputRef, - visualSelectionRange, - visualizedSyntaxSegments, - mapRawIndexToVisualIndex, + if (nextCaretPosition !== null) { + requestAnimationFrame(() => { + const target = inputRef.current + if (!target) return + target.focus({preventScroll: true}) + setSelectionRangeSafe(target, nextCaretPosition, nextCaretPosition) + }) + } + }, + [filterSuggestionsByLastToken, reconcileSuggestionSpans, value], ) - const resolveRawIndexFromElement = React.useCallback((element: HTMLElement | null): number | null => { - if (!element) return null - - const rawIndexAttr = element.dataset.rawIndex - const visualIndexAttr = element.dataset.visualIndex || element.dataset.visualStart || element.dataset.visualEnd - - const rawIndexFromData = rawIndexAttr ? Number(rawIndexAttr) : undefined - const visualIndexFromData = visualIndexAttr ? Number(visualIndexAttr) : undefined - - if (!Number.isNaN(rawIndexFromData as number) && rawIndexFromData !== undefined) { - return rawIndexFromData - } - - if (visualIndexFromData !== undefined) { - return mapVisualIndexToRawIndex(visualIndexFromData) - } - - return null - }, [mapVisualIndexToRawIndex]) - - const resolveRawIndexFromPointerEvent = React.useCallback((event: React.PointerEvent) => { - const element = document.elementFromPoint(event.clientX, event.clientY) as HTMLElement | null - return resolveRawIndexFromElement(element ?? (event.target as HTMLElement | null)) - }, [resolveRawIndexFromElement]) - - const handleSyntaxPointerDown = React.useCallback((event: React.PointerEvent) => { - if (!inputRef.current) return - - const mappedRawIndex = resolveRawIndexFromPointerEvent(event) - - if (mappedRawIndex === null || Number.isNaN(mappedRawIndex)) return - - event.preventDefault() - shouldPreventCloseRef.current = true - - const clampedIndex = Math.min(Math.max(mappedRawIndex, 0), inputRef.current.value.length) - const {selectionStart} = getSelectionMetrics(inputRef.current) - const anchorIndex = event.shiftKey - ? (Number.isFinite(selectionStart) ? selectionStart : clampedIndex) - : clampedIndex - - selectionAnchorRef.current = anchorIndex - - inputRef.current.focus({preventScroll: true}) - setSelectionRangeSafe(inputRef.current, anchorIndex, clampedIndex) - - syntaxRef.current?.setPointerCapture(event.pointerId) - updateVisualSelectionRange() - }, [inputRef, resolveRawIndexFromPointerEvent, updateVisualSelectionRange]) - - const handleSyntaxPointerMove = React.useCallback((event: React.PointerEvent) => { - if (!inputRef.current) return - if (selectionAnchorRef.current === null) return - if (!(event.buttons & 1)) { - selectionAnchorRef.current = null - return - } - - const mappedRawIndex = resolveRawIndexFromPointerEvent(event) - if (mappedRawIndex === null || Number.isNaN(mappedRawIndex)) return - - event.preventDefault() - const anchorIndex = selectionAnchorRef.current - const clampedIndex = Math.min(Math.max(mappedRawIndex, 0), inputRef.current.value.length) - - inputRef.current.focus({preventScroll: true}) - setSelectionRangeSafe(inputRef.current, anchorIndex, clampedIndex) - - updateVisualSelectionRange() - }, [inputRef, resolveRawIndexFromPointerEvent, updateVisualSelectionRange]) - - const handleSyntaxPointerUp = React.useCallback(() => { - selectionAnchorRef.current = null - }, []) - - const handleAtomicDeletion = React.useCallback((event: React.KeyboardEvent): boolean => { - if (!transformSyntaxWithAppliedParts) return false - - const target = event.target as HTMLInputElement - const {rawStart, rawEnd} = getSelectionMetrics(target) - - const removeRange = (start: number, end: number) => { - if (start === end) return false - - event.preventDefault() - const nextValue = `${target.value.slice(0, start)}${target.value.slice(end)}` + const handleSuggestionSelect = React.useCallback( + (suggestion: InputSuggestion) => { + if (isSyntaxMode) contentEditable.applySuggestionValueSyntax(suggestion) + else applySuggestionValuePlain(suggestion) + + onSuggestionSelect?.(suggestion) + + if (isSyntaxMode) { + const target = activeControlRef.current + // React won't fire onChange/onInput for contentEditable tokens; emulate it + requestAnimationFrame(() => { + if (!target) return + const synthetic = {type: "change", target, currentTarget: target} as any + target.dispatchEvent(new Event("input", {bubbles: true})) + userOnInput?.(synthetic) + userOnChange?.(synthetic) + }) + } - setElementKey(target, "value", nextValue, "input") + setOpenSafe(false) + shouldPreventCloseRef.current = false requestAnimationFrame(() => { - setSelectionRangeSafe(target, start, start) - - updateVisualSelectionRange() + focusControl() }) + }, + [activeControlRef, applySuggestionValuePlain, contentEditable, focusControl, isSyntaxMode, onSuggestionSelect, setOpenSafe, userOnChange, userOnInput], + ) - return true - } - - if (rawStart !== rawEnd) { - const {start, end, hasBlockOverlap} = expandSelectionRangeToBlockBoundaries(rawStart, rawEnd) - - if (!hasBlockOverlap) return false - - return removeRange(start, end) - } - - const blockBeforeCaret = visualizedSyntaxSegments.find((segment) => { - if (segment?.type !== "block") return false - return rawStart === segment?.end || (rawStart > segment?.start && rawStart < segment?.end) - }) - - if (event.key === "Backspace" && blockBeforeCaret) { - return removeRange(blockBeforeCaret.start, blockBeforeCaret.end) - } - - const blockAfterCaret = visualizedSyntaxSegments.find((segment) => { - if (segment?.type !== "block") return false - return rawStart === segment?.start || (rawStart > segment?.start && rawStart < segment?.end) - }) - - if (event.key === "Delete" && blockAfterCaret) { - return removeRange(blockAfterCaret.start, blockAfterCaret.end) - } - - return false - }, [expandSelectionRangeToBlockBoundaries, transformSyntaxWithAppliedParts, updateVisualSelectionRange, visualizedSyntaxSegments]) - - const handleKeyDown = React.useCallback((event: React.KeyboardEvent) => { - if (transformSyntaxWithAppliedParts) { - normalizeSelectionForAtomicBlocks(event.target as HTMLInputElement) - } + /** + * ========================= + * Events + * ========================= + */ + const handleFocus = React.useCallback( + (event: React.FocusEvent) => { + openIfSuggestions() + userOnFocus?.(event as any) + }, + [openIfSuggestions, userOnFocus], + ) - if (transformSyntaxWithAppliedParts && (event.key === "ArrowLeft" || event.key === "ArrowRight")) { - const target = event.target as HTMLInputElement - const {selectionStart, selectionEnd, rawStart, rawEnd, direction} = getSelectionMetrics(target) - const visualDelta = event.key === "ArrowLeft" ? -1 : 1 + const handleBlur = React.useCallback( + (event: React.FocusEvent) => { + if (shouldPreventCloseRef.current) { + userOnBlur?.(event as any) + return + } + setOpenSafe(false) + userOnBlur?.(event as any) + }, + [userOnBlur, setOpenSafe], + ) - if (!event.shiftKey) { - selectionAnchorRef.current = null - const collapsePosition = event.key === "ArrowLeft" ? rawStart : rawEnd + const handleKeyDownCapture = React.useCallback( + (event: React.KeyboardEvent) => { + if (isSyntaxMode) { + contentEditable.handleKeyDownCapture(event as any) + userOnKeyDownCapture?.(event as any) + return + } - const currentVisualIndex = Math.round(mapRawIndexToVisualIndex(collapsePosition)) - const nextVisualIndex = Math.max(0, Math.min(currentVisualIndex + visualDelta, totalVisualLength)) - const nextRawIndex = mapVisualIndexToRawIndex(nextVisualIndex) + if (event.key === " " || event.code === "Space") { + event.stopPropagation() + // @ts-ignore + event.nativeEvent?.stopImmediatePropagation?.() + } + userOnKeyDownCapture?.(event as any) + }, + [contentEditable, isSyntaxMode, userOnKeyDownCapture], + ) - if (!Number.isNaN(nextRawIndex)) { + const handleKeyDown = React.useCallback( + (event: React.KeyboardEvent) => { + if (suggestions) { + if (event.key === "ArrowDown") { event.preventDefault() - const clampedIndex = Math.min(Math.max(Math.round(nextRawIndex), 0), target.value.length) - - setSelectionRangeSafe(target, clampedIndex, clampedIndex) - - requestAnimationFrame(() => { - syncSyntaxScroll() - updateVisualSelectionRange() - }) + event.stopPropagation() + + if (!openRef.current) { + setOpenSafe(true) + setTimeout(() => menuRef.current?.focusFirstItem?.(), 0) + } else { + menuRef.current?.highlightNextItem?.() + } + return } - } else { - const anchorRawIndex = selectionAnchorRef.current ?? (direction === "backward" ? selectionEnd : selectionStart) - selectionAnchorRef.current = anchorRawIndex - const activeRawIndex = anchorRawIndex === selectionStart ? selectionEnd : selectionStart - const currentVisualIndex = Math.round(mapRawIndexToVisualIndex(activeRawIndex)) - const nextVisualIndex = Math.max(0, Math.min(currentVisualIndex + visualDelta, totalVisualLength)) - const nextRawIndex = mapVisualIndexToRawIndex(nextVisualIndex) - - if (!Number.isNaN(nextRawIndex)) { + + if (event.key === "ArrowUp") { event.preventDefault() - const clampedIndex = Math.min(Math.max(Math.round(nextRawIndex), 0), target.value.length) - const nextDirection = clampedIndex < anchorRawIndex ? "backward" : "forward" - const rangeStart = Math.min(anchorRawIndex, clampedIndex) - const rangeEnd = Math.max(anchorRawIndex, clampedIndex) + event.stopPropagation() + + if (!openRef.current) { + setOpenSafe(true) + setTimeout(() => menuRef.current?.focusLastItem?.(), 0) + } else { + menuRef.current?.highlightPreviousItem?.() + } + return + } - setSelectionRangeSafe(target, rangeStart, rangeEnd, nextDirection) + if (event.key === "Enter" && openRef.current) { + event.preventDefault() + event.stopPropagation() + const selected = menuRef.current?.selectActiveItem?.() + if (selected) setOpenSafe(false) + return + } - requestAnimationFrame(() => { - syncSyntaxScroll() - updateVisualSelectionRange() - }) + if (event.key === "Escape" && openRef.current) { + event.preventDefault() + event.stopPropagation() + setOpenSafe(false) + return } } - if (event.defaultPrevented) return - } - - if (transformSyntaxWithAppliedParts && (event.key === "Backspace" || event.key === "Delete")) { - const handled = handleAtomicDeletion(event) - if (handled) return - } - - if (!suggestions) return - - if (event.key === "ArrowDown") { - event.preventDefault() - const wasOpen = open - setOpen(true) - if (!wasOpen) { - setTimeout(() => menuRef.current?.focusFirstItem(), 0) - } else { - menuRef.current?.highlightNextItem() - } - } else if (event.key === "ArrowUp") { - event.preventDefault() - const wasOpen = open - setOpen(true) - if (!wasOpen) { - setTimeout(() => menuRef.current?.focusLastItem(), 0) - } else { - menuRef.current?.highlightPreviousItem() - } - } else if (event.key === "Enter" && open) { - const selected = menuRef.current?.selectActiveItem() - if (selected) { - setOpen(false) + if (isSyntaxMode) { + const handled = contentEditable.handleKeyDown(event as any) + if (handled) { + userOnKeyDown?.(event as any) + return + } } - } - userOnKeyDown?.(event) - }, [handleAtomicDeletion, mapRawIndexToVisualIndex, mapVisualIndexToRawIndex, normalizeSelectionForAtomicBlocks, open, suggestions, syncSyntaxScroll, totalVisualLength, transformSyntaxWithAppliedParts, updateVisualSelectionRange, userOnKeyDown]) - - const handleKeyDownCapture = React.useCallback((event: React.KeyboardEvent) => { - if (event.key === " " || event.code === "Space") { - event.stopPropagation() - // Prevent DropdownMenuTrigger from intercepting space after the first insert - // while preserving the default input behavior of adding whitespace. - // @ts-ignore -- nativeEvent may not exist in synthetic typing but is present at runtime - event.nativeEvent?.stopImmediatePropagation?.() - } - userOnKeyDownCapture?.(event) - }, [userOnKeyDownCapture]) - - const handleFocus = React.useCallback((event: React.FocusEvent) => { - setIsFocused(true) - requestAnimationFrame(() => { - updateVisualSelectionRange() - syncSyntaxScroll() - }) - - if (suggestions && !open) { - setOpen(true) - } - userOnFocus?.(event) - }, [open, suggestions, syncSyntaxScroll, updateVisualSelectionRange, userOnFocus]) - - const handleBlur = React.useCallback((event: React.FocusEvent) => { - setIsFocused(false) - setVisualCaretIndex(null) - setVisualSelectionRange(null) - userOnBlur?.(event) - }, [userOnBlur]) - - useEffect(() => { - const target = inputRef.current - if (!target || !transformSyntaxWithAppliedParts) return - - const syncSelection = () => requestAnimationFrame(updateVisualSelectionRange) - - syncSelection() - - const events = ["select", "keyup", "mouseup", "input", "keydown"] - events.forEach((event) => target.addEventListener(event, syncSelection)) - - return () => { - events.forEach((event) => target.removeEventListener(event, syncSelection)) - } - }, [inputRef, transformSyntaxWithAppliedParts, updateVisualSelectionRange]) - - useEffect(() => { - if (!transformSyntaxWithAppliedParts) return - - const handleSelectionChange = () => { - if (document.activeElement !== inputRef.current) return - updateVisualSelectionRange() - } - - document.addEventListener("selectionchange", handleSelectionChange) - return () => document.removeEventListener("selectionchange", handleSelectionChange) - }, [inputRef, transformSyntaxWithAppliedParts, updateVisualSelectionRange]) - - useEffect(() => { - const target = inputRef.current - if (!target) return - - const handleScroll = () => syncSyntaxScroll() - handleScroll() - - target.addEventListener("scroll", handleScroll) - return () => target.removeEventListener("scroll", handleScroll) - }, [inputRef, syncSyntaxScroll]) - - useEffect(() => { - syncSyntaxScroll() - }, [syncSyntaxScroll, value, visualCaretIndex, visualSelectionRange]) - useEffect(() => { - if (transformSyntaxWithAppliedParts) return - - setVisualSelectionRange(null) - setVisualCaretIndex(null) - }, [transformSyntaxWithAppliedParts]) - - const applySuggestionValue = React.useCallback((suggestion: InputSuggestion) => { - if (!inputRef.current) return - - const suggestionRaw = typeof value == "object" ? JSON.stringify(suggestion.value) : suggestion.value - const suggestionValue = suggestionRaw === undefined || suggestionRaw === null ? "" : String(suggestionRaw) - const insertMode = suggestion.insertMode ?? "replace" - const currentValue = inputRef.current.value ?? "" - - let nextValue = currentValue - let nextCaretPosition: number | null = null - let insertionStart = 0 - - if (filterSuggestionsByLastToken && trailingTextTokenData) { - nextValue = `${currentValue.slice(0, trailingTextTokenData.start)}${suggestionValue}${currentValue.slice(trailingTextTokenData.end)}` - nextCaretPosition = trailingTextTokenData.start + suggestionValue.length - insertionStart = trailingTextTokenData.start - } else { - switch (insertMode) { - case "append": { - nextValue = `${currentValue}${suggestionValue}` - nextCaretPosition = nextValue.length - insertionStart = currentValue.length - break - } - case "prepend": { - nextValue = `${suggestionValue}${currentValue}` - nextCaretPosition = suggestionValue.length - insertionStart = 0 - break - } - case "insert": { - const {rawStart, rawEnd} = getSelectionMetrics(inputRef.current) - const {start, end} = transformSyntaxWithAppliedParts - ? expandSelectionRangeToBlockBoundaries(rawStart, rawEnd) - : {start: rawStart, end: rawEnd} - - nextValue = `${currentValue.slice(0, start)}${suggestionValue}${currentValue.slice(end)}` - nextCaretPosition = start + suggestionValue.length - insertionStart = start - break - } - case "replace": - default: { - nextValue = suggestionValue - nextCaretPosition = suggestionValue.length - insertionStart = 0 - break - } + if (isSyntaxMode && event.key === "Enter") { + event.preventDefault() + userOnKeyDown?.(event as any) + return } - } - setElementKey( - inputRef.current, - "value", - nextValue, - "change", - ) + userOnKeyDown?.(event as any) + }, + [contentEditable, isSyntaxMode, suggestions, setOpenSafe, userOnKeyDown], + ) - setActiveSuggestionSpans((prev) => { - const nextTextValue = normalizeTextValue(nextValue) - const reconciledSpans = reconcileSuggestionSpans(prev, nextTextValue) - const nextSpan: InputActiveSuggestionSpan | null = suggestionValue.length - ? { - id: suggestionIdRef.current++, - suggestion, - text: suggestionValue, - start: insertionStart, - end: insertionStart + suggestionValue.length, - } - : null + /** + * ========================= + * Render control + * ========================= + */ + const control = isSyntaxMode ? ( + { + contentEditable.handleChange(event as any) + userOnChange?.(event as any) + userOnInput?.(event as any) + }} + onPaste={contentEditable.handlePaste} + onFocus={handleFocus} + onBlur={handleBlur} + onKeyDownCapture={handleKeyDownCapture} + onKeyDown={handleKeyDown} + spellCheck={false} + contentEditable={!disabled && !disabledOnValue} + /> + ) : ( + } + {...mergeCode0Props("input__control", mergedInputProps)} + onFocus={handleFocus} + onBlur={handleBlur} + onKeyDownCapture={handleKeyDownCapture} + onKeyDown={handleKeyDown} + spellCheck={false} + disabled={disabled || disabledOnValue} + /> + ) - const updatedSpans = nextSpan ? [...reconciledSpans, nextSpan] : reconciledSpans - setActiveSuggestions(updatedSpans.map((item) => item.suggestion)) - return updatedSpans - }) + const handleWrapperPointerDown = React.useCallback( + (event: React.PointerEvent) => { + if (disabled || disabledOnValue) return + const target = event.target as HTMLElement + if (menuContentRef.current?.contains(target)) return + shouldPreventCloseRef.current = true + focusControl() + openIfSuggestions() + }, + [disabled, disabledOnValue, focusControl, openIfSuggestions], + ) - if (nextCaretPosition !== null) { - requestAnimationFrame(() => { - const target = inputRef.current - if (!target) return + useEffect(() => { + const wrapper = wrapperRef.current + if (!wrapper) return - target.focus({preventScroll: true}) - setSelectionRangeSafe(target, nextCaretPosition, nextCaretPosition) - }) + const handleFocusOut = (event: FocusEvent) => { + const nextTarget = event.relatedTarget as Node | null + if (nextTarget && wrapper.contains(nextTarget)) return + handleBlur(event as any) } - }, [ - expandSelectionRangeToBlockBoundaries, - filterSuggestionsByLastToken, - inputRef, - normalizeTextValue, - reconcileSuggestionSpans, - trailingTextTokenData, - transformSyntaxWithAppliedParts, - value, - ]) - - const syntax = useMemo(() => ( - - ), [handleSyntaxPointerDown, handleSyntaxPointerUp, handleSyntaxPointerMove, isFocused, resolvedVisualSelectionRange, transformSyntaxWithAppliedParts, visualCaretIndex, visualizedSyntaxSegments]) - - const suggestionMenu = useMemo(() => ( - { - if (!nextOpen && shouldPreventCloseRef.current) { - shouldPreventCloseRef.current = false - return - } - setOpen(nextOpen) - - if (nextOpen) { - setTimeout(() => inputRef.current?.focus(), 0) - } - }} - > - - } - {...mergeCode0Props(`input__control ${transformSyntaxWithAppliedParts ? "input__control--syntax" : ""}`, mergedInputProps)} - onFocus={handleFocus} - onBlur={handleBlur} - onKeyDownCapture={handleKeyDownCapture} - onKeyDown={handleKeyDown} - spellCheck={false} - disabled={disabled || disabledOnValue} - /> - - - - {suggestionsHeader} - - {availableSuggestions?.length === 0 && suggestionsEmptyState} - {!!availableSuggestions?.length && ( - { - if (!onSuggestionSelect) { - applySuggestionValue(suggestion) - } else { - onSuggestionSelect?.(suggestion) - } - setOpen(false) - if (onSuggestionSelect) { - focusInputCaretAtEnd() - } - }} - /> - )} - - {suggestionsFooter} - - - - ), [applySuggestionValue, availableSuggestions, disabledOnValue, focusInputCaretAtEnd, handleBlur, handleFocus, handleKeyDown, handleKeyDownCapture, inputRef, mergedInputProps, onSuggestionSelect, open, suggestionsEmptyState, suggestionsFooter, suggestionsHeader, transformSyntaxWithAppliedParts]) + wrapper.addEventListener("focusout", handleFocusOut) + return () => wrapper.removeEventListener("focusout", handleFocusOut) + }, [handleBlur]) + + const suggestionMenu = useMemo( + () => ( + { + if (!nextOpen && shouldPreventCloseRef.current) return + setOpenSafe(nextOpen) + }} + > + + + ), + [ + open, + control, + isSyntaxMode, + availableSuggestions, + suggestionsHeader, + suggestionsFooter, + suggestionsEmptyState, + handleSuggestionSelect, + activeControlRef, + setOpenSafe, + ], + ) return ( - <> +
{title && {title}} {description && {description}}
{left &&
{left}
} - - {suggestions ? ( - suggestionMenu - ) : ( - } - disabled={disabled} - onFocus={handleFocus} - onBlur={handleBlur} - onKeyDownCapture={handleKeyDownCapture} - onKeyDown={handleKeyDown} - {...mergeCode0Props(`input__control ${transformSyntaxWithAppliedParts ? "input__control--syntax" : ""}`, mergedInputProps)} - /> - )} - - {syntax} - - {right && -
{right}
} + {suggestions ? suggestionMenu : control} + {right &&
{right}
}
{!formValidation?.valid && formValidation?.notValidMessage && ( {formValidation.notValidMessage} )} - +
) }, ) diff --git a/src/components/form/Input.utils.ts b/src/components/form/Input.utils.ts index e26dd4d83..bfae802cf 100644 --- a/src/components/form/Input.utils.ts +++ b/src/components/form/Input.utils.ts @@ -1,5 +1,3 @@ -import React, {useCallback} from "react" - // Programmatically set a property (like 'value') and dispatch an event (like 'change') export const setElementKey = ( element: HTMLElement, @@ -20,6 +18,21 @@ export const setElementKey = ( element.dispatchEvent(new Event(event, {bubbles: true})) // Fire change/input event } +export const clearInputElement = (element: HTMLElement | null) => { + if (!element) return + + if (element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement) { + setElementKey(element, "value", "", "change") + return + } + + if (element.isContentEditable) { + element.innerHTML = "" + element.dispatchEvent(new Event("input", {bubbles: true})) + element.dispatchEvent(new Event("change", {bubbles: true})) + } +} + export const setSelectionRangeSafe = ( target: HTMLInputElement, start: number, @@ -45,12 +58,3 @@ export const getSelectionMetrics = (target: HTMLInputElement) => { direction: target.selectionDirection === "backward" ? "backward" : "forward", } } - -export const useSyncSyntaxScroll = ( - inputRef: React.RefObject, - syntaxRef: React.RefObject, -) => useCallback(() => { - if (!inputRef.current || !syntaxRef.current) return - - syntaxRef.current.scrollLeft = inputRef.current.scrollLeft -}, [inputRef, syntaxRef]) diff --git a/src/components/form/InputContentEditable.hook.tsx b/src/components/form/InputContentEditable.hook.tsx new file mode 100644 index 000000000..6007dd532 --- /dev/null +++ b/src/components/form/InputContentEditable.hook.tsx @@ -0,0 +1,881 @@ +import React from "react" +import {renderToStaticMarkup} from "react-dom/server.browser" +import type {InputSuggestion} from "./InputSuggestion" +import {InputSyntaxSegment, buildDefaultSyntax} from "./Input.syntax.hook" +import type {ContentEditableEvent} from "react-contenteditable" + +/** + * ========================= + * Types + * ========================= + */ +type EditorPart = string | InputSuggestion | any + +type LastTokenMatch = { + token: string + range: Range +} + +export type UseContentEditableControllerProps = { + editorRef: React.RefObject + transformSyntax?: ((value: any, appliedSyntaxParts?: (InputSuggestion | any)[]) => InputSyntaxSegment[]) | undefined + filterSuggestionsByLastToken?: boolean + onLastTokenChange?: (token: string | null) => void + + // push state back to Input.tsx (value + tokens) + onStateChange?: (payload: {value: string; tokens: InputSuggestion[]; segments?: InputSyntaxSegment[] | null}) => void +} + +export type UseContentEditableControllerReturn = { + editorHtml: string + setEditorHtml: React.Dispatch> + + initializeFromExternalValue: (externalValue: string) => string + updateEditorState: (rootEl: HTMLElement | null) => void + + applySuggestionValueSyntax: (suggestion: InputSuggestion) => void + + handlePaste: (event: React.ClipboardEvent) => void + handleChange: (event: ContentEditableEvent) => void + + handleKeyDownCapture: (event: React.KeyboardEvent) => void + handleKeyDown: (event: React.KeyboardEvent) => boolean +} + +/** + * ========================= + * Constants / helpers (DOM) + * ========================= + */ +const TOKEN_CLASS = "input__token" +const TOKEN_SELECTED_CLASS = "input__token--selected" +const TOKEN_ATTR = "title" + +const ZWSP = "\u200B" +const stripZwsp = (s: string) => (s ?? "").split(ZWSP).join("") +const isZwspTextNode = (n: Node | null) => !!n && n.nodeType === Node.TEXT_NODE && (n.textContent ?? "") === ZWSP + +const safeStringify = (value: any) => { + try { + return JSON.stringify(value) + } catch { + return JSON.stringify({value: String(value ?? "")}) + } +} + +const safeParse = (raw: string | null) => { + if (!raw) return null + try { + return JSON.parse(raw) + } catch { + return null + } +} + +const normalizeTokenValue = (value: any) => { + if (value === undefined || value === null) return "" + if (typeof value === "string") return value + return safeStringify(value) +} + +const normalizeEmptyRoot = (rootEl: HTMLElement) => { + const html = (rootEl.innerHTML ?? "").trim().toLowerCase() + if (html === "
" || html === "
" || html === "
") rootEl.innerHTML = "" + if (rootEl.childNodes.length === 1 && (rootEl.childNodes[0] as any)?.tagName === "BR") rootEl.innerHTML = "" +} + +const isTokenElement = (node: Node): node is HTMLElement => { + return node instanceof HTMLElement && node.classList.contains(TOKEN_CLASS) +} + +const isWithinTokenElement = (node: Node): boolean => { + let current: Node | null = node + while (current) { + if (isTokenElement(current)) return true + current = current.parentNode + } + return false +} + +/** + * IMPORTANT: + * Token data must NOT contain visuals (children etc.) + * Visuals are rendered ONLY through transformSyntax (segment.content). + */ +const serializeTokenData = (token: any) => { + if (token && typeof token === "object") { + const {children, __contentHtml, ...rest} = token as any + return rest + } + return {value: token} +} + +const getTokenDataFromElement = (el: HTMLElement): any => { + const parsed = safeParse(el.getAttribute(TOKEN_ATTR)) + return parsed ?? {value: el.textContent ?? ""} +} + +const createTokenElement = (token: any, contentHtml?: string) => { + const element = document.createElement("span") + element.setAttribute("contenteditable", "false") + element.className = TOKEN_CLASS + + const tokenData = serializeTokenData(token) + element.setAttribute(TOKEN_ATTR, safeStringify(tokenData)) + + if (contentHtml !== undefined) { + element.innerHTML = contentHtml + } else { + const label = tokenData?.label ?? tokenData?.value ?? "" + element.textContent = String(label ?? "") + } + + element.style.display = "inline-flex" + element.style.alignItems = "center" + element.style.verticalAlign = "middle" + element.style.userSelect = "text" + // @ts-ignore + element.style.webkitUserSelect = "text" + + return element +} + +const ensureEditorRange = (rootEl: HTMLElement): Range => { + const sel = window.getSelection() + if (sel && sel.rangeCount > 0) { + const r = sel.getRangeAt(0) + if (rootEl.contains(r.startContainer)) return r + } + + const r = document.createRange() + r.selectNodeContents(rootEl) + r.collapse(false) + + const s = window.getSelection() + s?.removeAllRanges() + s?.addRange(r) + return r +} + +const insertTextAtCaret = (rootEl: HTMLElement | null, text: string) => { + if (!rootEl) return + + const selection = window.getSelection() + if (!selection || selection.rangeCount === 0) return + + const range = selection.getRangeAt(0) + if (!rootEl.contains(range.startContainer)) return + + range.deleteContents() + const textNode = document.createTextNode(text) + range.insertNode(textNode) + + const nextRange = document.createRange() + nextRange.setStartAfter(textNode) + nextRange.collapse(true) + + selection.removeAllRanges() + selection.addRange(nextRange) +} + +export const serializeEditorParts = (rootEl: HTMLElement | null): EditorPart[] => { + if (!rootEl) return [""] + + const parts: EditorPart[] = [] + + const collect = (node: Node) => { + if (node.nodeType === Node.TEXT_NODE) { + const text = stripZwsp(node.textContent ?? "") + if (text.length) parts.push(text) + return + } + + if (node.nodeType !== Node.ELEMENT_NODE) return + + const element = node as HTMLElement + + if (isTokenElement(element)) { + parts.push(getTokenDataFromElement(element)) + return + } + + Array.from(node.childNodes).forEach(collect) + } + + Array.from(rootEl.childNodes).forEach(collect) + + if (!parts.length) return [""] + + return parts.reduce((acc, part) => { + if (typeof part === "string" && typeof acc[acc.length - 1] === "string") { + acc[acc.length - 1] = `${acc[acc.length - 1]}${part}` + } else { + acc.push(part) + } + return acc + }, []) +} + +const partsToTextValue = (parts: EditorPart[]) => { + return parts + .map((part) => { + if (typeof part === "string") return part + const tokenValue = (part as any)?.value ?? part + return normalizeTokenValue(tokenValue) + }) + .join("") +} + +const buildSuggestionTokenData = (suggestion: InputSuggestion) => { + const {children, __contentHtml, ...rest} = suggestion as any + return rest +} + +const getLastTokenBeforeCaret = (rootEl: HTMLElement | null): LastTokenMatch | null => { + if (!rootEl) return null + + const selection = window.getSelection() + if (!selection || selection.rangeCount === 0) return null + + const range = selection.getRangeAt(0) + if (!rootEl.contains(range.startContainer)) return null + + const caretContainer = range.startContainer + const caretOffset = range.startOffset + + let stopNode: ChildNode | null = null + if (caretContainer.nodeType === Node.ELEMENT_NODE) { + const container = caretContainer as Element + stopNode = container.childNodes[caretOffset] ?? null + } + + const walker = document.createTreeWalker( + rootEl, + NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, + { + acceptNode: (node) => { + if (node.nodeType === Node.TEXT_NODE) { + if (isWithinTokenElement(node)) return NodeFilter.FILTER_REJECT + if ((node.textContent ?? "") === ZWSP) return NodeFilter.FILTER_REJECT + return NodeFilter.FILTER_ACCEPT + } + if (node.nodeType === Node.ELEMENT_NODE) { + if (isTokenElement(node)) return NodeFilter.FILTER_ACCEPT + } + return NodeFilter.FILTER_SKIP + }, + }, + ) + + let lastMatch: LastTokenMatch | null = null + let current: Node | null = walker.nextNode() + + while (current) { + if (stopNode && current === stopNode) break + + if (current === caretContainer && current.nodeType === Node.TEXT_NODE) { + const raw = current.textContent?.slice(0, caretOffset) ?? "" + const text = stripZwsp(raw) + const matches = [...text.matchAll(/\S+/g)] + const last = matches[matches.length - 1] + if (last && last.index !== undefined) { + const wordStart = last.index + const wordEnd = wordStart + last[0].length + const tokenRange = document.createRange() + tokenRange.setStart(current, Math.min(wordStart, raw.length)) + tokenRange.setEnd(current, Math.min(wordEnd, raw.length)) + lastMatch = {token: last[0], range: tokenRange} + } + break + } + + if (isTokenElement(current)) { + lastMatch = null + current = walker.nextNode() + continue + } + + if (current.nodeType === Node.TEXT_NODE) { + const raw = current.textContent ?? "" + const text = stripZwsp(raw) + const matches = [...text.matchAll(/\S+/g)] + const last = matches[matches.length - 1] + if (last && last.index !== undefined) { + const wordStart = last.index + const wordEnd = wordStart + last[0].length + const tokenRange = document.createRange() + tokenRange.setStart(current, Math.min(wordStart, raw.length)) + tokenRange.setEnd(current, Math.min(wordEnd, raw.length)) + lastMatch = {token: last[0], range: tokenRange} + } + } + + current = walker.nextNode() + } + + return lastMatch +} + +/** + * ✅ FIX (caret after deleting last token): + * Selection can have startContainer = ELEMENT_NODE with an offset (i.e. “between childNodes”). + */ +const getSelectionOffsetsInValue = (rootEl: HTMLElement): {start: number; end: number} | null => { + const sel = window.getSelection() + if (!sel || sel.rangeCount === 0) return null + + const range = sel.getRangeAt(0) + if (!rootEl.contains(range.startContainer) || !rootEl.contains(range.endContainer)) return null + + const nodeValueLength = (node: Node): number => { + if (node.nodeType === Node.TEXT_NODE) return stripZwsp(node.textContent ?? "").length + if (node.nodeType === Node.ELEMENT_NODE) { + const el = node as HTMLElement + if (isTokenElement(el)) { + const data = getTokenDataFromElement(el) + return String(data?.value ?? "").length + } + let sum = 0 + Array.from(node.childNodes).forEach((c) => (sum += nodeValueLength(c))) + return sum + } + return 0 + } + + const toOffset = (container: Node, offset: number) => { + let total = 0 + + const walk = (node: Node): boolean => { + if (node === container) { + if (node.nodeType === Node.TEXT_NODE) { + total += stripZwsp(node.textContent ?? "").slice(0, offset).length + return true + } + + if (node.nodeType === Node.ELEMENT_NODE) { + const kids = Array.from(node.childNodes) + const clamped = Math.max(0, Math.min(offset, kids.length)) + for (let i = 0; i < clamped; i++) total += nodeValueLength(kids[i]) + return true + } + + return true + } + + if (node.nodeType === Node.TEXT_NODE) { + total += stripZwsp(node.textContent ?? "").length + return false + } + + if (node.nodeType === Node.ELEMENT_NODE) { + const el = node as HTMLElement + if (isTokenElement(el)) { + const data = getTokenDataFromElement(el) + total += String(data?.value ?? "").length + return false + } + for (const child of Array.from(node.childNodes)) { + const done = walk(child) + if (done) return true + } + } + return false + } + + walk(rootEl) + return total + } + + const start = toOffset(range.startContainer, range.startOffset) + const end = toOffset(range.endContainer, range.endOffset) + return {start: Math.min(start, end), end: Math.max(start, end)} +} + +const setSelectionOffsetsInValue = (rootEl: HTMLElement, start: number, end: number) => { + const clamp = (n: number) => Math.max(0, n) + const sOff = clamp(start) + const eOff = clamp(end) + + const locate = (targetOffset: number): {node: Node; offset: number} => { + let remaining = targetOffset + + const walk = (node: Node): {node: Node; offset: number} | null => { + if (node.nodeType === Node.TEXT_NODE) { + const raw = node.textContent ?? "" + const len = stripZwsp(raw).length + if (remaining <= len) return {node, offset: Math.min(remaining, raw.length)} + remaining -= len + return null + } + + if (node.nodeType === Node.ELEMENT_NODE) { + const el = node as HTMLElement + + if (isTokenElement(el)) { + const data = getTokenDataFromElement(el) + const tokenLen = String(data?.value ?? "").length + const parent = el.parentNode ?? rootEl + const idx = Array.from(parent.childNodes).indexOf(el) + + if (remaining <= 0) return {node: parent, offset: idx} + if (remaining < tokenLen) return {node: parent, offset: idx + 1} + + remaining -= tokenLen + return null + } + + for (const child of Array.from(node.childNodes)) { + const res = walk(child) + if (res) return res + } + } + + return null + } + + return walk(rootEl) ?? {node: rootEl, offset: rootEl.childNodes.length} + } + + const startPos = locate(sOff) + const endPos = locate(eOff) + + const sel = window.getSelection() + if (!sel) return + + const r = document.createRange() + try { + r.setStart(startPos.node, startPos.offset) + r.setEnd(endPos.node, endPos.offset) + } catch { + r.selectNodeContents(rootEl) + r.collapse(false) + } + + sel.removeAllRanges() + sel.addRange(r) +} + +/** + * ✅ Native selection across contenteditable=false tokens + */ +const selectionModify = (root: HTMLElement, alter: "move" | "extend", dir: "left" | "right") => { + const sel = window.getSelection() as any + if (!sel || typeof sel.modify !== "function") return false + if (!root.contains(sel.focusNode as any) || !root.contains(sel.anchorNode as any)) return false + + const direction = dir === "right" ? "forward" : "backward" + + try { + sel.modify(alter, direction, "character") + if (isZwspTextNode(sel.focusNode)) sel.modify(alter, direction, "character") + return true + } catch { + return false + } +} + +/** + * ✅ Delete/Backspace around tokens (ZWSP anchors make this flaky otherwise) + */ +const getRangeInRoot = (root: HTMLElement): Range | null => { + const sel = window.getSelection() + if (!sel || sel.rangeCount === 0) return null + const r = sel.getRangeAt(0) + if (!root.contains(r.startContainer) || !root.contains(r.endContainer)) return null + return r +} + +const childIndex = (node: Node) => { + const p = node.parentNode + if (!p) return -1 + return Array.from(p.childNodes).indexOf(node as ChildNode) +} + +const boundaryInParent = (range: Range): {parent: Node; index: number} | null => { + const container = range.startContainer + const offset = range.startOffset + + if (container.nodeType === Node.ELEMENT_NODE) return {parent: container, index: offset} + + if (container.nodeType === Node.TEXT_NODE) { + const textNode = container as Text + const raw = textNode.textContent ?? "" + const idx = childIndex(textNode) + if (idx < 0 || !textNode.parentNode) return null + + if (raw === ZWSP) return {parent: textNode.parentNode, index: idx + (offset > 0 ? 1 : 0)} + if (offset === 0) return {parent: textNode.parentNode, index: idx} + if (offset === raw.length) return {parent: textNode.parentNode, index: idx + 1} + return null + } + + return null +} + +const setCaretAt = (node: Node, offset: number) => { + const sel = window.getSelection() + if (!sel) return + const r = document.createRange() + r.setStart(node, offset) + r.collapse(true) + sel.removeAllRanges() + sel.addRange(r) +} + +const removeZwspNeighbors = (parent: Node, tokenIndex: number) => { + const before = parent.childNodes[tokenIndex - 1] + if (before && isZwspTextNode(before)) parent.removeChild(before) + + const idxNow = Math.max(0, Math.min(tokenIndex, parent.childNodes.length - 1)) + const afterNow = parent.childNodes[idxNow + 1] + if (afterNow && isZwspTextNode(afterNow)) parent.removeChild(afterNow) +} + +const tryDeleteAdjacentToken = (root: HTMLElement, mode: "backspace" | "delete") => { + const range = getRangeInRoot(root) + if (!range || !range.collapsed) return false + + const b = boundaryInParent(range) + if (!b) return false + + const parent = b.parent + const children = parent.childNodes + + const skipZwspBackward = (i: number) => { + let j = i + while (j > 0 && isZwspTextNode(children[j - 1])) j-- + return j + } + + const skipZwspForward = (i: number) => { + let j = i + while (j < children.length && isZwspTextNode(children[j])) j++ + return j + } + + if (mode === "backspace") { + const idx = skipZwspBackward(b.index) + const prev = idx > 0 ? children[idx - 1] : null + if (prev && isTokenElement(prev)) { + const tokenIndex = idx - 1 + parent.removeChild(prev) + removeZwspNeighbors(parent, tokenIndex) + setCaretAt(parent, Math.max(0, Math.min(tokenIndex, parent.childNodes.length))) + return true + } + return false + } + + const idx = skipZwspForward(b.index) + const next = children[idx] ?? null + if (next && isTokenElement(next)) { + const tokenIndex = idx + parent.removeChild(next) + removeZwspNeighbors(parent, tokenIndex) + setCaretAt(parent, Math.max(0, Math.min(tokenIndex, parent.childNodes.length))) + return true + } + + return false +} + +const updateTokenSelectionVisual = (root: HTMLElement) => { + root.querySelectorAll(`.${TOKEN_CLASS}`).forEach((el) => el.classList.remove(TOKEN_SELECTED_CLASS)) + + const sel = window.getSelection() + if (!sel || sel.rangeCount === 0) return + const range = sel.getRangeAt(0) + + if (!root.contains(range.startContainer) || !root.contains(range.endContainer)) return + + root.querySelectorAll(`.${TOKEN_CLASS}`).forEach((node) => { + try { + if (range.intersectsNode(node)) (node as HTMLElement).classList.add(TOKEN_SELECTED_CLASS) + } catch { + // ignore + } + }) +} + +const renderEditorFromSegments = ( + rootEl: HTMLElement, + value: string, + segments: InputSyntaxSegment[] | undefined | null, + appliedParts: EditorPart[], +) => { + normalizeEmptyRoot(rootEl) + + const safeSegments = (segments ?? []) + .filter(Boolean) + .filter( + (s: any) => + s && + (s.type === "text" || s.type === "block") && + Number.isFinite(s.start) && + Number.isFinite(s.end) && + s.start <= s.end, + ) as InputSyntaxSegment[] + + const resolved = safeSegments.length ? safeSegments : buildDefaultSyntax(value) + + const tokenQueue = appliedParts.filter((p) => typeof p !== "string") + const frag = document.createDocumentFragment() + + const appendZwspOnce = () => { + const last = frag.lastChild + if (last?.nodeType === Node.TEXT_NODE && (last.textContent ?? "") === ZWSP) return + frag.appendChild(document.createTextNode(ZWSP)) + } + + resolved.forEach((seg: any) => { + if (!seg || !seg.type) return + + const segmentValue = seg.value ?? value.slice(seg.start, seg.end) + + if (seg.type === "text") { + const text = + typeof seg.content === "string" + ? seg.content + : typeof segmentValue === "string" + ? segmentValue + : value.slice(seg.start, seg.end) + if (text?.length) frag.appendChild(document.createTextNode(text)) + return + } + + const normalizedSegmentValue = normalizeTokenValue(segmentValue) + + let tokenData: any | undefined + if (tokenQueue.length) { + const next = tokenQueue[0] + const nextValue = normalizeTokenValue((next as any)?.value ?? next) + if (normalizedSegmentValue === "" || nextValue === normalizedSegmentValue) { + tokenData = next + tokenQueue.shift() + } + } + if (!tokenData) tokenData = {value: segmentValue} + + const contentHtml = + seg.content && typeof seg.content !== "string" + ? renderToStaticMarkup(<>{seg.content}) + : undefined + + appendZwspOnce() + frag.appendChild(createTokenElement(tokenData, contentHtml)) + appendZwspOnce() + }) + + rootEl.innerHTML = "" + rootEl.appendChild(frag) + normalizeEmptyRoot(rootEl) +} + +/** + * ========================= + * Hook + * ========================= + */ +export const useContentEditableController = ( + props: UseContentEditableControllerProps, +): UseContentEditableControllerReturn => { + const {editorRef, transformSyntax, filterSuggestionsByLastToken = false, onLastTokenChange, onStateChange} = props + + const [editorHtml, setEditorHtml] = React.useState("") + + const updateEditorState = React.useCallback( + (rootEl: HTMLElement | null) => { + if (!rootEl) return + + normalizeEmptyRoot(rootEl) + + const savedSel = getSelectionOffsetsInValue(rootEl) + + const parts = serializeEditorParts(rootEl) + const nextValue = partsToTextValue(parts) + const tokens = parts.filter((p) => typeof p !== "string") as InputSuggestion[] + + if (filterSuggestionsByLastToken) { + onLastTokenChange?.(getLastTokenBeforeCaret(rootEl)?.token ?? null) + } + + let segments: InputSyntaxSegment[] | null = null + if (transformSyntax) { + segments = transformSyntax(nextValue as any, parts) + renderEditorFromSegments(rootEl, nextValue, segments, parts) + } + + if (savedSel) setSelectionOffsetsInValue(rootEl, savedSel.start, savedSel.end) + else ensureEditorRange(rootEl) + + updateTokenSelectionVisual(rootEl) + + const nextHtml = rootEl.innerHTML ?? "" + + // 🔥 critical: keep ContentEditable "html" in sync with DOM + setEditorHtml((prev) => (prev === nextHtml ? prev : nextHtml)) + + onStateChange?.({value: nextValue, tokens, segments}) + }, + [filterSuggestionsByLastToken, onLastTokenChange, onStateChange, transformSyntax], + ) + + const initializeFromExternalValue = React.useCallback( + (externalValue: string) => { + const tmp = document.createElement("div") + const parts: EditorPart[] = [] + const segments = transformSyntax ? transformSyntax(externalValue as any, parts) : null + renderEditorFromSegments(tmp, externalValue, segments, parts) + const html = tmp.innerHTML ?? "" + setEditorHtml(html) + return html + }, + [transformSyntax], + ) + + const applySuggestionValueSyntax = React.useCallback( + (suggestion: InputSuggestion) => { + const root = editorRef.current + if (!root) return + + normalizeEmptyRoot(root) + root.focus({preventScroll: true}) + + const insertMode = suggestion.insertMode ?? "replace" + + const resolveInsertionRange = (): Range => { + const r = document.createRange() + switch (insertMode) { + case "append": + r.selectNodeContents(root) + r.collapse(false) + return r + case "prepend": + r.selectNodeContents(root) + r.collapse(true) + return r + case "replace": + r.selectNodeContents(root) + return r + case "insert": + default: + return ensureEditorRange(root) + } + } + + const range = resolveInsertionRange() + const tokenData = buildSuggestionTokenData(suggestion) + + if (filterSuggestionsByLastToken && insertMode !== "replace") { + const match = getLastTokenBeforeCaret(root) + if (match) match.range.deleteContents() + else range.deleteContents() + } else { + range.deleteContents() + } + + const tokenEl = createTokenElement(tokenData) + + // insert: [ZWSP][TOKEN][ZWSP] + const beforeZwsp = document.createTextNode(ZWSP) + const afterZwsp = document.createTextNode(ZWSP) + + range.insertNode(beforeZwsp) + range.insertNode(tokenEl) + tokenEl.parentNode?.insertBefore(afterZwsp, tokenEl.nextSibling ?? null) + + // caret behind token (after trailing ZWSP) + const sel = window.getSelection() + const r = document.createRange() + try { + r.setStart(afterZwsp, 1) + } catch { + r.setStartAfter(tokenEl) + } + r.collapse(true) + sel?.removeAllRanges() + sel?.addRange(r) + + updateEditorState(root) + }, + [editorRef, filterSuggestionsByLastToken, updateEditorState], + ) + + const handlePaste = React.useCallback( + (event: React.ClipboardEvent) => { + event.preventDefault() + const text = event.clipboardData.getData("text/plain") + insertTextAtCaret(editorRef.current, text) + updateEditorState(editorRef.current) + }, + [editorRef, updateEditorState], + ) + + const handleChange = React.useCallback( + (_event: ContentEditableEvent) => { + // IMPORTANT: we always derive from DOM, not from event.target.value/html + updateEditorState(editorRef.current) + }, + [editorRef, updateEditorState], + ) + + const handleKeyDownCapture = React.useCallback((event: React.KeyboardEvent) => { + if (event.key === " " || event.code === "Space") { + event.stopPropagation() + // @ts-ignore + event.nativeEvent?.stopImmediatePropagation?.() + } + }, []) + + const handleKeyDown = React.useCallback( + (event: React.KeyboardEvent) => { + const root = editorRef.current + if (!root) return false + if (document.activeElement !== root) return false + + // Token deletion + if (event.key === "Backspace" || event.key === "Delete") { + const removed = tryDeleteAdjacentToken(root, event.key === "Backspace" ? "backspace" : "delete") + if (removed) { + event.preventDefault() + event.stopPropagation() + updateEditorState(root) + return true + } + } + + // Arrow selection / movement across tokens + if (event.key === "ArrowLeft" || event.key === "ArrowRight") { + const dir = event.key === "ArrowLeft" ? "left" : "right" + const ok = selectionModify(root, event.shiftKey ? "extend" : "move", dir) + if (ok) { + event.preventDefault() + event.stopPropagation() + updateTokenSelectionVisual(root) + return true + } + } + + // Prevent newline in syntax mode + if (event.key === "Enter") { + event.preventDefault() + return true + } + + return false + }, + [editorRef, updateEditorState], + ) + + return { + editorHtml, + setEditorHtml, + initializeFromExternalValue, + updateEditorState, + applySuggestionValueSyntax, + handlePaste, + handleChange, + handleKeyDownCapture, + handleKeyDown, + } +} diff --git a/src/components/form/InputSuggestion.tsx b/src/components/form/InputSuggestion.tsx index 60be48c7d..15e2754f8 100644 --- a/src/components/form/InputSuggestion.tsx +++ b/src/components/form/InputSuggestion.tsx @@ -28,13 +28,69 @@ export interface InputSuggestionMenuContentItemsHandle { clearActiveItem: () => void } -export const InputSuggestionMenuContent: React.FC = React.forwardRef((props, ref) => { +type SuggestionMenuItemProps = { + suggestion: InputSuggestion + visibleIndex: number | null + isActive: boolean + inputRef?: RefObject + onSelect: (suggestion: InputSuggestion) => void + onActivate: (index: number) => void + itemRef?: (el: HTMLDivElement | null) => void +} + +const SuggestionMenuItem: React.FC = React.memo( + ({suggestion, visibleIndex, isActive, inputRef, onSelect, onActivate, itemRef}) => { + if (visibleIndex === null) return null + + const focusAndActivate = () => { + onActivate(visibleIndex) + inputRef?.current?.focus({preventScroll: true}) + } + + const handlePointerDown = (event: React.PointerEvent) => { + event.preventDefault() + focusAndActivate() + } + + const handlePointerMove = (event: React.PointerEvent) => { + event.preventDefault() + event.stopPropagation() + onActivate(visibleIndex) + } + return ( + setTimeout(() => onSelect(suggestion), 0)} + data-focus={isActive} + /**@ts-ignore */ + ref={itemRef} + > + {suggestion.children} + + ) + }, + (prev, next) => + prev.suggestion === next.suggestion && + prev.visibleIndex === next.visibleIndex && + prev.isActive === next.isActive && + prev.inputRef === next.inputRef && + prev.onSelect === next.onSelect && + prev.onActivate === next.onActivate && + prev.itemRef === next.itemRef, +) + +SuggestionMenuItem.displayName = "SuggestionMenuItem" + +const InputSuggestionMenuContentComponent: React.FC = React.forwardRef((props, ref) => { const {children, inputRef, ...rest} = props const localRef = React.useRef(null) // @ts-ignore return e.stopPropagation()} onInteractOutside={(event) => event.target instanceof HTMLInputElement && event.preventDefault()} onCloseAutoFocus={(event) => event.preventDefault()} @@ -48,11 +104,14 @@ export const InputSuggestionMenuContent: React.FC {children} - }) +InputSuggestionMenuContentComponent.displayName = "InputSuggestionMenuContent" + +export const InputSuggestionMenuContent = React.memo(InputSuggestionMenuContentComponent) -export const InputSuggestionMenuContentItems: React.FC = React.forwardRef((props, ref) => { + +const InputSuggestionMenuContentItemsComponent: React.FC = React.forwardRef((props, ref) => { const { suggestions, @@ -62,8 +121,31 @@ export const InputSuggestionMenuContentItems: React.FC([]) + const itemRefCache = React.useRef void>>(new Map()) const [collapsedGroups, setCollapsedGroups] = React.useState>({}) - const [activeIndex, setActiveIndex] = React.useState(null) + const activeIndexRef = React.useRef(null) + + const setActiveIndex = React.useCallback( + (nextIndex: number | null, options?: {scrollIntoView?: boolean; force?: boolean}) => { + const current = activeIndexRef.current + if (!options?.force && current === nextIndex) return + + if (current !== null) { + itemRefs.current[current]?.removeAttribute("data-focus") + } + + activeIndexRef.current = nextIndex + + if (nextIndex !== null) { + const nextEl = itemRefs.current[nextIndex] + if (nextEl) { + nextEl.setAttribute("data-focus", "true") + if (options?.scrollIntoView) nextEl.scrollIntoView({block: "nearest"}) + } + } + }, + [], + ) React.useEffect(() => { if (!suggestions) { @@ -111,56 +193,50 @@ export const InputSuggestionMenuContentItems: React.FC { - setActiveIndex(prev => { - if (prev === null) return prev - if (prev > visibleSuggestions.length - 1) return visibleSuggestions.length ? visibleSuggestions.length - 1 : null - return prev - }) - }, [visibleSuggestions]) - - React.useEffect(() => { - if (activeIndex === null) return - itemRefs.current[activeIndex]?.scrollIntoView({block: "nearest"}) - }, [activeIndex]) + const current = activeIndexRef.current + if (current === null) return + if (current > visibleSuggestions.length - 1) { + setActiveIndex(visibleSuggestions.length ? visibleSuggestions.length - 1 : null, {force: true}) + return + } + setActiveIndex(current, {force: true}) + }, [setActiveIndex, visibleSuggestions]) React.useImperativeHandle(ref, () => ({ focusFirstItem: () => { if (!visibleSuggestions.length) return undefined - setActiveIndex(0) + setActiveIndex(0, {scrollIntoView: true}) return visibleSuggestions[0] }, focusLastItem: () => { if (!visibleSuggestions.length) return undefined const lastIndex = visibleSuggestions.length - 1 - setActiveIndex(lastIndex) + setActiveIndex(lastIndex, {scrollIntoView: true}) return visibleSuggestions[lastIndex] }, highlightNextItem: () => { if (!visibleSuggestions.length) return undefined - setActiveIndex(prev => { - if (prev === null) return 0 - return Math.min(prev + 1, visibleSuggestions.length - 1) - }) - const nextIndex = activeIndex === null ? 0 : Math.min(activeIndex + 1, visibleSuggestions.length - 1) + const current = activeIndexRef.current + const nextIndex = current === null ? 0 : Math.min(current + 1, visibleSuggestions.length - 1) + setActiveIndex(nextIndex, {scrollIntoView: true}) return visibleSuggestions[nextIndex] }, highlightPreviousItem: () => { if (!visibleSuggestions.length) return undefined - setActiveIndex(prev => { - if (prev === null) return visibleSuggestions.length - 1 - return Math.max(prev - 1, 0) - }) - const nextIndex = activeIndex === null ? visibleSuggestions.length - 1 : Math.max(activeIndex - 1, 0) + const current = activeIndexRef.current + const nextIndex = current === null ? visibleSuggestions.length - 1 : Math.max(current - 1, 0) + setActiveIndex(nextIndex, {scrollIntoView: true}) return visibleSuggestions[nextIndex] }, selectActiveItem: () => { - if (activeIndex === null || !visibleSuggestions[activeIndex]) return undefined - const selected = visibleSuggestions[activeIndex] + const idx = activeIndexRef.current + if (idx === null || !visibleSuggestions[idx]) return undefined + const selected = visibleSuggestions[idx] setTimeout(() => onSuggestionSelect(selected), 0) return selected }, clearActiveItem: () => setActiveIndex(null) - }), [activeIndex, onSuggestionSelect, visibleSuggestions]) + }), [onSuggestionSelect, setActiveIndex, visibleSuggestions]) const toggleGroup = (groupLabel: string) => { setCollapsedGroups(prev => ({ @@ -169,8 +245,16 @@ export const InputSuggestionMenuContentItems: React.FC { + let cached = itemRefCache.current.get(index) + if (!cached) { + cached = (el: HTMLDivElement | null) => { + itemRefs.current[index] = el + } + itemRefCache.current.set(index, cached) + } + return cached + }, []) let visibleItemCounter = -1 @@ -185,7 +269,7 @@ export const InputSuggestionMenuContentItems: React.FC {showGroupLabel && suggestion.groupBy && : } } - {!isCollapsed && { - event.preventDefault() - inputRef?.current?.focus({preventScroll: true}) - visibleIndex !== null && setActiveIndex(visibleIndex) - }} - onPointerMove={() => visibleIndex !== null && setActiveIndex(visibleIndex)} - onSelect={() => setTimeout(() => onSuggestionSelect(suggestion), 0)} - data-focus={isActive} - /**@ts-ignore */ - ref={el => visibleIndex !== null && (itemRefs.current[visibleIndex] = el)}> - {suggestion.children} - } + {!isCollapsed && ( + + )} })} @@ -224,3 +307,7 @@ export const InputSuggestionMenuContentItems: React.FC }) + +InputSuggestionMenuContentItemsComponent.displayName = "InputSuggestionMenuContentItems" + +export const InputSuggestionMenuContentItems = React.memo(InputSuggestionMenuContentItemsComponent) diff --git a/src/components/form/InputSyntax.tsx b/src/components/form/InputSyntax.tsx deleted file mode 100644 index c1643d595..000000000 --- a/src/components/form/InputSyntax.tsx +++ /dev/null @@ -1,170 +0,0 @@ -import React from "react" - -import {VisualizedInputSyntaxSegment} from "./Input.syntax.hook" -import {InputSuggestion} from "./InputSuggestion" - -export type ResolvedVisualSelectionRange = { start: number, end: number } | null - -export interface InputSyntaxProps { - transformSyntax?: ( - (value: any, appliedSyntaxParts?: (InputSuggestion | any)[]) => any - ) - syntaxRef: React.RefObject - visualizedSyntaxSegments: VisualizedInputSyntaxSegment[] - resolvedVisualSelectionRange: ResolvedVisualSelectionRange - visualCaretIndex: number | null - isFocused: boolean - onPointerDown: (event: React.PointerEvent) => void - onPointerMove: (event: React.PointerEvent) => void - onPointerUp: (event: React.PointerEvent) => void -} - -const renderSyntaxSegments = ( - segments: VisualizedInputSyntaxSegment[], - isFocused: boolean, - resolvedVisualSelectionRange: ResolvedVisualSelectionRange, - visualCaretIndex: number | null, -) => { - let caretRendered = false - - const isVisualRangeSelected = (visualStart: number, visualEnd: number) => { - if (!resolvedVisualSelectionRange) return false - - return resolvedVisualSelectionRange.start < visualEnd && resolvedVisualSelectionRange.end > visualStart - } - - const shouldRenderCaret = (visualIndex: number) => { - if (!isFocused) return false - if (resolvedVisualSelectionRange) return false - if (visualCaretIndex === null) return false - - if (caretRendered) return false - - const matches = Math.round(visualCaretIndex) === Math.round(visualIndex) - - if (matches) { - caretRendered = true - } - - return matches - } - - const renderCaret = (visualIndex: number) => ( - - ) - - return segments.map((segment, index) => { - const key = `${segment.start}-${segment.end}-${index}` - - const content = typeof segment.content === "string" - ? segment.content - : segment.content ?? null - - const className = [ - segment.type === "block" ? "input__syntax-block" : "input__syntax-text", - segment.type === "block" && isVisualRangeSelected(segment.visualStart, segment.visualEnd) - ? "input__syntax-block--selected" - : "", - ].filter(Boolean).join(" ") - - const commonDataAttributes = { - "data-visual-start": segment.visualStart, - "data-visual-end": segment.visualEnd, - "data-visual-length": segment.visualLength, - "data-raw-start": segment.start, - "data-raw-end": segment.end, - } - - if (typeof content === "string" && segment.type === "text") { - const children: React.ReactNode[] = [] - - content.split("").forEach((char, charIndex) => { - const visualIndex = segment.visualStart + charIndex - const rawIndex = segment.start + charIndex - const isSelected = isVisualRangeSelected(visualIndex, visualIndex + 1) - - if (shouldRenderCaret(visualIndex)) { - children.push(renderCaret(visualIndex)) - } - - children.push( - - {char === " " ? "\u00A0" : char} - , - ) - }) - - if (shouldRenderCaret(segment.visualEnd)) { - children.push(renderCaret(segment.visualEnd)) - } - - return ( - - {children} - - ) - } - - return ( - - {shouldRenderCaret(segment.visualStart) && renderCaret(segment.visualStart)} - {content} - {shouldRenderCaret(segment.visualEnd) && renderCaret(segment.visualEnd)} - - ) - }) -} - -export const InputSyntax: React.FC = (props) => { - const { - transformSyntax, - syntaxRef, - visualizedSyntaxSegments, - resolvedVisualSelectionRange, - visualCaretIndex, - isFocused, - onPointerDown, - onPointerMove, - onPointerUp, - } = props - - if (!transformSyntax) return null - - return ( -
- {renderSyntaxSegments( - visualizedSyntaxSegments, - isFocused, - resolvedVisualSelectionRange, - visualCaretIndex, - )} -
- ) -} diff --git a/src/components/form/PasswordInput.tsx b/src/components/form/PasswordInput.tsx index bea58c094..4b9a9e052 100644 --- a/src/components/form/PasswordInput.tsx +++ b/src/components/form/PasswordInput.tsx @@ -2,7 +2,7 @@ import React, {RefObject} from "react"; import {Input, InputProps} from "./Input"; import {IconEye, IconX} from "@tabler/icons-react"; import {Button} from "../button/Button"; -import {setElementKey} from "./Input.utils"; +import {clearInputElement} from "./Input.utils"; interface PasswordInputProps extends Omit, "wrapperComponent" | "type"> { clearable?: boolean, @@ -10,9 +10,9 @@ interface PasswordInputProps extends Omit, "wrapperCom } -export const PasswordInput: React.ForwardRefExoticComponent = React.forwardRef((props, ref: RefObject) => { +export const PasswordInput: React.ForwardRefExoticComponent = React.forwardRef((props, ref: RefObject) => { - ref = ref || React.useRef(null) + ref = ref || React.useRef(null) const { clearable = true, @@ -22,15 +22,17 @@ export const PasswordInput: React.ForwardRefExoticComponent } = props const toClearable = (event: React.MouseEvent) => { - if (ref.current) setElementKey(ref.current, "value", "", "change") + clearInputElement(ref.current) event.stopPropagation() event.preventDefault() return false } const toVisible = (event: React.MouseEvent) => { - if (ref.current && ref.current.type == "password") ref.current.type = "text" - else if (ref.current && ref.current.type == "text") ref.current.type = "password" + if (ref.current instanceof HTMLInputElement) { + if (ref.current.type === "password") ref.current.type = "text" + else if (ref.current.type === "text") ref.current.type = "password" + } event.stopPropagation() event.preventDefault() return false @@ -45,8 +47,8 @@ export const PasswordInput: React.ForwardRefExoticComponent right={rightAction} rightType={"action"} type={"password"} - ref={ref} + ref={ref as RefObject} {...rest} /> -}) \ No newline at end of file +}) diff --git a/src/components/form/TextInput.tsx b/src/components/form/TextInput.tsx index 9b2c4d0b1..42ad29578 100644 --- a/src/components/form/TextInput.tsx +++ b/src/components/form/TextInput.tsx @@ -2,7 +2,7 @@ import React, {RefObject} from "react"; import {Input, InputProps} from "./Input"; import {IconX} from "@tabler/icons-react"; import {Button} from "../button/Button"; -import {setElementKey} from "./Input.utils"; +import {clearInputElement} from "./Input.utils"; export interface TextInputProps extends Omit, "wrapperComponent" | "type"> { @@ -11,9 +11,9 @@ export interface TextInputProps extends Omit, "wrapper onClear?: (event: React.MouseEvent) => void } -export const TextInput: React.ForwardRefExoticComponent = React.forwardRef((props, ref: RefObject) => { +export const TextInput: React.ForwardRefExoticComponent = React.forwardRef((props, ref: RefObject) => { - ref = ref || React.useRef(null) + ref = ref || React.useRef(null) const { clearable = false, @@ -22,7 +22,7 @@ export const TextInput: React.ForwardRefExoticComponent = React. } = props const toClearable = (event: React.MouseEvent) => { - if (ref.current) setElementKey(ref.current, "value", "", "change") + clearInputElement(ref.current) if (props.onClear) props.onClear(event) } @@ -33,8 +33,8 @@ export const TextInput: React.ForwardRefExoticComponent = React. return } {...rest} /> -}) \ No newline at end of file +}) diff --git a/src/components/form/inputSyntaxMapping.ts b/src/components/form/inputSyntaxMapping.ts deleted file mode 100644 index f841f1241..000000000 --- a/src/components/form/inputSyntaxMapping.ts +++ /dev/null @@ -1,85 +0,0 @@ -import {InputSyntaxSegment} from "./Input.syntax.hook"; - -const clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max) - -const sortSegments = (segments: InputSyntaxSegment[]): InputSyntaxSegment[] => { - return [...segments].sort((a, b) => a.start - b.start || a.end - b.end) -} - -const getTotalVisualLength = (segments: InputSyntaxSegment[]) => - sortSegments(segments).reduce((total, segment) => total + (segment?.visualLength ?? 0), 0) - -const getMaxRawIndex = (segments: InputSyntaxSegment[]) => - sortSegments(segments).reduce((max, segment) => Math.max(max, segment?.end), 0) - -const resolveBlockRawIndex = (segment: InputSyntaxSegment, visualCursor: number, targetVisual: number) => { - const beforeDistance = Math.abs(targetVisual - visualCursor) - const afterDistance = Math.abs(targetVisual - (visualCursor + (segment?.visualLength ?? 0))) - - return beforeDistance <= afterDistance ? segment?.start : segment?.end -} - -const resolveBlockVisualIndex = (segment: InputSyntaxSegment, visualCursor: number, targetRaw: number) => { - const beforeDistance = Math.abs(targetRaw - segment?.start) - const afterDistance = Math.abs(segment?.end - targetRaw) - - return beforeDistance <= afterDistance ? visualCursor : visualCursor + (segment?.visualLength ?? 0) -} - -export const visualIndexToRawIndex = (visualIndex: number, segments: InputSyntaxSegment[]): number => { - if (!segments.length) return 0 - - const orderedSegments = sortSegments(segments) - const totalVisualLength = getTotalVisualLength(orderedSegments) - const targetVisual = clamp(visualIndex, 0, totalVisualLength) - - let visualCursor = 0 - let lastRawEnd = orderedSegments[0].start - - for (const segment of orderedSegments) { - const nextVisualCursor = visualCursor + (segment?.visualLength ?? 0) - - if (targetVisual <= nextVisualCursor) { - if (segment?.type === "block") { - return resolveBlockRawIndex(segment, visualCursor, targetVisual) - } - - const rawOffset = clamp(targetVisual - visualCursor, 0, (segment?.visualLength ?? 0)) - return clamp(segment?.start + rawOffset, segment?.start, segment?.end) - } - - visualCursor = nextVisualCursor - lastRawEnd = segment?.end - } - - return lastRawEnd -} - -export const rawIndexToVisualIndex = (rawIndex: number, segments: InputSyntaxSegment[]): number => { - if (!segments.length) return 0 - - const orderedSegments = sortSegments(segments) - const maxRawIndex = getMaxRawIndex(orderedSegments) - const targetRaw = clamp(rawIndex, 0, maxRawIndex) - - let visualCursor = 0 - - for (const segment of orderedSegments) { - if (targetRaw < segment?.start) { - return visualCursor - } - - if (targetRaw <= segment?.end) { - if (segment?.type === "block") { - return resolveBlockVisualIndex(segment, visualCursor, targetRaw) - } - - const rawOffset = clamp(targetRaw - segment?.start, 0, (segment?.visualLength ?? 0)) - return visualCursor + rawOffset - } - - visualCursor += (segment?.visualLength ?? 0) - } - - return getTotalVisualLength(orderedSegments) -} diff --git a/src/components/form/useForm.ts b/src/components/form/useForm.ts index 839b99d49..e57b263a1 100644 --- a/src/components/form/useForm.ts +++ b/src/components/form/useForm.ts @@ -1,6 +1,6 @@ "use client" -import {useCallback, useEffect, useMemo, useState} from "react"; +import {useCallback, useEffect, useMemo, useRef, useState} from "react"; export type Validations = Partial<{ [Key in keyof Values]: (value: Values[Key], values?: Values) => string | null; @@ -9,6 +9,7 @@ export type Validations = Partial<{ export interface FormValidationProps { initialValues: Values validate?: Validations, + truthyValidationBeforeSubmit?: boolean onSubmit?: (values: Values) => void } @@ -36,7 +37,6 @@ export interface IValidation { class Validation implements IValidation { private readonly changeValue: (key: string, value: any) => void - private readonly initialRender: boolean private readonly currentValues: Values private readonly currentValidations?: Validations @@ -44,12 +44,10 @@ class Validation implements IValidation { changeValue: (key: string, value: any) => void, values: Values, validations: Validations, - initial: boolean ) { this.changeValue = changeValue this.currentValues = values this.currentValidations = validations - this.initialRender = initial } isValid(): boolean { @@ -78,9 +76,7 @@ class Validation implements IValidation { ? this.currentValidations[key]! : (_value: Values[Key]) => null - const message = !this.initialRender - ? currentFc(rawValue, this.currentValues) - : null + const message = currentFc(rawValue, this.currentValues) return { // @ts-ignore – z.B. wenn dein Input `defaultValue` kennt @@ -90,13 +86,9 @@ class Validation implements IValidation { setValue: (value: any) => { this.changeValue(currentName, value) }, - ...(!this.initialRender - ? { + ...({ notValidMessage: message, valid: message === null, - } - : { - valid: true, }) }, ...(this.currentValidations && this.currentValidations[key] @@ -110,45 +102,47 @@ export const useForm = < Values extends Record = Record >(props: FormValidationProps): FormValidationReturn => { - const {initialValues, validate = {}, onSubmit} = props + const {initialValues, validate = {}, truthyValidationBeforeSubmit = true, onSubmit} = props const [values, setValues] = useState(initialValues) - const [hasValidated, setHasValidated] = useState(false) + const valuesRef = useRef(initialValues) useEffect(() => { setValues(initialValues) - setHasValidated(false) + valuesRef.current = initialValues }, [initialValues]) const changeValue = useCallback((key: keyof Values, value: any) => { - setValues(prevState => ({ - ...prevState, - [key]: value, - })) + setValues(prevState => { + const nextState = { + ...prevState, + [key]: value, + } + valuesRef.current = nextState + return nextState + }) }, []) const validation = useMemo( - () => new Validation(changeValue, values, validate, !hasValidated), - [changeValue, values, validate, hasValidated] + () => new Validation(changeValue, values, validate), + [changeValue, values, validate] ) const validateFunction = useCallback(() => { - setHasValidated(true) const currentValidation = new Validation( changeValue, - values, - validate, - false + valuesRef.current, + validate ) - if (onSubmit && currentValidation.isValid()) { - onSubmit(values as Values) + if (onSubmit && (!truthyValidationBeforeSubmit || currentValidation.isValid())) { + onSubmit(valuesRef.current as Values) } - }, [changeValue, values, validate, onSubmit]) + }, [changeValue, validate, onSubmit, truthyValidationBeforeSubmit]) return [ validation, validateFunction ] -} \ No newline at end of file +} diff --git a/src/utils/generics.ts b/src/utils/generics.ts index 0d53041ff..2c0e89ccd 100644 --- a/src/utils/generics.ts +++ b/src/utils/generics.ts @@ -6,8 +6,7 @@ import type { DataTypeRule, DataTypeRuleConnection, DataTypeRulesConfig, - DataTypeRulesVariant, - DataTypeVariant, Flow, + Flow, GenericCombinationStrategyType, GenericMapper, GenericType, @@ -23,6 +22,7 @@ type GenericMappingResult = Record; type GenericReplacement = DataTypeIdentifier | GenericMapper; export type GenericMap = Map; +export type GenericTargetMap = Map; const isPlainObject = (value: unknown): value is Record => { return typeof value === "object" && value !== null && !Array.isArray(value); @@ -446,8 +446,12 @@ function ruleMatches(sourceRule: DataTypeRule, targetRule: DataTypeRule): boolea return identifiersMatch(sourceConfig.dataTypeIdentifier, targetConfig.dataTypeIdentifier); } case "INPUT_TYPES": { - const sourceConfig = sourceRule.config as { inputTypes?: Array<{ dataTypeIdentifier: DataTypeIdentifier }> }; - const targetConfig = targetRule.config as { inputTypes?: Array<{ dataTypeIdentifier: DataTypeIdentifier }> }; + const sourceConfig = sourceRule.config as { + inputTypes?: Array<{ dataTypeIdentifier: DataTypeIdentifier }> + }; + const targetConfig = targetRule.config as { + inputTypes?: Array<{ dataTypeIdentifier: DataTypeIdentifier }> + }; const targetInputTypes = targetConfig.inputTypes ?? []; const sourceInputTypes = sourceConfig.inputTypes ?? []; return targetInputTypes.every(targetInput => @@ -526,7 +530,9 @@ export const resolveType = ( if (dataType.variant === "ARRAY" && genericKeys.length > 0) { const innerTypeRule = dataType.rules?.nodes?.find(rule => rule?.variant === "CONTAINS_TYPE"); - const innerIdentifier = (innerTypeRule?.config as { dataTypeIdentifier?: DataTypeIdentifier })?.dataTypeIdentifier; + const innerIdentifier = (innerTypeRule?.config as { + dataTypeIdentifier?: DataTypeIdentifier + })?.dataTypeIdentifier; if (innerIdentifier) { const [genericKey] = genericKeys; if (!genericKey) return type; @@ -597,6 +603,28 @@ const sortValue = (value: unknown): unknown => { return value; }; +export const targetForGenericKey = (func: FunctionDefinitionView, target: DataTypeIdentifier): GenericTargetMap => { + if (!target.genericType) return new Map() + + const genericKeySet = new Set(func.genericKeys ?? []); + const targetMap: GenericTargetMap = new Map(); + + for (const mapper of target.genericType.genericMappers ?? []) { + const targetKey = mapper.target!; + if (genericKeySet.has(targetKey)) continue; + + for (const source of mapper.sourceDataTypeIdentifiers ?? []) { + const sourceKey = source.genericKey; + if (sourceKey && genericKeySet.has(sourceKey)) { + targetMap.set(sourceKey, targetKey); + } + } + } + + return targetMap + +} + export const replaceGenericsAndSortType = ( type: DataTypeIdentifier, genericKeys: string[] = [] diff --git a/src/utils/inspection.ts b/src/utils/inspection.ts index c28dac9e0..c29b1ea91 100644 --- a/src/utils/inspection.ts +++ b/src/utils/inspection.ts @@ -1,4 +1,5 @@ -import {Maybe, Scalars, TranslationConnection} from "@code0-tech/sagittarius-graphql-types"; +import {Maybe, Scalars, Translation} from "@code0-tech/sagittarius-graphql-types"; +import {CSSProperties} from "react"; export enum InspectionSeverity { TYPO, @@ -11,5 +12,30 @@ export enum InspectionSeverity { export interface ValidationResult { parameterId: Maybe type: InspectionSeverity - message: TranslationConnection + message: Array +} + +const createWavyUnderline = (color: string, size = "5px 4px"): CSSProperties => ({ + paddingBottom: "0.2rem", + backgroundRepeat: "repeat-x", + backgroundPosition: "left bottom", + backgroundSize: size, + backgroundImage: `url("data:image/svg+xml;utf8,\ +\ + \ +")`, +}) + +export const underlineBySeverity: Record = { + [InspectionSeverity.TYPO]: { + borderBottom: "1px dotted #3b82f6", // blue + }, + [InspectionSeverity.GRAMMAR]: { + borderBottom: "1px dashed #8b5cf6", // violet + }, + [InspectionSeverity.WEAK]: { + borderBottom: "3px double #9ca3af", // gray + }, + [InspectionSeverity.WARNING]: createWavyUnderline("orange"), // amber + [InspectionSeverity.ERROR]: createWavyUnderline("red"), // already yours } \ No newline at end of file