@powerhousedao/pieces-framework 6.2.3-dev.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +59 -0
- package/README.md +202 -0
- package/UPSTREAM.md +172 -0
- package/dist/action--RmO83_Y.d.ts +12766 -0
- package/dist/action--RmO83_Y.d.ts.map +1 -0
- package/dist/authentication-B7brX_It.js +242 -0
- package/dist/authentication-B7brX_It.js.map +1 -0
- package/dist/common.d.ts +324 -0
- package/dist/common.d.ts.map +1 -0
- package/dist/common.js +828 -0
- package/dist/common.js.map +1 -0
- package/dist/host.d.ts +95 -0
- package/dist/host.d.ts.map +1 -0
- package/dist/host.js +723 -0
- package/dist/host.js.map +1 -0
- package/dist/index-BW6GxXEN.d.ts +5544 -0
- package/dist/index-BW6GxXEN.d.ts.map +1 -0
- package/dist/index.d.ts +1156 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1569 -0
- package/dist/index.js.map +1 -0
- package/dist/input-COuhC1I-.js +308 -0
- package/dist/input-COuhC1I-.js.map +1 -0
- package/dist/markdown-property-Df2l6_y_.js +285 -0
- package/dist/markdown-property-Df2l6_y_.js.map +1 -0
- package/package.json +73 -0
package/dist/host.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.js","names":[],"sources":["../upstream/core-utils/lib/friendly-piece-error.ts","../upstream/core-utils/lib/ssrf-ip-classifier.ts","../upstream/engine/lib/helper/dynamic-prop-keys.ts","../upstream/engine/lib/variables/processors/array-zipper.ts","../upstream/engine/lib/variables/processors/checkbox.ts","../upstream/engine/lib/variables/processors/date-time.ts","../upstream/engine/lib/variables/processors/file.ts","../upstream/engine/lib/variables/processors/json.ts","../upstream/engine/lib/variables/processors/multi-select.ts","../upstream/engine/lib/variables/processors/number.ts","../upstream/engine/lib/variables/processors/object.ts","../upstream/engine/lib/variables/processors/text.ts","../upstream/engine/lib/variables/processors/index.ts","../upstream/engine/lib/variables/props-processor.ts"],"sourcesContent":["// Vendored from activepieces/activepieces@0.91.0 packages/core/utils/src/lib/friendly-piece-error.ts. MIT; see ../../../LICENSE.\n// Generated by scripts/sync-upstream.mts — do not edit by hand.\nimport { tryCatchSync } from \"./try-catch.js\";\nimport { isNil, isString } from \"./utils.js\";\n\nconst FRIENDLY_PIECE_ERROR_VERSION = 1;\n\nconst STACK_LINE_REGEX = /\\n\\s*at\\s+.+$/gm;\nconst HTTP_ERROR_MESSAGE_MAX_LENGTH = 2000;\nconst RAW_ERROR_MAX_LENGTH = 16000;\nconst HTTP_STATUS_MIN = 100;\nconst HTTP_STATUS_MAX = 599;\nconst MAX_MESSAGE_DEPTH = 12;\nconst MAX_SERIALIZED_DEPTH = 64;\nconst CIRCULAR_PLACEHOLDER = \"[Circular]\";\nconst TOO_DEEP_PLACEHOLDER = \"[Too deep]\";\nconst UNSERIALIZABLE_PLACEHOLDER = \"[Unserializable]\";\n\nconst isObjectRecord = (value: unknown): value is Record<string, unknown> => {\n return !isNil(value) && typeof value === \"object\" && !Array.isArray(value);\n};\n\nconst safeJsonParse = (value: string): unknown => {\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n};\n\nconst stripStack = (value: string): string => {\n return value.replace(STACK_LINE_REGEX, \"\").trim();\n};\n\nconst truncate = (value: string): string => {\n if (value.length <= HTTP_ERROR_MESSAGE_MAX_LENGTH) {\n return value;\n }\n return `${value.slice(0, HTTP_ERROR_MESSAGE_MAX_LENGTH)}…`;\n};\n\nconst truncateRaw = (value: string): string => {\n if (value.length <= RAW_ERROR_MAX_LENGTH) {\n return value;\n }\n return `${value.slice(0, RAW_ERROR_MAX_LENGTH)}\\n…[truncated]`;\n};\n\nconst HTML_DOC_REGEX = /^\\s*(<!doctype\\s+html|<html\\b|<\\?xml)/i;\nconst HTML_TAG_LIKE_REGEX =\n /<\\s*(html|body|head|title|meta|p|div|span|h[1-6]|table|script|style)\\b/i;\n\nconst isLikelyMarkupBody = (value: string): boolean => {\n if (HTML_DOC_REGEX.test(value)) {\n return true;\n }\n if (!value.includes(\"<\") || !value.includes(\">\")) {\n return false;\n }\n return HTML_TAG_LIKE_REGEX.test(value);\n};\n\nconst decodeHtmlEntities = (value: string): string => {\n return value\n .replace(/ /g, \" \")\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/"/g, '\"')\n .replace(/'/g, \"'\")\n .replace(/'/g, \"'\");\n};\n\nconst stripMarkup = (value: string): string => {\n const titleMatch = value.match(/<title[^>]*>([\\s\\S]*?)<\\/title>/i);\n const title = titleMatch\n ? decodeHtmlEntities(titleMatch[1]).replace(/\\s+/g, \" \").trim()\n : \"\";\n\n const withoutNoise = value\n .replace(/<script[\\s\\S]*?<\\/script>/gi, \" \")\n .replace(/<style[\\s\\S]*?<\\/style>/gi, \" \")\n .replace(/<head[\\s\\S]*?<\\/head>/gi, \" \");\n const textOnly = decodeHtmlEntities(withoutNoise.replace(/<[^>]+>/g, \" \"))\n .replace(/\\s+/g, \" \")\n .trim();\n\n if (textOnly.length > 0 && title.length > 0 && !textOnly.startsWith(title)) {\n return `${title} — ${textOnly}`;\n }\n return textOnly.length > 0 ? textOnly : title;\n};\n\nconst readString = (\n record: Record<string, unknown>,\n key: string,\n): string | undefined => {\n const value = record[key];\n return isString(value) ? value : undefined;\n};\n\nconst collectMessageFrom = ({\n value,\n depth,\n seen,\n}: TraversalParams): string | undefined => {\n if (isNil(value) || depth > MAX_MESSAGE_DEPTH) {\n return undefined;\n }\n if (isString(value)) {\n const trimmed = value.trim();\n if (trimmed.length === 0) {\n return undefined;\n }\n if (isLikelyMarkupBody(trimmed)) {\n const stripped = stripMarkup(trimmed);\n return stripped.length > 0 ? stripped : undefined;\n }\n return trimmed;\n }\n if (Array.isArray(value)) {\n if (seen.has(value)) {\n return undefined;\n }\n seen.add(value);\n const parts = value\n .map((entry) =>\n collectMessageFrom({ value: entry, depth: depth + 1, seen }),\n )\n .filter((entry): entry is string => isString(entry) && entry.length > 0);\n return parts.length > 0 ? parts.join(\"; \") : undefined;\n }\n if (isObjectRecord(value)) {\n if (seen.has(value)) {\n return undefined;\n }\n seen.add(value);\n const nested =\n value[\"message\"] ??\n value[\"detail\"] ??\n value[\"description\"] ??\n value[\"reason\"] ??\n value[\"error\"];\n return collectMessageFrom({ value: nested, depth: depth + 1, seen });\n }\n return undefined;\n};\n\nconst collectMessage = (value: unknown): string | undefined => {\n return collectMessageFrom({ value, depth: 0, seen: new WeakSet() });\n};\n\nconst extractApiMessage = (responseBody: unknown): string | undefined => {\n if (isNil(responseBody)) {\n return undefined;\n }\n if (isString(responseBody) || Array.isArray(responseBody)) {\n const collected = collectMessage(responseBody);\n return collected ? truncate(collected) : undefined;\n }\n if (!isObjectRecord(responseBody)) {\n return truncate(String(responseBody));\n }\n const candidates: unknown[] = [\n responseBody[\"message\"],\n responseBody[\"error_description\"],\n responseBody[\"errorDescription\"],\n responseBody[\"detail\"],\n responseBody[\"title\"],\n responseBody[\"error_message\"],\n responseBody[\"errorMessage\"],\n responseBody[\"errorMessages\"],\n responseBody[\"errors\"],\n responseBody[\"error\"],\n responseBody[\"faultstring\"],\n responseBody[\"fault\"],\n responseBody[\"reason\"],\n responseBody[\"description\"],\n ];\n for (const candidate of candidates) {\n const collected = collectMessage(candidate);\n if (collected) {\n return truncate(collected);\n }\n }\n return undefined;\n};\n\nconst toHttpStatus = (value: unknown): number | undefined => {\n return typeof value === \"number\" &&\n value >= HTTP_STATUS_MIN &&\n value <= HTTP_STATUS_MAX\n ? value\n : undefined;\n};\n\nconst extractResponseHttpDetails = (\n error: Record<string, unknown>,\n): HttpDetails | null => {\n const response = error[\"response\"];\n if (!isObjectRecord(response)) {\n return null;\n }\n const statusValue = response[\"status\"];\n const status = typeof statusValue === \"number\" ? statusValue : undefined;\n const responseBody = response[\"body\"];\n const headersValue = response[\"headers\"];\n const headers = isObjectRecord(headersValue) ? headersValue : undefined;\n\n const requestRaw = error[\"request\"];\n const request = isObjectRecord(requestRaw) ? requestRaw : undefined;\n const requestBody = request?.[\"body\"];\n const requestUrl =\n request === undefined ? undefined : readString(request, \"url\");\n const requestMethod =\n request === undefined ? undefined : readString(request, \"method\");\n\n if (isNil(status) && isNil(responseBody) && isNil(requestBody)) {\n return null;\n }\n\n return {\n status,\n responseBody,\n responseHeaders: headers,\n requestBody,\n requestUrl,\n requestMethod,\n apiMessage: extractApiMessage(responseBody),\n };\n};\n\nconst extractClientHttpDetails = (\n error: Record<string, unknown>,\n): HttpDetails | null => {\n const status = toHttpStatus(error[\"status\"]);\n if (isNil(status)) {\n return null;\n }\n const responseBody = error[\"error\"] ?? error[\"body\"];\n const headersValue = error[\"headers\"];\n const headers = isObjectRecord(headersValue) ? headersValue : undefined;\n\n return {\n status,\n responseBody,\n responseHeaders: headers,\n apiMessage: extractApiMessage(responseBody),\n };\n};\n\nconst extractHttpDetails = (\n error: Record<string, unknown>,\n): HttpDetails | null => {\n return extractResponseHttpDetails(error) ?? extractClientHttpDetails(error);\n};\n\nconst rebuildSerializable = ({\n value,\n depth,\n seen,\n}: TraversalParams): unknown => {\n if (\n isNil(value) ||\n isString(value) ||\n typeof value === \"number\" ||\n typeof value === \"boolean\"\n ) {\n return value;\n }\n if (Array.isArray(value) || isObjectRecord(value)) {\n if (seen.has(value)) {\n return CIRCULAR_PLACEHOLDER;\n }\n if (depth >= MAX_SERIALIZED_DEPTH) {\n return TOO_DEEP_PLACEHOLDER;\n }\n seen.add(value);\n if (Array.isArray(value)) {\n return value.map((entry) =>\n rebuildSerializable({ value: entry, depth: depth + 1, seen }),\n );\n }\n return Object.fromEntries(\n Object.entries(value).map(([key, entry]) => [\n key,\n rebuildSerializable({ value: entry, depth: depth + 1, seen }),\n ]),\n );\n }\n return String(value);\n};\n\nconst toSerializable = (value: unknown): unknown => {\n if (isNil(value)) {\n return value;\n }\n const { error } = tryCatchSync(() => JSON.stringify(value));\n if (isNil(error)) {\n return value;\n }\n const rebuilt = tryCatchSync(() =>\n rebuildSerializable({ value, depth: 0, seen: new WeakSet() }),\n );\n return isNil(rebuilt.error) ? rebuilt.data : UNSERIALIZABLE_PLACEHOLDER;\n};\n\nconst toSerializableHttpDetails = (\n httpDetails: HttpDetails | null,\n): HttpDetails | null => {\n if (isNil(httpDetails)) {\n return null;\n }\n const { responseBody, requestBody, responseHeaders } = httpDetails;\n return {\n ...httpDetails,\n responseBody: toSerializable(responseBody),\n requestBody: toSerializable(requestBody),\n responseHeaders: isNil(responseHeaders)\n ? undefined\n : Object.fromEntries(\n Object.entries(responseHeaders).map(([key, value]) => [\n key,\n toSerializable(value),\n ]),\n ),\n };\n};\n\nconst readErrorName = (error: Record<string, unknown>): string | undefined => {\n const name = readString(error, \"name\");\n if (!isNil(name) && name.length > 0 && name !== \"Error\") {\n return name;\n }\n const ctor = error[\"constructor\"];\n if (\n typeof ctor === \"function\" &&\n isString(ctor.name) &&\n ctor.name.length > 0 &&\n ctor.name !== \"Object\" &&\n ctor.name !== \"Error\"\n ) {\n return ctor.name;\n }\n return undefined;\n};\n\nconst readErrorMessage = (error: Record<string, unknown>): string => {\n const messageString = readString(error, \"message\");\n if (!isNil(messageString)) {\n return messageString;\n }\n const stringified = String(error);\n if (stringified.length > 0 && stringified !== \"[object Object]\") {\n return stringified;\n }\n return \"Unknown error\";\n};\n\nconst pickPlainMessage = ({\n httpDetails,\n rawMessage,\n}: {\n httpDetails: HttpDetails | null;\n rawMessage: string;\n}): string => {\n if (httpDetails?.apiMessage) {\n return httpDetails.apiMessage;\n }\n const cleaned = stripStack(rawMessage);\n if (cleaned.length > 0) {\n return truncate(cleaned);\n }\n return \"Unknown error\";\n};\n\nconst isFriendlyPieceError = (value: unknown): value is FriendlyPieceError => {\n if (!isObjectRecord(value)) {\n return false;\n }\n return (\n value[\"__apErrorVersion\"] === FRIENDLY_PIECE_ERROR_VERSION &&\n typeof value[\"message\"] === \"string\"\n );\n};\n\nexport const formatPieceError = (\n error: unknown,\n options?: FormatPieceErrorOptions,\n): FriendlyPieceError => {\n const raw = options?.raw;\n const withRaw = (base: FriendlyPieceError): FriendlyPieceError => {\n if (isNil(raw) || raw.length === 0 || !isNil(base.raw)) {\n return base;\n }\n return { ...base, raw: truncateRaw(raw) };\n };\n\n if (isNil(error)) {\n return withRaw({\n __apErrorVersion: FRIENDLY_PIECE_ERROR_VERSION,\n message: \"Unknown error\",\n });\n }\n\n if (isString(error)) {\n const cleaned = stripStack(error);\n return withRaw({\n __apErrorVersion: FRIENDLY_PIECE_ERROR_VERSION,\n message: cleaned.length > 0 ? cleaned : \"Unknown error\",\n });\n }\n\n if (!isObjectRecord(error)) {\n return withRaw({\n __apErrorVersion: FRIENDLY_PIECE_ERROR_VERSION,\n message: truncate(String(error)),\n });\n }\n\n if (isFriendlyPieceError(error)) {\n return withRaw(error);\n }\n\n const httpDetails = extractHttpDetails(error);\n const errorName = readErrorName(error);\n const rawMessage = readErrorMessage(error);\n const message = pickPlainMessage({ httpDetails, rawMessage });\n\n return withRaw({\n __apErrorVersion: FRIENDLY_PIECE_ERROR_VERSION,\n message,\n errorName,\n ...(toSerializableHttpDetails(httpDetails) ?? {}),\n });\n};\n\nexport const tryParseFriendlyPieceError = (\n value: unknown,\n): FriendlyPieceError | null => {\n if (isNil(value)) {\n return null;\n }\n const candidate = isString(value) ? safeJsonParse(value) : value;\n return isFriendlyPieceError(candidate) ? candidate : null;\n};\n\ntype TraversalParams = {\n value: unknown;\n depth: number;\n seen: WeakSet<object>;\n};\n\ntype HttpDetails = {\n status?: number;\n responseBody?: unknown;\n responseHeaders?: Record<string, unknown>;\n requestBody?: unknown;\n requestUrl?: string;\n requestMethod?: string;\n apiMessage?: string;\n};\n\nexport type FriendlyPieceError = {\n __apErrorVersion: 1;\n message: string;\n errorName?: string;\n status?: number;\n responseBody?: unknown;\n responseHeaders?: Record<string, unknown>;\n requestBody?: unknown;\n requestUrl?: string;\n requestMethod?: string;\n apiMessage?: string;\n raw?: string;\n};\n\ntype FormatPieceErrorOptions = {\n raw?: string;\n};\n","// Vendored from activepieces/activepieces@0.91.0 packages/core/utils/src/lib/ssrf-ip-classifier.ts. MIT; see ../../../LICENSE.\n// Generated by scripts/sync-upstream.mts — do not edit by hand.\nimport ipaddr from \"ipaddr.js\";\n\nfunction parseOrNull(ip: string): ipaddr.IPv4 | ipaddr.IPv6 | null {\n try {\n return ipaddr.parse(ip);\n } catch {\n return null;\n }\n}\n\nfunction isInAllowList({\n ip,\n allowList,\n}: {\n ip: string;\n allowList: string[];\n}): boolean {\n if (allowList.includes(ip)) return true;\n const addr = parseOrNull(ip);\n if (!addr) return false;\n return allowList.some(\n (entry) => entry.includes(\"/\") && matchesCidr({ addr, cidr: entry }),\n );\n}\n\nfunction matchesCidr({\n addr,\n cidr,\n}: {\n addr: ipaddr.IPv4 | ipaddr.IPv6;\n cidr: string;\n}): boolean {\n try {\n const range = ipaddr.parseCIDR(cidr);\n if (addr.kind() !== range[0].kind()) return false;\n return addr.match(range);\n } catch {\n return false;\n }\n}\n\nfunction isBlockedRange(addr: ipaddr.IPv4 | ipaddr.IPv6): boolean {\n if (addr.kind() === \"ipv6\") {\n const v6 = addr as ipaddr.IPv6;\n if (v6.isIPv4MappedAddress()) {\n return isBlockedRange(v6.toIPv4Address());\n }\n }\n return addr.range() !== \"unicast\";\n}\n\nfunction isBlockedIp({\n ip,\n allowList,\n}: {\n ip: string;\n allowList: string[];\n}): boolean {\n if (isInAllowList({ ip, allowList })) {\n return false;\n }\n const addr = parseOrNull(ip);\n if (!addr) {\n return true;\n }\n return isBlockedRange(addr);\n}\n\nexport const ssrfIpClassifier = {\n isBlockedIp,\n};\n","// Vendored from activepieces/activepieces@0.91.0 packages/server/engine/src/lib/helper/dynamic-prop-keys.ts. MIT; see ../../../../LICENSE.\n// Generated by scripts/sync-upstream.mts — do not edit by hand.\nimport { isObject } from \"../../../core-utils/index.js\";\nimport type { InputPropertyMap } from \"../../../framework/index.js\";\n\n// react-hook-form treats `.` and `[` as path separators and strips `]`, `\"` and `'`\n// (see its stringToPath util), so dynamic-property keys containing any of these break\n// the builder form. Escape them (JSON-Pointer style, `~` escapes the escape char) before\n// keys reach the UI, and reverse the mapping before the piece consumes the values.\nfunction escapePropsKeys(props: InputPropertyMap): InputPropertyMap {\n return Object.fromEntries(\n Object.entries(props).map(([key, property]) => [escapeKey(key), property]),\n );\n}\n\nfunction unescapePropsKeys(props: InputPropertyMap): InputPropertyMap {\n return Object.fromEntries(\n Object.entries(props).map(([key, property]) => [\n unescapeKey(key),\n property,\n ]),\n );\n}\n\nfunction unescapeInputKeys<T>(value: T): T {\n if (!isObject(value)) {\n return value;\n }\n return Object.fromEntries(\n Object.entries(value).map(([key, child]) => [unescapeKey(key), child]),\n ) as T;\n}\n\n// Escaped keys carry the ESCAPED_KEY_MARKER prefix so unescaping only ever touches keys\n// this module produced: a literal key like `field~1name` that never went through\n// escapeKey (schema-less tool calls, API-created flows) passes through unchanged.\n// The mapping stays bijective because unescaped keys can never contain `~` (any `~`\n// triggers escaping), so they can never start with the marker.\nfunction escapeKey(key: string): string {\n if (!RESERVED_CHARS.test(key)) {\n return key;\n }\n return (\n ESCAPED_KEY_MARKER +\n key.replace(/[~.[\\]\"']/g, (char) => ESCAPE_SEQUENCES[char])\n );\n}\n\nfunction unescapeKey(key: string): string {\n if (!key.startsWith(ESCAPED_KEY_MARKER)) {\n return key;\n }\n return key\n .slice(ESCAPED_KEY_MARKER.length)\n .replace(/~[0-5]/g, (sequence) => UNESCAPE_SEQUENCES[sequence]);\n}\n\nconst ESCAPED_KEY_MARKER = \"~ap~\";\n\nconst RESERVED_CHARS = /[~.[\\]\"']/;\n\nconst ESCAPE_SEQUENCES: Record<string, string> = {\n \"~\": \"~0\",\n \".\": \"~1\",\n \"[\": \"~2\",\n \"]\": \"~3\",\n '\"': \"~4\",\n \"'\": \"~5\",\n};\n\nconst UNESCAPE_SEQUENCES: Record<string, string> = Object.fromEntries(\n Object.entries(ESCAPE_SEQUENCES).map(([char, sequence]) => [sequence, char]),\n);\n\nexport const dynamicPropKeys = {\n escapePropsKeys,\n unescapePropsKeys,\n unescapeInputKeys,\n};\n","// Vendored from activepieces/activepieces@0.91.0 packages/server/engine/src/lib/variables/processors/array-zipper.ts. MIT; see ../../../../../LICENSE.\n// Generated by scripts/sync-upstream.mts — do not edit by hand.\nimport { isObject } from \"../../../../core-utils/index.js\";\nimport type { ProcessorFn } from \"./types.js\";\n\nfunction getLongestArrayLengthInObject(props: Record<string, unknown>): number {\n return Math.max(\n ...Object.values(props).map((value) =>\n Array.isArray(value) ? value.length : 1,\n ),\n );\n}\n\nfunction constructResultForIndex(\n props: Record<string, unknown>,\n index: number,\n): Record<string, unknown> {\n return Object.entries(props).reduce(\n (result, [key, value]) => {\n result[key] = Array.isArray(value) ? value[index] : value;\n return result;\n },\n {} as Record<string, unknown>,\n );\n}\n\nexport const arrayZipperProcessor: ProcessorFn = (_property, value) => {\n if (Array.isArray(value) || !isObject(value)) {\n return value;\n }\n\n return Array.from(\n { length: getLongestArrayLengthInObject(value) },\n (_, index) => constructResultForIndex(value, index),\n );\n};\n","// Vendored from activepieces/activepieces@0.91.0 packages/server/engine/src/lib/variables/processors/checkbox.ts. MIT; see ../../../../../LICENSE.\n// Generated by scripts/sync-upstream.mts — do not edit by hand.\nimport { isNil, parseToJsonIfPossible } from \"../../../../core-utils/index.js\";\nimport type { ProcessorFn } from \"./types.js\";\n\nexport const checkboxProcessor: ProcessorFn = (_property, value) => {\n if (isNil(value) || typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"string\" && value.trim().length === 0) {\n return undefined;\n }\n const parsed = parseToJsonIfPossible(value);\n return typeof parsed === \"boolean\" ? parsed : value;\n};\n","// Vendored from activepieces/activepieces@0.91.0 packages/server/engine/src/lib/variables/processors/date-time.ts. MIT; see ../../../../../LICENSE.\n// Generated by scripts/sync-upstream.mts — do not edit by hand.\nimport dayjs from \"dayjs\";\nimport timezone from \"dayjs/plugin/timezone.js\";\nimport utc from \"dayjs/plugin/utc.js\";\nimport type { ProcessorFn } from \"./types.js\";\n\nexport const dateTimeProcessor: ProcessorFn = (_property, value) => {\n dayjs.extend(utc);\n dayjs.extend(timezone);\n const dateTimeString = value;\n try {\n if (!dateTimeString) throw Error(\"Undefined input\");\n return dayjs.tz(dateTimeString, \"UTC\").toISOString();\n } catch (error) {\n console.error(error);\n return undefined;\n }\n};\n","// Vendored from activepieces/activepieces@0.91.0 packages/server/engine/src/lib/variables/processors/file.ts. MIT; see ../../../../../LICENSE.\n// Generated by scripts/sync-upstream.mts — do not edit by hand.\nimport { Readable } from \"node:stream\";\nimport { isBase64, isNil, isString } from \"../../../../core-utils/index.js\";\nimport type { ApStreamingFile } from \"../../../../framework/index.js\";\nimport { ApFile, PropertyType } from \"../../../../framework/index.js\";\nimport type { ProcessorFn } from \"./types.js\";\n\nexport const fileProcessor: ProcessorFn = async (property, urlOrBase64) => {\n if (isNil(urlOrBase64) || !isString(urlOrBase64)) {\n return null;\n }\n const streaming =\n property.type === PropertyType.FILE && property.streaming === true;\n try {\n if (streaming) {\n return await handleStreamingFile(urlOrBase64);\n }\n const file = handleBase64File(urlOrBase64);\n if (!isNil(file)) {\n return file;\n }\n return await handleUrlFile(urlOrBase64);\n } catch (e) {\n console.error(e);\n return null;\n }\n};\n\nfunction parseBase64File(\n propertyValue: string,\n): { extension: string; buffer: Buffer } | null {\n if (!isBase64(propertyValue, { allowMime: true })) {\n return null;\n }\n const matches = propertyValue.match(/^data:([A-Za-z-+/]+);base64,(.+)$/); // example match: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD///+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4Ug9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC\n if (!matches || matches?.length !== 3) {\n return null;\n }\n return {\n extension: mimeExtension(matches[1]) || \"bin\",\n buffer: Buffer.from(matches[2], \"base64\"),\n };\n}\n\nfunction handleBase64File(propertyValue: string): ApFile | null {\n const parsed = parseBase64File(propertyValue);\n if (isNil(parsed)) {\n return null;\n }\n return new ApFile(\n `unknown.${parsed.extension}`,\n parsed.buffer,\n parsed.extension,\n );\n}\n\nasync function handleUrlFile(path: string): Promise<ApFile | null> {\n const fileResponse = await fetch(path);\n // A 4xx/5xx body is the server's error page, not the file. handleStreamingFile\n // already refuses one.\n if (!fileResponse.ok) {\n return null;\n }\n\n const filename =\n getFileName(\n path,\n fileResponse.headers.get(\"content-disposition\"),\n fileResponse.headers.get(\"content-type\") ?? undefined,\n ) ?? \"unknown\";\n const extension = extensionFromFilename(filename);\n\n return new ApFile(\n filename,\n Buffer.from(await fileResponse.arrayBuffer()),\n extension,\n );\n}\n\nasync function handleStreamingFile(\n propertyValue: string,\n): Promise<ApStreamingFile | null> {\n const parsed = parseBase64File(propertyValue);\n if (!isNil(parsed)) {\n return {\n filename: `unknown.${parsed.extension}`,\n extension: parsed.extension,\n size: parsed.buffer.length,\n body: Readable.from(parsed.buffer),\n };\n }\n\n const fileResponse = await fetch(propertyValue);\n if (!fileResponse.ok || isNil(fileResponse.body)) {\n await fileResponse.body?.cancel();\n return null;\n }\n const filename =\n getFileName(\n propertyValue,\n fileResponse.headers.get(\"content-disposition\"),\n fileResponse.headers.get(\"content-type\") ?? undefined,\n ) ?? \"unknown\";\n const extension = extensionFromFilename(filename);\n const contentEncoding = fileResponse.headers.get(\"content-encoding\");\n const contentLength = Number(fileResponse.headers.get(\"content-length\"));\n // undici transparently decompresses gzip/br/deflate but leaves the compressed\n // Content-Length in place, so it would understate the streamed byte count and\n // truncate the destination. Only trust the size when the body is not encoded.\n const sizeIsTrustworthy =\n (isNil(contentEncoding) || contentEncoding.toLowerCase() === \"identity\") &&\n Number.isInteger(contentLength) &&\n contentLength > 0;\n\n return {\n filename,\n extension,\n size: sizeIsTrustworthy ? contentLength : undefined,\n // @ts-expect-error -- undici streams a Node web ReadableStream body; the DOM fetch types omit the fromWeb overload\n body: Readable.fromWeb(fileResponse.body),\n };\n}\n\nfunction extensionFromFilename(filename: string): string | undefined {\n const parts = filename.split(\".\");\n const last = parts.length > 1 ? parts.pop() : undefined;\n return last ? last : undefined;\n}\n\nfunction getFileName(\n path: string,\n disposition: string | null,\n mimeType: string | undefined,\n): string | null {\n const url = new URL(path);\n if (isNil(disposition)) {\n const fileNameFromUrl =\n url.pathname.includes(\"/\") && url.pathname.split(\"/\").pop()?.includes(\".\")\n ? url.pathname.split(\"/\").pop()\n : null;\n if (!isNil(fileNameFromUrl)) {\n return fileNameFromUrl;\n }\n const resolvedExtension = mimeType ? mimeExtension(mimeType) : null;\n return `unknown.${resolvedExtension ?? \"bin\"}`;\n }\n const utf8FilenameRegex = /filename\\*=UTF-8''([\\w%\\-.]+)(?:; ?|$)/i;\n if (utf8FilenameRegex.test(disposition)) {\n const result = utf8FilenameRegex.exec(disposition);\n if (result && result.length > 1) {\n return decodeURIComponent(result[1]);\n }\n }\n // prevent ReDos attacks by anchoring the ascii regex to string start and\n // slicing off everything before 'filename='\n const filenameStart = disposition.toLowerCase().indexOf(\"filename=\");\n const asciiFilenameRegex = /^filename=([\"']?)(.*?[^\\\\])\\1(?:; ?|$)/i;\n\n if (filenameStart >= 0) {\n const partialDisposition = disposition.slice(filenameStart);\n const matches = asciiFilenameRegex.exec(partialDisposition);\n if (matches != null && matches[2]) {\n return matches[2];\n }\n }\n return null;\n}\n\nfunction mimeExtension(mimeType: string): string | null {\n const normalized = mimeType.split(\";\")[0].trim().toLowerCase();\n return MIME_EXTENSIONS[normalized] ?? null;\n}\n\nconst MIME_EXTENSIONS: Record<string, string> = {\n \"application/json\": \"json\",\n \"application/pdf\": \"pdf\",\n \"application/xml\": \"xml\",\n \"application/zip\": \"zip\",\n \"application/gzip\": \"gz\",\n \"application/x-7z-compressed\": \"7z\",\n \"application/x-tar\": \"tar\",\n \"application/octet-stream\": \"bin\",\n \"application/msword\": \"doc\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\":\n \"docx\",\n \"application/vnd.ms-excel\": \"xls\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": \"xlsx\",\n \"application/vnd.ms-powerpoint\": \"ppt\",\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\":\n \"pptx\",\n \"application/rtf\": \"rtf\",\n \"application/javascript\": \"js\",\n \"application/x-javascript\": \"js\",\n \"application/x-yaml\": \"yaml\",\n \"application/yaml\": \"yaml\",\n \"application/x-httpd-php\": \"php\",\n \"application/x-sh\": \"sh\",\n \"image/png\": \"png\",\n \"image/jpeg\": \"jpg\",\n \"image/jpg\": \"jpg\",\n \"image/gif\": \"gif\",\n \"image/webp\": \"webp\",\n \"image/svg+xml\": \"svg\",\n \"image/bmp\": \"bmp\",\n \"image/tiff\": \"tiff\",\n \"image/x-icon\": \"ico\",\n \"image/vnd.microsoft.icon\": \"ico\",\n \"image/heic\": \"heic\",\n \"image/heif\": \"heif\",\n \"image/avif\": \"avif\",\n \"text/plain\": \"txt\",\n \"text/html\": \"html\",\n \"text/css\": \"css\",\n \"text/csv\": \"csv\",\n \"text/javascript\": \"js\",\n \"text/markdown\": \"md\",\n \"text/xml\": \"xml\",\n \"text/tab-separated-values\": \"tsv\",\n \"text/yaml\": \"yaml\",\n \"audio/mpeg\": \"mp3\",\n \"audio/mp3\": \"mp3\",\n \"audio/mp4\": \"m4a\",\n \"audio/wav\": \"wav\",\n \"audio/x-wav\": \"wav\",\n \"audio/ogg\": \"ogg\",\n \"audio/webm\": \"weba\",\n \"audio/flac\": \"flac\",\n \"audio/aac\": \"aac\",\n \"video/mp4\": \"mp4\",\n \"video/mpeg\": \"mpeg\",\n \"video/webm\": \"webm\",\n \"video/quicktime\": \"mov\",\n \"video/x-msvideo\": \"avi\",\n \"video/ogg\": \"ogv\",\n \"font/woff\": \"woff\",\n \"font/woff2\": \"woff2\",\n \"font/ttf\": \"ttf\",\n \"font/otf\": \"otf\",\n};\n","// Vendored from activepieces/activepieces@0.91.0 packages/server/engine/src/lib/variables/processors/json.ts. MIT; see ../../../../../LICENSE.\n// Generated by scripts/sync-upstream.mts — do not edit by hand.\nimport { isNil } from \"../../../../core-utils/index.js\";\nimport type { ProcessorFn } from \"./types.js\";\n\nexport const jsonProcessor: ProcessorFn = (_property, value) => {\n if (isNil(value)) {\n return value;\n }\n try {\n if (typeof value === \"object\") {\n return value;\n }\n return JSON.parse(value);\n } catch (error) {\n console.error(error);\n return undefined;\n }\n};\n","// Vendored from activepieces/activepieces@0.91.0 packages/server/engine/src/lib/variables/processors/multi-select.ts. MIT; see ../../../../../LICENSE.\n// Generated by scripts/sync-upstream.mts — do not edit by hand.\nimport { isNil, parseToJsonIfPossible } from \"../../../../core-utils/index.js\";\nimport type { ProcessorFn } from \"./types.js\";\n\nexport const multiSelectProcessor: ProcessorFn = (_property, value) => {\n if (isNil(value) || Array.isArray(value)) {\n return value;\n }\n if (typeof value === \"string\" && value.trim().length === 0) {\n return undefined;\n }\n const parsed = parseToJsonIfPossible(value);\n return Array.isArray(parsed) ? parsed : [value];\n};\n","// Vendored from activepieces/activepieces@0.91.0 packages/server/engine/src/lib/variables/processors/number.ts. MIT; see ../../../../../LICENSE.\n// Generated by scripts/sync-upstream.mts — do not edit by hand.\nimport { isNil } from \"../../../../core-utils/index.js\";\nimport type { ProcessorFn } from \"./types.js\";\n\nexport const numberProcessor: ProcessorFn = (_property, value) => {\n if (isNil(value)) {\n return value;\n }\n if (value === \"\") {\n return undefined;\n }\n return Number(value);\n};\n","// Vendored from activepieces/activepieces@0.91.0 packages/server/engine/src/lib/variables/processors/object.ts. MIT; see ../../../../../LICENSE.\n// Generated by scripts/sync-upstream.mts — do not edit by hand.\nimport { isNil } from \"../../../../core-utils/index.js\";\nimport type { ProcessorFn } from \"./types.js\";\n\nexport const objectProcessor: ProcessorFn = (_property, value) => {\n if (isNil(value)) {\n return value;\n }\n if (typeof value === \"string\") {\n try {\n return JSON.parse(value);\n } catch (e) {\n return undefined;\n }\n }\n if (typeof value === \"object\" && !Array.isArray(value)) {\n return value;\n }\n return undefined;\n};\n","// Vendored from activepieces/activepieces@0.91.0 packages/server/engine/src/lib/variables/processors/text.ts. MIT; see ../../../../../LICENSE.\n// Generated by scripts/sync-upstream.mts — do not edit by hand.\nimport { isNil } from \"../../../../core-utils/index.js\";\nimport type { ProcessorFn } from \"./types.js\";\n\nexport const textProcessor: ProcessorFn = (property, value) => {\n if (isNil(value)) {\n return value;\n }\n if (typeof value === \"object\") {\n return JSON.stringify(value);\n }\n\n const result = value.toString();\n if (result.length === 0 && !property.required) {\n return undefined;\n }\n return result;\n};\n","// Vendored from activepieces/activepieces@0.91.0 packages/server/engine/src/lib/variables/processors/index.ts. MIT; see ../../../../../LICENSE.\n// Generated by scripts/sync-upstream.mts — do not edit by hand.\nimport type { PropertyType } from \"../../../../framework/index.js\";\nimport { checkboxProcessor } from \"./checkbox.js\";\nimport { dateTimeProcessor } from \"./date-time.js\";\nimport { fileProcessor } from \"./file.js\";\nimport { jsonProcessor } from \"./json.js\";\nimport { multiSelectProcessor } from \"./multi-select.js\";\nimport { numberProcessor } from \"./number.js\";\nimport { objectProcessor } from \"./object.js\";\nimport { textProcessor } from \"./text.js\";\nimport type { ProcessorFn } from \"./types.js\";\n\nexport const processors: Partial<Record<PropertyType, ProcessorFn>> = {\n JSON: jsonProcessor,\n OBJECT: objectProcessor,\n NUMBER: numberProcessor,\n LONG_TEXT: textProcessor,\n SHORT_TEXT: textProcessor,\n SECRET_TEXT: textProcessor,\n DATE_TIME: dateTimeProcessor,\n FILE: fileProcessor,\n MULTI_SELECT_DROPDOWN: multiSelectProcessor,\n STATIC_MULTI_SELECT_DROPDOWN: multiSelectProcessor,\n CHECKBOX: checkboxProcessor,\n};\n","// Vendored from activepieces/activepieces@0.91.0 packages/server/engine/src/lib/variables/props-processor.ts. MIT; see ../../../../LICENSE.\n// Generated by scripts/sync-upstream.mts — do not edit by hand.\nimport { Readable } from \"node:stream\";\nimport { isNil, isObject } from \"../../../core-utils/index.js\";\nimport type {\n InputPropertyMap,\n PieceAuthProperty,\n PieceProperty,\n PiecePropertyMap,\n StaticPropsValue,\n} from \"../../../framework/index.js\";\nimport {\n DateRangeValue,\n getAuthPropertyForValue,\n PropertyType,\n} from \"../../../framework/index.js\";\nimport { dynamicPropKeys } from \"../helper/dynamic-prop-keys.js\";\nimport { processors } from \"./processors/index.js\";\nimport { arrayZipperProcessor } from \"./processors/array-zipper.js\";\nimport type { AppConnectionValue } from \"../../../core-piece-types/index.js\";\nimport { AUTHENTICATION_PROPERTY_NAME } from \"../../../core-piece-types/index.js\";\nimport type { PropertySettings } from \"../../../../src/host/shared-shim.js\";\n\ntype PropsValidationError = {\n [key: string]: string[] | PropsValidationError | PropsValidationError[];\n};\n\nexport const propsProcessor = {\n applyProcessorsAndValidators: async (\n resolvedInput: StaticPropsValue<PiecePropertyMap>,\n props: InputPropertyMap,\n auth: PieceAuthProperty | PieceAuthProperty[] | undefined,\n requireAuth: boolean,\n propertySettings: Record<string, PropertySettings>,\n ): Promise<{\n processedInput: StaticPropsValue<PiecePropertyMap>;\n errors: PropsValidationError;\n }> => {\n let dynamaicPropertiesSchema: Record<string, InputPropertyMap> | undefined =\n undefined;\n if (Object.keys(propertySettings).length > 0) {\n dynamaicPropertiesSchema = Object.fromEntries(\n Object.entries(propertySettings).map(([key, propertySetting]) => [\n key,\n propertySetting.schema,\n ]),\n );\n }\n const processedInput = { ...resolvedInput };\n const errors: PropsValidationError = {};\n const authValue: AppConnectionValue | undefined =\n resolvedInput[AUTHENTICATION_PROPERTY_NAME];\n if (authValue && requireAuth) {\n const authPropsToProcess = getAuthPropsToProcess(authValue, auth);\n if (authPropsToProcess) {\n const { processedInput: authProcessedInput, errors: authErrors } =\n await propsProcessor.applyProcessorsAndValidators(\n resolvedInput[AUTHENTICATION_PROPERTY_NAME],\n authPropsToProcess,\n undefined,\n false,\n {},\n );\n processedInput[AUTHENTICATION_PROPERTY_NAME] = authProcessedInput;\n if (Object.keys(authErrors).length > 0) {\n errors[AUTHENTICATION_PROPERTY_NAME] = authErrors;\n }\n }\n }\n for (const [key, value] of Object.entries(resolvedInput)) {\n const property = props[key];\n if (isNil(property)) {\n continue;\n }\n if (property.type === PropertyType.DYNAMIC) {\n const valueWithOriginalKeys = dynamicPropKeys.unescapeInputKeys(value);\n processedInput[key] = valueWithOriginalKeys;\n if (!isNil(dynamaicPropertiesSchema?.[key])) {\n const { processedInput: itemProcessedInput, errors: itemErrors } =\n await propsProcessor.applyProcessorsAndValidators(\n valueWithOriginalKeys,\n dynamicPropKeys.unescapePropsKeys(dynamaicPropertiesSchema[key]),\n undefined,\n false,\n {},\n );\n processedInput[key] = itemProcessedInput;\n if (Object.keys(itemErrors).length > 0) {\n errors[key] = itemErrors;\n }\n }\n }\n if (property.type === PropertyType.ARRAY && property.properties) {\n const arrayOfObjects = arrayZipperProcessor(property, value) ?? [];\n const processedArray = [];\n const processedErrors = [];\n for (const item of arrayOfObjects) {\n const { processedInput: itemProcessedInput, errors: itemErrors } =\n await propsProcessor.applyProcessorsAndValidators(\n item,\n property.properties,\n undefined,\n false,\n {},\n );\n processedArray.push(itemProcessedInput);\n processedErrors.push(itemErrors);\n }\n processedInput[key] = processedArray;\n const isThereErrors = processedErrors.some(\n (error) => Object.keys(error).length > 0,\n );\n if (isThereErrors) {\n errors[key] = {\n properties: processedErrors,\n };\n }\n }\n if (!property.required && isNil(processedInput[key])) {\n processedInput[key] = undefined;\n }\n const processor = processors[property.type];\n if (processor) {\n processedInput[key] = await processor(property, processedInput[key]);\n }\n\n const shouldValidate =\n key !== AUTHENTICATION_PROPERTY_NAME &&\n property.type !== PropertyType.MARKDOWN;\n if (!shouldValidate) {\n continue;\n }\n }\n\n for (const [key, value] of Object.entries(processedInput)) {\n const property = props[key];\n if (isNil(property)) {\n continue;\n }\n\n const validationErrors = validateProperty(\n property,\n value,\n resolvedInput[key],\n );\n if (validationErrors.length > 0) {\n errors[key] = validationErrors;\n }\n }\n\n // Streaming file inputs open a live connection when resolved. If any property\n // fails validation the action never runs, so drain those bodies here to avoid\n // leaking connections until GC.\n if (Object.keys(errors).length > 0) {\n destroyOpenStreams(processedInput);\n }\n\n return { processedInput, errors };\n },\n};\n\nfunction destroyOpenStreams(value: unknown): void {\n if (isNil(value) || typeof value !== \"object\" || Buffer.isBuffer(value)) {\n return;\n }\n if (value instanceof Readable) {\n value.destroy();\n return;\n }\n for (const child of Object.values(value)) {\n destroyOpenStreams(child);\n }\n}\n\nconst validateProperty = (\n property: PieceProperty,\n value: unknown,\n originalValue: unknown,\n): string[] => {\n if (property.type === PropertyType.JSON) {\n if (!property.required && originalValue === \"\") {\n return [];\n }\n if (!isNil(originalValue) && isNil(value)) {\n return [`Expected JSON, received: ${originalValue}`];\n }\n if (!property.required && isNil(value)) {\n return [];\n }\n if (!isObject(value) && !Array.isArray(value)) {\n return [`Expected JSON, received: ${originalValue}`];\n }\n return [];\n }\n\n if (!property.required && isNil(value)) {\n return [];\n }\n\n switch (property.type) {\n case PropertyType.SHORT_TEXT:\n case PropertyType.LONG_TEXT:\n case PropertyType.RICH_TEXT:\n return typeof value === \"string\"\n ? []\n : [`Expected string, received: ${originalValue}`];\n case PropertyType.NUMBER:\n return typeof value === \"number\" && !Number.isNaN(value)\n ? []\n : [`Expected number, received: ${originalValue}`];\n case PropertyType.CHECKBOX:\n return typeof value === \"boolean\"\n ? []\n : [`Expected boolean, received: ${originalValue}`];\n case PropertyType.DATE_TIME:\n return typeof value === \"string\"\n ? []\n : [\n `Invalid datetime format. Expected ISO format (e.g. 2024-03-14T12:00:00.000Z), received: ${originalValue}`,\n ];\n case PropertyType.DATE_RANGE:\n return DateRangeValue.safeParse(value).success\n ? []\n : [`Expected date range, received: ${originalValue}`];\n case PropertyType.ARRAY:\n case PropertyType.MULTI_SELECT_DROPDOWN:\n case PropertyType.STATIC_MULTI_SELECT_DROPDOWN:\n return Array.isArray(value)\n ? []\n : [`Expected array, received: ${originalValue}`];\n case PropertyType.OBJECT:\n return isObject(value)\n ? []\n : [`Expected object, received: ${originalValue}`];\n case PropertyType.FILE:\n return isObject(value)\n ? []\n : [\n `Expected file url or base64 with mimeType, received: ${originalValue}`,\n ];\n default:\n return [];\n }\n};\n\nfunction getAuthPropsToProcess(\n authValue: AppConnectionValue,\n auth: PieceAuthProperty | PieceAuthProperty[] | undefined,\n): null {\n if (isNil(auth)) {\n return null;\n }\n const usedAuthProperty = getAuthPropertyForValue({\n authValueType: authValue.type,\n pieceAuth: auth,\n });\n const doesAuthHaveProps =\n usedAuthProperty?.type === PropertyType.CUSTOM_AUTH ||\n usedAuthProperty?.type === PropertyType.OAUTH2 ||\n usedAuthProperty?.type === PropertyType.OIDC;\n if (doesAuthHaveProps && !isNil(usedAuthProperty?.props)) {\n return usedAuthProperty.props;\n }\n return null;\n}\n"],"mappings":"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"}
|