@apify/input_schema 3.13.4 → 3.14.0
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/cjs/index.cjs +2 -2
- package/cjs/index.cjs.map +1 -1
- package/cjs/index.d.ts +5 -3
- package/esm/index.d.mts +5 -3
- package/esm/index.mjs +2 -2
- package/esm/index.mjs.map +1 -1
- package/package.json +2 -2
package/cjs/index.cjs
CHANGED
|
@@ -154,7 +154,7 @@ var schema_default = {
|
|
|
154
154
|
title: { type: "string" },
|
|
155
155
|
description: { type: "string" },
|
|
156
156
|
nullable: { type: "boolean" },
|
|
157
|
-
editor: { enum: ["javascript", "python", "textfield", "textarea", "datepicker", "hidden"] },
|
|
157
|
+
editor: { enum: ["javascript", "python", "textfield", "textarea", "datepicker", "hidden", "fileupload"] },
|
|
158
158
|
isSecret: { type: "boolean" }
|
|
159
159
|
},
|
|
160
160
|
required: ["type", "title", "description", "editor"],
|
|
@@ -205,7 +205,7 @@ var schema_default = {
|
|
|
205
205
|
nullable: { type: "boolean" },
|
|
206
206
|
minLength: { type: "integer" },
|
|
207
207
|
maxLength: { type: "integer" },
|
|
208
|
-
editor: { enum: ["javascript", "python", "textfield", "textarea", "hidden"] },
|
|
208
|
+
editor: { enum: ["javascript", "python", "textfield", "textarea", "hidden", "fileupload"] },
|
|
209
209
|
isSecret: { enum: [false] },
|
|
210
210
|
sectionCaption: { type: "string" },
|
|
211
211
|
sectionDescription: { type: "string" }
|
package/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/intl.ts","../../src/schema.json","../../src/input_schema.ts","../../src/utilities.ts"],"sourcesContent":["export * from './intl';\nexport * from './input_schema';\nexport {\n StringFieldDefinition,\n BooleanFieldDefinition,\n IntegerFieldDefinition,\n ObjectFieldDefinition,\n ArrayFieldDefinition,\n MixedFieldDefinition,\n FieldDefinition,\n InputSchema,\n} from './types';\nexport * from './utilities';\n","const intlStrings = {\n 'inputSchema.validation.generic':\n 'Field {rootName}.{fieldKey} {message}',\n 'inputSchema.validation.required':\n 'Field {rootName}.{fieldKey} is required',\n 'inputSchema.validation.proxyRequired':\n 'Field {rootName}.{fieldKey} is required. Please provide custom proxy URLs or use Apify Proxy.',\n 'inputSchema.validation.requestListSourcesInvalid':\n 'Items in {rootName}.{fieldKey} at positions [{invalidIndexes}] do not contain valid URLs',\n 'inputSchema.validation.arrayKeysInvalid':\n 'Keys in {rootName}.{fieldKey} at positions [{invalidIndexes}] must match regular expression \"{pattern}\"',\n 'inputSchema.validation.arrayValuesInvalid':\n 'Values in {rootName}.{fieldKey} at positions [{invalidIndexes}] must match regular expression \"{pattern}\"',\n 'inputSchema.validation.objectKeysInvalid':\n 'Keys [{invalidKeys}] in {rootName}.{fieldKey} must match regular expression \"{pattern}',\n 'inputSchema.validation.objectValuesInvalid':\n 'Keys [{invalidKeys}] in {rootName}.{fieldKey} must have string value which matches regular expression \"{pattern}\"',\n 'inputSchema.validation.additionalProperty':\n 'Property {rootName}.{fieldKey} is not allowed.',\n 'inputSchema.validation.proxyGroupsNotAvailable':\n 'You currently do not have access to proxy groups: {groups}',\n 'inputSchema.validation.customProxyInvalid':\n 'Proxy URL \"{invalidUrl}\" has invalid format, it must be socks[4|4a|5|5h]|http[s]://[username[:password]]@hostname:port.',\n 'inputSchema.validation.apifyProxyCountryInvalid':\n 'Country code \"{invalidCountry}\" is invalid. Only ISO 3166-1 alpha-2 country codes are supported.',\n 'inputSchema.validation.apifyProxyCountryWithoutApifyProxyForbidden':\n 'The country for Apify Proxy can be specified only when using Apify Proxy.',\n 'inputSchema.validation.noAvailableAutoProxy':\n 'Currently you do not have access to any proxy group usable in automatic mode.',\n 'inputSchema.validation.noMatchingDefinition':\n 'Field schema.properties.{fieldKey} is not matching any input schema type definition. Please make sure that it\\'s type is valid.',\n 'inputSchema.validation.missingRequiredField':\n 'Field schema.properties.{fieldKey} does not exist, but it is specified in schema.required. Either define the field or remove it from schema.required.',\n 'inputSchema.validation.proxyGroupMustBeArrayOfStrings':\n 'Field {rootName}.{fieldKey}.apifyProxyGroups must be an array of strings.',\n};\n\n/**\n * Helper function to simulate intl formatMessage function\n */\nexport function m(stringId: string, variables?: Record<string, any>) {\n let text = intlStrings[stringId as keyof typeof intlStrings];\n if (!text) return stringId;\n\n if (variables) {\n Object.keys(variables).forEach((variableName) => {\n text = text.split(`{${variableName}}`).join(variables[variableName]);\n });\n }\n\n return text;\n}\n","{\n \"title\": \"JSON schema of Apify Actor INPUT_SCHEMA.json\",\n \"type\": \"object\",\n \"properties\": {\n \"$schema\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"schemaVersion\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 1\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"enum\": [\"object\"]\n },\n \"required\": {\n \"type\": \"array\",\n \"minItems\": 0,\n \"items\": { \"type\": \"string\" },\n \"uniqueItems\": true\n },\n \"additionalProperties\": {\n \"type\": \"boolean\"\n },\n \"properties\": {\n \"type\": \"object\",\n \"patternProperties\": {\n \"^\": {\n \"oneOf\": [\n { \"$ref\": \"#/definitions/stringProperty\" },\n { \"$ref\": \"#/definitions/stringEnumProperty\" },\n { \"$ref\": \"#/definitions/arrayProperty\" },\n { \"$ref\": \"#/definitions/objectProperty\" },\n { \"$ref\": \"#/definitions/integerProperty\" },\n { \"$ref\": \"#/definitions/booleanProperty\" },\n { \"$ref\": \"#/definitions/resourceProperty\" },\n { \"$ref\": \"#/definitions/resourceArrayProperty\" },\n { \"$ref\": \"#/definitions/anyProperty\" }\n ]\n }\n }\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"title\", \"type\", \"properties\", \"schemaVersion\"],\n \"definitions\": {\n \"stringEnumProperty\": {\n \"title\": \"Enum property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"editor\": { \"enum\": [\"select\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"string\" },\n \"prefill\": { \"type\": \"string\" },\n \"example\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" },\n \"enum\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" },\n \"minItems\": 1,\n \"uniqueItems\": true\n },\n \"enumTitles\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" },\n \"minItems\": 1\n }\n },\n \"required\": [\"type\", \"title\", \"description\", \"enum\"]\n },\n \"stringProperty\": {\n \"title\": \"String property\",\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"editor\": { \"enum\": [\"javascript\", \"python\", \"textfield\", \"textarea\", \"datepicker\", \"hidden\"] },\n \"isSecret\": { \"type\": \"boolean\" }\n },\n \"required\": [\"type\", \"title\", \"description\", \"editor\"],\n \"if\": {\n \"properties\": {\n \"isSecret\": {\n \"not\": {\n \"const\": true\n }\n }\n }\n },\n \"then\": {\n \"if\": {\n \"properties\": {\n \"editor\": { \"const\": \"datepicker\" }\n }\n },\n \"then\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"string\" },\n \"prefill\": { \"type\": \"string\" },\n \"example\": { \"type\": \"string\" },\n \"pattern\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minLength\": { \"type\": \"integer\" },\n \"maxLength\": { \"type\": \"integer\" },\n \"editor\": { \"enum\": [\"datepicker\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" },\n \"dateType\": { \"enum\": [\"absolute\", \"relative\", \"absoluteOrRelative\"] }\n }\n },\n \"else\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"string\" },\n \"prefill\": { \"type\": \"string\" },\n \"example\": { \"type\": \"string\" },\n \"pattern\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minLength\": { \"type\": \"integer\" },\n \"maxLength\": { \"type\": \"integer\" },\n \"editor\": { \"enum\": [\"javascript\", \"python\", \"textfield\", \"textarea\", \"hidden\"] },\n \"isSecret\": { \"enum\": [false] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n }\n }\n },\n \"else\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"example\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"editor\": { \"enum\": [\"textfield\", \"textarea\", \"hidden\"] },\n \"isSecret\": { \"enum\": [true] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n }\n }\n },\n \"arrayProperty\": {\n \"title\": \"Array property\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"enum\": [\"array\"] },\n \"editor\": { \"enum\": [\"json\", \"requestListSources\", \"pseudoUrls\", \"globs\", \"keyValue\", \"stringList\", \"select\", \"hidden\"] }\n },\n \"additionalProperties\": true,\n \"required\": [\"type\", \"title\", \"description\", \"editor\"],\n \"if\": {\n \"properties\": {\n \"editor\": { \"const\": \"select\" }\n }\n },\n \"then\": {\n \"additionalProperties\": false,\n \"required\": [\"items\"],\n \"properties\": {\n \"type\": { \"enum\": [\"array\"] },\n \"editor\": { \"enum\": [\"select\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"array\" },\n \"prefill\": { \"type\": \"array\" },\n \"example\": { \"type\": \"array\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minItems\": { \"type\": \"integer\" },\n \"maxItems\": { \"type\": \"integer\" },\n \"uniqueItems\": { \"type\": \"boolean\" },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" },\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"enum\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" },\n \"uniqueItems\": true\n },\n \"enumTitles\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" }\n }\n },\n \"required\": [\"type\", \"enum\"]\n }\n }\n },\n \"else\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"array\"] },\n \"editor\": { \"enum\": [\"json\", \"requestListSources\", \"pseudoUrls\", \"globs\", \"keyValue\", \"stringList\", \"hidden\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"array\" },\n \"prefill\": { \"type\": \"array\" },\n \"example\": { \"type\": \"array\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minItems\": { \"type\": \"integer\" },\n \"maxItems\": { \"type\": \"integer\" },\n \"uniqueItems\": { \"type\": \"boolean\" },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" },\n \"placeholderKey\": { \"type\": \"string\" },\n \"placeholderValue\": { \"type\": \"string\" },\n \"patternKey\": { \"type\": \"string\" },\n \"patternValue\": { \"type\": \"string\" }\n }\n }\n },\n \"objectProperty\": {\n \"title\": \"Object property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"object\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"object\" },\n \"prefill\": { \"type\": \"object\" },\n \"example\": { \"type\": \"object\" },\n \"patternKey\": { \"type\": \"string\" },\n \"patternValue\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minProperties\": { \"type\": \"integer\" },\n \"maxProperties\": { \"type\": \"integer\" },\n\n \"editor\": { \"enum\": [\"json\", \"proxy\", \"hidden\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\", \"editor\"]\n },\n \"integerProperty\": {\n \"title\": \"Integer property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"integer\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"integer\" },\n \"prefill\": { \"type\": \"integer\" },\n \"example\": { \"type\": \"integer\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minimum\": { \"type\": \"integer\" },\n \"maximum\": { \"type\": \"integer\" },\n \"unit\": { \"type\": \"string\" },\n \"editor\": { \"enum\": [\"number\", \"hidden\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\"]\n },\n \"booleanProperty\": {\n \"title\": \"Boolean property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"boolean\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"boolean\" },\n \"prefill\": { \"type\": \"boolean\" },\n \"example\": { \"type\": \"boolean\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"groupCaption\": { \"type\": \"string\" },\n \"groupDescription\": { \"type\": \"string\" },\n \"editor\": { \"enum\": [\"checkbox\", \"hidden\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\"]\n },\n \"resourceProperty\": {\n \"title\": \"Resource property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"editor\": { \"enum\": [\"resourcePicker\", \"hidden\"] },\n \"resourceType\": { \"enum\": [\"dataset\", \"keyValueStore\", \"requestQueue\"] },\n \"default\": { \"type\": \"string\" },\n \"prefill\": { \"type\": \"string\" },\n \"example\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\", \"resourceType\"]\n },\n \"resourceArrayProperty\": {\n \"title\": \"Resource array property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"array\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"editor\": { \"enum\": [\"resourcePicker\", \"hidden\"] },\n \"default\": { \"type\": \"array\" },\n \"prefill\": { \"type\": \"array\" },\n \"example\": { \"type\": \"array\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minItems\": { \"type\": \"integer\" },\n \"maxItems\": { \"type\": \"integer\" },\n \"uniqueItems\": { \"type\": \"boolean\" },\n \"resourceType\": { \"enum\": [\"dataset\", \"keyValueStore\", \"requestQueue\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\", \"resourceType\"]\n },\n \"anyProperty\": {\n \"title\": \"Any property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": {\n \"type\": [\"array\"],\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\"object\", \"array\", \"string\", \"integer\", \"boolean\"]\n },\n \"uniqueItems\": true,\n \"additionalItems\": false,\n \"minItems\": 1\n },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": [\"object\", \"array\", \"string\", \"integer\", \"boolean\"] },\n \"prefill\": { \"type\": [\"object\", \"array\", \"string\", \"integer\", \"boolean\"] },\n \"example\": { \"type\": [\"object\", \"array\", \"string\", \"integer\", \"boolean\"] },\n \"nullable\": { \"type\": \"boolean\" },\n \"editor\": { \"enum\": [\"json\", \"hidden\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\", \"editor\"]\n }\n }\n}\n","import type { ErrorObject, Schema } from 'ajv';\nimport type Ajv from 'ajv';\n\nimport { m } from './intl';\nimport schema from './schema.json';\nimport type {\n CommonResourceFieldDefinition,\n FieldDefinition,\n InputSchema,\n InputSchemaBaseChecked,\n StringFieldDefinition,\n} from './types';\n\nexport { schema as inputSchema };\n\nconst { definitions } = schema;\n\n/**\n * This function parses AJV error and transforms it into a readable string.\n *\n * @param error An error as returned from AJV.\n * @param rootName Usually 'input' or 'schema' based on if we are passing the input or schema.\n * @param properties (Used only when parsing input errors) List of input schema properties.\n * @param input (Used only when parsing input errors) Actual input that is being parsed.\n * @returns {null|{fieldKey: *, message: *}}\n */\nexport function parseAjvError(\n error: ErrorObject,\n rootName: string,\n properties: Record<string, { nullable?: boolean, editor?: string }> = {},\n input: Record<string, unknown> = {},\n): { fieldKey: string; message: string } | null {\n // There are 3 possible errors comming from validation:\n // - either { keword: 'anything', instancePath: '/someField', message: 'error message that we can use' }\n // - or { keyword: 'additionalProperties', params: { additionalProperty: 'field' }, message: 'must NOT have additional properties' }\n // - or { keyword: 'required', instancePath: '', params.missingProperty: 'someField' }\n\n let fieldKey: string;\n let message: string;\n\n // If error is with keyword type, it means that type of input is incorrect\n // this can mean that provided value is null\n if (error.keyword === 'type') {\n fieldKey = error.instancePath.split('/').pop()!;\n // Check if value is null and field is nullable, if yes, then skip this error\n if (properties[fieldKey] && properties[fieldKey].nullable && input[fieldKey] === null) {\n return null;\n }\n message = m('inputSchema.validation.generic', { rootName, fieldKey, message: error.message });\n } else if (error.keyword === 'required') {\n fieldKey = error.params.missingProperty;\n message = m('inputSchema.validation.required', { rootName, fieldKey });\n } else if (error.keyword === 'additionalProperties') {\n fieldKey = error.params.additionalProperty;\n message = m('inputSchema.validation.additionalProperty', { rootName, fieldKey });\n } else if (error.keyword === 'enum') {\n fieldKey = error.instancePath.split('/').pop()!;\n const errorMessage = `${error.message}: \"${error.params.allowedValues.join('\", \"')}\"`;\n message = m('inputSchema.validation.generic', { rootName, fieldKey, message: errorMessage });\n } else if (error.keyword === 'const') {\n fieldKey = error.instancePath.split('/').pop()!;\n message = m('inputSchema.validation.generic', { rootName, fieldKey, message: error.message });\n } else {\n fieldKey = error.instancePath.split('/').pop()!;\n message = m('inputSchema.validation.generic', { rootName, fieldKey, message: error.message });\n }\n\n return { fieldKey, message };\n}\n\n/**\n * Validates given object against schema and throws a human-readable error.\n */\nconst validateAgainstSchemaOrThrow = (validator: Ajv, obj: Record<string, unknown>, inputSchema: Schema, rootName: string) => {\n if (validator.validate(inputSchema, obj)) return;\n\n const errorMessage = parseAjvError(validator.errors![0], rootName)?.message;\n throw new Error(`Input schema is not valid (${errorMessage})`);\n};\n\n/**\n * This validates given object only against the basic input schema without checking the particular fields.\n * We override schema.properties.properties not to validate field definitions.\n */\nfunction validateBasicStructure(validator: Ajv, obj: Record<string, unknown>): asserts obj is InputSchemaBaseChecked {\n const schemaWithoutProperties = {\n ...schema,\n properties: { ...schema.properties, properties: { type: 'object' } as any },\n };\n validateAgainstSchemaOrThrow(validator, obj, schemaWithoutProperties, 'schema');\n}\n\n/**\n * Validates particular field against it's schema.\n */\nfunction validateField(validator: Ajv, fieldSchema: Record<string, unknown>, fieldKey: string): asserts fieldSchema is FieldDefinition {\n const matchingDefinitions = Object\n .values<any>(definitions) // cast as any, as the code in first branch seems to be invalid\n .filter((definition) => {\n return definition.properties.type.enum\n // This is a normal case where fieldSchema.type can be only one possible value matching definition.properties.type.enum.0\n ? definition.properties.type.enum[0] === fieldSchema.type\n // This is a type \"Any\" where fieldSchema.type is an array of possible values\n : Array.isArray(fieldSchema.type);\n });\n\n // There is not matching definition.\n if (matchingDefinitions.length === 0) {\n const errorMessage = m('inputSchema.validation.noMatchingDefinition', { fieldKey });\n throw new Error(`Input schema is not valid (${errorMessage})`);\n }\n\n // If there is only one matching then we are done and simply compare it.\n if (matchingDefinitions.length === 1) {\n validateAgainstSchemaOrThrow(validator, fieldSchema, matchingDefinitions[0], `schema.properties.${fieldKey}`);\n return;\n }\n\n // If there are more matching definitions then we need to get the right one.\n // If the definition contains \"enum\" property then it's enum type.\n if ((fieldSchema as StringFieldDefinition).enum) {\n const definition = matchingDefinitions.filter((item) => !!item.properties.enum).pop();\n if (!definition) throw new Error('Input schema validation failed to find \"enum property\" definition');\n validateAgainstSchemaOrThrow(validator, fieldSchema, definition, `schema.properties.${fieldKey}.enum`);\n return;\n }\n // If the definition contains \"resourceType\" property then it's resource type.\n if ((fieldSchema as CommonResourceFieldDefinition<unknown>).resourceType) {\n const definition = matchingDefinitions.filter((item) => !!item.properties.resourceType).pop();\n if (!definition) throw new Error('Input schema validation failed to find \"resource property\" definition');\n validateAgainstSchemaOrThrow(validator, fieldSchema, definition, `schema.properties.${fieldKey}`);\n return;\n }\n // Otherwise we use the other definition.\n const definition = matchingDefinitions.filter((item) => !item.properties.enum && !item.properties.resourceType).pop();\n if (!definition) throw new Error('Input schema validation failed to find other than \"enum property\" definition');\n\n validateAgainstSchemaOrThrow(validator, fieldSchema, definition, `schema.properties.${fieldKey}`);\n}\n\n/**\n * Validates all properties in the input schema\n */\nfunction validateProperties(inputSchema: InputSchemaBaseChecked, validator: Ajv): asserts inputSchema is InputSchema {\n Object.entries(inputSchema.properties).forEach(([fieldKey, fieldSchema]) => (\n validateField(validator, fieldSchema, fieldKey)),\n );\n}\n\n/**\n * Validates that all required fields are present in properties list\n */\nexport function validateExistenceOfRequiredFields(inputSchema: InputSchema) {\n // If the input schema does not have any required fields, we do not need to validate them\n if (!inputSchema?.required?.length) return;\n\n Object.values(inputSchema?.required).forEach((fieldKey) => {\n // If the required field is present in the list of properties, we can check the next one\n if (inputSchema?.properties[fieldKey as string]) return;\n\n // The required field is not defined in list of properties. Which means the schema is not valid.\n throw new Error(m('inputSchema.validation.missingRequiredField', { fieldKey }));\n });\n}\n\n/**\n * This function validates given input schema first just for basic structure then each field one by one,\n * then checks that all required fields are present and finally checks fully against the whole schema.\n *\n * This way we get the most accurate error message for user.\n */\nexport function validateInputSchema(validator: Ajv, inputSchema: Record<string, unknown>): asserts inputSchema is InputSchema {\n // First validate just basic structure without fields.\n validateBasicStructure(validator, inputSchema);\n\n // Then validate each field separately.\n validateProperties(inputSchema, validator);\n\n // Next validate if required fields are actually present in the schema\n validateExistenceOfRequiredFields(inputSchema);\n\n // Finally just to be sure run validation against the whole schema.\n validateAgainstSchemaOrThrow(validator, inputSchema, schema, 'schema');\n}\n","import { parse } from 'acorn-loose';\nimport type { ValidateFunction } from 'ajv';\nimport { countries } from 'countries-list';\n\nimport { PROXY_URL_REGEX, URL_REGEX } from '@apify/consts';\n\nimport { parseAjvError } from './input_schema';\nimport { m } from './intl';\n\n/**\n * Validates input field configured with proxy editor\n * @param fieldKey Proxy field value\n * @param value Proxy field value\n * @param [isRequired] Whether the field is required or not\n * @param [options] Information about proxy groups availability\n * @param [options.hasAutoProxyGroups] Informs validation whether user has atleast one proxy group available in auto mode\n * @param [options.availableProxyGroups] List of available proxy groups\n * @param [options.disabledProxyGroups] Object with groupId as key and error message as value (mostly for residential/SERP)\n */\nfunction validateProxyField(\n fieldKey: Record<string, unknown>,\n value: Record<string, any>,\n isRequired = false,\n options: { hasAutoProxyGroups?: boolean; availableProxyGroups?: string[]; disabledProxyGroups?: Record<string, unknown> } | null = null,\n) {\n const fieldErrors: any[] = [];\n if (isRequired) {\n // Nullable error is already handled by AJV\n if (value === null) return fieldErrors;\n if (!value) {\n const message = m('inputSchema.validation.required', { rootName: 'input', fieldKey });\n fieldErrors.push(message);\n return fieldErrors;\n }\n\n const { useApifyProxy, proxyUrls } = value;\n if (!useApifyProxy && (!Array.isArray(proxyUrls) || proxyUrls.length === 0)) {\n fieldErrors.push(m('inputSchema.validation.proxyRequired', { rootName: 'input', fieldKey }));\n return fieldErrors;\n }\n }\n\n // Input is not required, so missing value is valid\n if (!value) return fieldErrors;\n\n const { useApifyProxy, proxyUrls, apifyProxyGroups, apifyProxyCountry } = value;\n\n if (!useApifyProxy && Array.isArray(proxyUrls)) {\n let invalidUrl = false;\n proxyUrls.forEach((url) => {\n if (!PROXY_URL_REGEX.test(url.trim())) invalidUrl = url.trim();\n });\n if (invalidUrl) {\n fieldErrors.push(m('inputSchema.validation.customProxyInvalid', { invalidUrl }));\n }\n }\n\n // Apify proxy country can be set only when using Apify proxy\n if (!useApifyProxy && apifyProxyCountry) {\n fieldErrors.push(m('inputSchema.validation.apifyProxyCountryWithoutApifyProxyForbidden'));\n }\n\n // If Apify proxy is not used skip additional checks\n if (!useApifyProxy) return fieldErrors;\n\n // If Apify proxy is used, check if there is a selected country and if so, check that it's valid (empty or a valid country code)\n if (apifyProxyCountry && !countries[apifyProxyCountry as keyof typeof countries]) {\n fieldErrors.push(m('inputSchema.validation.apifyProxyCountryInvalid', { invalidCountry: apifyProxyCountry }));\n }\n\n // If options are not provided skip additional checks\n if (!options) return fieldErrors;\n\n // if apifyProxyGroups exists it must be an array of strings\n const isStringsArray = (array: string[]) => array.every((item) => typeof item === 'string');\n if (apifyProxyGroups && !(Array.isArray(apifyProxyGroups) && isStringsArray(apifyProxyGroups))) {\n fieldErrors.push(m('inputSchema.validation.proxyGroupMustBeArrayOfStrings', { rootName: 'input', fieldKey }));\n return fieldErrors;\n }\n\n const selectedProxyGroups = (apifyProxyGroups || []);\n\n // Auto mode, check that user has access to alteast one proxy group usable in this mode\n if (!selectedProxyGroups.length && !options.hasAutoProxyGroups) {\n fieldErrors.push(m('inputSchema.validation.noAvailableAutoProxy'));\n return fieldErrors;\n }\n\n // Check if proxy groups selected by user are available to him\n const availableProxyGroupsById = {} as Record<string, boolean>;\n (options.availableProxyGroups || []).forEach((group) => { availableProxyGroupsById[group] = true; });\n const unavailableProxyGroups = selectedProxyGroups.filter((group: string) => !availableProxyGroupsById[group]);\n\n if (unavailableProxyGroups.length) {\n fieldErrors.push(m('inputSchema.validation.proxyGroupsNotAvailable', {\n rootName: 'input',\n fieldKey,\n groups: unavailableProxyGroups.join(', '),\n }));\n }\n\n // Check if any of the proxy groups are blocked and if yes then output the associated message\n const blockedProxyGroupsById = options.disabledProxyGroups || {};\n selectedProxyGroups\n .filter((group: string) => blockedProxyGroupsById[group])\n .forEach((blockedGroup: string) => {\n fieldErrors.push(blockedProxyGroupsById[blockedGroup]);\n });\n\n return fieldErrors;\n}\n\n/**\n * Uses AJV validator to validate input with input schema and then\n * does custom validation for our own properties (nullable, patternKey, patternValue)\n * @param validator Initialized AJV validator\n * @param inputSchema Valid input schema in object\n * @param input Input object to be validated\n * @param options (Optional) Additional validation configuration for certain fields\n */\nexport function validateInputUsingValidator(\n validator: ValidateFunction,\n inputSchema: Record<string, any>,\n input: Record<string, unknown>,\n options: Record<string, any> = {},\n) {\n const isValid = validator(input); // Check if input is valid based on schema values\n\n const { properties } = inputSchema;\n const required = inputSchema.required || [];\n\n let errors: { fieldKey: string, message: string }[] = [];\n // Process AJV validation errors\n if (!isValid) {\n errors = validator.errors!\n .map((error) => parseAjvError(error, 'input', properties, input))\n .filter((error) => !!error) as any[];\n }\n\n Object.keys(properties).forEach((property) => {\n const value = input[property];\n const { type, editor, patternKey, patternValue } = properties[property];\n const fieldErrors = [];\n // Check that proxy is required, if yes, valides that it's correctly setup\n if (type === 'object' && editor === 'proxy') {\n const proxyValidationErrors = validateProxyField(property as any, value as Record<string, any>, required.includes(property), options.proxy);\n proxyValidationErrors.forEach((error) => {\n fieldErrors.push(error);\n });\n }\n // Check that array items fit patternKey and patternValue\n if (type === 'array' && value && Array.isArray(value)) {\n if (editor === 'requestListSources') {\n const invalidIndexes: any[] = [];\n value.forEach((item, index) => {\n if (!item) invalidIndexes.push(index);\n else if (!item.url && !item.requestsFromUrl) invalidIndexes.push(index);\n else if (item.url && !URL_REGEX.test(item.url)) invalidIndexes.push(index);\n else if (item.requestsFromUrl && !URL_REGEX.test(item.requestsFromUrl)) invalidIndexes.push(index);\n });\n if (invalidIndexes.length) {\n fieldErrors.push(m('inputSchema.validation.requestListSourcesInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidIndexes: invalidIndexes.join(','),\n }));\n }\n }\n // If patternKey is provided, then validate keys of objects in array\n if (patternKey && editor === 'keyValue') {\n const check = new RegExp(patternKey);\n const invalidIndexes: any[] = [];\n value.forEach((item, index) => {\n if (!check.test(item.key)) invalidIndexes.push(index);\n });\n if (invalidIndexes.length) {\n fieldErrors.push(m('inputSchema.validation.arrayKeysInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidIndexes: invalidIndexes.join(','),\n pattern: patternKey,\n }));\n }\n }\n // If patternValue is provided and editor is keyValue, then validate values of objecs in array\n if (patternValue && editor === 'keyValue') {\n const check = new RegExp(patternValue);\n const invalidIndexes: any[] = [];\n value.forEach((item, index) => {\n if (!check.test(item.value)) invalidIndexes.push(index);\n });\n if (invalidIndexes.length) {\n fieldErrors.push(m('inputSchema.validation.arrayValuesInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidIndexes: invalidIndexes.join(','),\n pattern: patternValue,\n }));\n }\n // If patternValue is provided and editor is stringList, then validate each item in array\n } else if (patternValue && editor === 'stringList') {\n const check = new RegExp(patternValue);\n const invalidIndexes: any[] = [];\n value.forEach((item, index) => {\n if (!check.test(item)) invalidIndexes.push(index);\n });\n if (invalidIndexes.length) {\n fieldErrors.push(m('inputSchema.validation.arrayValuesInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidIndexes: invalidIndexes.join(','),\n pattern: patternValue,\n }));\n }\n }\n }\n // Check that object items fit patternKey and patternValue\n if (type === 'object' && value) {\n if (patternKey) {\n const check = new RegExp(patternKey);\n const invalidKeys: any[] = [];\n Object.keys(value).forEach((key) => {\n if (!check.test(key)) invalidKeys.push(key);\n });\n if (invalidKeys.length) {\n fieldErrors.push(m('inputSchema.validation.objectKeysInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidKeys: invalidKeys.join(','),\n pattern: patternKey,\n }));\n }\n }\n if (patternValue) {\n const check = new RegExp(patternValue);\n const invalidKeys: any[] = [];\n Object.keys(value).forEach((key) => {\n const propertyValue = (value as Record<string, any>)[key];\n if (typeof propertyValue !== 'string' || !check.test(propertyValue)) invalidKeys.push(key);\n });\n if (invalidKeys.length) {\n fieldErrors.push(m('inputSchema.validation.objectValuesInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidKeys: invalidKeys.join(','),\n pattern: patternValue,\n }));\n }\n }\n }\n\n if (fieldErrors.length > 0) {\n const message = fieldErrors.join(', ');\n errors.push({ fieldKey: property, message });\n }\n });\n\n return errors;\n}\n\n/**\n * This functions parses all given JSON and then takes each of the jsFields.\n * Then if the field:\n * - is valid JS single function it replaces its single line string with a function delacation.\n * - is valid multiline JS code then replaces its single line string with `multiline` string\n * Then stringifies the code with given number of jsonSpacing spaces and finally prefixes whole\n * stringified JSON except the first line with globalSpacing spaces.\n */\nexport function makeInputJsFieldsReadable(json: string, jsFields: string[], jsonSpacing = 4, globalSpacing = 0): string {\n const parsedJson = JSON.parse(json);\n const replacements: Record<string, any> = {};\n\n jsFields.forEach((field) => {\n let maybeFunction = parsedJson[field];\n if (!maybeFunction || typeof maybeFunction !== 'string') return;\n\n let ast;\n try {\n ast = parse(maybeFunction, { ecmaVersion: 'latest' });\n } catch {\n // Don't do anything in a case of invalid JS code.\n return;\n }\n\n const isMultiline = maybeFunction.includes('\\n');\n const isSingleFunction = ast\n && ast.body.length === 1\n && (\n ast.body[0].type === 'FunctionDeclaration'\n || (ast.body[0].type === 'ExpressionStatement' && ast.body[0].expression.type === 'ArrowFunctionExpression')\n );\n\n // If it's not a function declaration or multiline JS code then we do nothing.\n if (!isSingleFunction && !isMultiline) return;\n\n const spaces = (new Array(isSingleFunction ? jsonSpacing : jsonSpacing * 2)).fill(' ').join('');\n maybeFunction = maybeFunction\n .split('\\n').join(`\\n${spaces}`) // This prefixes each line with spaces.\n .trim(); // Trim whitespace on both sides\n\n const replacementValue = isSingleFunction\n ? maybeFunction.replace(/[;]+$/g, '') // Remove trailing semicolons\n : `\\`${maybeFunction}\\``;\n const replacementToken = `<<<REPLACEMENT_TOKEN:${Math.random()}>>>`;\n replacements[replacementToken] = replacementValue;\n parsedJson[field] = replacementToken;\n });\n\n let niceJson = JSON.stringify(parsedJson, null, jsonSpacing);\n\n Object.entries(replacements).forEach(([replacementToken, replacementValue]) => {\n niceJson = niceJson.replace(`\"${replacementToken}\"`, replacementValue);\n });\n\n const globalSpaces = (new Array(globalSpacing)).fill(' ').join('');\n niceJson = niceJson.split('\\n').join(`\\n${globalSpaces}`);\n\n return niceJson;\n}\n"],"mappings":"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","names":["definition","useApifyProxy","proxyUrls"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/intl.ts","../../src/schema.json","../../src/input_schema.ts","../../src/utilities.ts"],"sourcesContent":["export * from './intl';\nexport * from './input_schema';\nexport {\n StringFieldDefinition,\n BooleanFieldDefinition,\n IntegerFieldDefinition,\n ObjectFieldDefinition,\n ArrayFieldDefinition,\n MixedFieldDefinition,\n FieldDefinition,\n InputSchema,\n} from './types';\nexport * from './utilities';\n","const intlStrings = {\n 'inputSchema.validation.generic':\n 'Field {rootName}.{fieldKey} {message}',\n 'inputSchema.validation.required':\n 'Field {rootName}.{fieldKey} is required',\n 'inputSchema.validation.proxyRequired':\n 'Field {rootName}.{fieldKey} is required. Please provide custom proxy URLs or use Apify Proxy.',\n 'inputSchema.validation.requestListSourcesInvalid':\n 'Items in {rootName}.{fieldKey} at positions [{invalidIndexes}] do not contain valid URLs',\n 'inputSchema.validation.arrayKeysInvalid':\n 'Keys in {rootName}.{fieldKey} at positions [{invalidIndexes}] must match regular expression \"{pattern}\"',\n 'inputSchema.validation.arrayValuesInvalid':\n 'Values in {rootName}.{fieldKey} at positions [{invalidIndexes}] must match regular expression \"{pattern}\"',\n 'inputSchema.validation.objectKeysInvalid':\n 'Keys [{invalidKeys}] in {rootName}.{fieldKey} must match regular expression \"{pattern}',\n 'inputSchema.validation.objectValuesInvalid':\n 'Keys [{invalidKeys}] in {rootName}.{fieldKey} must have string value which matches regular expression \"{pattern}\"',\n 'inputSchema.validation.additionalProperty':\n 'Property {rootName}.{fieldKey} is not allowed.',\n 'inputSchema.validation.proxyGroupsNotAvailable':\n 'You currently do not have access to proxy groups: {groups}',\n 'inputSchema.validation.customProxyInvalid':\n 'Proxy URL \"{invalidUrl}\" has invalid format, it must be socks[4|4a|5|5h]|http[s]://[username[:password]]@hostname:port.',\n 'inputSchema.validation.apifyProxyCountryInvalid':\n 'Country code \"{invalidCountry}\" is invalid. Only ISO 3166-1 alpha-2 country codes are supported.',\n 'inputSchema.validation.apifyProxyCountryWithoutApifyProxyForbidden':\n 'The country for Apify Proxy can be specified only when using Apify Proxy.',\n 'inputSchema.validation.noAvailableAutoProxy':\n 'Currently you do not have access to any proxy group usable in automatic mode.',\n 'inputSchema.validation.noMatchingDefinition':\n 'Field schema.properties.{fieldKey} is not matching any input schema type definition. Please make sure that it\\'s type is valid.',\n 'inputSchema.validation.missingRequiredField':\n 'Field schema.properties.{fieldKey} does not exist, but it is specified in schema.required. Either define the field or remove it from schema.required.',\n 'inputSchema.validation.proxyGroupMustBeArrayOfStrings':\n 'Field {rootName}.{fieldKey}.apifyProxyGroups must be an array of strings.',\n};\n\n/**\n * Helper function to simulate intl formatMessage function\n */\nexport function m(stringId: string, variables?: Record<string, any>) {\n let text = intlStrings[stringId as keyof typeof intlStrings];\n if (!text) return stringId;\n\n if (variables) {\n Object.keys(variables).forEach((variableName) => {\n text = text.split(`{${variableName}}`).join(variables[variableName]);\n });\n }\n\n return text;\n}\n","{\n \"title\": \"JSON schema of Apify Actor INPUT_SCHEMA.json\",\n \"type\": \"object\",\n \"properties\": {\n \"$schema\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"schemaVersion\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 1\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"enum\": [\"object\"]\n },\n \"required\": {\n \"type\": \"array\",\n \"minItems\": 0,\n \"items\": { \"type\": \"string\" },\n \"uniqueItems\": true\n },\n \"additionalProperties\": {\n \"type\": \"boolean\"\n },\n \"properties\": {\n \"type\": \"object\",\n \"patternProperties\": {\n \"^\": {\n \"oneOf\": [\n { \"$ref\": \"#/definitions/stringProperty\" },\n { \"$ref\": \"#/definitions/stringEnumProperty\" },\n { \"$ref\": \"#/definitions/arrayProperty\" },\n { \"$ref\": \"#/definitions/objectProperty\" },\n { \"$ref\": \"#/definitions/integerProperty\" },\n { \"$ref\": \"#/definitions/booleanProperty\" },\n { \"$ref\": \"#/definitions/resourceProperty\" },\n { \"$ref\": \"#/definitions/resourceArrayProperty\" },\n { \"$ref\": \"#/definitions/anyProperty\" }\n ]\n }\n }\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"title\", \"type\", \"properties\", \"schemaVersion\"],\n \"definitions\": {\n \"stringEnumProperty\": {\n \"title\": \"Enum property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"editor\": { \"enum\": [\"select\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"string\" },\n \"prefill\": { \"type\": \"string\" },\n \"example\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" },\n \"enum\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" },\n \"minItems\": 1,\n \"uniqueItems\": true\n },\n \"enumTitles\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" },\n \"minItems\": 1\n }\n },\n \"required\": [\"type\", \"title\", \"description\", \"enum\"]\n },\n \"stringProperty\": {\n \"title\": \"String property\",\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"editor\": { \"enum\": [\"javascript\", \"python\", \"textfield\", \"textarea\", \"datepicker\", \"hidden\", \"fileupload\"] },\n \"isSecret\": { \"type\": \"boolean\" }\n },\n \"required\": [\"type\", \"title\", \"description\", \"editor\"],\n \"if\": {\n \"properties\": {\n \"isSecret\": {\n \"not\": {\n \"const\": true\n }\n }\n }\n },\n \"then\": {\n \"if\": {\n \"properties\": {\n \"editor\": { \"const\": \"datepicker\" }\n }\n },\n \"then\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"string\" },\n \"prefill\": { \"type\": \"string\" },\n \"example\": { \"type\": \"string\" },\n \"pattern\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minLength\": { \"type\": \"integer\" },\n \"maxLength\": { \"type\": \"integer\" },\n \"editor\": { \"enum\": [\"datepicker\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" },\n \"dateType\": { \"enum\": [\"absolute\", \"relative\", \"absoluteOrRelative\"] }\n }\n },\n \"else\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"string\" },\n \"prefill\": { \"type\": \"string\" },\n \"example\": { \"type\": \"string\" },\n \"pattern\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minLength\": { \"type\": \"integer\" },\n \"maxLength\": { \"type\": \"integer\" },\n \"editor\": { \"enum\": [\"javascript\", \"python\", \"textfield\", \"textarea\", \"hidden\", \"fileupload\"] },\n \"isSecret\": { \"enum\": [false] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n }\n }\n },\n \"else\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"example\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"editor\": { \"enum\": [\"textfield\", \"textarea\", \"hidden\"] },\n \"isSecret\": { \"enum\": [true] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n }\n }\n },\n \"arrayProperty\": {\n \"title\": \"Array property\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"enum\": [\"array\"] },\n \"editor\": { \"enum\": [\"json\", \"requestListSources\", \"pseudoUrls\", \"globs\", \"keyValue\", \"stringList\", \"select\", \"hidden\"] }\n },\n \"additionalProperties\": true,\n \"required\": [\"type\", \"title\", \"description\", \"editor\"],\n \"if\": {\n \"properties\": {\n \"editor\": { \"const\": \"select\" }\n }\n },\n \"then\": {\n \"additionalProperties\": false,\n \"required\": [\"items\"],\n \"properties\": {\n \"type\": { \"enum\": [\"array\"] },\n \"editor\": { \"enum\": [\"select\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"array\" },\n \"prefill\": { \"type\": \"array\" },\n \"example\": { \"type\": \"array\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minItems\": { \"type\": \"integer\" },\n \"maxItems\": { \"type\": \"integer\" },\n \"uniqueItems\": { \"type\": \"boolean\" },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" },\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"enum\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" },\n \"uniqueItems\": true\n },\n \"enumTitles\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" }\n }\n },\n \"required\": [\"type\", \"enum\"]\n }\n }\n },\n \"else\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"array\"] },\n \"editor\": { \"enum\": [\"json\", \"requestListSources\", \"pseudoUrls\", \"globs\", \"keyValue\", \"stringList\", \"hidden\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"array\" },\n \"prefill\": { \"type\": \"array\" },\n \"example\": { \"type\": \"array\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minItems\": { \"type\": \"integer\" },\n \"maxItems\": { \"type\": \"integer\" },\n \"uniqueItems\": { \"type\": \"boolean\" },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" },\n \"placeholderKey\": { \"type\": \"string\" },\n \"placeholderValue\": { \"type\": \"string\" },\n \"patternKey\": { \"type\": \"string\" },\n \"patternValue\": { \"type\": \"string\" }\n }\n }\n },\n \"objectProperty\": {\n \"title\": \"Object property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"object\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"object\" },\n \"prefill\": { \"type\": \"object\" },\n \"example\": { \"type\": \"object\" },\n \"patternKey\": { \"type\": \"string\" },\n \"patternValue\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minProperties\": { \"type\": \"integer\" },\n \"maxProperties\": { \"type\": \"integer\" },\n\n \"editor\": { \"enum\": [\"json\", \"proxy\", \"hidden\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\", \"editor\"]\n },\n \"integerProperty\": {\n \"title\": \"Integer property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"integer\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"integer\" },\n \"prefill\": { \"type\": \"integer\" },\n \"example\": { \"type\": \"integer\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minimum\": { \"type\": \"integer\" },\n \"maximum\": { \"type\": \"integer\" },\n \"unit\": { \"type\": \"string\" },\n \"editor\": { \"enum\": [\"number\", \"hidden\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\"]\n },\n \"booleanProperty\": {\n \"title\": \"Boolean property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"boolean\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"boolean\" },\n \"prefill\": { \"type\": \"boolean\" },\n \"example\": { \"type\": \"boolean\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"groupCaption\": { \"type\": \"string\" },\n \"groupDescription\": { \"type\": \"string\" },\n \"editor\": { \"enum\": [\"checkbox\", \"hidden\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\"]\n },\n \"resourceProperty\": {\n \"title\": \"Resource property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"editor\": { \"enum\": [\"resourcePicker\", \"hidden\"] },\n \"resourceType\": { \"enum\": [\"dataset\", \"keyValueStore\", \"requestQueue\"] },\n \"default\": { \"type\": \"string\" },\n \"prefill\": { \"type\": \"string\" },\n \"example\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\", \"resourceType\"]\n },\n \"resourceArrayProperty\": {\n \"title\": \"Resource array property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"array\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"editor\": { \"enum\": [\"resourcePicker\", \"hidden\"] },\n \"default\": { \"type\": \"array\" },\n \"prefill\": { \"type\": \"array\" },\n \"example\": { \"type\": \"array\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minItems\": { \"type\": \"integer\" },\n \"maxItems\": { \"type\": \"integer\" },\n \"uniqueItems\": { \"type\": \"boolean\" },\n \"resourceType\": { \"enum\": [\"dataset\", \"keyValueStore\", \"requestQueue\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\", \"resourceType\"]\n },\n \"anyProperty\": {\n \"title\": \"Any property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": {\n \"type\": [\"array\"],\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\"object\", \"array\", \"string\", \"integer\", \"boolean\"]\n },\n \"uniqueItems\": true,\n \"additionalItems\": false,\n \"minItems\": 1\n },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": [\"object\", \"array\", \"string\", \"integer\", \"boolean\"] },\n \"prefill\": { \"type\": [\"object\", \"array\", \"string\", \"integer\", \"boolean\"] },\n \"example\": { \"type\": [\"object\", \"array\", \"string\", \"integer\", \"boolean\"] },\n \"nullable\": { \"type\": \"boolean\" },\n \"editor\": { \"enum\": [\"json\", \"hidden\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\", \"editor\"]\n }\n }\n}\n","import type { ErrorObject, Schema } from 'ajv';\nimport type Ajv from 'ajv';\n\nimport { m } from './intl';\nimport schema from './schema.json';\nimport type {\n CommonResourceFieldDefinition,\n FieldDefinition,\n InputSchema,\n InputSchemaBaseChecked,\n StringFieldDefinition,\n} from './types';\n\nexport { schema as inputSchema };\n\nconst { definitions } = schema;\n\n/**\n * This function parses AJV error and transforms it into a readable string.\n *\n * @param error An error as returned from AJV.\n * @param rootName Usually 'input' or 'schema' based on if we are passing the input or schema.\n * @param properties (Used only when parsing input errors) List of input schema properties.\n * @param input (Used only when parsing input errors) Actual input that is being parsed.\n * @returns {null|{fieldKey: *, message: *}}\n */\nexport function parseAjvError(\n error: ErrorObject,\n rootName: string,\n properties: Record<string, { nullable?: boolean, editor?: string }> = {},\n input: Record<string, unknown> = {},\n): { fieldKey: string; message: string } | null {\n // There are 3 possible errors comming from validation:\n // - either { keword: 'anything', instancePath: '/someField', message: 'error message that we can use' }\n // - or { keyword: 'additionalProperties', params: { additionalProperty: 'field' }, message: 'must NOT have additional properties' }\n // - or { keyword: 'required', instancePath: '', params.missingProperty: 'someField' }\n\n let fieldKey: string;\n let message: string;\n\n // If error is with keyword type, it means that type of input is incorrect\n // this can mean that provided value is null\n if (error.keyword === 'type') {\n fieldKey = error.instancePath.split('/').pop()!;\n // Check if value is null and field is nullable, if yes, then skip this error\n if (properties[fieldKey] && properties[fieldKey].nullable && input[fieldKey] === null) {\n return null;\n }\n message = m('inputSchema.validation.generic', { rootName, fieldKey, message: error.message });\n } else if (error.keyword === 'required') {\n fieldKey = error.params.missingProperty;\n message = m('inputSchema.validation.required', { rootName, fieldKey });\n } else if (error.keyword === 'additionalProperties') {\n fieldKey = error.params.additionalProperty;\n message = m('inputSchema.validation.additionalProperty', { rootName, fieldKey });\n } else if (error.keyword === 'enum') {\n fieldKey = error.instancePath.split('/').pop()!;\n const errorMessage = `${error.message}: \"${error.params.allowedValues.join('\", \"')}\"`;\n message = m('inputSchema.validation.generic', { rootName, fieldKey, message: errorMessage });\n } else if (error.keyword === 'const') {\n fieldKey = error.instancePath.split('/').pop()!;\n message = m('inputSchema.validation.generic', { rootName, fieldKey, message: error.message });\n } else {\n fieldKey = error.instancePath.split('/').pop()!;\n message = m('inputSchema.validation.generic', { rootName, fieldKey, message: error.message });\n }\n\n return { fieldKey, message };\n}\n\n/**\n * Validates given object against schema and throws a human-readable error.\n */\nconst validateAgainstSchemaOrThrow = (validator: Ajv, obj: Record<string, unknown>, inputSchema: Schema, rootName: string) => {\n if (validator.validate(inputSchema, obj)) return;\n\n const errorMessage = parseAjvError(validator.errors![0], rootName)?.message;\n throw new Error(`Input schema is not valid (${errorMessage})`);\n};\n\n/**\n * This validates given object only against the basic input schema without checking the particular fields.\n * We override schema.properties.properties not to validate field definitions.\n */\nfunction validateBasicStructure(validator: Ajv, obj: Record<string, unknown>): asserts obj is InputSchemaBaseChecked {\n const schemaWithoutProperties = {\n ...schema,\n properties: { ...schema.properties, properties: { type: 'object' } as any },\n };\n validateAgainstSchemaOrThrow(validator, obj, schemaWithoutProperties, 'schema');\n}\n\n/**\n * Validates particular field against it's schema.\n */\nfunction validateField(validator: Ajv, fieldSchema: Record<string, unknown>, fieldKey: string): asserts fieldSchema is FieldDefinition {\n const matchingDefinitions = Object\n .values<any>(definitions) // cast as any, as the code in first branch seems to be invalid\n .filter((definition) => {\n return definition.properties.type.enum\n // This is a normal case where fieldSchema.type can be only one possible value matching definition.properties.type.enum.0\n ? definition.properties.type.enum[0] === fieldSchema.type\n // This is a type \"Any\" where fieldSchema.type is an array of possible values\n : Array.isArray(fieldSchema.type);\n });\n\n // There is not matching definition.\n if (matchingDefinitions.length === 0) {\n const errorMessage = m('inputSchema.validation.noMatchingDefinition', { fieldKey });\n throw new Error(`Input schema is not valid (${errorMessage})`);\n }\n\n // If there is only one matching then we are done and simply compare it.\n if (matchingDefinitions.length === 1) {\n validateAgainstSchemaOrThrow(validator, fieldSchema, matchingDefinitions[0], `schema.properties.${fieldKey}`);\n return;\n }\n\n // If there are more matching definitions then we need to get the right one.\n // If the definition contains \"enum\" property then it's enum type.\n if ((fieldSchema as StringFieldDefinition).enum) {\n const definition = matchingDefinitions.filter((item) => !!item.properties.enum).pop();\n if (!definition) throw new Error('Input schema validation failed to find \"enum property\" definition');\n validateAgainstSchemaOrThrow(validator, fieldSchema, definition, `schema.properties.${fieldKey}.enum`);\n return;\n }\n // If the definition contains \"resourceType\" property then it's resource type.\n if ((fieldSchema as CommonResourceFieldDefinition<unknown>).resourceType) {\n const definition = matchingDefinitions.filter((item) => !!item.properties.resourceType).pop();\n if (!definition) throw new Error('Input schema validation failed to find \"resource property\" definition');\n validateAgainstSchemaOrThrow(validator, fieldSchema, definition, `schema.properties.${fieldKey}`);\n return;\n }\n // Otherwise we use the other definition.\n const definition = matchingDefinitions.filter((item) => !item.properties.enum && !item.properties.resourceType).pop();\n if (!definition) throw new Error('Input schema validation failed to find other than \"enum property\" definition');\n\n validateAgainstSchemaOrThrow(validator, fieldSchema, definition, `schema.properties.${fieldKey}`);\n}\n\n/**\n * Validates all properties in the input schema\n */\nfunction validateProperties(inputSchema: InputSchemaBaseChecked, validator: Ajv): asserts inputSchema is InputSchema {\n Object.entries(inputSchema.properties).forEach(([fieldKey, fieldSchema]) => (\n validateField(validator, fieldSchema, fieldKey)),\n );\n}\n\n/**\n * Validates that all required fields are present in properties list\n */\nexport function validateExistenceOfRequiredFields(inputSchema: InputSchema) {\n // If the input schema does not have any required fields, we do not need to validate them\n if (!inputSchema?.required?.length) return;\n\n Object.values(inputSchema?.required).forEach((fieldKey) => {\n // If the required field is present in the list of properties, we can check the next one\n if (inputSchema?.properties[fieldKey as string]) return;\n\n // The required field is not defined in list of properties. Which means the schema is not valid.\n throw new Error(m('inputSchema.validation.missingRequiredField', { fieldKey }));\n });\n}\n\n/**\n * This function validates given input schema first just for basic structure then each field one by one,\n * then checks that all required fields are present and finally checks fully against the whole schema.\n *\n * This way we get the most accurate error message for user.\n */\nexport function validateInputSchema(validator: Ajv, inputSchema: Record<string, unknown>): asserts inputSchema is InputSchema {\n // First validate just basic structure without fields.\n validateBasicStructure(validator, inputSchema);\n\n // Then validate each field separately.\n validateProperties(inputSchema, validator);\n\n // Next validate if required fields are actually present in the schema\n validateExistenceOfRequiredFields(inputSchema);\n\n // Finally just to be sure run validation against the whole schema.\n validateAgainstSchemaOrThrow(validator, inputSchema, schema, 'schema');\n}\n","import { parse } from 'acorn-loose';\nimport type { ValidateFunction } from 'ajv';\nimport { countries } from 'countries-list';\n\nimport { PROXY_URL_REGEX, URL_REGEX } from '@apify/consts';\n\nimport { parseAjvError } from './input_schema';\nimport { m } from './intl';\n\n/**\n * Validates input field configured with proxy editor\n * @param fieldKey Proxy field value\n * @param value Proxy field value\n * @param [isRequired] Whether the field is required or not\n * @param [options] Information about proxy groups availability\n * @param [options.hasAutoProxyGroups] Informs validation whether user has atleast one proxy group available in auto mode\n * @param [options.availableProxyGroups] List of available proxy groups\n * @param [options.disabledProxyGroups] Object with groupId as key and error message as value (mostly for residential/SERP)\n */\nfunction validateProxyField(\n fieldKey: Record<string, unknown>,\n value: Record<string, any>,\n isRequired = false,\n options: { hasAutoProxyGroups?: boolean; availableProxyGroups?: string[]; disabledProxyGroups?: Record<string, unknown> } | null = null,\n) {\n const fieldErrors: any[] = [];\n if (isRequired) {\n // Nullable error is already handled by AJV\n if (value === null) return fieldErrors;\n if (!value) {\n const message = m('inputSchema.validation.required', { rootName: 'input', fieldKey });\n fieldErrors.push(message);\n return fieldErrors;\n }\n\n const { useApifyProxy, proxyUrls } = value;\n if (!useApifyProxy && (!Array.isArray(proxyUrls) || proxyUrls.length === 0)) {\n fieldErrors.push(m('inputSchema.validation.proxyRequired', { rootName: 'input', fieldKey }));\n return fieldErrors;\n }\n }\n\n // Input is not required, so missing value is valid\n if (!value) return fieldErrors;\n\n const { useApifyProxy, proxyUrls, apifyProxyGroups, apifyProxyCountry } = value;\n\n if (!useApifyProxy && Array.isArray(proxyUrls)) {\n let invalidUrl = false;\n proxyUrls.forEach((url) => {\n if (!PROXY_URL_REGEX.test(url.trim())) invalidUrl = url.trim();\n });\n if (invalidUrl) {\n fieldErrors.push(m('inputSchema.validation.customProxyInvalid', { invalidUrl }));\n }\n }\n\n // Apify proxy country can be set only when using Apify proxy\n if (!useApifyProxy && apifyProxyCountry) {\n fieldErrors.push(m('inputSchema.validation.apifyProxyCountryWithoutApifyProxyForbidden'));\n }\n\n // If Apify proxy is not used skip additional checks\n if (!useApifyProxy) return fieldErrors;\n\n // If Apify proxy is used, check if there is a selected country and if so, check that it's valid (empty or a valid country code)\n if (apifyProxyCountry && !countries[apifyProxyCountry as keyof typeof countries]) {\n fieldErrors.push(m('inputSchema.validation.apifyProxyCountryInvalid', { invalidCountry: apifyProxyCountry }));\n }\n\n // If options are not provided skip additional checks\n if (!options) return fieldErrors;\n\n // if apifyProxyGroups exists it must be an array of strings\n const isStringsArray = (array: string[]) => array.every((item) => typeof item === 'string');\n if (apifyProxyGroups && !(Array.isArray(apifyProxyGroups) && isStringsArray(apifyProxyGroups))) {\n fieldErrors.push(m('inputSchema.validation.proxyGroupMustBeArrayOfStrings', { rootName: 'input', fieldKey }));\n return fieldErrors;\n }\n\n const selectedProxyGroups = (apifyProxyGroups || []);\n\n // Auto mode, check that user has access to alteast one proxy group usable in this mode\n if (!selectedProxyGroups.length && !options.hasAutoProxyGroups) {\n fieldErrors.push(m('inputSchema.validation.noAvailableAutoProxy'));\n return fieldErrors;\n }\n\n // Check if proxy groups selected by user are available to him\n const availableProxyGroupsById = {} as Record<string, boolean>;\n (options.availableProxyGroups || []).forEach((group) => { availableProxyGroupsById[group] = true; });\n const unavailableProxyGroups = selectedProxyGroups.filter((group: string) => !availableProxyGroupsById[group]);\n\n if (unavailableProxyGroups.length) {\n fieldErrors.push(m('inputSchema.validation.proxyGroupsNotAvailable', {\n rootName: 'input',\n fieldKey,\n groups: unavailableProxyGroups.join(', '),\n }));\n }\n\n // Check if any of the proxy groups are blocked and if yes then output the associated message\n const blockedProxyGroupsById = options.disabledProxyGroups || {};\n selectedProxyGroups\n .filter((group: string) => blockedProxyGroupsById[group])\n .forEach((blockedGroup: string) => {\n fieldErrors.push(blockedProxyGroupsById[blockedGroup]);\n });\n\n return fieldErrors;\n}\n\n/**\n * Uses AJV validator to validate input with input schema and then\n * does custom validation for our own properties (nullable, patternKey, patternValue)\n * @param validator Initialized AJV validator\n * @param inputSchema Valid input schema in object\n * @param input Input object to be validated\n * @param options (Optional) Additional validation configuration for certain fields\n */\nexport function validateInputUsingValidator(\n validator: ValidateFunction,\n inputSchema: Record<string, any>,\n input: Record<string, unknown>,\n options: Record<string, any> = {},\n) {\n const isValid = validator(input); // Check if input is valid based on schema values\n\n const { properties } = inputSchema;\n const required = inputSchema.required || [];\n\n let errors: { fieldKey: string, message: string }[] = [];\n // Process AJV validation errors\n if (!isValid) {\n errors = validator.errors!\n .map((error) => parseAjvError(error, 'input', properties, input))\n .filter((error) => !!error) as any[];\n }\n\n Object.keys(properties).forEach((property) => {\n const value = input[property];\n const { type, editor, patternKey, patternValue } = properties[property];\n const fieldErrors = [];\n // Check that proxy is required, if yes, valides that it's correctly setup\n if (type === 'object' && editor === 'proxy') {\n const proxyValidationErrors = validateProxyField(property as any, value as Record<string, any>, required.includes(property), options.proxy);\n proxyValidationErrors.forEach((error) => {\n fieldErrors.push(error);\n });\n }\n // Check that array items fit patternKey and patternValue\n if (type === 'array' && value && Array.isArray(value)) {\n if (editor === 'requestListSources') {\n const invalidIndexes: any[] = [];\n value.forEach((item, index) => {\n if (!item) invalidIndexes.push(index);\n else if (!item.url && !item.requestsFromUrl) invalidIndexes.push(index);\n else if (item.url && !URL_REGEX.test(item.url)) invalidIndexes.push(index);\n else if (item.requestsFromUrl && !URL_REGEX.test(item.requestsFromUrl)) invalidIndexes.push(index);\n });\n if (invalidIndexes.length) {\n fieldErrors.push(m('inputSchema.validation.requestListSourcesInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidIndexes: invalidIndexes.join(','),\n }));\n }\n }\n // If patternKey is provided, then validate keys of objects in array\n if (patternKey && editor === 'keyValue') {\n const check = new RegExp(patternKey);\n const invalidIndexes: any[] = [];\n value.forEach((item, index) => {\n if (!check.test(item.key)) invalidIndexes.push(index);\n });\n if (invalidIndexes.length) {\n fieldErrors.push(m('inputSchema.validation.arrayKeysInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidIndexes: invalidIndexes.join(','),\n pattern: patternKey,\n }));\n }\n }\n // If patternValue is provided and editor is keyValue, then validate values of objecs in array\n if (patternValue && editor === 'keyValue') {\n const check = new RegExp(patternValue);\n const invalidIndexes: any[] = [];\n value.forEach((item, index) => {\n if (!check.test(item.value)) invalidIndexes.push(index);\n });\n if (invalidIndexes.length) {\n fieldErrors.push(m('inputSchema.validation.arrayValuesInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidIndexes: invalidIndexes.join(','),\n pattern: patternValue,\n }));\n }\n // If patternValue is provided and editor is stringList, then validate each item in array\n } else if (patternValue && editor === 'stringList') {\n const check = new RegExp(patternValue);\n const invalidIndexes: any[] = [];\n value.forEach((item, index) => {\n if (!check.test(item)) invalidIndexes.push(index);\n });\n if (invalidIndexes.length) {\n fieldErrors.push(m('inputSchema.validation.arrayValuesInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidIndexes: invalidIndexes.join(','),\n pattern: patternValue,\n }));\n }\n }\n }\n // Check that object items fit patternKey and patternValue\n if (type === 'object' && value) {\n if (patternKey) {\n const check = new RegExp(patternKey);\n const invalidKeys: any[] = [];\n Object.keys(value).forEach((key) => {\n if (!check.test(key)) invalidKeys.push(key);\n });\n if (invalidKeys.length) {\n fieldErrors.push(m('inputSchema.validation.objectKeysInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidKeys: invalidKeys.join(','),\n pattern: patternKey,\n }));\n }\n }\n if (patternValue) {\n const check = new RegExp(patternValue);\n const invalidKeys: any[] = [];\n Object.keys(value).forEach((key) => {\n const propertyValue = (value as Record<string, any>)[key];\n if (typeof propertyValue !== 'string' || !check.test(propertyValue)) invalidKeys.push(key);\n });\n if (invalidKeys.length) {\n fieldErrors.push(m('inputSchema.validation.objectValuesInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidKeys: invalidKeys.join(','),\n pattern: patternValue,\n }));\n }\n }\n }\n\n if (fieldErrors.length > 0) {\n const message = fieldErrors.join(', ');\n errors.push({ fieldKey: property, message });\n }\n });\n\n return errors;\n}\n\n/**\n * This functions parses all given JSON and then takes each of the jsFields.\n * Then if the field:\n * - is valid JS single function it replaces its single line string with a function delacation.\n * - is valid multiline JS code then replaces its single line string with `multiline` string\n * Then stringifies the code with given number of jsonSpacing spaces and finally prefixes whole\n * stringified JSON except the first line with globalSpacing spaces.\n */\nexport function makeInputJsFieldsReadable(json: string, jsFields: string[], jsonSpacing = 4, globalSpacing = 0): string {\n const parsedJson = JSON.parse(json);\n const replacements: Record<string, any> = {};\n\n jsFields.forEach((field) => {\n let maybeFunction = parsedJson[field];\n if (!maybeFunction || typeof maybeFunction !== 'string') return;\n\n let ast;\n try {\n ast = parse(maybeFunction, { ecmaVersion: 'latest' });\n } catch {\n // Don't do anything in a case of invalid JS code.\n return;\n }\n\n const isMultiline = maybeFunction.includes('\\n');\n const isSingleFunction = ast\n && ast.body.length === 1\n && (\n ast.body[0].type === 'FunctionDeclaration'\n || (ast.body[0].type === 'ExpressionStatement' && ast.body[0].expression.type === 'ArrowFunctionExpression')\n );\n\n // If it's not a function declaration or multiline JS code then we do nothing.\n if (!isSingleFunction && !isMultiline) return;\n\n const spaces = (new Array(isSingleFunction ? jsonSpacing : jsonSpacing * 2)).fill(' ').join('');\n maybeFunction = maybeFunction\n .split('\\n').join(`\\n${spaces}`) // This prefixes each line with spaces.\n .trim(); // Trim whitespace on both sides\n\n const replacementValue = isSingleFunction\n ? maybeFunction.replace(/[;]+$/g, '') // Remove trailing semicolons\n : `\\`${maybeFunction}\\``;\n const replacementToken = `<<<REPLACEMENT_TOKEN:${Math.random()}>>>`;\n replacements[replacementToken] = replacementValue;\n parsedJson[field] = replacementToken;\n });\n\n let niceJson = JSON.stringify(parsedJson, null, jsonSpacing);\n\n Object.entries(replacements).forEach(([replacementToken, replacementValue]) => {\n niceJson = niceJson.replace(`\"${replacementToken}\"`, replacementValue);\n });\n\n const globalSpaces = (new Array(globalSpacing)).fill(' ').join('');\n niceJson = niceJson.split('\\n').join(`\\n${globalSpaces}`);\n\n return niceJson;\n}\n"],"mappings":"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","names":["definition","useApifyProxy","proxyUrls"]}
|
package/cjs/index.d.ts
CHANGED
|
@@ -171,7 +171,8 @@ var definitions = {
|
|
|
171
171
|
"textfield",
|
|
172
172
|
"textarea",
|
|
173
173
|
"datepicker",
|
|
174
|
-
"hidden"
|
|
174
|
+
"hidden",
|
|
175
|
+
"fileupload"
|
|
175
176
|
]
|
|
176
177
|
},
|
|
177
178
|
isSecret: {
|
|
@@ -297,7 +298,8 @@ var definitions = {
|
|
|
297
298
|
"python",
|
|
298
299
|
"textfield",
|
|
299
300
|
"textarea",
|
|
300
|
-
"hidden"
|
|
301
|
+
"hidden",
|
|
302
|
+
"fileupload"
|
|
301
303
|
]
|
|
302
304
|
},
|
|
303
305
|
isSecret: {
|
|
@@ -927,7 +929,7 @@ type CommonFieldDefinition<T> = {
|
|
|
927
929
|
};
|
|
928
930
|
type StringFieldDefinition = CommonFieldDefinition<string> & {
|
|
929
931
|
type: 'string';
|
|
930
|
-
editor: 'textfield' | 'textarea' | 'javascript' | 'python' | 'select' | 'datepicker' | 'hidden' | 'json';
|
|
932
|
+
editor: 'textfield' | 'textarea' | 'javascript' | 'python' | 'select' | 'datepicker' | 'hidden' | 'json' | 'fileupload';
|
|
931
933
|
pattern?: string;
|
|
932
934
|
minLength?: number;
|
|
933
935
|
maxLength?: number;
|
package/esm/index.d.mts
CHANGED
|
@@ -171,7 +171,8 @@ var definitions = {
|
|
|
171
171
|
"textfield",
|
|
172
172
|
"textarea",
|
|
173
173
|
"datepicker",
|
|
174
|
-
"hidden"
|
|
174
|
+
"hidden",
|
|
175
|
+
"fileupload"
|
|
175
176
|
]
|
|
176
177
|
},
|
|
177
178
|
isSecret: {
|
|
@@ -297,7 +298,8 @@ var definitions = {
|
|
|
297
298
|
"python",
|
|
298
299
|
"textfield",
|
|
299
300
|
"textarea",
|
|
300
|
-
"hidden"
|
|
301
|
+
"hidden",
|
|
302
|
+
"fileupload"
|
|
301
303
|
]
|
|
302
304
|
},
|
|
303
305
|
isSecret: {
|
|
@@ -927,7 +929,7 @@ type CommonFieldDefinition<T> = {
|
|
|
927
929
|
};
|
|
928
930
|
type StringFieldDefinition = CommonFieldDefinition<string> & {
|
|
929
931
|
type: 'string';
|
|
930
|
-
editor: 'textfield' | 'textarea' | 'javascript' | 'python' | 'select' | 'datepicker' | 'hidden' | 'json';
|
|
932
|
+
editor: 'textfield' | 'textarea' | 'javascript' | 'python' | 'select' | 'datepicker' | 'hidden' | 'json' | 'fileupload';
|
|
931
933
|
pattern?: string;
|
|
932
934
|
minLength?: number;
|
|
933
935
|
maxLength?: number;
|
package/esm/index.mjs
CHANGED
|
@@ -124,7 +124,7 @@ var schema_default = {
|
|
|
124
124
|
title: { type: "string" },
|
|
125
125
|
description: { type: "string" },
|
|
126
126
|
nullable: { type: "boolean" },
|
|
127
|
-
editor: { enum: ["javascript", "python", "textfield", "textarea", "datepicker", "hidden"] },
|
|
127
|
+
editor: { enum: ["javascript", "python", "textfield", "textarea", "datepicker", "hidden", "fileupload"] },
|
|
128
128
|
isSecret: { type: "boolean" }
|
|
129
129
|
},
|
|
130
130
|
required: ["type", "title", "description", "editor"],
|
|
@@ -175,7 +175,7 @@ var schema_default = {
|
|
|
175
175
|
nullable: { type: "boolean" },
|
|
176
176
|
minLength: { type: "integer" },
|
|
177
177
|
maxLength: { type: "integer" },
|
|
178
|
-
editor: { enum: ["javascript", "python", "textfield", "textarea", "hidden"] },
|
|
178
|
+
editor: { enum: ["javascript", "python", "textfield", "textarea", "hidden", "fileupload"] },
|
|
179
179
|
isSecret: { enum: [false] },
|
|
180
180
|
sectionCaption: { type: "string" },
|
|
181
181
|
sectionDescription: { type: "string" }
|
package/esm/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/intl.ts","../../src/schema.json","../../src/input_schema.ts","../../src/utilities.ts"],"sourcesContent":["const intlStrings = {\n 'inputSchema.validation.generic':\n 'Field {rootName}.{fieldKey} {message}',\n 'inputSchema.validation.required':\n 'Field {rootName}.{fieldKey} is required',\n 'inputSchema.validation.proxyRequired':\n 'Field {rootName}.{fieldKey} is required. Please provide custom proxy URLs or use Apify Proxy.',\n 'inputSchema.validation.requestListSourcesInvalid':\n 'Items in {rootName}.{fieldKey} at positions [{invalidIndexes}] do not contain valid URLs',\n 'inputSchema.validation.arrayKeysInvalid':\n 'Keys in {rootName}.{fieldKey} at positions [{invalidIndexes}] must match regular expression \"{pattern}\"',\n 'inputSchema.validation.arrayValuesInvalid':\n 'Values in {rootName}.{fieldKey} at positions [{invalidIndexes}] must match regular expression \"{pattern}\"',\n 'inputSchema.validation.objectKeysInvalid':\n 'Keys [{invalidKeys}] in {rootName}.{fieldKey} must match regular expression \"{pattern}',\n 'inputSchema.validation.objectValuesInvalid':\n 'Keys [{invalidKeys}] in {rootName}.{fieldKey} must have string value which matches regular expression \"{pattern}\"',\n 'inputSchema.validation.additionalProperty':\n 'Property {rootName}.{fieldKey} is not allowed.',\n 'inputSchema.validation.proxyGroupsNotAvailable':\n 'You currently do not have access to proxy groups: {groups}',\n 'inputSchema.validation.customProxyInvalid':\n 'Proxy URL \"{invalidUrl}\" has invalid format, it must be socks[4|4a|5|5h]|http[s]://[username[:password]]@hostname:port.',\n 'inputSchema.validation.apifyProxyCountryInvalid':\n 'Country code \"{invalidCountry}\" is invalid. Only ISO 3166-1 alpha-2 country codes are supported.',\n 'inputSchema.validation.apifyProxyCountryWithoutApifyProxyForbidden':\n 'The country for Apify Proxy can be specified only when using Apify Proxy.',\n 'inputSchema.validation.noAvailableAutoProxy':\n 'Currently you do not have access to any proxy group usable in automatic mode.',\n 'inputSchema.validation.noMatchingDefinition':\n 'Field schema.properties.{fieldKey} is not matching any input schema type definition. Please make sure that it\\'s type is valid.',\n 'inputSchema.validation.missingRequiredField':\n 'Field schema.properties.{fieldKey} does not exist, but it is specified in schema.required. Either define the field or remove it from schema.required.',\n 'inputSchema.validation.proxyGroupMustBeArrayOfStrings':\n 'Field {rootName}.{fieldKey}.apifyProxyGroups must be an array of strings.',\n};\n\n/**\n * Helper function to simulate intl formatMessage function\n */\nexport function m(stringId: string, variables?: Record<string, any>) {\n let text = intlStrings[stringId as keyof typeof intlStrings];\n if (!text) return stringId;\n\n if (variables) {\n Object.keys(variables).forEach((variableName) => {\n text = text.split(`{${variableName}}`).join(variables[variableName]);\n });\n }\n\n return text;\n}\n","{\n \"title\": \"JSON schema of Apify Actor INPUT_SCHEMA.json\",\n \"type\": \"object\",\n \"properties\": {\n \"$schema\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"schemaVersion\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 1\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"enum\": [\"object\"]\n },\n \"required\": {\n \"type\": \"array\",\n \"minItems\": 0,\n \"items\": { \"type\": \"string\" },\n \"uniqueItems\": true\n },\n \"additionalProperties\": {\n \"type\": \"boolean\"\n },\n \"properties\": {\n \"type\": \"object\",\n \"patternProperties\": {\n \"^\": {\n \"oneOf\": [\n { \"$ref\": \"#/definitions/stringProperty\" },\n { \"$ref\": \"#/definitions/stringEnumProperty\" },\n { \"$ref\": \"#/definitions/arrayProperty\" },\n { \"$ref\": \"#/definitions/objectProperty\" },\n { \"$ref\": \"#/definitions/integerProperty\" },\n { \"$ref\": \"#/definitions/booleanProperty\" },\n { \"$ref\": \"#/definitions/resourceProperty\" },\n { \"$ref\": \"#/definitions/resourceArrayProperty\" },\n { \"$ref\": \"#/definitions/anyProperty\" }\n ]\n }\n }\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"title\", \"type\", \"properties\", \"schemaVersion\"],\n \"definitions\": {\n \"stringEnumProperty\": {\n \"title\": \"Enum property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"editor\": { \"enum\": [\"select\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"string\" },\n \"prefill\": { \"type\": \"string\" },\n \"example\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" },\n \"enum\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" },\n \"minItems\": 1,\n \"uniqueItems\": true\n },\n \"enumTitles\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" },\n \"minItems\": 1\n }\n },\n \"required\": [\"type\", \"title\", \"description\", \"enum\"]\n },\n \"stringProperty\": {\n \"title\": \"String property\",\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"editor\": { \"enum\": [\"javascript\", \"python\", \"textfield\", \"textarea\", \"datepicker\", \"hidden\"] },\n \"isSecret\": { \"type\": \"boolean\" }\n },\n \"required\": [\"type\", \"title\", \"description\", \"editor\"],\n \"if\": {\n \"properties\": {\n \"isSecret\": {\n \"not\": {\n \"const\": true\n }\n }\n }\n },\n \"then\": {\n \"if\": {\n \"properties\": {\n \"editor\": { \"const\": \"datepicker\" }\n }\n },\n \"then\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"string\" },\n \"prefill\": { \"type\": \"string\" },\n \"example\": { \"type\": \"string\" },\n \"pattern\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minLength\": { \"type\": \"integer\" },\n \"maxLength\": { \"type\": \"integer\" },\n \"editor\": { \"enum\": [\"datepicker\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" },\n \"dateType\": { \"enum\": [\"absolute\", \"relative\", \"absoluteOrRelative\"] }\n }\n },\n \"else\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"string\" },\n \"prefill\": { \"type\": \"string\" },\n \"example\": { \"type\": \"string\" },\n \"pattern\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minLength\": { \"type\": \"integer\" },\n \"maxLength\": { \"type\": \"integer\" },\n \"editor\": { \"enum\": [\"javascript\", \"python\", \"textfield\", \"textarea\", \"hidden\"] },\n \"isSecret\": { \"enum\": [false] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n }\n }\n },\n \"else\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"example\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"editor\": { \"enum\": [\"textfield\", \"textarea\", \"hidden\"] },\n \"isSecret\": { \"enum\": [true] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n }\n }\n },\n \"arrayProperty\": {\n \"title\": \"Array property\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"enum\": [\"array\"] },\n \"editor\": { \"enum\": [\"json\", \"requestListSources\", \"pseudoUrls\", \"globs\", \"keyValue\", \"stringList\", \"select\", \"hidden\"] }\n },\n \"additionalProperties\": true,\n \"required\": [\"type\", \"title\", \"description\", \"editor\"],\n \"if\": {\n \"properties\": {\n \"editor\": { \"const\": \"select\" }\n }\n },\n \"then\": {\n \"additionalProperties\": false,\n \"required\": [\"items\"],\n \"properties\": {\n \"type\": { \"enum\": [\"array\"] },\n \"editor\": { \"enum\": [\"select\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"array\" },\n \"prefill\": { \"type\": \"array\" },\n \"example\": { \"type\": \"array\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minItems\": { \"type\": \"integer\" },\n \"maxItems\": { \"type\": \"integer\" },\n \"uniqueItems\": { \"type\": \"boolean\" },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" },\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"enum\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" },\n \"uniqueItems\": true\n },\n \"enumTitles\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" }\n }\n },\n \"required\": [\"type\", \"enum\"]\n }\n }\n },\n \"else\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"array\"] },\n \"editor\": { \"enum\": [\"json\", \"requestListSources\", \"pseudoUrls\", \"globs\", \"keyValue\", \"stringList\", \"hidden\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"array\" },\n \"prefill\": { \"type\": \"array\" },\n \"example\": { \"type\": \"array\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minItems\": { \"type\": \"integer\" },\n \"maxItems\": { \"type\": \"integer\" },\n \"uniqueItems\": { \"type\": \"boolean\" },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" },\n \"placeholderKey\": { \"type\": \"string\" },\n \"placeholderValue\": { \"type\": \"string\" },\n \"patternKey\": { \"type\": \"string\" },\n \"patternValue\": { \"type\": \"string\" }\n }\n }\n },\n \"objectProperty\": {\n \"title\": \"Object property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"object\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"object\" },\n \"prefill\": { \"type\": \"object\" },\n \"example\": { \"type\": \"object\" },\n \"patternKey\": { \"type\": \"string\" },\n \"patternValue\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minProperties\": { \"type\": \"integer\" },\n \"maxProperties\": { \"type\": \"integer\" },\n\n \"editor\": { \"enum\": [\"json\", \"proxy\", \"hidden\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\", \"editor\"]\n },\n \"integerProperty\": {\n \"title\": \"Integer property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"integer\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"integer\" },\n \"prefill\": { \"type\": \"integer\" },\n \"example\": { \"type\": \"integer\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minimum\": { \"type\": \"integer\" },\n \"maximum\": { \"type\": \"integer\" },\n \"unit\": { \"type\": \"string\" },\n \"editor\": { \"enum\": [\"number\", \"hidden\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\"]\n },\n \"booleanProperty\": {\n \"title\": \"Boolean property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"boolean\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"boolean\" },\n \"prefill\": { \"type\": \"boolean\" },\n \"example\": { \"type\": \"boolean\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"groupCaption\": { \"type\": \"string\" },\n \"groupDescription\": { \"type\": \"string\" },\n \"editor\": { \"enum\": [\"checkbox\", \"hidden\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\"]\n },\n \"resourceProperty\": {\n \"title\": \"Resource property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"editor\": { \"enum\": [\"resourcePicker\", \"hidden\"] },\n \"resourceType\": { \"enum\": [\"dataset\", \"keyValueStore\", \"requestQueue\"] },\n \"default\": { \"type\": \"string\" },\n \"prefill\": { \"type\": \"string\" },\n \"example\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\", \"resourceType\"]\n },\n \"resourceArrayProperty\": {\n \"title\": \"Resource array property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"array\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"editor\": { \"enum\": [\"resourcePicker\", \"hidden\"] },\n \"default\": { \"type\": \"array\" },\n \"prefill\": { \"type\": \"array\" },\n \"example\": { \"type\": \"array\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minItems\": { \"type\": \"integer\" },\n \"maxItems\": { \"type\": \"integer\" },\n \"uniqueItems\": { \"type\": \"boolean\" },\n \"resourceType\": { \"enum\": [\"dataset\", \"keyValueStore\", \"requestQueue\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\", \"resourceType\"]\n },\n \"anyProperty\": {\n \"title\": \"Any property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": {\n \"type\": [\"array\"],\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\"object\", \"array\", \"string\", \"integer\", \"boolean\"]\n },\n \"uniqueItems\": true,\n \"additionalItems\": false,\n \"minItems\": 1\n },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": [\"object\", \"array\", \"string\", \"integer\", \"boolean\"] },\n \"prefill\": { \"type\": [\"object\", \"array\", \"string\", \"integer\", \"boolean\"] },\n \"example\": { \"type\": [\"object\", \"array\", \"string\", \"integer\", \"boolean\"] },\n \"nullable\": { \"type\": \"boolean\" },\n \"editor\": { \"enum\": [\"json\", \"hidden\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\", \"editor\"]\n }\n }\n}\n","import type { ErrorObject, Schema } from 'ajv';\nimport type Ajv from 'ajv';\n\nimport { m } from './intl';\nimport schema from './schema.json';\nimport type {\n CommonResourceFieldDefinition,\n FieldDefinition,\n InputSchema,\n InputSchemaBaseChecked,\n StringFieldDefinition,\n} from './types';\n\nexport { schema as inputSchema };\n\nconst { definitions } = schema;\n\n/**\n * This function parses AJV error and transforms it into a readable string.\n *\n * @param error An error as returned from AJV.\n * @param rootName Usually 'input' or 'schema' based on if we are passing the input or schema.\n * @param properties (Used only when parsing input errors) List of input schema properties.\n * @param input (Used only when parsing input errors) Actual input that is being parsed.\n * @returns {null|{fieldKey: *, message: *}}\n */\nexport function parseAjvError(\n error: ErrorObject,\n rootName: string,\n properties: Record<string, { nullable?: boolean, editor?: string }> = {},\n input: Record<string, unknown> = {},\n): { fieldKey: string; message: string } | null {\n // There are 3 possible errors comming from validation:\n // - either { keword: 'anything', instancePath: '/someField', message: 'error message that we can use' }\n // - or { keyword: 'additionalProperties', params: { additionalProperty: 'field' }, message: 'must NOT have additional properties' }\n // - or { keyword: 'required', instancePath: '', params.missingProperty: 'someField' }\n\n let fieldKey: string;\n let message: string;\n\n // If error is with keyword type, it means that type of input is incorrect\n // this can mean that provided value is null\n if (error.keyword === 'type') {\n fieldKey = error.instancePath.split('/').pop()!;\n // Check if value is null and field is nullable, if yes, then skip this error\n if (properties[fieldKey] && properties[fieldKey].nullable && input[fieldKey] === null) {\n return null;\n }\n message = m('inputSchema.validation.generic', { rootName, fieldKey, message: error.message });\n } else if (error.keyword === 'required') {\n fieldKey = error.params.missingProperty;\n message = m('inputSchema.validation.required', { rootName, fieldKey });\n } else if (error.keyword === 'additionalProperties') {\n fieldKey = error.params.additionalProperty;\n message = m('inputSchema.validation.additionalProperty', { rootName, fieldKey });\n } else if (error.keyword === 'enum') {\n fieldKey = error.instancePath.split('/').pop()!;\n const errorMessage = `${error.message}: \"${error.params.allowedValues.join('\", \"')}\"`;\n message = m('inputSchema.validation.generic', { rootName, fieldKey, message: errorMessage });\n } else if (error.keyword === 'const') {\n fieldKey = error.instancePath.split('/').pop()!;\n message = m('inputSchema.validation.generic', { rootName, fieldKey, message: error.message });\n } else {\n fieldKey = error.instancePath.split('/').pop()!;\n message = m('inputSchema.validation.generic', { rootName, fieldKey, message: error.message });\n }\n\n return { fieldKey, message };\n}\n\n/**\n * Validates given object against schema and throws a human-readable error.\n */\nconst validateAgainstSchemaOrThrow = (validator: Ajv, obj: Record<string, unknown>, inputSchema: Schema, rootName: string) => {\n if (validator.validate(inputSchema, obj)) return;\n\n const errorMessage = parseAjvError(validator.errors![0], rootName)?.message;\n throw new Error(`Input schema is not valid (${errorMessage})`);\n};\n\n/**\n * This validates given object only against the basic input schema without checking the particular fields.\n * We override schema.properties.properties not to validate field definitions.\n */\nfunction validateBasicStructure(validator: Ajv, obj: Record<string, unknown>): asserts obj is InputSchemaBaseChecked {\n const schemaWithoutProperties = {\n ...schema,\n properties: { ...schema.properties, properties: { type: 'object' } as any },\n };\n validateAgainstSchemaOrThrow(validator, obj, schemaWithoutProperties, 'schema');\n}\n\n/**\n * Validates particular field against it's schema.\n */\nfunction validateField(validator: Ajv, fieldSchema: Record<string, unknown>, fieldKey: string): asserts fieldSchema is FieldDefinition {\n const matchingDefinitions = Object\n .values<any>(definitions) // cast as any, as the code in first branch seems to be invalid\n .filter((definition) => {\n return definition.properties.type.enum\n // This is a normal case where fieldSchema.type can be only one possible value matching definition.properties.type.enum.0\n ? definition.properties.type.enum[0] === fieldSchema.type\n // This is a type \"Any\" where fieldSchema.type is an array of possible values\n : Array.isArray(fieldSchema.type);\n });\n\n // There is not matching definition.\n if (matchingDefinitions.length === 0) {\n const errorMessage = m('inputSchema.validation.noMatchingDefinition', { fieldKey });\n throw new Error(`Input schema is not valid (${errorMessage})`);\n }\n\n // If there is only one matching then we are done and simply compare it.\n if (matchingDefinitions.length === 1) {\n validateAgainstSchemaOrThrow(validator, fieldSchema, matchingDefinitions[0], `schema.properties.${fieldKey}`);\n return;\n }\n\n // If there are more matching definitions then we need to get the right one.\n // If the definition contains \"enum\" property then it's enum type.\n if ((fieldSchema as StringFieldDefinition).enum) {\n const definition = matchingDefinitions.filter((item) => !!item.properties.enum).pop();\n if (!definition) throw new Error('Input schema validation failed to find \"enum property\" definition');\n validateAgainstSchemaOrThrow(validator, fieldSchema, definition, `schema.properties.${fieldKey}.enum`);\n return;\n }\n // If the definition contains \"resourceType\" property then it's resource type.\n if ((fieldSchema as CommonResourceFieldDefinition<unknown>).resourceType) {\n const definition = matchingDefinitions.filter((item) => !!item.properties.resourceType).pop();\n if (!definition) throw new Error('Input schema validation failed to find \"resource property\" definition');\n validateAgainstSchemaOrThrow(validator, fieldSchema, definition, `schema.properties.${fieldKey}`);\n return;\n }\n // Otherwise we use the other definition.\n const definition = matchingDefinitions.filter((item) => !item.properties.enum && !item.properties.resourceType).pop();\n if (!definition) throw new Error('Input schema validation failed to find other than \"enum property\" definition');\n\n validateAgainstSchemaOrThrow(validator, fieldSchema, definition, `schema.properties.${fieldKey}`);\n}\n\n/**\n * Validates all properties in the input schema\n */\nfunction validateProperties(inputSchema: InputSchemaBaseChecked, validator: Ajv): asserts inputSchema is InputSchema {\n Object.entries(inputSchema.properties).forEach(([fieldKey, fieldSchema]) => (\n validateField(validator, fieldSchema, fieldKey)),\n );\n}\n\n/**\n * Validates that all required fields are present in properties list\n */\nexport function validateExistenceOfRequiredFields(inputSchema: InputSchema) {\n // If the input schema does not have any required fields, we do not need to validate them\n if (!inputSchema?.required?.length) return;\n\n Object.values(inputSchema?.required).forEach((fieldKey) => {\n // If the required field is present in the list of properties, we can check the next one\n if (inputSchema?.properties[fieldKey as string]) return;\n\n // The required field is not defined in list of properties. Which means the schema is not valid.\n throw new Error(m('inputSchema.validation.missingRequiredField', { fieldKey }));\n });\n}\n\n/**\n * This function validates given input schema first just for basic structure then each field one by one,\n * then checks that all required fields are present and finally checks fully against the whole schema.\n *\n * This way we get the most accurate error message for user.\n */\nexport function validateInputSchema(validator: Ajv, inputSchema: Record<string, unknown>): asserts inputSchema is InputSchema {\n // First validate just basic structure without fields.\n validateBasicStructure(validator, inputSchema);\n\n // Then validate each field separately.\n validateProperties(inputSchema, validator);\n\n // Next validate if required fields are actually present in the schema\n validateExistenceOfRequiredFields(inputSchema);\n\n // Finally just to be sure run validation against the whole schema.\n validateAgainstSchemaOrThrow(validator, inputSchema, schema, 'schema');\n}\n","import { parse } from 'acorn-loose';\nimport type { ValidateFunction } from 'ajv';\nimport { countries } from 'countries-list';\n\nimport { PROXY_URL_REGEX, URL_REGEX } from '@apify/consts';\n\nimport { parseAjvError } from './input_schema';\nimport { m } from './intl';\n\n/**\n * Validates input field configured with proxy editor\n * @param fieldKey Proxy field value\n * @param value Proxy field value\n * @param [isRequired] Whether the field is required or not\n * @param [options] Information about proxy groups availability\n * @param [options.hasAutoProxyGroups] Informs validation whether user has atleast one proxy group available in auto mode\n * @param [options.availableProxyGroups] List of available proxy groups\n * @param [options.disabledProxyGroups] Object with groupId as key and error message as value (mostly for residential/SERP)\n */\nfunction validateProxyField(\n fieldKey: Record<string, unknown>,\n value: Record<string, any>,\n isRequired = false,\n options: { hasAutoProxyGroups?: boolean; availableProxyGroups?: string[]; disabledProxyGroups?: Record<string, unknown> } | null = null,\n) {\n const fieldErrors: any[] = [];\n if (isRequired) {\n // Nullable error is already handled by AJV\n if (value === null) return fieldErrors;\n if (!value) {\n const message = m('inputSchema.validation.required', { rootName: 'input', fieldKey });\n fieldErrors.push(message);\n return fieldErrors;\n }\n\n const { useApifyProxy, proxyUrls } = value;\n if (!useApifyProxy && (!Array.isArray(proxyUrls) || proxyUrls.length === 0)) {\n fieldErrors.push(m('inputSchema.validation.proxyRequired', { rootName: 'input', fieldKey }));\n return fieldErrors;\n }\n }\n\n // Input is not required, so missing value is valid\n if (!value) return fieldErrors;\n\n const { useApifyProxy, proxyUrls, apifyProxyGroups, apifyProxyCountry } = value;\n\n if (!useApifyProxy && Array.isArray(proxyUrls)) {\n let invalidUrl = false;\n proxyUrls.forEach((url) => {\n if (!PROXY_URL_REGEX.test(url.trim())) invalidUrl = url.trim();\n });\n if (invalidUrl) {\n fieldErrors.push(m('inputSchema.validation.customProxyInvalid', { invalidUrl }));\n }\n }\n\n // Apify proxy country can be set only when using Apify proxy\n if (!useApifyProxy && apifyProxyCountry) {\n fieldErrors.push(m('inputSchema.validation.apifyProxyCountryWithoutApifyProxyForbidden'));\n }\n\n // If Apify proxy is not used skip additional checks\n if (!useApifyProxy) return fieldErrors;\n\n // If Apify proxy is used, check if there is a selected country and if so, check that it's valid (empty or a valid country code)\n if (apifyProxyCountry && !countries[apifyProxyCountry as keyof typeof countries]) {\n fieldErrors.push(m('inputSchema.validation.apifyProxyCountryInvalid', { invalidCountry: apifyProxyCountry }));\n }\n\n // If options are not provided skip additional checks\n if (!options) return fieldErrors;\n\n // if apifyProxyGroups exists it must be an array of strings\n const isStringsArray = (array: string[]) => array.every((item) => typeof item === 'string');\n if (apifyProxyGroups && !(Array.isArray(apifyProxyGroups) && isStringsArray(apifyProxyGroups))) {\n fieldErrors.push(m('inputSchema.validation.proxyGroupMustBeArrayOfStrings', { rootName: 'input', fieldKey }));\n return fieldErrors;\n }\n\n const selectedProxyGroups = (apifyProxyGroups || []);\n\n // Auto mode, check that user has access to alteast one proxy group usable in this mode\n if (!selectedProxyGroups.length && !options.hasAutoProxyGroups) {\n fieldErrors.push(m('inputSchema.validation.noAvailableAutoProxy'));\n return fieldErrors;\n }\n\n // Check if proxy groups selected by user are available to him\n const availableProxyGroupsById = {} as Record<string, boolean>;\n (options.availableProxyGroups || []).forEach((group) => { availableProxyGroupsById[group] = true; });\n const unavailableProxyGroups = selectedProxyGroups.filter((group: string) => !availableProxyGroupsById[group]);\n\n if (unavailableProxyGroups.length) {\n fieldErrors.push(m('inputSchema.validation.proxyGroupsNotAvailable', {\n rootName: 'input',\n fieldKey,\n groups: unavailableProxyGroups.join(', '),\n }));\n }\n\n // Check if any of the proxy groups are blocked and if yes then output the associated message\n const blockedProxyGroupsById = options.disabledProxyGroups || {};\n selectedProxyGroups\n .filter((group: string) => blockedProxyGroupsById[group])\n .forEach((blockedGroup: string) => {\n fieldErrors.push(blockedProxyGroupsById[blockedGroup]);\n });\n\n return fieldErrors;\n}\n\n/**\n * Uses AJV validator to validate input with input schema and then\n * does custom validation for our own properties (nullable, patternKey, patternValue)\n * @param validator Initialized AJV validator\n * @param inputSchema Valid input schema in object\n * @param input Input object to be validated\n * @param options (Optional) Additional validation configuration for certain fields\n */\nexport function validateInputUsingValidator(\n validator: ValidateFunction,\n inputSchema: Record<string, any>,\n input: Record<string, unknown>,\n options: Record<string, any> = {},\n) {\n const isValid = validator(input); // Check if input is valid based on schema values\n\n const { properties } = inputSchema;\n const required = inputSchema.required || [];\n\n let errors: { fieldKey: string, message: string }[] = [];\n // Process AJV validation errors\n if (!isValid) {\n errors = validator.errors!\n .map((error) => parseAjvError(error, 'input', properties, input))\n .filter((error) => !!error) as any[];\n }\n\n Object.keys(properties).forEach((property) => {\n const value = input[property];\n const { type, editor, patternKey, patternValue } = properties[property];\n const fieldErrors = [];\n // Check that proxy is required, if yes, valides that it's correctly setup\n if (type === 'object' && editor === 'proxy') {\n const proxyValidationErrors = validateProxyField(property as any, value as Record<string, any>, required.includes(property), options.proxy);\n proxyValidationErrors.forEach((error) => {\n fieldErrors.push(error);\n });\n }\n // Check that array items fit patternKey and patternValue\n if (type === 'array' && value && Array.isArray(value)) {\n if (editor === 'requestListSources') {\n const invalidIndexes: any[] = [];\n value.forEach((item, index) => {\n if (!item) invalidIndexes.push(index);\n else if (!item.url && !item.requestsFromUrl) invalidIndexes.push(index);\n else if (item.url && !URL_REGEX.test(item.url)) invalidIndexes.push(index);\n else if (item.requestsFromUrl && !URL_REGEX.test(item.requestsFromUrl)) invalidIndexes.push(index);\n });\n if (invalidIndexes.length) {\n fieldErrors.push(m('inputSchema.validation.requestListSourcesInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidIndexes: invalidIndexes.join(','),\n }));\n }\n }\n // If patternKey is provided, then validate keys of objects in array\n if (patternKey && editor === 'keyValue') {\n const check = new RegExp(patternKey);\n const invalidIndexes: any[] = [];\n value.forEach((item, index) => {\n if (!check.test(item.key)) invalidIndexes.push(index);\n });\n if (invalidIndexes.length) {\n fieldErrors.push(m('inputSchema.validation.arrayKeysInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidIndexes: invalidIndexes.join(','),\n pattern: patternKey,\n }));\n }\n }\n // If patternValue is provided and editor is keyValue, then validate values of objecs in array\n if (patternValue && editor === 'keyValue') {\n const check = new RegExp(patternValue);\n const invalidIndexes: any[] = [];\n value.forEach((item, index) => {\n if (!check.test(item.value)) invalidIndexes.push(index);\n });\n if (invalidIndexes.length) {\n fieldErrors.push(m('inputSchema.validation.arrayValuesInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidIndexes: invalidIndexes.join(','),\n pattern: patternValue,\n }));\n }\n // If patternValue is provided and editor is stringList, then validate each item in array\n } else if (patternValue && editor === 'stringList') {\n const check = new RegExp(patternValue);\n const invalidIndexes: any[] = [];\n value.forEach((item, index) => {\n if (!check.test(item)) invalidIndexes.push(index);\n });\n if (invalidIndexes.length) {\n fieldErrors.push(m('inputSchema.validation.arrayValuesInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidIndexes: invalidIndexes.join(','),\n pattern: patternValue,\n }));\n }\n }\n }\n // Check that object items fit patternKey and patternValue\n if (type === 'object' && value) {\n if (patternKey) {\n const check = new RegExp(patternKey);\n const invalidKeys: any[] = [];\n Object.keys(value).forEach((key) => {\n if (!check.test(key)) invalidKeys.push(key);\n });\n if (invalidKeys.length) {\n fieldErrors.push(m('inputSchema.validation.objectKeysInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidKeys: invalidKeys.join(','),\n pattern: patternKey,\n }));\n }\n }\n if (patternValue) {\n const check = new RegExp(patternValue);\n const invalidKeys: any[] = [];\n Object.keys(value).forEach((key) => {\n const propertyValue = (value as Record<string, any>)[key];\n if (typeof propertyValue !== 'string' || !check.test(propertyValue)) invalidKeys.push(key);\n });\n if (invalidKeys.length) {\n fieldErrors.push(m('inputSchema.validation.objectValuesInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidKeys: invalidKeys.join(','),\n pattern: patternValue,\n }));\n }\n }\n }\n\n if (fieldErrors.length > 0) {\n const message = fieldErrors.join(', ');\n errors.push({ fieldKey: property, message });\n }\n });\n\n return errors;\n}\n\n/**\n * This functions parses all given JSON and then takes each of the jsFields.\n * Then if the field:\n * - is valid JS single function it replaces its single line string with a function delacation.\n * - is valid multiline JS code then replaces its single line string with `multiline` string\n * Then stringifies the code with given number of jsonSpacing spaces and finally prefixes whole\n * stringified JSON except the first line with globalSpacing spaces.\n */\nexport function makeInputJsFieldsReadable(json: string, jsFields: string[], jsonSpacing = 4, globalSpacing = 0): string {\n const parsedJson = JSON.parse(json);\n const replacements: Record<string, any> = {};\n\n jsFields.forEach((field) => {\n let maybeFunction = parsedJson[field];\n if (!maybeFunction || typeof maybeFunction !== 'string') return;\n\n let ast;\n try {\n ast = parse(maybeFunction, { ecmaVersion: 'latest' });\n } catch {\n // Don't do anything in a case of invalid JS code.\n return;\n }\n\n const isMultiline = maybeFunction.includes('\\n');\n const isSingleFunction = ast\n && ast.body.length === 1\n && (\n ast.body[0].type === 'FunctionDeclaration'\n || (ast.body[0].type === 'ExpressionStatement' && ast.body[0].expression.type === 'ArrowFunctionExpression')\n );\n\n // If it's not a function declaration or multiline JS code then we do nothing.\n if (!isSingleFunction && !isMultiline) return;\n\n const spaces = (new Array(isSingleFunction ? jsonSpacing : jsonSpacing * 2)).fill(' ').join('');\n maybeFunction = maybeFunction\n .split('\\n').join(`\\n${spaces}`) // This prefixes each line with spaces.\n .trim(); // Trim whitespace on both sides\n\n const replacementValue = isSingleFunction\n ? maybeFunction.replace(/[;]+$/g, '') // Remove trailing semicolons\n : `\\`${maybeFunction}\\``;\n const replacementToken = `<<<REPLACEMENT_TOKEN:${Math.random()}>>>`;\n replacements[replacementToken] = replacementValue;\n parsedJson[field] = replacementToken;\n });\n\n let niceJson = JSON.stringify(parsedJson, null, jsonSpacing);\n\n Object.entries(replacements).forEach(([replacementToken, replacementValue]) => {\n niceJson = niceJson.replace(`\"${replacementToken}\"`, replacementValue);\n });\n\n const globalSpaces = (new Array(globalSpacing)).fill(' ').join('');\n niceJson = niceJson.split('\\n').join(`\\n${globalSpaces}`);\n\n return niceJson;\n}\n"],"mappings":"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","names":["definition","useApifyProxy","proxyUrls"]}
|
|
1
|
+
{"version":3,"sources":["../../src/intl.ts","../../src/schema.json","../../src/input_schema.ts","../../src/utilities.ts"],"sourcesContent":["const intlStrings = {\n 'inputSchema.validation.generic':\n 'Field {rootName}.{fieldKey} {message}',\n 'inputSchema.validation.required':\n 'Field {rootName}.{fieldKey} is required',\n 'inputSchema.validation.proxyRequired':\n 'Field {rootName}.{fieldKey} is required. Please provide custom proxy URLs or use Apify Proxy.',\n 'inputSchema.validation.requestListSourcesInvalid':\n 'Items in {rootName}.{fieldKey} at positions [{invalidIndexes}] do not contain valid URLs',\n 'inputSchema.validation.arrayKeysInvalid':\n 'Keys in {rootName}.{fieldKey} at positions [{invalidIndexes}] must match regular expression \"{pattern}\"',\n 'inputSchema.validation.arrayValuesInvalid':\n 'Values in {rootName}.{fieldKey} at positions [{invalidIndexes}] must match regular expression \"{pattern}\"',\n 'inputSchema.validation.objectKeysInvalid':\n 'Keys [{invalidKeys}] in {rootName}.{fieldKey} must match regular expression \"{pattern}',\n 'inputSchema.validation.objectValuesInvalid':\n 'Keys [{invalidKeys}] in {rootName}.{fieldKey} must have string value which matches regular expression \"{pattern}\"',\n 'inputSchema.validation.additionalProperty':\n 'Property {rootName}.{fieldKey} is not allowed.',\n 'inputSchema.validation.proxyGroupsNotAvailable':\n 'You currently do not have access to proxy groups: {groups}',\n 'inputSchema.validation.customProxyInvalid':\n 'Proxy URL \"{invalidUrl}\" has invalid format, it must be socks[4|4a|5|5h]|http[s]://[username[:password]]@hostname:port.',\n 'inputSchema.validation.apifyProxyCountryInvalid':\n 'Country code \"{invalidCountry}\" is invalid. Only ISO 3166-1 alpha-2 country codes are supported.',\n 'inputSchema.validation.apifyProxyCountryWithoutApifyProxyForbidden':\n 'The country for Apify Proxy can be specified only when using Apify Proxy.',\n 'inputSchema.validation.noAvailableAutoProxy':\n 'Currently you do not have access to any proxy group usable in automatic mode.',\n 'inputSchema.validation.noMatchingDefinition':\n 'Field schema.properties.{fieldKey} is not matching any input schema type definition. Please make sure that it\\'s type is valid.',\n 'inputSchema.validation.missingRequiredField':\n 'Field schema.properties.{fieldKey} does not exist, but it is specified in schema.required. Either define the field or remove it from schema.required.',\n 'inputSchema.validation.proxyGroupMustBeArrayOfStrings':\n 'Field {rootName}.{fieldKey}.apifyProxyGroups must be an array of strings.',\n};\n\n/**\n * Helper function to simulate intl formatMessage function\n */\nexport function m(stringId: string, variables?: Record<string, any>) {\n let text = intlStrings[stringId as keyof typeof intlStrings];\n if (!text) return stringId;\n\n if (variables) {\n Object.keys(variables).forEach((variableName) => {\n text = text.split(`{${variableName}}`).join(variables[variableName]);\n });\n }\n\n return text;\n}\n","{\n \"title\": \"JSON schema of Apify Actor INPUT_SCHEMA.json\",\n \"type\": \"object\",\n \"properties\": {\n \"$schema\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"schemaVersion\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 1\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"enum\": [\"object\"]\n },\n \"required\": {\n \"type\": \"array\",\n \"minItems\": 0,\n \"items\": { \"type\": \"string\" },\n \"uniqueItems\": true\n },\n \"additionalProperties\": {\n \"type\": \"boolean\"\n },\n \"properties\": {\n \"type\": \"object\",\n \"patternProperties\": {\n \"^\": {\n \"oneOf\": [\n { \"$ref\": \"#/definitions/stringProperty\" },\n { \"$ref\": \"#/definitions/stringEnumProperty\" },\n { \"$ref\": \"#/definitions/arrayProperty\" },\n { \"$ref\": \"#/definitions/objectProperty\" },\n { \"$ref\": \"#/definitions/integerProperty\" },\n { \"$ref\": \"#/definitions/booleanProperty\" },\n { \"$ref\": \"#/definitions/resourceProperty\" },\n { \"$ref\": \"#/definitions/resourceArrayProperty\" },\n { \"$ref\": \"#/definitions/anyProperty\" }\n ]\n }\n }\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"title\", \"type\", \"properties\", \"schemaVersion\"],\n \"definitions\": {\n \"stringEnumProperty\": {\n \"title\": \"Enum property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"editor\": { \"enum\": [\"select\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"string\" },\n \"prefill\": { \"type\": \"string\" },\n \"example\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" },\n \"enum\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" },\n \"minItems\": 1,\n \"uniqueItems\": true\n },\n \"enumTitles\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" },\n \"minItems\": 1\n }\n },\n \"required\": [\"type\", \"title\", \"description\", \"enum\"]\n },\n \"stringProperty\": {\n \"title\": \"String property\",\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"editor\": { \"enum\": [\"javascript\", \"python\", \"textfield\", \"textarea\", \"datepicker\", \"hidden\", \"fileupload\"] },\n \"isSecret\": { \"type\": \"boolean\" }\n },\n \"required\": [\"type\", \"title\", \"description\", \"editor\"],\n \"if\": {\n \"properties\": {\n \"isSecret\": {\n \"not\": {\n \"const\": true\n }\n }\n }\n },\n \"then\": {\n \"if\": {\n \"properties\": {\n \"editor\": { \"const\": \"datepicker\" }\n }\n },\n \"then\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"string\" },\n \"prefill\": { \"type\": \"string\" },\n \"example\": { \"type\": \"string\" },\n \"pattern\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minLength\": { \"type\": \"integer\" },\n \"maxLength\": { \"type\": \"integer\" },\n \"editor\": { \"enum\": [\"datepicker\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" },\n \"dateType\": { \"enum\": [\"absolute\", \"relative\", \"absoluteOrRelative\"] }\n }\n },\n \"else\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"string\" },\n \"prefill\": { \"type\": \"string\" },\n \"example\": { \"type\": \"string\" },\n \"pattern\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minLength\": { \"type\": \"integer\" },\n \"maxLength\": { \"type\": \"integer\" },\n \"editor\": { \"enum\": [\"javascript\", \"python\", \"textfield\", \"textarea\", \"hidden\", \"fileupload\"] },\n \"isSecret\": { \"enum\": [false] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n }\n }\n },\n \"else\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"example\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"editor\": { \"enum\": [\"textfield\", \"textarea\", \"hidden\"] },\n \"isSecret\": { \"enum\": [true] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n }\n }\n },\n \"arrayProperty\": {\n \"title\": \"Array property\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": { \"enum\": [\"array\"] },\n \"editor\": { \"enum\": [\"json\", \"requestListSources\", \"pseudoUrls\", \"globs\", \"keyValue\", \"stringList\", \"select\", \"hidden\"] }\n },\n \"additionalProperties\": true,\n \"required\": [\"type\", \"title\", \"description\", \"editor\"],\n \"if\": {\n \"properties\": {\n \"editor\": { \"const\": \"select\" }\n }\n },\n \"then\": {\n \"additionalProperties\": false,\n \"required\": [\"items\"],\n \"properties\": {\n \"type\": { \"enum\": [\"array\"] },\n \"editor\": { \"enum\": [\"select\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"array\" },\n \"prefill\": { \"type\": \"array\" },\n \"example\": { \"type\": \"array\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minItems\": { \"type\": \"integer\" },\n \"maxItems\": { \"type\": \"integer\" },\n \"uniqueItems\": { \"type\": \"boolean\" },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" },\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"enum\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" },\n \"uniqueItems\": true\n },\n \"enumTitles\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" }\n }\n },\n \"required\": [\"type\", \"enum\"]\n }\n }\n },\n \"else\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"array\"] },\n \"editor\": { \"enum\": [\"json\", \"requestListSources\", \"pseudoUrls\", \"globs\", \"keyValue\", \"stringList\", \"hidden\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"array\" },\n \"prefill\": { \"type\": \"array\" },\n \"example\": { \"type\": \"array\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minItems\": { \"type\": \"integer\" },\n \"maxItems\": { \"type\": \"integer\" },\n \"uniqueItems\": { \"type\": \"boolean\" },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" },\n \"placeholderKey\": { \"type\": \"string\" },\n \"placeholderValue\": { \"type\": \"string\" },\n \"patternKey\": { \"type\": \"string\" },\n \"patternValue\": { \"type\": \"string\" }\n }\n }\n },\n \"objectProperty\": {\n \"title\": \"Object property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"object\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"object\" },\n \"prefill\": { \"type\": \"object\" },\n \"example\": { \"type\": \"object\" },\n \"patternKey\": { \"type\": \"string\" },\n \"patternValue\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minProperties\": { \"type\": \"integer\" },\n \"maxProperties\": { \"type\": \"integer\" },\n\n \"editor\": { \"enum\": [\"json\", \"proxy\", \"hidden\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\", \"editor\"]\n },\n \"integerProperty\": {\n \"title\": \"Integer property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"integer\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"integer\" },\n \"prefill\": { \"type\": \"integer\" },\n \"example\": { \"type\": \"integer\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minimum\": { \"type\": \"integer\" },\n \"maximum\": { \"type\": \"integer\" },\n \"unit\": { \"type\": \"string\" },\n \"editor\": { \"enum\": [\"number\", \"hidden\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\"]\n },\n \"booleanProperty\": {\n \"title\": \"Boolean property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"boolean\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": \"boolean\" },\n \"prefill\": { \"type\": \"boolean\" },\n \"example\": { \"type\": \"boolean\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"groupCaption\": { \"type\": \"string\" },\n \"groupDescription\": { \"type\": \"string\" },\n \"editor\": { \"enum\": [\"checkbox\", \"hidden\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\"]\n },\n \"resourceProperty\": {\n \"title\": \"Resource property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"string\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"editor\": { \"enum\": [\"resourcePicker\", \"hidden\"] },\n \"resourceType\": { \"enum\": [\"dataset\", \"keyValueStore\", \"requestQueue\"] },\n \"default\": { \"type\": \"string\" },\n \"prefill\": { \"type\": \"string\" },\n \"example\": { \"type\": \"string\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\", \"resourceType\"]\n },\n \"resourceArrayProperty\": {\n \"title\": \"Resource array property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": { \"enum\": [\"array\"] },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"editor\": { \"enum\": [\"resourcePicker\", \"hidden\"] },\n \"default\": { \"type\": \"array\" },\n \"prefill\": { \"type\": \"array\" },\n \"example\": { \"type\": \"array\" },\n \"nullable\": { \"type\": \"boolean\" },\n \"minItems\": { \"type\": \"integer\" },\n \"maxItems\": { \"type\": \"integer\" },\n \"uniqueItems\": { \"type\": \"boolean\" },\n \"resourceType\": { \"enum\": [\"dataset\", \"keyValueStore\", \"requestQueue\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\", \"resourceType\"]\n },\n \"anyProperty\": {\n \"title\": \"Any property\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": {\n \"type\": [\"array\"],\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\"object\", \"array\", \"string\", \"integer\", \"boolean\"]\n },\n \"uniqueItems\": true,\n \"additionalItems\": false,\n \"minItems\": 1\n },\n \"title\": { \"type\": \"string\" },\n \"description\": { \"type\": \"string\" },\n \"default\": { \"type\": [\"object\", \"array\", \"string\", \"integer\", \"boolean\"] },\n \"prefill\": { \"type\": [\"object\", \"array\", \"string\", \"integer\", \"boolean\"] },\n \"example\": { \"type\": [\"object\", \"array\", \"string\", \"integer\", \"boolean\"] },\n \"nullable\": { \"type\": \"boolean\" },\n \"editor\": { \"enum\": [\"json\", \"hidden\"] },\n \"sectionCaption\": { \"type\": \"string\" },\n \"sectionDescription\": { \"type\": \"string\" }\n },\n \"required\": [\"type\", \"title\", \"description\", \"editor\"]\n }\n }\n}\n","import type { ErrorObject, Schema } from 'ajv';\nimport type Ajv from 'ajv';\n\nimport { m } from './intl';\nimport schema from './schema.json';\nimport type {\n CommonResourceFieldDefinition,\n FieldDefinition,\n InputSchema,\n InputSchemaBaseChecked,\n StringFieldDefinition,\n} from './types';\n\nexport { schema as inputSchema };\n\nconst { definitions } = schema;\n\n/**\n * This function parses AJV error and transforms it into a readable string.\n *\n * @param error An error as returned from AJV.\n * @param rootName Usually 'input' or 'schema' based on if we are passing the input or schema.\n * @param properties (Used only when parsing input errors) List of input schema properties.\n * @param input (Used only when parsing input errors) Actual input that is being parsed.\n * @returns {null|{fieldKey: *, message: *}}\n */\nexport function parseAjvError(\n error: ErrorObject,\n rootName: string,\n properties: Record<string, { nullable?: boolean, editor?: string }> = {},\n input: Record<string, unknown> = {},\n): { fieldKey: string; message: string } | null {\n // There are 3 possible errors comming from validation:\n // - either { keword: 'anything', instancePath: '/someField', message: 'error message that we can use' }\n // - or { keyword: 'additionalProperties', params: { additionalProperty: 'field' }, message: 'must NOT have additional properties' }\n // - or { keyword: 'required', instancePath: '', params.missingProperty: 'someField' }\n\n let fieldKey: string;\n let message: string;\n\n // If error is with keyword type, it means that type of input is incorrect\n // this can mean that provided value is null\n if (error.keyword === 'type') {\n fieldKey = error.instancePath.split('/').pop()!;\n // Check if value is null and field is nullable, if yes, then skip this error\n if (properties[fieldKey] && properties[fieldKey].nullable && input[fieldKey] === null) {\n return null;\n }\n message = m('inputSchema.validation.generic', { rootName, fieldKey, message: error.message });\n } else if (error.keyword === 'required') {\n fieldKey = error.params.missingProperty;\n message = m('inputSchema.validation.required', { rootName, fieldKey });\n } else if (error.keyword === 'additionalProperties') {\n fieldKey = error.params.additionalProperty;\n message = m('inputSchema.validation.additionalProperty', { rootName, fieldKey });\n } else if (error.keyword === 'enum') {\n fieldKey = error.instancePath.split('/').pop()!;\n const errorMessage = `${error.message}: \"${error.params.allowedValues.join('\", \"')}\"`;\n message = m('inputSchema.validation.generic', { rootName, fieldKey, message: errorMessage });\n } else if (error.keyword === 'const') {\n fieldKey = error.instancePath.split('/').pop()!;\n message = m('inputSchema.validation.generic', { rootName, fieldKey, message: error.message });\n } else {\n fieldKey = error.instancePath.split('/').pop()!;\n message = m('inputSchema.validation.generic', { rootName, fieldKey, message: error.message });\n }\n\n return { fieldKey, message };\n}\n\n/**\n * Validates given object against schema and throws a human-readable error.\n */\nconst validateAgainstSchemaOrThrow = (validator: Ajv, obj: Record<string, unknown>, inputSchema: Schema, rootName: string) => {\n if (validator.validate(inputSchema, obj)) return;\n\n const errorMessage = parseAjvError(validator.errors![0], rootName)?.message;\n throw new Error(`Input schema is not valid (${errorMessage})`);\n};\n\n/**\n * This validates given object only against the basic input schema without checking the particular fields.\n * We override schema.properties.properties not to validate field definitions.\n */\nfunction validateBasicStructure(validator: Ajv, obj: Record<string, unknown>): asserts obj is InputSchemaBaseChecked {\n const schemaWithoutProperties = {\n ...schema,\n properties: { ...schema.properties, properties: { type: 'object' } as any },\n };\n validateAgainstSchemaOrThrow(validator, obj, schemaWithoutProperties, 'schema');\n}\n\n/**\n * Validates particular field against it's schema.\n */\nfunction validateField(validator: Ajv, fieldSchema: Record<string, unknown>, fieldKey: string): asserts fieldSchema is FieldDefinition {\n const matchingDefinitions = Object\n .values<any>(definitions) // cast as any, as the code in first branch seems to be invalid\n .filter((definition) => {\n return definition.properties.type.enum\n // This is a normal case where fieldSchema.type can be only one possible value matching definition.properties.type.enum.0\n ? definition.properties.type.enum[0] === fieldSchema.type\n // This is a type \"Any\" where fieldSchema.type is an array of possible values\n : Array.isArray(fieldSchema.type);\n });\n\n // There is not matching definition.\n if (matchingDefinitions.length === 0) {\n const errorMessage = m('inputSchema.validation.noMatchingDefinition', { fieldKey });\n throw new Error(`Input schema is not valid (${errorMessage})`);\n }\n\n // If there is only one matching then we are done and simply compare it.\n if (matchingDefinitions.length === 1) {\n validateAgainstSchemaOrThrow(validator, fieldSchema, matchingDefinitions[0], `schema.properties.${fieldKey}`);\n return;\n }\n\n // If there are more matching definitions then we need to get the right one.\n // If the definition contains \"enum\" property then it's enum type.\n if ((fieldSchema as StringFieldDefinition).enum) {\n const definition = matchingDefinitions.filter((item) => !!item.properties.enum).pop();\n if (!definition) throw new Error('Input schema validation failed to find \"enum property\" definition');\n validateAgainstSchemaOrThrow(validator, fieldSchema, definition, `schema.properties.${fieldKey}.enum`);\n return;\n }\n // If the definition contains \"resourceType\" property then it's resource type.\n if ((fieldSchema as CommonResourceFieldDefinition<unknown>).resourceType) {\n const definition = matchingDefinitions.filter((item) => !!item.properties.resourceType).pop();\n if (!definition) throw new Error('Input schema validation failed to find \"resource property\" definition');\n validateAgainstSchemaOrThrow(validator, fieldSchema, definition, `schema.properties.${fieldKey}`);\n return;\n }\n // Otherwise we use the other definition.\n const definition = matchingDefinitions.filter((item) => !item.properties.enum && !item.properties.resourceType).pop();\n if (!definition) throw new Error('Input schema validation failed to find other than \"enum property\" definition');\n\n validateAgainstSchemaOrThrow(validator, fieldSchema, definition, `schema.properties.${fieldKey}`);\n}\n\n/**\n * Validates all properties in the input schema\n */\nfunction validateProperties(inputSchema: InputSchemaBaseChecked, validator: Ajv): asserts inputSchema is InputSchema {\n Object.entries(inputSchema.properties).forEach(([fieldKey, fieldSchema]) => (\n validateField(validator, fieldSchema, fieldKey)),\n );\n}\n\n/**\n * Validates that all required fields are present in properties list\n */\nexport function validateExistenceOfRequiredFields(inputSchema: InputSchema) {\n // If the input schema does not have any required fields, we do not need to validate them\n if (!inputSchema?.required?.length) return;\n\n Object.values(inputSchema?.required).forEach((fieldKey) => {\n // If the required field is present in the list of properties, we can check the next one\n if (inputSchema?.properties[fieldKey as string]) return;\n\n // The required field is not defined in list of properties. Which means the schema is not valid.\n throw new Error(m('inputSchema.validation.missingRequiredField', { fieldKey }));\n });\n}\n\n/**\n * This function validates given input schema first just for basic structure then each field one by one,\n * then checks that all required fields are present and finally checks fully against the whole schema.\n *\n * This way we get the most accurate error message for user.\n */\nexport function validateInputSchema(validator: Ajv, inputSchema: Record<string, unknown>): asserts inputSchema is InputSchema {\n // First validate just basic structure without fields.\n validateBasicStructure(validator, inputSchema);\n\n // Then validate each field separately.\n validateProperties(inputSchema, validator);\n\n // Next validate if required fields are actually present in the schema\n validateExistenceOfRequiredFields(inputSchema);\n\n // Finally just to be sure run validation against the whole schema.\n validateAgainstSchemaOrThrow(validator, inputSchema, schema, 'schema');\n}\n","import { parse } from 'acorn-loose';\nimport type { ValidateFunction } from 'ajv';\nimport { countries } from 'countries-list';\n\nimport { PROXY_URL_REGEX, URL_REGEX } from '@apify/consts';\n\nimport { parseAjvError } from './input_schema';\nimport { m } from './intl';\n\n/**\n * Validates input field configured with proxy editor\n * @param fieldKey Proxy field value\n * @param value Proxy field value\n * @param [isRequired] Whether the field is required or not\n * @param [options] Information about proxy groups availability\n * @param [options.hasAutoProxyGroups] Informs validation whether user has atleast one proxy group available in auto mode\n * @param [options.availableProxyGroups] List of available proxy groups\n * @param [options.disabledProxyGroups] Object with groupId as key and error message as value (mostly for residential/SERP)\n */\nfunction validateProxyField(\n fieldKey: Record<string, unknown>,\n value: Record<string, any>,\n isRequired = false,\n options: { hasAutoProxyGroups?: boolean; availableProxyGroups?: string[]; disabledProxyGroups?: Record<string, unknown> } | null = null,\n) {\n const fieldErrors: any[] = [];\n if (isRequired) {\n // Nullable error is already handled by AJV\n if (value === null) return fieldErrors;\n if (!value) {\n const message = m('inputSchema.validation.required', { rootName: 'input', fieldKey });\n fieldErrors.push(message);\n return fieldErrors;\n }\n\n const { useApifyProxy, proxyUrls } = value;\n if (!useApifyProxy && (!Array.isArray(proxyUrls) || proxyUrls.length === 0)) {\n fieldErrors.push(m('inputSchema.validation.proxyRequired', { rootName: 'input', fieldKey }));\n return fieldErrors;\n }\n }\n\n // Input is not required, so missing value is valid\n if (!value) return fieldErrors;\n\n const { useApifyProxy, proxyUrls, apifyProxyGroups, apifyProxyCountry } = value;\n\n if (!useApifyProxy && Array.isArray(proxyUrls)) {\n let invalidUrl = false;\n proxyUrls.forEach((url) => {\n if (!PROXY_URL_REGEX.test(url.trim())) invalidUrl = url.trim();\n });\n if (invalidUrl) {\n fieldErrors.push(m('inputSchema.validation.customProxyInvalid', { invalidUrl }));\n }\n }\n\n // Apify proxy country can be set only when using Apify proxy\n if (!useApifyProxy && apifyProxyCountry) {\n fieldErrors.push(m('inputSchema.validation.apifyProxyCountryWithoutApifyProxyForbidden'));\n }\n\n // If Apify proxy is not used skip additional checks\n if (!useApifyProxy) return fieldErrors;\n\n // If Apify proxy is used, check if there is a selected country and if so, check that it's valid (empty or a valid country code)\n if (apifyProxyCountry && !countries[apifyProxyCountry as keyof typeof countries]) {\n fieldErrors.push(m('inputSchema.validation.apifyProxyCountryInvalid', { invalidCountry: apifyProxyCountry }));\n }\n\n // If options are not provided skip additional checks\n if (!options) return fieldErrors;\n\n // if apifyProxyGroups exists it must be an array of strings\n const isStringsArray = (array: string[]) => array.every((item) => typeof item === 'string');\n if (apifyProxyGroups && !(Array.isArray(apifyProxyGroups) && isStringsArray(apifyProxyGroups))) {\n fieldErrors.push(m('inputSchema.validation.proxyGroupMustBeArrayOfStrings', { rootName: 'input', fieldKey }));\n return fieldErrors;\n }\n\n const selectedProxyGroups = (apifyProxyGroups || []);\n\n // Auto mode, check that user has access to alteast one proxy group usable in this mode\n if (!selectedProxyGroups.length && !options.hasAutoProxyGroups) {\n fieldErrors.push(m('inputSchema.validation.noAvailableAutoProxy'));\n return fieldErrors;\n }\n\n // Check if proxy groups selected by user are available to him\n const availableProxyGroupsById = {} as Record<string, boolean>;\n (options.availableProxyGroups || []).forEach((group) => { availableProxyGroupsById[group] = true; });\n const unavailableProxyGroups = selectedProxyGroups.filter((group: string) => !availableProxyGroupsById[group]);\n\n if (unavailableProxyGroups.length) {\n fieldErrors.push(m('inputSchema.validation.proxyGroupsNotAvailable', {\n rootName: 'input',\n fieldKey,\n groups: unavailableProxyGroups.join(', '),\n }));\n }\n\n // Check if any of the proxy groups are blocked and if yes then output the associated message\n const blockedProxyGroupsById = options.disabledProxyGroups || {};\n selectedProxyGroups\n .filter((group: string) => blockedProxyGroupsById[group])\n .forEach((blockedGroup: string) => {\n fieldErrors.push(blockedProxyGroupsById[blockedGroup]);\n });\n\n return fieldErrors;\n}\n\n/**\n * Uses AJV validator to validate input with input schema and then\n * does custom validation for our own properties (nullable, patternKey, patternValue)\n * @param validator Initialized AJV validator\n * @param inputSchema Valid input schema in object\n * @param input Input object to be validated\n * @param options (Optional) Additional validation configuration for certain fields\n */\nexport function validateInputUsingValidator(\n validator: ValidateFunction,\n inputSchema: Record<string, any>,\n input: Record<string, unknown>,\n options: Record<string, any> = {},\n) {\n const isValid = validator(input); // Check if input is valid based on schema values\n\n const { properties } = inputSchema;\n const required = inputSchema.required || [];\n\n let errors: { fieldKey: string, message: string }[] = [];\n // Process AJV validation errors\n if (!isValid) {\n errors = validator.errors!\n .map((error) => parseAjvError(error, 'input', properties, input))\n .filter((error) => !!error) as any[];\n }\n\n Object.keys(properties).forEach((property) => {\n const value = input[property];\n const { type, editor, patternKey, patternValue } = properties[property];\n const fieldErrors = [];\n // Check that proxy is required, if yes, valides that it's correctly setup\n if (type === 'object' && editor === 'proxy') {\n const proxyValidationErrors = validateProxyField(property as any, value as Record<string, any>, required.includes(property), options.proxy);\n proxyValidationErrors.forEach((error) => {\n fieldErrors.push(error);\n });\n }\n // Check that array items fit patternKey and patternValue\n if (type === 'array' && value && Array.isArray(value)) {\n if (editor === 'requestListSources') {\n const invalidIndexes: any[] = [];\n value.forEach((item, index) => {\n if (!item) invalidIndexes.push(index);\n else if (!item.url && !item.requestsFromUrl) invalidIndexes.push(index);\n else if (item.url && !URL_REGEX.test(item.url)) invalidIndexes.push(index);\n else if (item.requestsFromUrl && !URL_REGEX.test(item.requestsFromUrl)) invalidIndexes.push(index);\n });\n if (invalidIndexes.length) {\n fieldErrors.push(m('inputSchema.validation.requestListSourcesInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidIndexes: invalidIndexes.join(','),\n }));\n }\n }\n // If patternKey is provided, then validate keys of objects in array\n if (patternKey && editor === 'keyValue') {\n const check = new RegExp(patternKey);\n const invalidIndexes: any[] = [];\n value.forEach((item, index) => {\n if (!check.test(item.key)) invalidIndexes.push(index);\n });\n if (invalidIndexes.length) {\n fieldErrors.push(m('inputSchema.validation.arrayKeysInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidIndexes: invalidIndexes.join(','),\n pattern: patternKey,\n }));\n }\n }\n // If patternValue is provided and editor is keyValue, then validate values of objecs in array\n if (patternValue && editor === 'keyValue') {\n const check = new RegExp(patternValue);\n const invalidIndexes: any[] = [];\n value.forEach((item, index) => {\n if (!check.test(item.value)) invalidIndexes.push(index);\n });\n if (invalidIndexes.length) {\n fieldErrors.push(m('inputSchema.validation.arrayValuesInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidIndexes: invalidIndexes.join(','),\n pattern: patternValue,\n }));\n }\n // If patternValue is provided and editor is stringList, then validate each item in array\n } else if (patternValue && editor === 'stringList') {\n const check = new RegExp(patternValue);\n const invalidIndexes: any[] = [];\n value.forEach((item, index) => {\n if (!check.test(item)) invalidIndexes.push(index);\n });\n if (invalidIndexes.length) {\n fieldErrors.push(m('inputSchema.validation.arrayValuesInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidIndexes: invalidIndexes.join(','),\n pattern: patternValue,\n }));\n }\n }\n }\n // Check that object items fit patternKey and patternValue\n if (type === 'object' && value) {\n if (patternKey) {\n const check = new RegExp(patternKey);\n const invalidKeys: any[] = [];\n Object.keys(value).forEach((key) => {\n if (!check.test(key)) invalidKeys.push(key);\n });\n if (invalidKeys.length) {\n fieldErrors.push(m('inputSchema.validation.objectKeysInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidKeys: invalidKeys.join(','),\n pattern: patternKey,\n }));\n }\n }\n if (patternValue) {\n const check = new RegExp(patternValue);\n const invalidKeys: any[] = [];\n Object.keys(value).forEach((key) => {\n const propertyValue = (value as Record<string, any>)[key];\n if (typeof propertyValue !== 'string' || !check.test(propertyValue)) invalidKeys.push(key);\n });\n if (invalidKeys.length) {\n fieldErrors.push(m('inputSchema.validation.objectValuesInvalid', {\n rootName: 'input',\n fieldKey: property,\n invalidKeys: invalidKeys.join(','),\n pattern: patternValue,\n }));\n }\n }\n }\n\n if (fieldErrors.length > 0) {\n const message = fieldErrors.join(', ');\n errors.push({ fieldKey: property, message });\n }\n });\n\n return errors;\n}\n\n/**\n * This functions parses all given JSON and then takes each of the jsFields.\n * Then if the field:\n * - is valid JS single function it replaces its single line string with a function delacation.\n * - is valid multiline JS code then replaces its single line string with `multiline` string\n * Then stringifies the code with given number of jsonSpacing spaces and finally prefixes whole\n * stringified JSON except the first line with globalSpacing spaces.\n */\nexport function makeInputJsFieldsReadable(json: string, jsFields: string[], jsonSpacing = 4, globalSpacing = 0): string {\n const parsedJson = JSON.parse(json);\n const replacements: Record<string, any> = {};\n\n jsFields.forEach((field) => {\n let maybeFunction = parsedJson[field];\n if (!maybeFunction || typeof maybeFunction !== 'string') return;\n\n let ast;\n try {\n ast = parse(maybeFunction, { ecmaVersion: 'latest' });\n } catch {\n // Don't do anything in a case of invalid JS code.\n return;\n }\n\n const isMultiline = maybeFunction.includes('\\n');\n const isSingleFunction = ast\n && ast.body.length === 1\n && (\n ast.body[0].type === 'FunctionDeclaration'\n || (ast.body[0].type === 'ExpressionStatement' && ast.body[0].expression.type === 'ArrowFunctionExpression')\n );\n\n // If it's not a function declaration or multiline JS code then we do nothing.\n if (!isSingleFunction && !isMultiline) return;\n\n const spaces = (new Array(isSingleFunction ? jsonSpacing : jsonSpacing * 2)).fill(' ').join('');\n maybeFunction = maybeFunction\n .split('\\n').join(`\\n${spaces}`) // This prefixes each line with spaces.\n .trim(); // Trim whitespace on both sides\n\n const replacementValue = isSingleFunction\n ? maybeFunction.replace(/[;]+$/g, '') // Remove trailing semicolons\n : `\\`${maybeFunction}\\``;\n const replacementToken = `<<<REPLACEMENT_TOKEN:${Math.random()}>>>`;\n replacements[replacementToken] = replacementValue;\n parsedJson[field] = replacementToken;\n });\n\n let niceJson = JSON.stringify(parsedJson, null, jsonSpacing);\n\n Object.entries(replacements).forEach(([replacementToken, replacementValue]) => {\n niceJson = niceJson.replace(`\"${replacementToken}\"`, replacementValue);\n });\n\n const globalSpaces = (new Array(globalSpacing)).fill(' ').join('');\n niceJson = niceJson.split('\\n').join(`\\n${globalSpaces}`);\n\n return niceJson;\n}\n"],"mappings":"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","names":["definition","useApifyProxy","proxyUrls"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apify/input_schema",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.14.0",
|
|
4
4
|
"description": "Tools and constants shared across Apify projects.",
|
|
5
5
|
"main": "./cjs/index.cjs",
|
|
6
6
|
"module": "./esm/index.mjs",
|
|
@@ -55,5 +55,5 @@
|
|
|
55
55
|
"peerDependencies": {
|
|
56
56
|
"ajv": "^8.0.0"
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "1e088b9d78eb65d0b5f892803286f07dbefe1554"
|
|
59
59
|
}
|