n8n-nodes-base 1.93.1 → 1.94.1
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/dist/credentials/AirtopApi.credentials.js +2 -1
- package/dist/credentials/AirtopApi.credentials.js.map +1 -1
- package/dist/credentials/JinaAiApi.credentials.js +1 -1
- package/dist/credentials/JinaAiApi.credentials.js.map +1 -1
- package/dist/credentials/MicrosoftSharePointOAuth2Api.credentials.js +9 -0
- package/dist/credentials/MicrosoftSharePointOAuth2Api.credentials.js.map +1 -1
- package/dist/credentials/icons/microsoftSharePoint.svg +59 -0
- package/dist/known/nodes.json +0 -4
- package/dist/nodes/Airtop/Airtop.node.js +14 -8
- package/dist/nodes/Airtop/Airtop.node.js.map +1 -1
- package/dist/nodes/Airtop/GenericFunctions.js +87 -15
- package/dist/nodes/Airtop/GenericFunctions.js.map +1 -1
- package/dist/nodes/Airtop/actions/common/fields.js +9 -0
- package/dist/nodes/Airtop/actions/common/fields.js.map +1 -1
- package/dist/nodes/Airtop/actions/common/output.utils.js +79 -0
- package/dist/nodes/Airtop/actions/common/output.utils.js.map +1 -0
- package/dist/nodes/Airtop/actions/common/session.utils.js +2 -2
- package/dist/nodes/Airtop/actions/common/session.utils.js.map +1 -1
- package/dist/nodes/Airtop/actions/extraction/getPaginated.operation.js +13 -4
- package/dist/nodes/Airtop/actions/extraction/getPaginated.operation.js.map +1 -1
- package/dist/nodes/Airtop/actions/extraction/query.operation.js +21 -3
- package/dist/nodes/Airtop/actions/extraction/query.operation.js.map +1 -1
- package/dist/nodes/Airtop/actions/extraction/scrape.operation.js +2 -1
- package/dist/nodes/Airtop/actions/extraction/scrape.operation.js.map +1 -1
- package/dist/nodes/Airtop/actions/file/File.resource.js +104 -0
- package/dist/nodes/Airtop/actions/file/File.resource.js.map +1 -0
- package/dist/nodes/Airtop/actions/file/delete.operation.js +60 -0
- package/dist/nodes/Airtop/actions/file/delete.operation.js.map +1 -0
- package/dist/nodes/Airtop/actions/file/get.operation.js +91 -0
- package/dist/nodes/Airtop/actions/file/get.operation.js.map +1 -0
- package/dist/nodes/Airtop/actions/file/getMany.operation.js +100 -0
- package/dist/nodes/Airtop/actions/file/getMany.operation.js.map +1 -0
- package/dist/nodes/Airtop/actions/file/helpers.js +199 -0
- package/dist/nodes/Airtop/actions/file/helpers.js.map +1 -0
- package/dist/nodes/Airtop/actions/file/load.operation.js +85 -0
- package/dist/nodes/Airtop/actions/file/load.operation.js.map +1 -0
- package/dist/nodes/Airtop/actions/file/upload.operation.js +186 -0
- package/dist/nodes/Airtop/actions/file/upload.operation.js.map +1 -0
- package/dist/nodes/Airtop/actions/interaction/Interaction.resource.js +22 -1
- package/dist/nodes/Airtop/actions/interaction/Interaction.resource.js.map +1 -1
- package/dist/nodes/Airtop/actions/interaction/fill.operation.js +89 -0
- package/dist/nodes/Airtop/actions/interaction/fill.operation.js.map +1 -0
- package/dist/nodes/Airtop/actions/interaction/scroll.operation.js +219 -0
- package/dist/nodes/Airtop/actions/interaction/scroll.operation.js.map +1 -0
- package/dist/nodes/Airtop/actions/node.type.js.map +1 -1
- package/dist/nodes/Airtop/actions/router.js +13 -4
- package/dist/nodes/Airtop/actions/router.js.map +1 -1
- package/dist/nodes/Airtop/actions/session/create.operation.js +85 -32
- package/dist/nodes/Airtop/actions/session/create.operation.js.map +1 -1
- package/dist/nodes/Airtop/actions/window/Window.resource.js +2 -1
- package/dist/nodes/Airtop/actions/window/Window.resource.js.map +1 -1
- package/dist/nodes/Airtop/actions/window/create.operation.js +1 -1
- package/dist/nodes/Airtop/actions/window/create.operation.js.map +1 -1
- package/dist/nodes/Airtop/actions/window/takeScreenshot.operation.js +26 -3
- package/dist/nodes/Airtop/actions/window/takeScreenshot.operation.js.map +1 -1
- package/dist/nodes/Airtop/constants.js +38 -5
- package/dist/nodes/Airtop/constants.js.map +1 -1
- package/dist/nodes/Airtop/countries.js +1026 -0
- package/dist/nodes/Airtop/countries.js.map +1 -0
- package/dist/nodes/Airtop/transport/index.js +6 -3
- package/dist/nodes/Airtop/transport/index.js.map +1 -1
- package/dist/nodes/Airtop/transport/types.js.map +1 -1
- package/dist/nodes/Google/Drive/v2/actions/file/upload.operation.js +4 -1
- package/dist/nodes/Google/Drive/v2/actions/file/upload.operation.js.map +1 -1
- package/dist/nodes/Google/Firebase/CloudFirestore/GenericFunctions.js +1 -2
- package/dist/nodes/Google/Firebase/CloudFirestore/GenericFunctions.js.map +1 -1
- package/dist/nodes/HttpRequest/GenericFunctions.js +1 -1
- package/dist/nodes/HttpRequest/GenericFunctions.js.map +1 -1
- package/dist/nodes/Merge/Merge.node.js +3 -2
- package/dist/nodes/Merge/Merge.node.js.map +1 -1
- package/dist/nodes/Merge/v3/actions/mode/combineBySql.js +42 -4
- package/dist/nodes/Merge/v3/actions/mode/combineBySql.js.map +1 -1
- package/dist/nodes/Merge/v3/actions/versionDescription.js +1 -1
- package/dist/nodes/Merge/v3/actions/versionDescription.js.map +1 -1
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/update.operation.js +2 -2
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/update.operation.js.map +1 -1
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/upload.operation.js +2 -2
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/upload.operation.js.map +1 -1
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/Item.resource.js +1 -1
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/Item.resource.js.map +1 -1
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/List.resource.js +1 -1
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/List.resource.js.map +1 -1
- package/dist/nodes/MongoDb/GenericFunctions.js +9 -2
- package/dist/nodes/MongoDb/GenericFunctions.js.map +1 -1
- package/dist/nodes/MongoDb/MongoDb.node.js +25 -5
- package/dist/nodes/MongoDb/MongoDb.node.js.map +1 -1
- package/dist/nodes/Telegram/Telegram.node.js +5 -1
- package/dist/nodes/Telegram/Telegram.node.js.map +1 -1
- package/dist/nodes/Transform/Summarize/utils.js +2 -1
- package/dist/nodes/Transform/Summarize/utils.js.map +1 -1
- package/dist/test/setup.js +1 -0
- package/dist/test/setup.js.map +1 -1
- package/dist/types/credentials.json +2 -2
- package/dist/types/nodes.json +8 -9
- package/package.json +4 -5
- package/dist/nodes/EvaluationMetrics/EvaluationMetrics.node.js +0 -119
- package/dist/nodes/EvaluationMetrics/EvaluationMetrics.node.js.map +0 -1
- package/dist/nodes/EvaluationMetrics/EvaluationMetrics.node.json +0 -14
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../nodes/Airtop/countries.ts"],"sourcesContent":["export const COUNTRIES = [\n\t{\n\t\tvalue: 'AF',\n\t\tname: 'Afghanistan',\n\t},\n\t{\n\t\tvalue: 'AX',\n\t\tname: 'Aland Islands',\n\t},\n\t{\n\t\tvalue: 'AL',\n\t\tname: 'Albania',\n\t},\n\t{\n\t\tvalue: 'DZ',\n\t\tname: 'Algeria',\n\t},\n\t{\n\t\tvalue: 'AS',\n\t\tname: 'American Samoa',\n\t},\n\t{\n\t\tvalue: 'AD',\n\t\tname: 'Andorra',\n\t},\n\t{\n\t\tvalue: 'AO',\n\t\tname: 'Angola',\n\t},\n\t{\n\t\tvalue: 'AI',\n\t\tname: 'Anguilla',\n\t},\n\t{\n\t\tvalue: 'AQ',\n\t\tname: 'Antarctica',\n\t},\n\t{\n\t\tvalue: 'AG',\n\t\tname: 'Antigua and Barbuda',\n\t},\n\t{\n\t\tvalue: 'AR',\n\t\tname: 'Argentina',\n\t},\n\t{\n\t\tvalue: 'AM',\n\t\tname: 'Armenia',\n\t},\n\t{\n\t\tvalue: 'AW',\n\t\tname: 'Aruba',\n\t},\n\t{\n\t\tvalue: 'AU',\n\t\tname: 'Australia',\n\t},\n\t{\n\t\tvalue: 'AT',\n\t\tname: 'Austria',\n\t},\n\t{\n\t\tvalue: 'AZ',\n\t\tname: 'Azerbaijan',\n\t},\n\t{\n\t\tvalue: 'BS',\n\t\tname: 'Bahamas',\n\t},\n\t{\n\t\tvalue: 'BH',\n\t\tname: 'Bahrain',\n\t},\n\t{\n\t\tvalue: 'BD',\n\t\tname: 'Bangladesh',\n\t},\n\t{\n\t\tvalue: 'BB',\n\t\tname: 'Barbados',\n\t},\n\t{\n\t\tvalue: 'BY',\n\t\tname: 'Belarus',\n\t},\n\t{\n\t\tvalue: 'BE',\n\t\tname: 'Belgium',\n\t},\n\t{\n\t\tvalue: 'BZ',\n\t\tname: 'Belize',\n\t},\n\t{\n\t\tvalue: 'BJ',\n\t\tname: 'Benin',\n\t},\n\t{\n\t\tvalue: 'BM',\n\t\tname: 'Bermuda',\n\t},\n\t{\n\t\tvalue: 'BT',\n\t\tname: 'Bhutan',\n\t},\n\t{\n\t\tvalue: 'BO',\n\t\tname: 'Bolivia, Plurinational State Of',\n\t},\n\t{\n\t\tvalue: 'BQ',\n\t\tname: 'Bonaire, Sint Eustatius and Saba',\n\t},\n\t{\n\t\tvalue: 'BA',\n\t\tname: 'Bosnia and Herzegovina',\n\t},\n\t{\n\t\tvalue: 'BW',\n\t\tname: 'Botswana',\n\t},\n\t{\n\t\tvalue: 'BV',\n\t\tname: 'Bouvet Island',\n\t},\n\t{\n\t\tvalue: 'BR',\n\t\tname: 'Brazil',\n\t},\n\t{\n\t\tvalue: 'IO',\n\t\tname: 'British Indian Ocean Territory',\n\t},\n\t{\n\t\tvalue: 'BN',\n\t\tname: 'Brunei Darussalam',\n\t},\n\t{\n\t\tvalue: 'BG',\n\t\tname: 'Bulgaria',\n\t},\n\t{\n\t\tvalue: 'BF',\n\t\tname: 'Burkina Faso',\n\t},\n\t{\n\t\tvalue: 'BI',\n\t\tname: 'Burundi',\n\t},\n\t{\n\t\tvalue: 'CV',\n\t\tname: 'Cabo Verde',\n\t},\n\t{\n\t\tvalue: 'KH',\n\t\tname: 'Cambodia',\n\t},\n\t{\n\t\tvalue: 'CM',\n\t\tname: 'Cameroon',\n\t},\n\t{\n\t\tvalue: 'CA',\n\t\tname: 'Canada',\n\t},\n\t{\n\t\tvalue: 'KY',\n\t\tname: 'Cayman Islands',\n\t},\n\t{\n\t\tvalue: 'CF',\n\t\tname: 'Central African Republic',\n\t},\n\t{\n\t\tvalue: 'TD',\n\t\tname: 'Chad',\n\t},\n\t{\n\t\tvalue: 'CL',\n\t\tname: 'Chile',\n\t},\n\t{\n\t\tvalue: 'CN',\n\t\tname: 'China',\n\t},\n\t{\n\t\tvalue: 'CX',\n\t\tname: 'Christmas Island',\n\t},\n\t{\n\t\tvalue: 'CC',\n\t\tname: 'Cocos (Keeling) Islands',\n\t},\n\t{\n\t\tvalue: 'CO',\n\t\tname: 'Colombia',\n\t},\n\t{\n\t\tvalue: 'KM',\n\t\tname: 'Comoros',\n\t},\n\t{\n\t\tvalue: 'CG',\n\t\tname: 'Congo',\n\t},\n\t{\n\t\tvalue: 'CD',\n\t\tname: 'Congo, Democratic Republic of The',\n\t},\n\t{\n\t\tvalue: 'CK',\n\t\tname: 'Cook Islands',\n\t},\n\t{\n\t\tvalue: 'CR',\n\t\tname: 'Costa Rica',\n\t},\n\t{\n\t\tvalue: 'CI',\n\t\tname: \"Cote d'Ivoire\",\n\t},\n\t{\n\t\tvalue: 'HR',\n\t\tname: 'Croatia',\n\t},\n\t{\n\t\tvalue: 'CU',\n\t\tname: 'Cuba',\n\t},\n\t{\n\t\tvalue: 'CW',\n\t\tname: 'Curaçao',\n\t},\n\t{\n\t\tvalue: 'CY',\n\t\tname: 'Cyprus',\n\t},\n\t{\n\t\tvalue: 'CZ',\n\t\tname: 'Czechia',\n\t},\n\t{\n\t\tvalue: 'DK',\n\t\tname: 'Denmark',\n\t},\n\t{\n\t\tvalue: 'DJ',\n\t\tname: 'Djibouti',\n\t},\n\t{\n\t\tvalue: 'DM',\n\t\tname: 'Dominica',\n\t},\n\t{\n\t\tvalue: 'DO',\n\t\tname: 'Dominican Republic',\n\t},\n\t{\n\t\tvalue: 'EC',\n\t\tname: 'Ecuador',\n\t},\n\t{\n\t\tvalue: 'EG',\n\t\tname: 'Egypt',\n\t},\n\t{\n\t\tvalue: 'SV',\n\t\tname: 'El Salvador',\n\t},\n\t{\n\t\tvalue: 'GQ',\n\t\tname: 'Equatorial Guinea',\n\t},\n\t{\n\t\tvalue: 'ER',\n\t\tname: 'Eritrea',\n\t},\n\t{\n\t\tvalue: 'EE',\n\t\tname: 'Estonia',\n\t},\n\t{\n\t\tvalue: 'SZ',\n\t\tname: 'Eswatini',\n\t},\n\t{\n\t\tvalue: 'ET',\n\t\tname: 'Ethiopia',\n\t},\n\t{\n\t\tvalue: 'FK',\n\t\tname: 'Falkland Islands (Malvinas)',\n\t},\n\t{\n\t\tvalue: 'FO',\n\t\tname: 'Faroe Islands',\n\t},\n\t{\n\t\tvalue: 'FJ',\n\t\tname: 'Fiji',\n\t},\n\t{\n\t\tvalue: 'FI',\n\t\tname: 'Finland',\n\t},\n\t{\n\t\tvalue: 'FR',\n\t\tname: 'France',\n\t},\n\t{\n\t\tvalue: 'GF',\n\t\tname: 'French Guiana',\n\t},\n\t{\n\t\tvalue: 'PF',\n\t\tname: 'French Polynesia',\n\t},\n\t{\n\t\tvalue: 'TF',\n\t\tname: 'French Southern Territories',\n\t},\n\t{\n\t\tvalue: 'GA',\n\t\tname: 'Gabon',\n\t},\n\t{\n\t\tvalue: 'GM',\n\t\tname: 'Gambia',\n\t},\n\t{\n\t\tvalue: 'GE',\n\t\tname: 'Georgia',\n\t},\n\t{\n\t\tvalue: 'DE',\n\t\tname: 'Germany',\n\t},\n\t{\n\t\tvalue: 'GH',\n\t\tname: 'Ghana',\n\t},\n\t{\n\t\tvalue: 'GI',\n\t\tname: 'Gibraltar',\n\t},\n\t{\n\t\tvalue: 'GR',\n\t\tname: 'Greece',\n\t},\n\t{\n\t\tvalue: 'GL',\n\t\tname: 'Greenland',\n\t},\n\t{\n\t\tvalue: 'GD',\n\t\tname: 'Grenada',\n\t},\n\t{\n\t\tvalue: 'GP',\n\t\tname: 'Guadeloupe',\n\t},\n\t{\n\t\tvalue: 'GU',\n\t\tname: 'Guam',\n\t},\n\t{\n\t\tvalue: 'GT',\n\t\tname: 'Guatemala',\n\t},\n\t{\n\t\tvalue: 'GG',\n\t\tname: 'Guernsey',\n\t},\n\t{\n\t\tvalue: 'GN',\n\t\tname: 'Guinea',\n\t},\n\t{\n\t\tvalue: 'GW',\n\t\tname: 'Guinea-Bissau',\n\t},\n\t{\n\t\tvalue: 'GY',\n\t\tname: 'Guyana',\n\t},\n\t{\n\t\tvalue: 'HT',\n\t\tname: 'Haiti',\n\t},\n\t{\n\t\tvalue: 'HM',\n\t\tname: 'Heard Island and McDonald Islands',\n\t},\n\t{\n\t\tvalue: 'VA',\n\t\tname: 'Holy See',\n\t},\n\t{\n\t\tvalue: 'HN',\n\t\tname: 'Honduras',\n\t},\n\t{\n\t\tvalue: 'HK',\n\t\tname: 'Hong Kong',\n\t},\n\t{\n\t\tvalue: 'HU',\n\t\tname: 'Hungary',\n\t},\n\t{\n\t\tvalue: 'IS',\n\t\tname: 'Iceland',\n\t},\n\t{\n\t\tvalue: 'IN',\n\t\tname: 'India',\n\t},\n\t{\n\t\tvalue: 'ID',\n\t\tname: 'Indonesia',\n\t},\n\t{\n\t\tvalue: 'IR',\n\t\tname: 'Iran, Islamic Republic Of',\n\t},\n\t{\n\t\tvalue: 'IQ',\n\t\tname: 'Iraq',\n\t},\n\t{\n\t\tvalue: 'IE',\n\t\tname: 'Ireland',\n\t},\n\t{\n\t\tvalue: 'IM',\n\t\tname: 'Isle of Man',\n\t},\n\t{\n\t\tvalue: 'IL',\n\t\tname: 'Israel',\n\t},\n\t{\n\t\tvalue: 'IT',\n\t\tname: 'Italy',\n\t},\n\t{\n\t\tvalue: 'JM',\n\t\tname: 'Jamaica',\n\t},\n\t{\n\t\tvalue: 'JP',\n\t\tname: 'Japan',\n\t},\n\t{\n\t\tvalue: 'JE',\n\t\tname: 'Jersey',\n\t},\n\t{\n\t\tvalue: 'JO',\n\t\tname: 'Jordan',\n\t},\n\t{\n\t\tvalue: 'KZ',\n\t\tname: 'Kazakhstan',\n\t},\n\t{\n\t\tvalue: 'KE',\n\t\tname: 'Kenya',\n\t},\n\t{\n\t\tvalue: 'KI',\n\t\tname: 'Kiribati',\n\t},\n\t{\n\t\tvalue: 'KP',\n\t\tname: \"Korea, Democratic People's Republic Of\",\n\t},\n\t{\n\t\tvalue: 'KR',\n\t\tname: 'Korea, Republic Of',\n\t},\n\t{\n\t\tvalue: 'KW',\n\t\tname: 'Kuwait',\n\t},\n\t{\n\t\tvalue: 'KG',\n\t\tname: 'Kyrgyzstan',\n\t},\n\t{\n\t\tvalue: 'LA',\n\t\tname: \"Lao People's Democratic Republic\",\n\t},\n\t{\n\t\tvalue: 'LV',\n\t\tname: 'Latvia',\n\t},\n\t{\n\t\tvalue: 'LB',\n\t\tname: 'Lebanon',\n\t},\n\t{\n\t\tvalue: 'LS',\n\t\tname: 'Lesotho',\n\t},\n\t{\n\t\tvalue: 'LR',\n\t\tname: 'Liberia',\n\t},\n\t{\n\t\tvalue: 'LY',\n\t\tname: 'Libya',\n\t},\n\t{\n\t\tvalue: 'LI',\n\t\tname: 'Liechtenstein',\n\t},\n\t{\n\t\tvalue: 'LT',\n\t\tname: 'Lithuania',\n\t},\n\t{\n\t\tvalue: 'LU',\n\t\tname: 'Luxembourg',\n\t},\n\t{\n\t\tvalue: 'MO',\n\t\tname: 'Macao',\n\t},\n\t{\n\t\tvalue: 'MG',\n\t\tname: 'Madagascar',\n\t},\n\t{\n\t\tvalue: 'MW',\n\t\tname: 'Malawi',\n\t},\n\t{\n\t\tvalue: 'MY',\n\t\tname: 'Malaysia',\n\t},\n\t{\n\t\tvalue: 'MV',\n\t\tname: 'Maldives',\n\t},\n\t{\n\t\tvalue: 'ML',\n\t\tname: 'Mali',\n\t},\n\t{\n\t\tvalue: 'MT',\n\t\tname: 'Malta',\n\t},\n\t{\n\t\tvalue: 'MH',\n\t\tname: 'Marshall Islands',\n\t},\n\t{\n\t\tvalue: 'MQ',\n\t\tname: 'Martinique',\n\t},\n\t{\n\t\tvalue: 'MR',\n\t\tname: 'Mauritania',\n\t},\n\t{\n\t\tvalue: 'MU',\n\t\tname: 'Mauritius',\n\t},\n\t{\n\t\tvalue: 'YT',\n\t\tname: 'Mayotte',\n\t},\n\t{\n\t\tvalue: 'MX',\n\t\tname: 'Mexico',\n\t},\n\t{\n\t\tvalue: 'FM',\n\t\tname: 'Micronesia, Federated States Of',\n\t},\n\t{\n\t\tvalue: 'MD',\n\t\tname: 'Moldova, Republic Of',\n\t},\n\t{\n\t\tvalue: 'MC',\n\t\tname: 'Monaco',\n\t},\n\t{\n\t\tvalue: 'MN',\n\t\tname: 'Mongolia',\n\t},\n\t{\n\t\tvalue: 'ME',\n\t\tname: 'Montenegro',\n\t},\n\t{\n\t\tvalue: 'MS',\n\t\tname: 'Montserrat',\n\t},\n\t{\n\t\tvalue: 'MA',\n\t\tname: 'Morocco',\n\t},\n\t{\n\t\tvalue: 'MZ',\n\t\tname: 'Mozambique',\n\t},\n\t{\n\t\tvalue: 'MM',\n\t\tname: 'Myanmar',\n\t},\n\t{\n\t\tvalue: 'NA',\n\t\tname: 'Namibia',\n\t},\n\t{\n\t\tvalue: 'NR',\n\t\tname: 'Nauru',\n\t},\n\t{\n\t\tvalue: 'NP',\n\t\tname: 'Nepal',\n\t},\n\t{\n\t\tvalue: 'NL',\n\t\tname: 'Netherlands, Kingdom of The',\n\t},\n\t{\n\t\tvalue: 'NC',\n\t\tname: 'New Caledonia',\n\t},\n\t{\n\t\tvalue: 'NZ',\n\t\tname: 'New Zealand',\n\t},\n\t{\n\t\tvalue: 'NI',\n\t\tname: 'Nicaragua',\n\t},\n\t{\n\t\tvalue: 'NE',\n\t\tname: 'Niger',\n\t},\n\t{\n\t\tvalue: 'NG',\n\t\tname: 'Nigeria',\n\t},\n\t{\n\t\tvalue: 'NU',\n\t\tname: 'Niue',\n\t},\n\t{\n\t\tvalue: 'NF',\n\t\tname: 'Norfolk Island',\n\t},\n\t{\n\t\tvalue: 'MK',\n\t\tname: 'North Macedonia',\n\t},\n\t{\n\t\tvalue: 'MP',\n\t\tname: 'Northern Mariana Islands',\n\t},\n\t{\n\t\tvalue: 'NO',\n\t\tname: 'Norway',\n\t},\n\t{\n\t\tvalue: 'OM',\n\t\tname: 'Oman',\n\t},\n\t{\n\t\tvalue: 'PK',\n\t\tname: 'Pakistan',\n\t},\n\t{\n\t\tvalue: 'PW',\n\t\tname: 'Palau',\n\t},\n\t{\n\t\tvalue: 'PS',\n\t\tname: 'Palestine, State Of',\n\t},\n\t{\n\t\tvalue: 'PA',\n\t\tname: 'Panama',\n\t},\n\t{\n\t\tvalue: 'PG',\n\t\tname: 'Papua New Guinea',\n\t},\n\t{\n\t\tvalue: 'PY',\n\t\tname: 'Paraguay',\n\t},\n\t{\n\t\tvalue: 'PE',\n\t\tname: 'Peru',\n\t},\n\t{\n\t\tvalue: 'PH',\n\t\tname: 'Philippines',\n\t},\n\t{\n\t\tvalue: 'PN',\n\t\tname: 'Pitcairn',\n\t},\n\t{\n\t\tvalue: 'PL',\n\t\tname: 'Poland',\n\t},\n\t{\n\t\tvalue: 'PT',\n\t\tname: 'Portugal',\n\t},\n\t{\n\t\tvalue: 'PR',\n\t\tname: 'Puerto Rico',\n\t},\n\t{\n\t\tvalue: 'QA',\n\t\tname: 'Qatar',\n\t},\n\t{\n\t\tvalue: 'RE',\n\t\tname: 'Réunion',\n\t},\n\t{\n\t\tvalue: 'RO',\n\t\tname: 'Romania',\n\t},\n\t{\n\t\tvalue: 'RU',\n\t\tname: 'Russian Federation',\n\t},\n\t{\n\t\tvalue: 'RW',\n\t\tname: 'Rwanda',\n\t},\n\t{\n\t\tvalue: 'BL',\n\t\tname: 'Saint Barthelemy',\n\t},\n\t{\n\t\tvalue: 'SH',\n\t\tname: 'Saint Helena, Ascension and Tristan Da Cunha',\n\t},\n\t{\n\t\tvalue: 'KN',\n\t\tname: 'Saint Kitts and Nevis',\n\t},\n\t{\n\t\tvalue: 'LC',\n\t\tname: 'Saint Lucia',\n\t},\n\t{\n\t\tvalue: 'MF',\n\t\tname: 'Saint Martin (French Part)',\n\t},\n\t{\n\t\tvalue: 'PM',\n\t\tname: 'Saint Pierre and Miquelon',\n\t},\n\t{\n\t\tvalue: 'VC',\n\t\tname: 'Saint Vincent and the Grenadines',\n\t},\n\t{\n\t\tvalue: 'WS',\n\t\tname: 'Samoa',\n\t},\n\t{\n\t\tvalue: 'SM',\n\t\tname: 'San Marino',\n\t},\n\t{\n\t\tvalue: 'ST',\n\t\tname: 'Sao Tome and Principe',\n\t},\n\t{\n\t\tvalue: 'SA',\n\t\tname: 'Saudi Arabia',\n\t},\n\t{\n\t\tvalue: 'SN',\n\t\tname: 'Senegal',\n\t},\n\t{\n\t\tvalue: 'RS',\n\t\tname: 'Serbia',\n\t},\n\t{\n\t\tvalue: 'SC',\n\t\tname: 'Seychelles',\n\t},\n\t{\n\t\tvalue: 'SL',\n\t\tname: 'Sierra Leone',\n\t},\n\t{\n\t\tvalue: 'SG',\n\t\tname: 'Singapore',\n\t},\n\t{\n\t\tvalue: 'SX',\n\t\tname: 'Sint Maarten (Dutch Part)',\n\t},\n\t{\n\t\tvalue: 'SK',\n\t\tname: 'Slovakia',\n\t},\n\t{\n\t\tvalue: 'SI',\n\t\tname: 'Slovenia',\n\t},\n\t{\n\t\tvalue: 'SB',\n\t\tname: 'Solomon Islands',\n\t},\n\t{\n\t\tvalue: 'SO',\n\t\tname: 'Somalia',\n\t},\n\t{\n\t\tvalue: 'ZA',\n\t\tname: 'South Africa',\n\t},\n\t{\n\t\tvalue: 'GS',\n\t\tname: 'South Georgia and the South Sandwich Islands',\n\t},\n\t{\n\t\tvalue: 'SS',\n\t\tname: 'South Sudan',\n\t},\n\t{\n\t\tvalue: 'ES',\n\t\tname: 'Spain',\n\t},\n\t{\n\t\tvalue: 'LK',\n\t\tname: 'Sri Lanka',\n\t},\n\t{\n\t\tvalue: 'SD',\n\t\tname: 'Sudan',\n\t},\n\t{\n\t\tvalue: 'SR',\n\t\tname: 'Suriname',\n\t},\n\t{\n\t\tvalue: 'SJ',\n\t\tname: 'Svalbard and Jan Mayen',\n\t},\n\t{\n\t\tvalue: 'SE',\n\t\tname: 'Sweden',\n\t},\n\t{\n\t\tvalue: 'CH',\n\t\tname: 'Switzerland',\n\t},\n\t{\n\t\tvalue: 'SY',\n\t\tname: 'Syrian Arab Republic',\n\t},\n\t{\n\t\tvalue: 'TW',\n\t\tname: 'Taiwan, Province of China',\n\t},\n\t{\n\t\tvalue: 'TJ',\n\t\tname: 'Tajikistan',\n\t},\n\t{\n\t\tvalue: 'TZ',\n\t\tname: 'Tanzania, United Republic Of',\n\t},\n\t{\n\t\tvalue: 'TH',\n\t\tname: 'Thailand',\n\t},\n\t{\n\t\tvalue: 'TL',\n\t\tname: 'Timor-Leste',\n\t},\n\t{\n\t\tvalue: 'TG',\n\t\tname: 'Togo',\n\t},\n\t{\n\t\tvalue: 'TK',\n\t\tname: 'Tokelau',\n\t},\n\t{\n\t\tvalue: 'TO',\n\t\tname: 'Tonga',\n\t},\n\t{\n\t\tvalue: 'TT',\n\t\tname: 'Trinidad and Tobago',\n\t},\n\t{\n\t\tvalue: 'TN',\n\t\tname: 'Tunisia',\n\t},\n\t{\n\t\tvalue: 'TR',\n\t\tname: 'Turkey',\n\t},\n\t{\n\t\tvalue: 'TM',\n\t\tname: 'Turkmenistan',\n\t},\n\t{\n\t\tvalue: 'TC',\n\t\tname: 'Turks and Caicos Islands',\n\t},\n\t{\n\t\tvalue: 'TV',\n\t\tname: 'Tuvalu',\n\t},\n\t{\n\t\tvalue: 'UG',\n\t\tname: 'Uganda',\n\t},\n\t{\n\t\tvalue: 'UA',\n\t\tname: 'Ukraine',\n\t},\n\t{\n\t\tvalue: 'AE',\n\t\tname: 'United Arab Emirates',\n\t},\n\t{\n\t\tvalue: 'GB',\n\t\tname: 'United Kingdom of Great Britain and Northern Ireland',\n\t},\n\t{\n\t\tvalue: 'UM',\n\t\tname: 'United States Minor Outlying Islands',\n\t},\n\t{\n\t\tvalue: 'US',\n\t\tname: 'United States of America',\n\t},\n\t{\n\t\tvalue: 'UY',\n\t\tname: 'Uruguay',\n\t},\n\t{\n\t\tvalue: 'UZ',\n\t\tname: 'Uzbekistan',\n\t},\n\t{\n\t\tvalue: 'VU',\n\t\tname: 'Vanuatu',\n\t},\n\t{\n\t\tvalue: 'VE',\n\t\tname: 'Venezuela, Bolivarian Republic Of',\n\t},\n\t{\n\t\tvalue: 'VN',\n\t\tname: 'Viet Nam',\n\t},\n\t{\n\t\tvalue: 'VG',\n\t\tname: 'Virgin Islands (British)',\n\t},\n\t{\n\t\tvalue: 'VI',\n\t\tname: 'Virgin Islands (U.S.)',\n\t},\n\t{\n\t\tvalue: 'WF',\n\t\tname: 'Wallis and Futuna',\n\t},\n\t{\n\t\tvalue: 'EH',\n\t\tname: 'Western Sahara',\n\t},\n\t{\n\t\tvalue: 'YE',\n\t\tname: 'Yemen',\n\t},\n\t{\n\t\tvalue: 'ZM',\n\t\tname: 'Zambia',\n\t},\n\t{\n\t\tvalue: 'ZW',\n\t\tname: 'Zimbabwe',\n\t},\n] as const;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,YAAY;AAAA,EACxB;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AACD;","names":[]}
|
|
@@ -22,11 +22,14 @@ __export(transport_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(transport_exports);
|
|
24
24
|
var import_constants = require("../constants");
|
|
25
|
+
const defaultHeaders = {
|
|
26
|
+
"Content-Type": "application/json",
|
|
27
|
+
"x-airtop-sdk-environment": "n8n",
|
|
28
|
+
"x-airtop-sdk-version": import_constants.N8N_VERSION
|
|
29
|
+
};
|
|
25
30
|
async function apiRequest(method, endpoint, body = {}, query = {}) {
|
|
26
31
|
const options = {
|
|
27
|
-
headers:
|
|
28
|
-
"Content-Type": "application/json"
|
|
29
|
-
},
|
|
32
|
+
headers: defaultHeaders,
|
|
30
33
|
method,
|
|
31
34
|
body,
|
|
32
35
|
qs: query,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../nodes/Airtop/transport/index.ts"],"sourcesContent":["import type {\n\tIDataObject,\n\tIExecuteFunctions,\n\tILoadOptionsFunctions,\n\tIHttpRequestMethods,\n\tIHttpRequestOptions,\n} from 'n8n-workflow';\n\nimport type { IAirtopResponse } from './types';\nimport { BASE_URL } from '../constants';\n\nexport async function apiRequest(\n\tthis: IExecuteFunctions | ILoadOptionsFunctions,\n\tmethod: IHttpRequestMethods,\n\tendpoint: string,\n\tbody: IDataObject = {},\n\tquery: IDataObject = {},\n) {\n\tconst options: IHttpRequestOptions = {\n\t\theaders:
|
|
1
|
+
{"version":3,"sources":["../../../../nodes/Airtop/transport/index.ts"],"sourcesContent":["import type {\n\tIDataObject,\n\tIExecuteFunctions,\n\tILoadOptionsFunctions,\n\tIHttpRequestMethods,\n\tIHttpRequestOptions,\n} from 'n8n-workflow';\n\nimport type { IAirtopResponse } from './types';\nimport { BASE_URL, N8N_VERSION } from '../constants';\n\nconst defaultHeaders = {\n\t'Content-Type': 'application/json',\n\t'x-airtop-sdk-environment': 'n8n',\n\t'x-airtop-sdk-version': N8N_VERSION,\n};\n\nexport async function apiRequest(\n\tthis: IExecuteFunctions | ILoadOptionsFunctions,\n\tmethod: IHttpRequestMethods,\n\tendpoint: string,\n\tbody: IDataObject = {},\n\tquery: IDataObject = {},\n) {\n\tconst options: IHttpRequestOptions = {\n\t\theaders: defaultHeaders,\n\t\tmethod,\n\t\tbody,\n\t\tqs: query,\n\t\turl: endpoint.startsWith('http') ? endpoint : `${BASE_URL}${endpoint}`,\n\t\tjson: true,\n\t};\n\n\tif (Object.keys(body).length === 0) {\n\t\tdelete options.body;\n\t}\n\n\treturn (await this.helpers.httpRequestWithAuthentication.call(\n\t\tthis,\n\t\t'airtopApi',\n\t\toptions,\n\t)) as IAirtopResponse;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,uBAAsC;AAEtC,MAAM,iBAAiB;AAAA,EACtB,gBAAgB;AAAA,EAChB,4BAA4B;AAAA,EAC5B,wBAAwB;AACzB;AAEA,eAAsB,WAErB,QACA,UACA,OAAoB,CAAC,GACrB,QAAqB,CAAC,GACrB;AACD,QAAM,UAA+B;AAAA,IACpC,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,IAAI;AAAA,IACJ,KAAK,SAAS,WAAW,MAAM,IAAI,WAAW,GAAG,yBAAQ,GAAG,QAAQ;AAAA,IACpE,MAAM;AAAA,EACP;AAEA,MAAI,OAAO,KAAK,IAAI,EAAE,WAAW,GAAG;AACnC,WAAO,QAAQ;AAAA,EAChB;AAEA,SAAQ,MAAM,KAAK,QAAQ,8BAA8B;AAAA,IACxD;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../nodes/Airtop/transport/types.ts"],"sourcesContent":["import type { IDataObject } from 'n8n-workflow';\n\nexport interface IAirtopResponse extends IDataObject {\n\tsessionId?: string;\n\tdata
|
|
1
|
+
{"version":3,"sources":["../../../../nodes/Airtop/transport/types.ts"],"sourcesContent":["import type { IDataObject, INodeExecutionData } from 'n8n-workflow';\n\nexport interface IAirtopSessionResponse extends IDataObject {\n\tdata: {\n\t\tid: string;\n\t\tstatus: string;\n\t};\n}\n\nexport interface IAirtopResponse extends IDataObject {\n\tsessionId?: string;\n\twindowId?: string;\n\tdata?: IDataObject & {\n\t\twindowId?: string;\n\t\tmodelResponse?: string;\n\t\tfiles?: IDataObject[];\n\t};\n\tmeta?: IDataObject & {\n\t\tstatus?: string;\n\t\tscreenshots?: Array<{ dataUrl: string }>;\n\t};\n\terrors?: IDataObject[];\n\twarnings?: IDataObject[];\n\toutput?: IDataObject;\n}\n\nexport interface IAirtopResponseWithFiles extends IAirtopResponse {\n\tdata: {\n\t\tfiles: IDataObject[];\n\t\tfileName?: string;\n\t\tstatus?: string;\n\t\tdownloadUrl?: string;\n\t\tpagination: {\n\t\t\thasMore: boolean;\n\t\t};\n\t};\n}\n\nexport interface IAirtopInteractionRequest extends IDataObject {\n\ttext?: string;\n\twaitForNavigation?: boolean;\n\telementDescription?: string;\n\tpressEnterKey?: boolean;\n\t// scroll parameters\n\tscrollToElement?: string;\n\tscrollWithin?: string;\n\tscrollToEdge?: {\n\t\txAxis?: string;\n\t\tyAxis?: string;\n\t};\n\tscrollBy?: {\n\t\txAxis?: string;\n\t\tyAxis?: string;\n\t};\n\t// configuration\n\tconfiguration: {\n\t\tvisualAnalysis?: {\n\t\t\tscope: string;\n\t\t};\n\t\twaitForNavigationConfig?: {\n\t\t\twaitUntil: string;\n\t\t};\n\t};\n}\n\nexport interface IAirtopNodeExecutionData extends INodeExecutionData {\n\tjson: IAirtopResponse;\n}\n\nexport interface IAirtopServerEvent {\n\tevent: string;\n\teventData: {\n\t\terror?: string;\n\t};\n\tfileId?: string;\n\tstatus?: string;\n\tdownloadUrl?: string;\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
@@ -123,7 +123,10 @@ async function execute(i) {
|
|
|
123
123
|
{ uploadType: "resumable" },
|
|
124
124
|
void 0,
|
|
125
125
|
{
|
|
126
|
-
returnFullResponse: true
|
|
126
|
+
returnFullResponse: true,
|
|
127
|
+
headers: {
|
|
128
|
+
"X-Upload-Content-Type": mimeType
|
|
129
|
+
}
|
|
127
130
|
}
|
|
128
131
|
);
|
|
129
132
|
const uploadUrl = resumableUpload.headers.location;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../nodes/Google/Drive/v2/actions/file/upload.operation.ts"],"sourcesContent":["import type {\n\tIDataObject,\n\tIExecuteFunctions,\n\tINodeExecutionData,\n\tINodeProperties,\n} from 'n8n-workflow';\n\nimport { updateDisplayOptions } from '@utils/utilities';\n\nimport {\n\tgetItemBinaryData,\n\tsetFileProperties,\n\tsetUpdateCommonParams,\n\tsetParentFolder,\n\tprocessInChunks,\n} from '../../helpers/utils';\nimport { googleApiRequest } from '../../transport';\nimport { driveRLC, folderRLC, updateCommonOptions } from '../common.descriptions';\n\nconst properties: INodeProperties[] = [\n\t{\n\t\tdisplayName: 'Input Data Field Name',\n\t\tname: 'inputDataFieldName',\n\t\ttype: 'string',\n\t\tplaceholder: '“e.g. data',\n\t\tdefault: 'data',\n\t\trequired: true,\n\t\thint: 'The name of the input field containing the binary file data to update the file',\n\t\tdescription:\n\t\t\t'Find the name of input field containing the binary data to update the file in the Input panel on the left, in the Binary tab',\n\t},\n\t{\n\t\tdisplayName: 'File Name',\n\t\tname: 'name',\n\t\ttype: 'string',\n\t\tdefault: '',\n\t\tplaceholder: 'e.g. My New File',\n\t\tdescription: 'If not specified, the original file name will be used',\n\t},\n\t{\n\t\t...driveRLC,\n\t\tdisplayName: 'Parent Drive',\n\t\tdescription: 'The drive where to upload the file',\n\t},\n\t{\n\t\t...folderRLC,\n\t\tdisplayName: 'Parent Folder',\n\t\tdescription: 'The folder where to upload the file',\n\t},\n\t{\n\t\tdisplayName: 'Options',\n\t\tname: 'options',\n\t\ttype: 'collection',\n\t\tplaceholder: 'Add option',\n\t\tdefault: {},\n\t\toptions: [\n\t\t\t...updateCommonOptions,\n\t\t\t{\n\t\t\t\tdisplayName: 'Simplify Output',\n\t\t\t\tname: 'simplifyOutput',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: true,\n\t\t\t\tdescription: 'Whether to return a simplified version of the response instead of all fields',\n\t\t\t},\n\t\t],\n\t},\n];\n\nconst displayOptions = {\n\tshow: {\n\t\tresource: ['file'],\n\t\toperation: ['upload'],\n\t},\n};\n\nexport const description = updateDisplayOptions(displayOptions, properties);\n\nexport async function execute(this: IExecuteFunctions, i: number): Promise<INodeExecutionData[]> {\n\tconst returnData: INodeExecutionData[] = [];\n\n\tconst inputDataFieldName = this.getNodeParameter('inputDataFieldName', i) as string;\n\n\tconst { contentLength, fileContent, originalFilename, mimeType } = await getItemBinaryData.call(\n\t\tthis,\n\t\tinputDataFieldName,\n\t\ti,\n\t);\n\n\tconst name = (this.getNodeParameter('name', i) as string) || originalFilename;\n\n\tconst driveId = this.getNodeParameter('driveId', i, undefined, {\n\t\textractValue: true,\n\t}) as string;\n\n\tconst folderId = this.getNodeParameter('folderId', i, undefined, {\n\t\textractValue: true,\n\t}) as string;\n\n\tlet uploadId;\n\tif (Buffer.isBuffer(fileContent)) {\n\t\tconst response = await googleApiRequest.call(\n\t\t\tthis,\n\t\t\t'POST',\n\t\t\t'/upload/drive/v3/files',\n\t\t\tfileContent,\n\t\t\t{\n\t\t\t\tuploadType: 'media',\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': mimeType,\n\t\t\t\t\t'Content-Length': contentLength,\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\n\t\tuploadId = response.id;\n\t} else {\n\t\tconst resumableUpload = await googleApiRequest.call(\n\t\t\tthis,\n\t\t\t'POST',\n\t\t\t'/upload/drive/v3/files',\n\t\t\tundefined,\n\t\t\t{ uploadType: 'resumable' },\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\treturnFullResponse: true,\n\t\t\t},\n\t\t);\n\n\t\tconst uploadUrl = resumableUpload.headers.location;\n\n\t\t// 2MB chunks, needs to be a multiple of 256kB for Google Drive API\n\t\tconst chunkSizeBytes = 2048 * 1024;\n\n\t\tawait processInChunks(fileContent, chunkSizeBytes, async (chunk, offset) => {\n\t\t\ttry {\n\t\t\t\tconst response = await this.helpers.httpRequest({\n\t\t\t\t\tmethod: 'PUT',\n\t\t\t\t\turl: uploadUrl,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Content-Length': chunk.length,\n\t\t\t\t\t\t'Content-Range': `bytes ${offset}-${offset + chunk.byteLength - 1}/${contentLength}`,\n\t\t\t\t\t},\n\t\t\t\t\tbody: chunk,\n\t\t\t\t});\n\t\t\t\tuploadId = response?.id;\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response?.status !== 308) throw error;\n\t\t\t}\n\t\t});\n\t}\n\n\tconst options = this.getNodeParameter('options', i, {});\n\n\tconst qs = setUpdateCommonParams(\n\t\t{\n\t\t\taddParents: setParentFolder(folderId, driveId),\n\t\t\tincludeItemsFromAllDrives: true,\n\t\t\tsupportsAllDrives: true,\n\t\t\tspaces: 'appDataFolder, drive',\n\t\t\tcorpora: 'allDrives',\n\t\t},\n\t\toptions,\n\t);\n\n\tif (!options.simplifyOutput) {\n\t\tqs.fields = '*';\n\t}\n\n\tconst body = setFileProperties(\n\t\t{\n\t\t\tmimeType,\n\t\t\tname,\n\t\t\toriginalFilename,\n\t\t},\n\t\toptions,\n\t);\n\n\tconst response = await googleApiRequest.call(\n\t\tthis,\n\t\t'PATCH',\n\t\t`/drive/v3/files/${uploadId}`,\n\t\tbody,\n\t\tqs,\n\t);\n\n\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\tthis.helpers.returnJsonArray(response as IDataObject[]),\n\t\t{ itemData: { item: i } },\n\t);\n\treturnData.push(...executionData);\n\n\treturn returnData;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,uBAAqC;AAErC,mBAMO;AACP,uBAAiC;AACjC,oBAAyD;AAEzD,MAAM,aAAgC;AAAA,EACrC;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,aAAa;AAAA,IACb,SAAS;AAAA,IACT,UAAU;AAAA,IACV,MAAM;AAAA,IACN,aACC;AAAA,EACF;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aAAa;AAAA,IACb,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,GAAG;AAAA,IACH,aAAa;AAAA,IACb,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,GAAG;AAAA,IACH,aAAa;AAAA,IACb,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,aAAa;AAAA,IACb,SAAS,CAAC;AAAA,IACV,SAAS;AAAA,MACR,GAAG;AAAA,MACH;AAAA,QACC,aAAa;AAAA,QACb,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,QACT,aAAa;AAAA,MACd;AAAA,IACD;AAAA,EACD;AACD;AAEA,MAAM,iBAAiB;AAAA,EACtB,MAAM;AAAA,IACL,UAAU,CAAC,MAAM;AAAA,IACjB,WAAW,CAAC,QAAQ;AAAA,EACrB;AACD;AAEO,MAAM,kBAAc,uCAAqB,gBAAgB,UAAU;AAE1E,eAAsB,QAAiC,GAA0C;AAChG,QAAM,aAAmC,CAAC;AAE1C,QAAM,qBAAqB,KAAK,iBAAiB,sBAAsB,CAAC;AAExE,QAAM,EAAE,eAAe,aAAa,kBAAkB,SAAS,IAAI,MAAM,+BAAkB;AAAA,IAC1F;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,QAAM,OAAQ,KAAK,iBAAiB,QAAQ,CAAC,KAAgB;AAE7D,QAAM,UAAU,KAAK,iBAAiB,WAAW,GAAG,QAAW;AAAA,IAC9D,cAAc;AAAA,EACf,CAAC;AAED,QAAM,WAAW,KAAK,iBAAiB,YAAY,GAAG,QAAW;AAAA,IAChE,cAAc;AAAA,EACf,CAAC;AAED,MAAI;AACJ,MAAI,OAAO,SAAS,WAAW,GAAG;AACjC,UAAMA,YAAW,MAAM,kCAAiB;AAAA,MACvC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,QACC,YAAY;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,QACC,SAAS;AAAA,UACR,gBAAgB;AAAA,UAChB,kBAAkB;AAAA,QACnB;AAAA,MACD;AAAA,IACD;AAEA,eAAWA,UAAS;AAAA,EACrB,OAAO;AACN,UAAM,kBAAkB,MAAM,kCAAiB;AAAA,MAC9C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,EAAE,YAAY,YAAY;AAAA,MAC1B;AAAA,MACA;AAAA,QACC,oBAAoB;AAAA,
|
|
1
|
+
{"version":3,"sources":["../../../../../../../nodes/Google/Drive/v2/actions/file/upload.operation.ts"],"sourcesContent":["import type {\n\tIDataObject,\n\tIExecuteFunctions,\n\tINodeExecutionData,\n\tINodeProperties,\n} from 'n8n-workflow';\n\nimport { updateDisplayOptions } from '@utils/utilities';\n\nimport {\n\tgetItemBinaryData,\n\tsetFileProperties,\n\tsetUpdateCommonParams,\n\tsetParentFolder,\n\tprocessInChunks,\n} from '../../helpers/utils';\nimport { googleApiRequest } from '../../transport';\nimport { driveRLC, folderRLC, updateCommonOptions } from '../common.descriptions';\n\nconst properties: INodeProperties[] = [\n\t{\n\t\tdisplayName: 'Input Data Field Name',\n\t\tname: 'inputDataFieldName',\n\t\ttype: 'string',\n\t\tplaceholder: '“e.g. data',\n\t\tdefault: 'data',\n\t\trequired: true,\n\t\thint: 'The name of the input field containing the binary file data to update the file',\n\t\tdescription:\n\t\t\t'Find the name of input field containing the binary data to update the file in the Input panel on the left, in the Binary tab',\n\t},\n\t{\n\t\tdisplayName: 'File Name',\n\t\tname: 'name',\n\t\ttype: 'string',\n\t\tdefault: '',\n\t\tplaceholder: 'e.g. My New File',\n\t\tdescription: 'If not specified, the original file name will be used',\n\t},\n\t{\n\t\t...driveRLC,\n\t\tdisplayName: 'Parent Drive',\n\t\tdescription: 'The drive where to upload the file',\n\t},\n\t{\n\t\t...folderRLC,\n\t\tdisplayName: 'Parent Folder',\n\t\tdescription: 'The folder where to upload the file',\n\t},\n\t{\n\t\tdisplayName: 'Options',\n\t\tname: 'options',\n\t\ttype: 'collection',\n\t\tplaceholder: 'Add option',\n\t\tdefault: {},\n\t\toptions: [\n\t\t\t...updateCommonOptions,\n\t\t\t{\n\t\t\t\tdisplayName: 'Simplify Output',\n\t\t\t\tname: 'simplifyOutput',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: true,\n\t\t\t\tdescription: 'Whether to return a simplified version of the response instead of all fields',\n\t\t\t},\n\t\t],\n\t},\n];\n\nconst displayOptions = {\n\tshow: {\n\t\tresource: ['file'],\n\t\toperation: ['upload'],\n\t},\n};\n\nexport const description = updateDisplayOptions(displayOptions, properties);\n\nexport async function execute(this: IExecuteFunctions, i: number): Promise<INodeExecutionData[]> {\n\tconst returnData: INodeExecutionData[] = [];\n\n\tconst inputDataFieldName = this.getNodeParameter('inputDataFieldName', i) as string;\n\n\tconst { contentLength, fileContent, originalFilename, mimeType } = await getItemBinaryData.call(\n\t\tthis,\n\t\tinputDataFieldName,\n\t\ti,\n\t);\n\n\tconst name = (this.getNodeParameter('name', i) as string) || originalFilename;\n\n\tconst driveId = this.getNodeParameter('driveId', i, undefined, {\n\t\textractValue: true,\n\t}) as string;\n\n\tconst folderId = this.getNodeParameter('folderId', i, undefined, {\n\t\textractValue: true,\n\t}) as string;\n\n\tlet uploadId;\n\tif (Buffer.isBuffer(fileContent)) {\n\t\tconst response = await googleApiRequest.call(\n\t\t\tthis,\n\t\t\t'POST',\n\t\t\t'/upload/drive/v3/files',\n\t\t\tfileContent,\n\t\t\t{\n\t\t\t\tuploadType: 'media',\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': mimeType,\n\t\t\t\t\t'Content-Length': contentLength,\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\n\t\tuploadId = response.id;\n\t} else {\n\t\tconst resumableUpload = await googleApiRequest.call(\n\t\t\tthis,\n\t\t\t'POST',\n\t\t\t'/upload/drive/v3/files',\n\t\t\tundefined,\n\t\t\t{ uploadType: 'resumable' },\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\treturnFullResponse: true,\n\t\t\t\theaders: {\n\t\t\t\t\t'X-Upload-Content-Type': mimeType,\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\n\t\tconst uploadUrl = resumableUpload.headers.location;\n\n\t\t// 2MB chunks, needs to be a multiple of 256kB for Google Drive API\n\t\tconst chunkSizeBytes = 2048 * 1024;\n\n\t\tawait processInChunks(fileContent, chunkSizeBytes, async (chunk, offset) => {\n\t\t\ttry {\n\t\t\t\tconst response = await this.helpers.httpRequest({\n\t\t\t\t\tmethod: 'PUT',\n\t\t\t\t\turl: uploadUrl,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Content-Length': chunk.length,\n\t\t\t\t\t\t'Content-Range': `bytes ${offset}-${offset + chunk.byteLength - 1}/${contentLength}`,\n\t\t\t\t\t},\n\t\t\t\t\tbody: chunk,\n\t\t\t\t});\n\t\t\t\tuploadId = response?.id;\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response?.status !== 308) throw error;\n\t\t\t}\n\t\t});\n\t}\n\n\tconst options = this.getNodeParameter('options', i, {});\n\n\tconst qs = setUpdateCommonParams(\n\t\t{\n\t\t\taddParents: setParentFolder(folderId, driveId),\n\t\t\tincludeItemsFromAllDrives: true,\n\t\t\tsupportsAllDrives: true,\n\t\t\tspaces: 'appDataFolder, drive',\n\t\t\tcorpora: 'allDrives',\n\t\t},\n\t\toptions,\n\t);\n\n\tif (!options.simplifyOutput) {\n\t\tqs.fields = '*';\n\t}\n\n\tconst body = setFileProperties(\n\t\t{\n\t\t\tmimeType,\n\t\t\tname,\n\t\t\toriginalFilename,\n\t\t},\n\t\toptions,\n\t);\n\n\tconst response = await googleApiRequest.call(\n\t\tthis,\n\t\t'PATCH',\n\t\t`/drive/v3/files/${uploadId}`,\n\t\tbody,\n\t\tqs,\n\t);\n\n\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\tthis.helpers.returnJsonArray(response as IDataObject[]),\n\t\t{ itemData: { item: i } },\n\t);\n\treturnData.push(...executionData);\n\n\treturn returnData;\n}\n"],"mappings":"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","names":["response"]}
|
|
@@ -81,7 +81,6 @@ async function googleApiRequestAllItems(propertyName, method, endpoint, body = {
|
|
|
81
81
|
return returnData;
|
|
82
82
|
}
|
|
83
83
|
const isValidDate = (str) => (0, import_moment_timezone.default)(str, ["YYYY-MM-DD HH:mm:ss Z", import_moment_timezone.default.ISO_8601], true).isValid();
|
|
84
|
-
const protoKeys = ["__proto__", "prototype", "constructor"];
|
|
85
84
|
function jsonToDocument(value) {
|
|
86
85
|
if (value === "true" || value === "false" || typeof value === "boolean") {
|
|
87
86
|
return { booleanValue: value };
|
|
@@ -103,7 +102,7 @@ function jsonToDocument(value) {
|
|
|
103
102
|
} else if (typeof value === "object") {
|
|
104
103
|
const obj = {};
|
|
105
104
|
for (const key of Object.keys(value)) {
|
|
106
|
-
if (value.hasOwnProperty(key) &&
|
|
105
|
+
if (value.hasOwnProperty(key) && (0, import_n8n_workflow.isSafeObjectProperty)(key)) {
|
|
107
106
|
obj[key] = jsonToDocument(value[key]);
|
|
108
107
|
}
|
|
109
108
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../nodes/Google/Firebase/CloudFirestore/GenericFunctions.ts"],"sourcesContent":["import moment from 'moment-timezone';\nimport type {\n\tIExecuteFunctions,\n\tILoadOptionsFunctions,\n\tIDataObject,\n\tJsonObject,\n\tIHttpRequestMethods,\n\tIRequestOptions,\n} from 'n8n-workflow';\nimport { NodeApiError } from 'n8n-workflow';\n\nimport { getGoogleAccessToken } from '../../GenericFunctions';\n\nexport async function googleApiRequest(\n\tthis: IExecuteFunctions | ILoadOptionsFunctions,\n\tmethod: IHttpRequestMethods,\n\tresource: string,\n\tbody: any = {},\n\tqs: IDataObject = {},\n\turi: string | null = null,\n): Promise<any> {\n\tconst options: IRequestOptions = {\n\t\theaders: {\n\t\t\t'Content-Type': 'application/json',\n\t\t},\n\t\tmethod,\n\t\tbody,\n\t\tqs,\n\t\tqsStringifyOptions: {\n\t\t\tarrayFormat: 'repeat',\n\t\t},\n\t\turi: uri || `https://firestore.googleapis.com/v1/projects${resource}`,\n\t\tjson: true,\n\t};\n\ttry {\n\t\tif (Object.keys(body as IDataObject).length === 0) {\n\t\t\tdelete options.body;\n\t\t}\n\n\t\tlet credentialType = 'googleFirebaseCloudFirestoreOAuth2Api';\n\t\tconst authentication = this.getNodeParameter('authentication', 0) as string;\n\n\t\tif (authentication === 'serviceAccount') {\n\t\t\tconst credentials = await this.getCredentials('googleApi');\n\t\t\tcredentialType = 'googleApi';\n\n\t\t\tconst { access_token } = await getGoogleAccessToken.call(this, credentials, 'firestore');\n\n\t\t\t(options.headers as IDataObject).Authorization = `Bearer ${access_token}`;\n\t\t}\n\n\t\treturn await this.helpers.requestWithAuthentication.call(this, credentialType, options);\n\t} catch (error) {\n\t\tthrow new NodeApiError(this.getNode(), error as JsonObject);\n\t}\n}\n\nexport async function googleApiRequestAllItems(\n\tthis: IExecuteFunctions | ILoadOptionsFunctions,\n\tpropertyName: string,\n\tmethod: IHttpRequestMethods,\n\tendpoint: string,\n\n\tbody: any = {},\n\tquery: IDataObject = {},\n\turi: string | null = null,\n): Promise<any> {\n\tconst returnData: IDataObject[] = [];\n\n\tlet responseData;\n\tquery.pageSize = 100;\n\n\tdo {\n\t\tresponseData = await googleApiRequest.call(this, method, endpoint, body, query, uri);\n\t\tquery.pageToken = responseData.nextPageToken;\n\t\treturnData.push.apply(returnData, responseData[propertyName] as IDataObject[]);\n\t} while (responseData.nextPageToken !== undefined && responseData.nextPageToken !== '');\n\n\treturn returnData;\n}\n\nconst isValidDate = (str: string) =>\n\tmoment(str, ['YYYY-MM-DD HH:mm:ss Z', moment.ISO_8601], true).isValid();\n\
|
|
1
|
+
{"version":3,"sources":["../../../../../nodes/Google/Firebase/CloudFirestore/GenericFunctions.ts"],"sourcesContent":["import moment from 'moment-timezone';\nimport type {\n\tIExecuteFunctions,\n\tILoadOptionsFunctions,\n\tIDataObject,\n\tJsonObject,\n\tIHttpRequestMethods,\n\tIRequestOptions,\n} from 'n8n-workflow';\nimport { isSafeObjectProperty, NodeApiError } from 'n8n-workflow';\n\nimport { getGoogleAccessToken } from '../../GenericFunctions';\n\nexport async function googleApiRequest(\n\tthis: IExecuteFunctions | ILoadOptionsFunctions,\n\tmethod: IHttpRequestMethods,\n\tresource: string,\n\tbody: any = {},\n\tqs: IDataObject = {},\n\turi: string | null = null,\n): Promise<any> {\n\tconst options: IRequestOptions = {\n\t\theaders: {\n\t\t\t'Content-Type': 'application/json',\n\t\t},\n\t\tmethod,\n\t\tbody,\n\t\tqs,\n\t\tqsStringifyOptions: {\n\t\t\tarrayFormat: 'repeat',\n\t\t},\n\t\turi: uri || `https://firestore.googleapis.com/v1/projects${resource}`,\n\t\tjson: true,\n\t};\n\ttry {\n\t\tif (Object.keys(body as IDataObject).length === 0) {\n\t\t\tdelete options.body;\n\t\t}\n\n\t\tlet credentialType = 'googleFirebaseCloudFirestoreOAuth2Api';\n\t\tconst authentication = this.getNodeParameter('authentication', 0) as string;\n\n\t\tif (authentication === 'serviceAccount') {\n\t\t\tconst credentials = await this.getCredentials('googleApi');\n\t\t\tcredentialType = 'googleApi';\n\n\t\t\tconst { access_token } = await getGoogleAccessToken.call(this, credentials, 'firestore');\n\n\t\t\t(options.headers as IDataObject).Authorization = `Bearer ${access_token}`;\n\t\t}\n\n\t\treturn await this.helpers.requestWithAuthentication.call(this, credentialType, options);\n\t} catch (error) {\n\t\tthrow new NodeApiError(this.getNode(), error as JsonObject);\n\t}\n}\n\nexport async function googleApiRequestAllItems(\n\tthis: IExecuteFunctions | ILoadOptionsFunctions,\n\tpropertyName: string,\n\tmethod: IHttpRequestMethods,\n\tendpoint: string,\n\n\tbody: any = {},\n\tquery: IDataObject = {},\n\turi: string | null = null,\n): Promise<any> {\n\tconst returnData: IDataObject[] = [];\n\n\tlet responseData;\n\tquery.pageSize = 100;\n\n\tdo {\n\t\tresponseData = await googleApiRequest.call(this, method, endpoint, body, query, uri);\n\t\tquery.pageToken = responseData.nextPageToken;\n\t\treturnData.push.apply(returnData, responseData[propertyName] as IDataObject[]);\n\t} while (responseData.nextPageToken !== undefined && responseData.nextPageToken !== '');\n\n\treturn returnData;\n}\n\nconst isValidDate = (str: string) =>\n\tmoment(str, ['YYYY-MM-DD HH:mm:ss Z', moment.ISO_8601], true).isValid();\n\n// Both functions below were taken from Stack Overflow jsonToDocument was fixed as it was unable to handle null values correctly\n// https://stackoverflow.com/questions/62246410/how-to-convert-a-firestore-document-to-plain-json-and-vice-versa\n// Great thanks to https://stackoverflow.com/users/3915246/mahindar\nexport function jsonToDocument(value: string | number | IDataObject | IDataObject[]): IDataObject {\n\tif (value === 'true' || value === 'false' || typeof value === 'boolean') {\n\t\treturn { booleanValue: value };\n\t} else if (value === null) {\n\t\treturn { nullValue: null };\n\t} else if (value !== '' && !isNaN(value as number)) {\n\t\tif (value.toString().indexOf('.') !== -1) {\n\t\t\treturn { doubleValue: value };\n\t\t} else {\n\t\t\treturn { integerValue: value };\n\t\t}\n\t} else if (isValidDate(value as string)) {\n\t\tconst date = new Date(Date.parse(value as string));\n\t\treturn { timestampValue: date.toISOString() };\n\t} else if (typeof value === 'string') {\n\t\treturn { stringValue: value };\n\t} else if (value && value.constructor === Array) {\n\t\treturn { arrayValue: { values: value.map((v) => jsonToDocument(v)) } };\n\t} else if (typeof value === 'object') {\n\t\tconst obj: IDataObject = {};\n\t\tfor (const key of Object.keys(value)) {\n\t\t\tif (value.hasOwnProperty(key) && isSafeObjectProperty(key)) {\n\t\t\t\tobj[key] = jsonToDocument((value as IDataObject)[key] as IDataObject);\n\t\t\t}\n\t\t}\n\t\treturn { mapValue: { fields: obj } };\n\t}\n\n\treturn {};\n}\n\nexport function documentToJson(fields: IDataObject): IDataObject {\n\tif (fields === undefined) return {};\n\tconst result = {};\n\tfor (const f of Object.keys(fields)) {\n\t\tconst key = f,\n\t\t\tvalue = fields[f],\n\t\t\tisDocumentType = [\n\t\t\t\t'stringValue',\n\t\t\t\t'booleanValue',\n\t\t\t\t'doubleValue',\n\t\t\t\t'integerValue',\n\t\t\t\t'timestampValue',\n\t\t\t\t'mapValue',\n\t\t\t\t'arrayValue',\n\t\t\t\t'nullValue',\n\t\t\t\t'geoPointValue',\n\t\t\t].find((t) => t === key);\n\t\tif (isDocumentType) {\n\t\t\tconst item = [\n\t\t\t\t'stringValue',\n\t\t\t\t'booleanValue',\n\t\t\t\t'doubleValue',\n\t\t\t\t'integerValue',\n\t\t\t\t'timestampValue',\n\t\t\t\t'nullValue',\n\t\t\t\t'geoPointValue',\n\t\t\t].find((t) => t === key);\n\t\t\tif (item) {\n\t\t\t\treturn value as IDataObject;\n\t\t\t} else if ('mapValue' === key) {\n\t\t\t\t//@ts-ignore\n\t\t\t\treturn documentToJson((value!.fields as IDataObject) || {});\n\t\t\t} else if ('arrayValue' === key) {\n\t\t\t\t// @ts-ignore\n\t\t\t\tconst list = value.values as IDataObject[];\n\t\t\t\t// @ts-ignore\n\t\t\t\treturn !!list ? list.map((l) => documentToJson(l)) : [];\n\t\t\t}\n\t\t} else {\n\t\t\t// @ts-ignore\n\t\t\tresult[key] = documentToJson(value);\n\t\t}\n\t}\n\treturn result;\n}\n\nexport function fullDocumentToJson(data: IDataObject): IDataObject {\n\tif (data === undefined) {\n\t\treturn data;\n\t}\n\n\treturn {\n\t\t_name: data.name,\n\t\t_id: data.id,\n\t\t_createTime: data.createTime,\n\t\t_updateTime: data.updateTime,\n\t\t...documentToJson(data.fields as IDataObject),\n\t};\n}\n"],"mappings":"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","names":["moment"]}
|
|
@@ -63,7 +63,7 @@ function redact(obj, secrets) {
|
|
|
63
63
|
return obj.map((item) => redact(item, secrets));
|
|
64
64
|
} else if (isObject(obj)) {
|
|
65
65
|
for (const [key, value] of Object.entries(obj)) {
|
|
66
|
-
obj
|
|
66
|
+
(0, import_n8n_workflow.setSafeObjectProperty)(obj, key, redact(value, secrets));
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
return obj;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../nodes/HttpRequest/GenericFunctions.ts"],"sourcesContent":["import FormData from 'form-data';\nimport get from 'lodash/get';\nimport isPlainObject from 'lodash/isPlainObject';\nimport set from 'lodash/set';\nimport {\n\tdeepCopy,\n\ttype ICredentialDataDecryptedObject,\n\ttype IDataObject,\n\ttype INodeExecutionData,\n\ttype INodeProperties,\n\ttype IOAuth2Options,\n\ttype IRequestOptions,\n} from 'n8n-workflow';\nimport type { SecureContextOptions } from 'tls';\n\nimport type { HttpSslAuthCredentials } from './interfaces';\nimport { formatPrivateKey } from '../../utils/utilities';\n\nexport type BodyParameter = {\n\tname: string;\n\tvalue: string;\n\tparameterType?: 'formBinaryData' | 'formData';\n};\n\nexport type IAuthDataSanitizeKeys = {\n\t[key: string]: string[];\n};\n\nexport const replaceNullValues = (item: INodeExecutionData) => {\n\tif (item.json === null) {\n\t\titem.json = {};\n\t}\n\treturn item;\n};\n\nexport const REDACTED = '**hidden**';\n\nfunction isObject(obj: unknown): obj is IDataObject {\n\treturn isPlainObject(obj);\n}\n\nfunction redact<T = unknown>(obj: T, secrets: string[]): T {\n\tif (typeof obj === 'string') {\n\t\treturn secrets.reduce((safe, secret) => safe.replace(secret, REDACTED), obj) as T;\n\t}\n\n\tif (Array.isArray(obj)) {\n\t\treturn obj.map((item) => redact(item, secrets)) as T;\n\t} else if (isObject(obj)) {\n\t\tfor (const [key, value] of Object.entries(obj)) {\n\t\t\t(obj as IDataObject)[key] = redact(value, secrets);\n\t\t}\n\t}\n\n\treturn obj;\n}\n\nexport function sanitizeUiMessage(\n\trequest: IRequestOptions,\n\tauthDataKeys: IAuthDataSanitizeKeys,\n\tsecrets?: string[],\n) {\n\tconst { body, ...rest } = request as IDataObject;\n\n\tlet sendRequest: IDataObject = { body };\n\tfor (const [key, value] of Object.entries(rest)) {\n\t\tsendRequest[key] = deepCopy(value);\n\t}\n\n\t// Protect browser from sending large binary data\n\tif (Buffer.isBuffer(sendRequest.body) && sendRequest.body.length > 250000) {\n\t\tsendRequest = {\n\t\t\t...request,\n\t\t\tbody: `Binary data got replaced with this text. Original was a Buffer with a size of ${\n\t\t\t\t(request.body as string).length\n\t\t\t} bytes.`,\n\t\t};\n\t}\n\n\t// Remove credential information\n\tfor (const requestProperty of Object.keys(authDataKeys)) {\n\t\tsendRequest = {\n\t\t\t...sendRequest,\n\t\t\t[requestProperty]: Object.keys(sendRequest[requestProperty] as object).reduce(\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-loop-func\n\t\t\t\t(acc: IDataObject, curr) => {\n\t\t\t\t\tacc[curr] = authDataKeys[requestProperty].includes(curr)\n\t\t\t\t\t\t? REDACTED\n\t\t\t\t\t\t: (sendRequest[requestProperty] as IDataObject)[curr];\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t),\n\t\t};\n\t}\n\tconst HEADER_BLOCKLIST = new Set([\n\t\t'authorization',\n\t\t'x-api-key',\n\t\t'x-auth-token',\n\t\t'cookie',\n\t\t'proxy-authorization',\n\t\t'sslclientcert',\n\t]);\n\n\tconst headers = sendRequest.headers as IDataObject;\n\n\tif (headers) {\n\t\tfor (const headerName of Object.keys(headers)) {\n\t\t\tif (HEADER_BLOCKLIST.has(headerName.toLowerCase())) {\n\t\t\t\theaders[headerName] = REDACTED;\n\t\t\t}\n\t\t}\n\t}\n\tif (secrets && secrets.length > 0) {\n\t\treturn redact(sendRequest, secrets);\n\t}\n\n\treturn sendRequest;\n}\n\nexport function getSecrets(\n\tproperties: INodeProperties[],\n\tcredentials: ICredentialDataDecryptedObject,\n): string[] {\n\tconst sensitivePropNames = new Set(\n\t\tproperties.filter((prop) => prop.typeOptions?.password).map((prop) => prop.name),\n\t);\n\n\tconst secrets = Object.entries(credentials)\n\t\t.filter(([propName]) => sensitivePropNames.has(propName))\n\t\t.map(([_, value]) => value)\n\t\t.filter((value): value is string => typeof value === 'string');\n\tconst oauthAccessToken = get(credentials, 'oauthTokenData.access_token');\n\tif (typeof oauthAccessToken === 'string') {\n\t\tsecrets.push(oauthAccessToken);\n\t}\n\n\treturn secrets;\n}\n\nexport const getOAuth2AdditionalParameters = (nodeCredentialType: string) => {\n\tconst oAuth2Options: { [credentialType: string]: IOAuth2Options } = {\n\t\tbitlyOAuth2Api: {\n\t\t\ttokenType: 'Bearer',\n\t\t},\n\t\tboxOAuth2Api: {\n\t\t\tincludeCredentialsOnRefreshOnBody: true,\n\t\t},\n\t\tciscoWebexOAuth2Api: {\n\t\t\ttokenType: 'Bearer',\n\t\t},\n\t\tclickUpOAuth2Api: {\n\t\t\tkeepBearer: false,\n\t\t\ttokenType: 'Bearer',\n\t\t},\n\t\tgoToWebinarOAuth2Api: {\n\t\t\ttokenExpiredStatusCode: 403,\n\t\t},\n\t\thubspotDeveloperApi: {\n\t\t\ttokenType: 'Bearer',\n\t\t\tincludeCredentialsOnRefreshOnBody: true,\n\t\t},\n\t\thubspotOAuth2Api: {\n\t\t\ttokenType: 'Bearer',\n\t\t\tincludeCredentialsOnRefreshOnBody: true,\n\t\t},\n\t\tlineNotifyOAuth2Api: {\n\t\t\ttokenType: 'Bearer',\n\t\t},\n\t\tlinkedInOAuth2Api: {\n\t\t\ttokenType: 'Bearer',\n\t\t},\n\t\tmailchimpOAuth2Api: {\n\t\t\ttokenType: 'Bearer',\n\t\t},\n\t\tmauticOAuth2Api: {\n\t\t\tincludeCredentialsOnRefreshOnBody: true,\n\t\t},\n\t\tmicrosoftAzureMonitorOAuth2Api: {\n\t\t\ttokenExpiredStatusCode: 403,\n\t\t},\n\t\tmicrosoftDynamicsOAuth2Api: {\n\t\t\tproperty: 'id_token',\n\t\t},\n\t\tphilipsHueOAuth2Api: {\n\t\t\ttokenType: 'Bearer',\n\t\t},\n\t\traindropOAuth2Api: {\n\t\t\tincludeCredentialsOnRefreshOnBody: true,\n\t\t},\n\t\tshopifyOAuth2Api: {\n\t\t\ttokenType: 'Bearer',\n\t\t\tkeyToIncludeInAccessTokenHeader: 'X-Shopify-Access-Token',\n\t\t},\n\t\tslackOAuth2Api: {\n\t\t\ttokenType: 'Bearer',\n\t\t\tproperty: 'authed_user.access_token',\n\t\t},\n\t\tstravaOAuth2Api: {\n\t\t\tincludeCredentialsOnRefreshOnBody: true,\n\t\t},\n\t};\n\treturn oAuth2Options[nodeCredentialType];\n};\n\n//https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\nexport const binaryContentTypes = [\n\t'image/',\n\t'audio/',\n\t'video/',\n\t'application/octet-stream',\n\t'application/gzip',\n\t'application/zip',\n\t'application/vnd.rar',\n\t'application/epub+zip',\n\t'application/x-bzip',\n\t'application/x-bzip2',\n\t'application/x-cdf',\n\t'application/vnd.amazon.ebook',\n\t'application/msword',\n\t'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n\t'application/vnd.ms-fontobject',\n\t'application/vnd.oasis.opendocument.presentation',\n\t'application/pdf',\n\t'application/x-tar',\n\t'application/vnd.visio',\n\t'application/vnd.ms-excel',\n\t'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t'application/x-7z-compressed',\n];\n\nexport type BodyParametersReducer = (\n\tacc: IDataObject,\n\tcur: { name: string; value: string },\n) => Promise<IDataObject>;\n\nexport async function reduceAsync<T, R>(\n\tarr: T[],\n\treducer: (acc: Awaited<Promise<R>>, cur: T) => Promise<R>,\n\tinit: Promise<R> = Promise.resolve({} as R),\n): Promise<R> {\n\treturn await arr.reduce(async (promiseAcc, item) => {\n\t\treturn await reducer(await promiseAcc, item);\n\t}, init);\n}\n\nexport const prepareRequestBody = async (\n\tparameters: BodyParameter[],\n\tbodyType: string,\n\tversion: number,\n\tdefaultReducer: BodyParametersReducer,\n) => {\n\tif (bodyType === 'json' && version >= 4) {\n\t\treturn await parameters.reduce(async (acc, entry) => {\n\t\t\tconst result = await acc;\n\t\t\tset(result, entry.name, entry.value);\n\t\t\treturn result;\n\t\t}, Promise.resolve({}));\n\t} else if (bodyType === 'multipart-form-data' && version >= 4.2) {\n\t\tconst formData = new FormData();\n\n\t\tfor (const parameter of parameters) {\n\t\t\tif (parameter.parameterType === 'formBinaryData') {\n\t\t\t\tconst entry = await defaultReducer({}, parameter);\n\t\t\t\tconst key = Object.keys(entry)[0];\n\t\t\t\tconst data = entry[key] as { value: Buffer; options: FormData.AppendOptions };\n\t\t\t\tformData.append(key, data.value, data.options);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tformData.append(parameter.name, parameter.value);\n\t\t}\n\n\t\treturn formData;\n\t} else {\n\t\treturn await reduceAsync(parameters, defaultReducer);\n\t}\n};\n\nexport const setAgentOptions = (\n\trequestOptions: IRequestOptions,\n\tsslCertificates: HttpSslAuthCredentials | undefined,\n) => {\n\tif (sslCertificates) {\n\t\tconst agentOptions: SecureContextOptions = {};\n\t\tif (sslCertificates.ca) agentOptions.ca = formatPrivateKey(sslCertificates.ca);\n\t\tif (sslCertificates.cert) agentOptions.cert = formatPrivateKey(sslCertificates.cert);\n\t\tif (sslCertificates.key) agentOptions.key = formatPrivateKey(sslCertificates.key);\n\t\tif (sslCertificates.passphrase)\n\t\t\tagentOptions.passphrase = formatPrivateKey(sslCertificates.passphrase);\n\t\trequestOptions.agentOptions = agentOptions;\n\t}\n};\n"],"mappings":"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","names":["isPlainObject","get","set","FormData"]}
|
|
1
|
+
{"version":3,"sources":["../../../nodes/HttpRequest/GenericFunctions.ts"],"sourcesContent":["import FormData from 'form-data';\nimport get from 'lodash/get';\nimport isPlainObject from 'lodash/isPlainObject';\nimport set from 'lodash/set';\nimport {\n\tdeepCopy,\n\tsetSafeObjectProperty,\n\ttype ICredentialDataDecryptedObject,\n\ttype IDataObject,\n\ttype INodeExecutionData,\n\ttype INodeProperties,\n\ttype IOAuth2Options,\n\ttype IRequestOptions,\n} from 'n8n-workflow';\nimport type { SecureContextOptions } from 'tls';\n\nimport type { HttpSslAuthCredentials } from './interfaces';\nimport { formatPrivateKey } from '../../utils/utilities';\n\nexport type BodyParameter = {\n\tname: string;\n\tvalue: string;\n\tparameterType?: 'formBinaryData' | 'formData';\n};\n\nexport type IAuthDataSanitizeKeys = {\n\t[key: string]: string[];\n};\n\nexport const replaceNullValues = (item: INodeExecutionData) => {\n\tif (item.json === null) {\n\t\titem.json = {};\n\t}\n\treturn item;\n};\n\nexport const REDACTED = '**hidden**';\n\nfunction isObject(obj: unknown): obj is IDataObject {\n\treturn isPlainObject(obj);\n}\n\nfunction redact<T = unknown>(obj: T, secrets: string[]): T {\n\tif (typeof obj === 'string') {\n\t\treturn secrets.reduce((safe, secret) => safe.replace(secret, REDACTED), obj) as T;\n\t}\n\n\tif (Array.isArray(obj)) {\n\t\treturn obj.map((item) => redact(item, secrets)) as T;\n\t} else if (isObject(obj)) {\n\t\tfor (const [key, value] of Object.entries(obj)) {\n\t\t\tsetSafeObjectProperty(obj, key, redact(value, secrets));\n\t\t}\n\t}\n\n\treturn obj;\n}\n\nexport function sanitizeUiMessage(\n\trequest: IRequestOptions,\n\tauthDataKeys: IAuthDataSanitizeKeys,\n\tsecrets?: string[],\n) {\n\tconst { body, ...rest } = request as IDataObject;\n\n\tlet sendRequest: IDataObject = { body };\n\tfor (const [key, value] of Object.entries(rest)) {\n\t\tsendRequest[key] = deepCopy(value);\n\t}\n\n\t// Protect browser from sending large binary data\n\tif (Buffer.isBuffer(sendRequest.body) && sendRequest.body.length > 250000) {\n\t\tsendRequest = {\n\t\t\t...request,\n\t\t\tbody: `Binary data got replaced with this text. Original was a Buffer with a size of ${\n\t\t\t\t(request.body as string).length\n\t\t\t} bytes.`,\n\t\t};\n\t}\n\n\t// Remove credential information\n\tfor (const requestProperty of Object.keys(authDataKeys)) {\n\t\tsendRequest = {\n\t\t\t...sendRequest,\n\t\t\t[requestProperty]: Object.keys(sendRequest[requestProperty] as object).reduce(\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-loop-func\n\t\t\t\t(acc: IDataObject, curr) => {\n\t\t\t\t\tacc[curr] = authDataKeys[requestProperty].includes(curr)\n\t\t\t\t\t\t? REDACTED\n\t\t\t\t\t\t: (sendRequest[requestProperty] as IDataObject)[curr];\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t),\n\t\t};\n\t}\n\tconst HEADER_BLOCKLIST = new Set([\n\t\t'authorization',\n\t\t'x-api-key',\n\t\t'x-auth-token',\n\t\t'cookie',\n\t\t'proxy-authorization',\n\t\t'sslclientcert',\n\t]);\n\n\tconst headers = sendRequest.headers as IDataObject;\n\n\tif (headers) {\n\t\tfor (const headerName of Object.keys(headers)) {\n\t\t\tif (HEADER_BLOCKLIST.has(headerName.toLowerCase())) {\n\t\t\t\theaders[headerName] = REDACTED;\n\t\t\t}\n\t\t}\n\t}\n\tif (secrets && secrets.length > 0) {\n\t\treturn redact(sendRequest, secrets);\n\t}\n\n\treturn sendRequest;\n}\n\nexport function getSecrets(\n\tproperties: INodeProperties[],\n\tcredentials: ICredentialDataDecryptedObject,\n): string[] {\n\tconst sensitivePropNames = new Set(\n\t\tproperties.filter((prop) => prop.typeOptions?.password).map((prop) => prop.name),\n\t);\n\n\tconst secrets = Object.entries(credentials)\n\t\t.filter(([propName]) => sensitivePropNames.has(propName))\n\t\t.map(([_, value]) => value)\n\t\t.filter((value): value is string => typeof value === 'string');\n\tconst oauthAccessToken = get(credentials, 'oauthTokenData.access_token');\n\tif (typeof oauthAccessToken === 'string') {\n\t\tsecrets.push(oauthAccessToken);\n\t}\n\n\treturn secrets;\n}\n\nexport const getOAuth2AdditionalParameters = (nodeCredentialType: string) => {\n\tconst oAuth2Options: { [credentialType: string]: IOAuth2Options } = {\n\t\tbitlyOAuth2Api: {\n\t\t\ttokenType: 'Bearer',\n\t\t},\n\t\tboxOAuth2Api: {\n\t\t\tincludeCredentialsOnRefreshOnBody: true,\n\t\t},\n\t\tciscoWebexOAuth2Api: {\n\t\t\ttokenType: 'Bearer',\n\t\t},\n\t\tclickUpOAuth2Api: {\n\t\t\tkeepBearer: false,\n\t\t\ttokenType: 'Bearer',\n\t\t},\n\t\tgoToWebinarOAuth2Api: {\n\t\t\ttokenExpiredStatusCode: 403,\n\t\t},\n\t\thubspotDeveloperApi: {\n\t\t\ttokenType: 'Bearer',\n\t\t\tincludeCredentialsOnRefreshOnBody: true,\n\t\t},\n\t\thubspotOAuth2Api: {\n\t\t\ttokenType: 'Bearer',\n\t\t\tincludeCredentialsOnRefreshOnBody: true,\n\t\t},\n\t\tlineNotifyOAuth2Api: {\n\t\t\ttokenType: 'Bearer',\n\t\t},\n\t\tlinkedInOAuth2Api: {\n\t\t\ttokenType: 'Bearer',\n\t\t},\n\t\tmailchimpOAuth2Api: {\n\t\t\ttokenType: 'Bearer',\n\t\t},\n\t\tmauticOAuth2Api: {\n\t\t\tincludeCredentialsOnRefreshOnBody: true,\n\t\t},\n\t\tmicrosoftAzureMonitorOAuth2Api: {\n\t\t\ttokenExpiredStatusCode: 403,\n\t\t},\n\t\tmicrosoftDynamicsOAuth2Api: {\n\t\t\tproperty: 'id_token',\n\t\t},\n\t\tphilipsHueOAuth2Api: {\n\t\t\ttokenType: 'Bearer',\n\t\t},\n\t\traindropOAuth2Api: {\n\t\t\tincludeCredentialsOnRefreshOnBody: true,\n\t\t},\n\t\tshopifyOAuth2Api: {\n\t\t\ttokenType: 'Bearer',\n\t\t\tkeyToIncludeInAccessTokenHeader: 'X-Shopify-Access-Token',\n\t\t},\n\t\tslackOAuth2Api: {\n\t\t\ttokenType: 'Bearer',\n\t\t\tproperty: 'authed_user.access_token',\n\t\t},\n\t\tstravaOAuth2Api: {\n\t\t\tincludeCredentialsOnRefreshOnBody: true,\n\t\t},\n\t};\n\treturn oAuth2Options[nodeCredentialType];\n};\n\n//https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\nexport const binaryContentTypes = [\n\t'image/',\n\t'audio/',\n\t'video/',\n\t'application/octet-stream',\n\t'application/gzip',\n\t'application/zip',\n\t'application/vnd.rar',\n\t'application/epub+zip',\n\t'application/x-bzip',\n\t'application/x-bzip2',\n\t'application/x-cdf',\n\t'application/vnd.amazon.ebook',\n\t'application/msword',\n\t'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n\t'application/vnd.ms-fontobject',\n\t'application/vnd.oasis.opendocument.presentation',\n\t'application/pdf',\n\t'application/x-tar',\n\t'application/vnd.visio',\n\t'application/vnd.ms-excel',\n\t'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t'application/x-7z-compressed',\n];\n\nexport type BodyParametersReducer = (\n\tacc: IDataObject,\n\tcur: { name: string; value: string },\n) => Promise<IDataObject>;\n\nexport async function reduceAsync<T, R>(\n\tarr: T[],\n\treducer: (acc: Awaited<Promise<R>>, cur: T) => Promise<R>,\n\tinit: Promise<R> = Promise.resolve({} as R),\n): Promise<R> {\n\treturn await arr.reduce(async (promiseAcc, item) => {\n\t\treturn await reducer(await promiseAcc, item);\n\t}, init);\n}\n\nexport const prepareRequestBody = async (\n\tparameters: BodyParameter[],\n\tbodyType: string,\n\tversion: number,\n\tdefaultReducer: BodyParametersReducer,\n) => {\n\tif (bodyType === 'json' && version >= 4) {\n\t\treturn await parameters.reduce(async (acc, entry) => {\n\t\t\tconst result = await acc;\n\t\t\tset(result, entry.name, entry.value);\n\t\t\treturn result;\n\t\t}, Promise.resolve({}));\n\t} else if (bodyType === 'multipart-form-data' && version >= 4.2) {\n\t\tconst formData = new FormData();\n\n\t\tfor (const parameter of parameters) {\n\t\t\tif (parameter.parameterType === 'formBinaryData') {\n\t\t\t\tconst entry = await defaultReducer({}, parameter);\n\t\t\t\tconst key = Object.keys(entry)[0];\n\t\t\t\tconst data = entry[key] as { value: Buffer; options: FormData.AppendOptions };\n\t\t\t\tformData.append(key, data.value, data.options);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tformData.append(parameter.name, parameter.value);\n\t\t}\n\n\t\treturn formData;\n\t} else {\n\t\treturn await reduceAsync(parameters, defaultReducer);\n\t}\n};\n\nexport const setAgentOptions = (\n\trequestOptions: IRequestOptions,\n\tsslCertificates: HttpSslAuthCredentials | undefined,\n) => {\n\tif (sslCertificates) {\n\t\tconst agentOptions: SecureContextOptions = {};\n\t\tif (sslCertificates.ca) agentOptions.ca = formatPrivateKey(sslCertificates.ca);\n\t\tif (sslCertificates.cert) agentOptions.cert = formatPrivateKey(sslCertificates.cert);\n\t\tif (sslCertificates.key) agentOptions.key = formatPrivateKey(sslCertificates.key);\n\t\tif (sslCertificates.passphrase)\n\t\t\tagentOptions.passphrase = formatPrivateKey(sslCertificates.passphrase);\n\t\trequestOptions.agentOptions = agentOptions;\n\t}\n};\n"],"mappings":"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","names":["isPlainObject","get","set","FormData"]}
|
|
@@ -34,14 +34,15 @@ class Merge extends import_n8n_workflow.VersionedNodeType {
|
|
|
34
34
|
group: ["transform"],
|
|
35
35
|
subtitle: '={{$parameter["mode"]}}',
|
|
36
36
|
description: "Merges data of multiple streams once data from both is available",
|
|
37
|
-
defaultVersion: 3.
|
|
37
|
+
defaultVersion: 3.2
|
|
38
38
|
};
|
|
39
39
|
const nodeVersions = {
|
|
40
40
|
1: new import_MergeV1.MergeV1(baseDescription),
|
|
41
41
|
2: new import_MergeV2.MergeV2(baseDescription),
|
|
42
42
|
2.1: new import_MergeV2.MergeV2(baseDescription),
|
|
43
43
|
3: new import_MergeV3.MergeV3(baseDescription),
|
|
44
|
-
3.1: new import_MergeV3.MergeV3(baseDescription)
|
|
44
|
+
3.1: new import_MergeV3.MergeV3(baseDescription),
|
|
45
|
+
3.2: new import_MergeV3.MergeV3(baseDescription)
|
|
45
46
|
};
|
|
46
47
|
super(nodeVersions, baseDescription);
|
|
47
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../nodes/Merge/Merge.node.ts"],"sourcesContent":["import type { INodeTypeBaseDescription, IVersionedNodeType } from 'n8n-workflow';\nimport { VersionedNodeType } from 'n8n-workflow';\n\nimport { MergeV1 } from './v1/MergeV1.node';\nimport { MergeV2 } from './v2/MergeV2.node';\nimport { MergeV3 } from './v3/MergeV3.node';\n\nexport class Merge extends VersionedNodeType {\n\tconstructor() {\n\t\tconst baseDescription: INodeTypeBaseDescription = {\n\t\t\tdisplayName: 'Merge',\n\t\t\tname: 'merge',\n\t\t\ticon: 'file:merge.svg',\n\t\t\tgroup: ['transform'],\n\t\t\tsubtitle: '={{$parameter[\"mode\"]}}',\n\t\t\tdescription: 'Merges data of multiple streams once data from both is available',\n\t\t\tdefaultVersion: 3.
|
|
1
|
+
{"version":3,"sources":["../../../nodes/Merge/Merge.node.ts"],"sourcesContent":["import type { INodeTypeBaseDescription, IVersionedNodeType } from 'n8n-workflow';\nimport { VersionedNodeType } from 'n8n-workflow';\n\nimport { MergeV1 } from './v1/MergeV1.node';\nimport { MergeV2 } from './v2/MergeV2.node';\nimport { MergeV3 } from './v3/MergeV3.node';\n\nexport class Merge extends VersionedNodeType {\n\tconstructor() {\n\t\tconst baseDescription: INodeTypeBaseDescription = {\n\t\t\tdisplayName: 'Merge',\n\t\t\tname: 'merge',\n\t\t\ticon: 'file:merge.svg',\n\t\t\tgroup: ['transform'],\n\t\t\tsubtitle: '={{$parameter[\"mode\"]}}',\n\t\t\tdescription: 'Merges data of multiple streams once data from both is available',\n\t\t\tdefaultVersion: 3.2,\n\t\t};\n\n\t\tconst nodeVersions: IVersionedNodeType['nodeVersions'] = {\n\t\t\t1: new MergeV1(baseDescription),\n\t\t\t2: new MergeV2(baseDescription),\n\t\t\t2.1: new MergeV2(baseDescription),\n\t\t\t3: new MergeV3(baseDescription),\n\t\t\t3.1: new MergeV3(baseDescription),\n\t\t\t3.2: new MergeV3(baseDescription),\n\t\t};\n\n\t\tsuper(nodeVersions, baseDescription);\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,0BAAkC;AAElC,qBAAwB;AACxB,qBAAwB;AACxB,qBAAwB;AAEjB,MAAM,cAAc,sCAAkB;AAAA,EAC5C,cAAc;AACb,UAAM,kBAA4C;AAAA,MACjD,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO,CAAC,WAAW;AAAA,MACnB,UAAU;AAAA,MACV,aAAa;AAAA,MACb,gBAAgB;AAAA,IACjB;AAEA,UAAM,eAAmD;AAAA,MACxD,GAAG,IAAI,uBAAQ,eAAe;AAAA,MAC9B,GAAG,IAAI,uBAAQ,eAAe;AAAA,MAC9B,KAAK,IAAI,uBAAQ,eAAe;AAAA,MAChC,GAAG,IAAI,uBAAQ,eAAe;AAAA,MAC9B,KAAK,IAAI,uBAAQ,eAAe;AAAA,MAChC,KAAK,IAAI,uBAAQ,eAAe;AAAA,IACjC;AAEA,UAAM,cAAc,eAAe;AAAA,EACpC;AACD;","names":[]}
|
|
@@ -55,6 +55,37 @@ const properties = [
|
|
|
55
55
|
rows: 5,
|
|
56
56
|
editor: "sqlEditor"
|
|
57
57
|
}
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
displayName: "Options",
|
|
61
|
+
name: "options",
|
|
62
|
+
type: "collection",
|
|
63
|
+
placeholder: "Add option",
|
|
64
|
+
default: {},
|
|
65
|
+
options: [
|
|
66
|
+
{
|
|
67
|
+
displayName: "Empty Query Result",
|
|
68
|
+
name: "emptyQueryResult",
|
|
69
|
+
type: "options",
|
|
70
|
+
description: "What to return if the query executed successfully but returned no results",
|
|
71
|
+
options: [
|
|
72
|
+
{
|
|
73
|
+
name: "Success",
|
|
74
|
+
value: "success"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: "Empty Result",
|
|
78
|
+
value: "empty"
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
default: "empty"
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
displayOptions: {
|
|
85
|
+
show: {
|
|
86
|
+
"@version": [3.2]
|
|
87
|
+
}
|
|
88
|
+
}
|
|
58
89
|
}
|
|
59
90
|
];
|
|
60
91
|
const displayOptions = {
|
|
@@ -76,7 +107,7 @@ const prepareError = (node, error) => {
|
|
|
76
107
|
itemIndex: 0
|
|
77
108
|
});
|
|
78
109
|
};
|
|
79
|
-
async function executeSelectWithMappedPairedItems(node, inputsData, query) {
|
|
110
|
+
async function executeSelectWithMappedPairedItems(node, inputsData, query, returnSuccessItemIfEmpty) {
|
|
80
111
|
const returnData = [];
|
|
81
112
|
const db = new import_alasql.default.Database(node.id);
|
|
82
113
|
try {
|
|
@@ -104,7 +135,7 @@ async function executeSelectWithMappedPairedItems(node, inputsData, query) {
|
|
|
104
135
|
returnData.push((0, import_utils.rowToExecutionData)(item));
|
|
105
136
|
}
|
|
106
137
|
}
|
|
107
|
-
if (!returnData.length) {
|
|
138
|
+
if (!returnData.length && returnSuccessItemIfEmpty) {
|
|
108
139
|
returnData.push({ json: { success: true } });
|
|
109
140
|
}
|
|
110
141
|
} catch (error) {
|
|
@@ -118,14 +149,21 @@ async function execute(inputsData) {
|
|
|
118
149
|
const node = this.getNode();
|
|
119
150
|
const returnData = [];
|
|
120
151
|
const pairedItem = [];
|
|
152
|
+
const options = this.getNodeParameter("options", 0, {});
|
|
121
153
|
let query = this.getNodeParameter("query", 0);
|
|
122
154
|
for (const resolvable of (0, import_utilities.getResolvables)(query)) {
|
|
123
155
|
query = query.replace(resolvable, this.evaluateExpression(resolvable, 0));
|
|
124
156
|
}
|
|
125
157
|
const isSelectQuery = node.typeVersion >= 3.1 ? query.toLowerCase().startsWith("select") : false;
|
|
158
|
+
const returnSuccessItemIfEmpty = node.typeVersion <= 3.1 ? true : options.emptyQueryResult === "success";
|
|
126
159
|
if (isSelectQuery) {
|
|
127
160
|
try {
|
|
128
|
-
return await executeSelectWithMappedPairedItems(
|
|
161
|
+
return await executeSelectWithMappedPairedItems(
|
|
162
|
+
node,
|
|
163
|
+
inputsData,
|
|
164
|
+
query,
|
|
165
|
+
returnSuccessItemIfEmpty
|
|
166
|
+
);
|
|
129
167
|
} catch (error) {
|
|
130
168
|
import_di.Container.get(import_n8n_core.ErrorReporter).error(error, {
|
|
131
169
|
extra: {
|
|
@@ -186,7 +224,7 @@ async function execute(inputsData) {
|
|
|
186
224
|
returnData.push({ json: item, pairedItem });
|
|
187
225
|
}
|
|
188
226
|
}
|
|
189
|
-
if (!returnData.length) {
|
|
227
|
+
if (!returnData.length && returnSuccessItemIfEmpty) {
|
|
190
228
|
returnData.push({ json: { success: true }, pairedItem });
|
|
191
229
|
}
|
|
192
230
|
} catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../nodes/Merge/v3/actions/mode/combineBySql.ts"],"sourcesContent":["import { Container } from '@n8n/di';\nimport alasql from 'alasql';\nimport type { Database } from 'alasql';\nimport { ErrorReporter } from 'n8n-core';\nimport type {\n\tIDataObject,\n\tIExecuteFunctions,\n\tINode,\n\tINodeExecutionData,\n\tINodeProperties,\n\tIPairedItemData,\n} from 'n8n-workflow';\nimport { NodeOperationError } from 'n8n-workflow';\n\nimport { getResolvables, updateDisplayOptions } from '@utils/utilities';\n\nimport { numberInputsProperty } from '../../helpers/descriptions';\nimport { modifySelectQuery, rowToExecutionData } from '../../helpers/utils';\n\nexport const properties: INodeProperties[] = [\n\tnumberInputsProperty,\n\t{\n\t\tdisplayName: 'Query',\n\t\tname: 'query',\n\t\ttype: 'string',\n\t\tdefault: 'SELECT * FROM input1 LEFT JOIN input2 ON input1.name = input2.id',\n\t\tnoDataExpression: true,\n\t\tdescription: 'Input data available as tables with corresponding number, e.g. input1, input2',\n\t\thint: 'Supports <a href=\"https://github.com/alasql/alasql/wiki/Supported-SQL-statements\" target=\"_blank\">most</a> of the SQL-99 language',\n\t\trequired: true,\n\t\ttypeOptions: {\n\t\t\trows: 5,\n\t\t\teditor: 'sqlEditor',\n\t\t},\n\t},\n];\n\nconst displayOptions = {\n\tshow: {\n\t\tmode: ['combineBySql'],\n\t},\n};\n\nexport const description = updateDisplayOptions(displayOptions, properties);\n\nconst prepareError = (node: INode, error: Error) => {\n\tlet message = '';\n\tif (typeof error === 'string') {\n\t\tmessage = error;\n\t} else {\n\t\tmessage = error.message;\n\t}\n\tthrow new NodeOperationError(node, error, {\n\t\tmessage: 'Issue while executing query',\n\t\tdescription: message,\n\t\titemIndex: 0,\n\t});\n};\n\nasync function executeSelectWithMappedPairedItems(\n\tnode: INode,\n\tinputsData: INodeExecutionData[][],\n\tquery: string,\n): Promise<INodeExecutionData[][]> {\n\tconst returnData: INodeExecutionData[] = [];\n\n\tconst db: typeof Database = new (alasql as any).Database(node.id);\n\n\ttry {\n\t\tfor (let i = 0; i < inputsData.length; i++) {\n\t\t\tconst inputData = inputsData[i];\n\n\t\t\tdb.exec(`CREATE TABLE input${i + 1}`);\n\t\t\tdb.tables[`input${i + 1}`].data = inputData.map((entry) => ({\n\t\t\t\t...entry.json,\n\t\t\t\tpairedItem: entry.pairedItem,\n\t\t\t}));\n\t\t}\n\t} catch (error) {\n\t\tthrow new NodeOperationError(node, error, {\n\t\t\tmessage: 'Issue while creating table from',\n\t\t\tdescription: error.message,\n\t\t\titemIndex: 0,\n\t\t});\n\t}\n\n\ttry {\n\t\tconst result: IDataObject[] = db.exec(modifySelectQuery(query, inputsData.length));\n\n\t\tfor (const item of result) {\n\t\t\tif (Array.isArray(item)) {\n\t\t\t\treturnData.push(...item.map((entry) => rowToExecutionData(entry)));\n\t\t\t} else if (typeof item === 'object') {\n\t\t\t\treturnData.push(rowToExecutionData(item));\n\t\t\t}\n\t\t}\n\n\t\tif (!returnData.length) {\n\t\t\treturnData.push({ json: { success: true } });\n\t\t}\n\t} catch (error) {\n\t\tprepareError(node, error as Error);\n\t} finally {\n\t\tdelete alasql.databases[node.id];\n\t}\n\n\treturn [returnData];\n}\n\nexport async function execute(\n\tthis: IExecuteFunctions,\n\tinputsData: INodeExecutionData[][],\n): Promise<INodeExecutionData[][]> {\n\tconst node = this.getNode();\n\tconst returnData: INodeExecutionData[] = [];\n\tconst pairedItem: IPairedItemData[] = [];\n\n\tlet query = this.getNodeParameter('query', 0) as string;\n\n\tfor (const resolvable of getResolvables(query)) {\n\t\tquery = query.replace(resolvable, this.evaluateExpression(resolvable, 0) as string);\n\t}\n\n\tconst isSelectQuery = node.typeVersion >= 3.1 ? query.toLowerCase().startsWith('select') : false;\n\n\tif (isSelectQuery) {\n\t\ttry {\n\t\t\treturn await executeSelectWithMappedPairedItems(node, inputsData, query);\n\t\t} catch (error) {\n\t\t\tContainer.get(ErrorReporter).error(error, {\n\t\t\t\textra: {\n\t\t\t\t\tnodeName: node.name,\n\t\t\t\t\tnodeType: node.type,\n\t\t\t\t\tnodeVersion: node.typeVersion,\n\t\t\t\t\tworkflowId: this.getWorkflow().id,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\tconst db: typeof Database = new (alasql as any).Database(node.id);\n\n\ttry {\n\t\tfor (let i = 0; i < inputsData.length; i++) {\n\t\t\tconst inputData = inputsData[i];\n\n\t\t\tinputData.forEach((item, index) => {\n\t\t\t\tif (item.pairedItem === undefined) {\n\t\t\t\t\titem.pairedItem = index;\n\t\t\t\t}\n\n\t\t\t\tif (typeof item.pairedItem === 'number') {\n\t\t\t\t\tpairedItem.push({\n\t\t\t\t\t\titem: item.pairedItem,\n\t\t\t\t\t\tinput: i,\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (Array.isArray(item.pairedItem)) {\n\t\t\t\t\tconst pairedItems = item.pairedItem\n\t\t\t\t\t\t.filter((p) => p !== undefined)\n\t\t\t\t\t\t.map((p) => (typeof p === 'number' ? { item: p } : p))\n\t\t\t\t\t\t.map((p) => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\titem: p.item,\n\t\t\t\t\t\t\t\tinput: i,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\tpairedItem.push(...pairedItems);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tpairedItem.push({\n\t\t\t\t\titem: item.pairedItem.item,\n\t\t\t\t\tinput: i,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tdb.exec(`CREATE TABLE input${i + 1}`);\n\t\t\tdb.tables[`input${i + 1}`].data = inputData.map((entry) => entry.json);\n\t\t}\n\t} catch (error) {\n\t\tthrow new NodeOperationError(node, error, {\n\t\t\tmessage: 'Issue while creating table from',\n\t\t\tdescription: error.message,\n\t\t\titemIndex: 0,\n\t\t});\n\t}\n\n\ttry {\n\t\tconst result: IDataObject[] = db.exec(query);\n\n\t\tfor (const item of result) {\n\t\t\tif (Array.isArray(item)) {\n\t\t\t\treturnData.push(...item.map((json) => ({ json, pairedItem })));\n\t\t\t} else if (typeof item === 'object') {\n\t\t\t\treturnData.push({ json: item, pairedItem });\n\t\t\t}\n\t\t}\n\n\t\tif (!returnData.length) {\n\t\t\treturnData.push({ json: { success: true }, pairedItem });\n\t\t}\n\t} catch (error) {\n\t\tprepareError(node, error as Error);\n\t} finally {\n\t\tdelete alasql.databases[node.id];\n\t}\n\n\treturn [returnData];\n}\n"],"mappings":"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","names":["alasql"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../nodes/Merge/v3/actions/mode/combineBySql.ts"],"sourcesContent":["import { Container } from '@n8n/di';\nimport alasql from 'alasql';\nimport type { Database } from 'alasql';\nimport { ErrorReporter } from 'n8n-core';\nimport type {\n\tIDataObject,\n\tIExecuteFunctions,\n\tINode,\n\tINodeExecutionData,\n\tINodeProperties,\n\tIPairedItemData,\n} from 'n8n-workflow';\nimport { NodeOperationError } from 'n8n-workflow';\n\nimport { getResolvables, updateDisplayOptions } from '@utils/utilities';\n\nimport { numberInputsProperty } from '../../helpers/descriptions';\nimport { modifySelectQuery, rowToExecutionData } from '../../helpers/utils';\n\ntype OperationOptions = {\n\temptyQueryResult: 'success' | 'empty';\n};\n\nexport const properties: INodeProperties[] = [\n\tnumberInputsProperty,\n\t{\n\t\tdisplayName: 'Query',\n\t\tname: 'query',\n\t\ttype: 'string',\n\t\tdefault: 'SELECT * FROM input1 LEFT JOIN input2 ON input1.name = input2.id',\n\t\tnoDataExpression: true,\n\t\tdescription: 'Input data available as tables with corresponding number, e.g. input1, input2',\n\t\thint: 'Supports <a href=\"https://github.com/alasql/alasql/wiki/Supported-SQL-statements\" target=\"_blank\">most</a> of the SQL-99 language',\n\t\trequired: true,\n\t\ttypeOptions: {\n\t\t\trows: 5,\n\t\t\teditor: 'sqlEditor',\n\t\t},\n\t},\n\t{\n\t\tdisplayName: 'Options',\n\t\tname: 'options',\n\t\ttype: 'collection',\n\t\tplaceholder: 'Add option',\n\t\tdefault: {},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Empty Query Result',\n\t\t\t\tname: 'emptyQueryResult',\n\t\t\t\ttype: 'options',\n\t\t\t\tdescription: 'What to return if the query executed successfully but returned no results',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Success',\n\t\t\t\t\t\tvalue: 'success',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Empty Result',\n\t\t\t\t\t\tvalue: 'empty',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'empty',\n\t\t\t},\n\t\t],\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\t'@version': [3.2],\n\t\t\t},\n\t\t},\n\t},\n];\n\nconst displayOptions = {\n\tshow: {\n\t\tmode: ['combineBySql'],\n\t},\n};\n\nexport const description = updateDisplayOptions(displayOptions, properties);\n\nconst prepareError = (node: INode, error: Error) => {\n\tlet message = '';\n\tif (typeof error === 'string') {\n\t\tmessage = error;\n\t} else {\n\t\tmessage = error.message;\n\t}\n\tthrow new NodeOperationError(node, error, {\n\t\tmessage: 'Issue while executing query',\n\t\tdescription: message,\n\t\titemIndex: 0,\n\t});\n};\n\nasync function executeSelectWithMappedPairedItems(\n\tnode: INode,\n\tinputsData: INodeExecutionData[][],\n\tquery: string,\n\treturnSuccessItemIfEmpty: boolean,\n): Promise<INodeExecutionData[][]> {\n\tconst returnData: INodeExecutionData[] = [];\n\n\tconst db: typeof Database = new (alasql as any).Database(node.id);\n\n\ttry {\n\t\tfor (let i = 0; i < inputsData.length; i++) {\n\t\t\tconst inputData = inputsData[i];\n\n\t\t\tdb.exec(`CREATE TABLE input${i + 1}`);\n\t\t\tdb.tables[`input${i + 1}`].data = inputData.map((entry) => ({\n\t\t\t\t...entry.json,\n\t\t\t\tpairedItem: entry.pairedItem,\n\t\t\t}));\n\t\t}\n\t} catch (error) {\n\t\tthrow new NodeOperationError(node, error, {\n\t\t\tmessage: 'Issue while creating table from',\n\t\t\tdescription: error.message,\n\t\t\titemIndex: 0,\n\t\t});\n\t}\n\n\ttry {\n\t\tconst result: IDataObject[] = db.exec(modifySelectQuery(query, inputsData.length));\n\n\t\tfor (const item of result) {\n\t\t\tif (Array.isArray(item)) {\n\t\t\t\treturnData.push(...item.map((entry) => rowToExecutionData(entry)));\n\t\t\t} else if (typeof item === 'object') {\n\t\t\t\treturnData.push(rowToExecutionData(item));\n\t\t\t}\n\t\t}\n\n\t\tif (!returnData.length && returnSuccessItemIfEmpty) {\n\t\t\treturnData.push({ json: { success: true } });\n\t\t}\n\t} catch (error) {\n\t\tprepareError(node, error as Error);\n\t} finally {\n\t\tdelete alasql.databases[node.id];\n\t}\n\n\treturn [returnData];\n}\n\nexport async function execute(\n\tthis: IExecuteFunctions,\n\tinputsData: INodeExecutionData[][],\n): Promise<INodeExecutionData[][]> {\n\tconst node = this.getNode();\n\tconst returnData: INodeExecutionData[] = [];\n\tconst pairedItem: IPairedItemData[] = [];\n\tconst options = this.getNodeParameter('options', 0, {}) as OperationOptions;\n\n\tlet query = this.getNodeParameter('query', 0) as string;\n\n\tfor (const resolvable of getResolvables(query)) {\n\t\tquery = query.replace(resolvable, this.evaluateExpression(resolvable, 0) as string);\n\t}\n\n\tconst isSelectQuery = node.typeVersion >= 3.1 ? query.toLowerCase().startsWith('select') : false;\n\tconst returnSuccessItemIfEmpty =\n\t\tnode.typeVersion <= 3.1 ? true : options.emptyQueryResult === 'success';\n\n\tif (isSelectQuery) {\n\t\ttry {\n\t\t\treturn await executeSelectWithMappedPairedItems(\n\t\t\t\tnode,\n\t\t\t\tinputsData,\n\t\t\t\tquery,\n\t\t\t\treturnSuccessItemIfEmpty,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tContainer.get(ErrorReporter).error(error, {\n\t\t\t\textra: {\n\t\t\t\t\tnodeName: node.name,\n\t\t\t\t\tnodeType: node.type,\n\t\t\t\t\tnodeVersion: node.typeVersion,\n\t\t\t\t\tworkflowId: this.getWorkflow().id,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\tconst db: typeof Database = new (alasql as any).Database(node.id);\n\n\ttry {\n\t\tfor (let i = 0; i < inputsData.length; i++) {\n\t\t\tconst inputData = inputsData[i];\n\n\t\t\tinputData.forEach((item, index) => {\n\t\t\t\tif (item.pairedItem === undefined) {\n\t\t\t\t\titem.pairedItem = index;\n\t\t\t\t}\n\n\t\t\t\tif (typeof item.pairedItem === 'number') {\n\t\t\t\t\tpairedItem.push({\n\t\t\t\t\t\titem: item.pairedItem,\n\t\t\t\t\t\tinput: i,\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (Array.isArray(item.pairedItem)) {\n\t\t\t\t\tconst pairedItems = item.pairedItem\n\t\t\t\t\t\t.filter((p) => p !== undefined)\n\t\t\t\t\t\t.map((p) => (typeof p === 'number' ? { item: p } : p))\n\t\t\t\t\t\t.map((p) => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\titem: p.item,\n\t\t\t\t\t\t\t\tinput: i,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\tpairedItem.push(...pairedItems);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tpairedItem.push({\n\t\t\t\t\titem: item.pairedItem.item,\n\t\t\t\t\tinput: i,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tdb.exec(`CREATE TABLE input${i + 1}`);\n\t\t\tdb.tables[`input${i + 1}`].data = inputData.map((entry) => entry.json);\n\t\t}\n\t} catch (error) {\n\t\tthrow new NodeOperationError(node, error, {\n\t\t\tmessage: 'Issue while creating table from',\n\t\t\tdescription: error.message,\n\t\t\titemIndex: 0,\n\t\t});\n\t}\n\n\ttry {\n\t\tconst result: IDataObject[] = db.exec(query);\n\n\t\tfor (const item of result) {\n\t\t\tif (Array.isArray(item)) {\n\t\t\t\treturnData.push(...item.map((json) => ({ json, pairedItem })));\n\t\t\t} else if (typeof item === 'object') {\n\t\t\t\treturnData.push({ json: item, pairedItem });\n\t\t\t}\n\t\t}\n\n\t\tif (!returnData.length && returnSuccessItemIfEmpty) {\n\t\t\treturnData.push({ json: { success: true }, pairedItem });\n\t\t}\n\t} catch (error) {\n\t\tprepareError(node, error as Error);\n\t} finally {\n\t\tdelete alasql.databases[node.id];\n\t}\n\n\treturn [returnData];\n}\n"],"mappings":"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","names":["alasql"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../nodes/Merge/v3/actions/versionDescription.ts"],"sourcesContent":["/* eslint-disable n8n-nodes-base/node-filename-against-convention */\nimport { NodeConnectionTypes, type INodeTypeDescription } from 'n8n-workflow';\n\nimport * as mode from './mode';\nimport { configuredInputs } from '../helpers/utils';\n\nexport const versionDescription: INodeTypeDescription = {\n\tdisplayName: 'Merge',\n\tname: 'merge',\n\tgroup: ['transform'],\n\tdescription: 'Merges data of multiple streams once data from both is available',\n\tversion: [3, 3.1],\n\tdefaults: {\n\t\tname: 'Merge',\n\t},\n\tinputs: `={{(${configuredInputs})($parameter)}}`,\n\toutputs: [NodeConnectionTypes.Main],\n\t// If mode is chooseBranch data from both branches is required\n\t// to continue, else data from any input suffices\n\trequiredInputs: '={{ $parameter[\"mode\"] === \"chooseBranch\" ? [0, 1] : 1 }}',\n\tproperties: [...mode.description],\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,0BAA+D;AAE/D,WAAsB;AACtB,mBAAiC;AAE1B,MAAM,qBAA2C;AAAA,EACvD,aAAa;AAAA,EACb,MAAM;AAAA,EACN,OAAO,CAAC,WAAW;AAAA,EACnB,aAAa;AAAA,EACb,SAAS,CAAC,GAAG,GAAG;AAAA,
|
|
1
|
+
{"version":3,"sources":["../../../../../nodes/Merge/v3/actions/versionDescription.ts"],"sourcesContent":["/* eslint-disable n8n-nodes-base/node-filename-against-convention */\nimport { NodeConnectionTypes, type INodeTypeDescription } from 'n8n-workflow';\n\nimport * as mode from './mode';\nimport { configuredInputs } from '../helpers/utils';\n\nexport const versionDescription: INodeTypeDescription = {\n\tdisplayName: 'Merge',\n\tname: 'merge',\n\tgroup: ['transform'],\n\tdescription: 'Merges data of multiple streams once data from both is available',\n\tversion: [3, 3.1, 3.2],\n\tdefaults: {\n\t\tname: 'Merge',\n\t},\n\tinputs: `={{(${configuredInputs})($parameter)}}`,\n\toutputs: [NodeConnectionTypes.Main],\n\t// If mode is chooseBranch data from both branches is required\n\t// to continue, else data from any input suffices\n\trequiredInputs: '={{ $parameter[\"mode\"] === \"chooseBranch\" ? [0, 1] : 1 }}',\n\tproperties: [...mode.description],\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,0BAA+D;AAE/D,WAAsB;AACtB,mBAAiC;AAE1B,MAAM,qBAA2C;AAAA,EACvD,aAAa;AAAA,EACb,MAAM;AAAA,EACN,OAAO,CAAC,WAAW;AAAA,EACnB,aAAa;AAAA,EACb,SAAS,CAAC,GAAG,KAAK,GAAG;AAAA,EACrB,UAAU;AAAA,IACT,MAAM;AAAA,EACP;AAAA,EACA,QAAQ,OAAO,6BAAgB;AAAA,EAC/B,SAAS,CAAC,wCAAoB,IAAI;AAAA;AAAA;AAAA,EAGlC,gBAAgB;AAAA,EAChB,YAAY,CAAC,GAAG,KAAK,WAAW;AACjC;","names":[]}
|
|
@@ -76,13 +76,13 @@ const properties = [
|
|
|
76
76
|
displayName: "Updated File Contents",
|
|
77
77
|
name: "fileContents",
|
|
78
78
|
default: "",
|
|
79
|
-
description: "Find the name of input field containing the binary data to update the file in the Input panel on the left, in the Binary tab",
|
|
79
|
+
description: "Find the name of input field containing the binary data to update the file with in the Input panel on the left, in the Binary tab",
|
|
80
80
|
displayOptions: {
|
|
81
81
|
show: {
|
|
82
82
|
changeFileContent: [true]
|
|
83
83
|
}
|
|
84
84
|
},
|
|
85
|
-
hint: "The name of the input field containing the binary file data to update the file",
|
|
85
|
+
hint: "The name of the input field containing the binary file data to update the file with",
|
|
86
86
|
placeholder: "data",
|
|
87
87
|
required: true,
|
|
88
88
|
routing: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../nodes/Microsoft/SharePoint/descriptions/file/update.operation.ts"],"sourcesContent":["import {\n\tupdateDisplayOptions,\n\ttype IExecuteSingleFunctions,\n\ttype IN8nHttpFullResponse,\n\ttype INodeExecutionData,\n\ttype INodeProperties,\n} from 'n8n-workflow';\n\nimport { microsoftSharePointApiRequest } from '../../transport';\nimport {\n\tfileRLC,\n\tfolderRLC,\n\tsiteRLC,\n\tuntilFolderSelected,\n\tuntilSiteSelected,\n} from '../common.descriptions';\n\nconst properties: INodeProperties[] = [\n\t{\n\t\t...siteRLC,\n\t\tdescription: 'Select the site to retrieve folders from',\n\t},\n\t{\n\t\t...folderRLC,\n\t\tdescription: 'Select the folder to update the file in',\n\t\tdisplayOptions: {\n\t\t\thide: {\n\t\t\t\t...untilSiteSelected,\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\t...fileRLC,\n\t\tdescription: 'Select the file to update',\n\t\tdisplayOptions: {\n\t\t\thide: {\n\t\t\t\t...untilSiteSelected,\n\t\t\t\t...untilFolderSelected,\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\tdisplayName: 'Updated File Name',\n\t\tname: 'fileName',\n\t\tdefault: '',\n\t\tdescription: 'If not specified, the original file name will be used',\n\t\tplaceholder: 'e.g. My New File',\n\t\trouting: {\n\t\t\tsend: {\n\t\t\t\tproperty: 'name',\n\t\t\t\ttype: 'body',\n\t\t\t\tvalue: '={{ $value }}',\n\t\t\t},\n\t\t},\n\t\ttype: 'string',\n\t},\n\t{\n\t\tdisplayName: 'Change File Content',\n\t\tname: 'changeFileContent',\n\t\tdefault: false,\n\t\tdescription: 'Whether to update the file contents',\n\t\tplaceholder: 'e.g. My New File',\n\t\trequired: true,\n\t\ttype: 'boolean',\n\t},\n\t{\n\t\tdisplayName: 'Updated File Contents',\n\t\tname: 'fileContents',\n\t\tdefault: '',\n\t\tdescription:\n\t\t\t'Find the name of input field containing the binary data to update the file in the Input panel on the left, in the Binary tab',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tchangeFileContent: [true],\n\t\t\t},\n\t\t},\n\t\thint: 'The name of the input field containing the binary file data to update the file',\n\t\tplaceholder: 'data',\n\t\trequired: true,\n\t\trouting: {\n\t\t\toutput: {\n\t\t\t\tpostReceive: [\n\t\t\t\t\tasync function (\n\t\t\t\t\t\tthis: IExecuteSingleFunctions,\n\t\t\t\t\t\titems: INodeExecutionData[],\n\t\t\t\t\t\t_response: IN8nHttpFullResponse,\n\t\t\t\t\t): Promise<INodeExecutionData[]> {\n\t\t\t\t\t\tfor (const item of items) {\n\t\t\t\t\t\t\tconst site = this.getNodeParameter('site', undefined, {\n\t\t\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t\t\t}) as string;\n\t\t\t\t\t\t\tconst file = this.getNodeParameter('file', undefined, {\n\t\t\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t\t\t}) as string;\n\t\t\t\t\t\t\tconst binaryProperty = this.getNodeParameter('fileContents') as string;\n\t\t\t\t\t\t\tthis.helpers.assertBinaryData(binaryProperty);\n\t\t\t\t\t\t\tconst binaryDataBuffer = await this.helpers.getBinaryDataBuffer(binaryProperty);\n\t\t\t\t\t\t\tconst response = await microsoftSharePointApiRequest.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\t\t\t`/sites/${site}/drive/items/${file}/content`,\n\t\t\t\t\t\t\t\tbinaryDataBuffer,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\titem.json = response;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn items;\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\ttype: 'string',\n\t},\n];\n\nconst displayOptions = {\n\tshow: {\n\t\tresource: ['file'],\n\t\toperation: ['update'],\n\t},\n};\n\nexport const description = updateDisplayOptions(displayOptions, properties);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAMO;AAEP,uBAA8C;AAC9C,oBAMO;AAEP,MAAM,aAAgC;AAAA,EACrC;AAAA,IACC,GAAG;AAAA,IACH,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,GAAG;AAAA,IACH,aAAa;AAAA,IACb,gBAAgB;AAAA,MACf,MAAM;AAAA,QACL,GAAG;AAAA,MACJ;AAAA,IACD;AAAA,EACD;AAAA,EACA;AAAA,IACC,GAAG;AAAA,IACH,aAAa;AAAA,IACb,gBAAgB;AAAA,MACf,MAAM;AAAA,QACL,GAAG;AAAA,QACH,GAAG;AAAA,MACJ;AAAA,IACD;AAAA,EACD;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aAAa;AAAA,IACb,aAAa;AAAA,IACb,SAAS;AAAA,MACR,MAAM;AAAA,QACL,UAAU;AAAA,QACV,MAAM;AAAA,QACN,OAAO;AAAA,MACR;AAAA,IACD;AAAA,IACA,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAU;AAAA,IACV,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aACC;AAAA,IACD,gBAAgB;AAAA,MACf,MAAM;AAAA,QACL,mBAAmB,CAAC,IAAI;AAAA,MACzB;AAAA,IACD;AAAA,IACA,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,SAAS;AAAA,MACR,QAAQ;AAAA,QACP,aAAa;AAAA,UACZ,eAEC,OACA,WACgC;AAChC,uBAAW,QAAQ,OAAO;AACzB,oBAAM,OAAO,KAAK,iBAAiB,QAAQ,QAAW;AAAA,gBACrD,cAAc;AAAA,cACf,CAAC;AACD,oBAAM,OAAO,KAAK,iBAAiB,QAAQ,QAAW;AAAA,gBACrD,cAAc;AAAA,cACf,CAAC;AACD,oBAAM,iBAAiB,KAAK,iBAAiB,cAAc;AAC3D,mBAAK,QAAQ,iBAAiB,cAAc;AAC5C,oBAAM,mBAAmB,MAAM,KAAK,QAAQ,oBAAoB,cAAc;AAC9E,oBAAM,WAAW,MAAM,+CAA8B;AAAA,gBACpD;AAAA,gBACA;AAAA,gBACA,UAAU,IAAI,gBAAgB,IAAI;AAAA,gBAClC;AAAA,cACD;AACA,mBAAK,OAAO;AAAA,YACb;AACA,mBAAO;AAAA,UACR;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IACA,MAAM;AAAA,EACP;AACD;AAEA,MAAM,iBAAiB;AAAA,EACtB,MAAM;AAAA,IACL,UAAU,CAAC,MAAM;AAAA,IACjB,WAAW,CAAC,QAAQ;AAAA,EACrB;AACD;AAEO,MAAM,kBAAc,0CAAqB,gBAAgB,UAAU;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../nodes/Microsoft/SharePoint/descriptions/file/update.operation.ts"],"sourcesContent":["import {\n\tupdateDisplayOptions,\n\ttype IExecuteSingleFunctions,\n\ttype IN8nHttpFullResponse,\n\ttype INodeExecutionData,\n\ttype INodeProperties,\n} from 'n8n-workflow';\n\nimport { microsoftSharePointApiRequest } from '../../transport';\nimport {\n\tfileRLC,\n\tfolderRLC,\n\tsiteRLC,\n\tuntilFolderSelected,\n\tuntilSiteSelected,\n} from '../common.descriptions';\n\nconst properties: INodeProperties[] = [\n\t{\n\t\t...siteRLC,\n\t\tdescription: 'Select the site to retrieve folders from',\n\t},\n\t{\n\t\t...folderRLC,\n\t\tdescription: 'Select the folder to update the file in',\n\t\tdisplayOptions: {\n\t\t\thide: {\n\t\t\t\t...untilSiteSelected,\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\t...fileRLC,\n\t\tdescription: 'Select the file to update',\n\t\tdisplayOptions: {\n\t\t\thide: {\n\t\t\t\t...untilSiteSelected,\n\t\t\t\t...untilFolderSelected,\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\tdisplayName: 'Updated File Name',\n\t\tname: 'fileName',\n\t\tdefault: '',\n\t\tdescription: 'If not specified, the original file name will be used',\n\t\tplaceholder: 'e.g. My New File',\n\t\trouting: {\n\t\t\tsend: {\n\t\t\t\tproperty: 'name',\n\t\t\t\ttype: 'body',\n\t\t\t\tvalue: '={{ $value }}',\n\t\t\t},\n\t\t},\n\t\ttype: 'string',\n\t},\n\t{\n\t\tdisplayName: 'Change File Content',\n\t\tname: 'changeFileContent',\n\t\tdefault: false,\n\t\tdescription: 'Whether to update the file contents',\n\t\tplaceholder: 'e.g. My New File',\n\t\trequired: true,\n\t\ttype: 'boolean',\n\t},\n\t{\n\t\tdisplayName: 'Updated File Contents',\n\t\tname: 'fileContents',\n\t\tdefault: '',\n\t\tdescription:\n\t\t\t'Find the name of input field containing the binary data to update the file with in the Input panel on the left, in the Binary tab',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tchangeFileContent: [true],\n\t\t\t},\n\t\t},\n\t\thint: 'The name of the input field containing the binary file data to update the file with',\n\t\tplaceholder: 'data',\n\t\trequired: true,\n\t\trouting: {\n\t\t\toutput: {\n\t\t\t\tpostReceive: [\n\t\t\t\t\tasync function (\n\t\t\t\t\t\tthis: IExecuteSingleFunctions,\n\t\t\t\t\t\titems: INodeExecutionData[],\n\t\t\t\t\t\t_response: IN8nHttpFullResponse,\n\t\t\t\t\t): Promise<INodeExecutionData[]> {\n\t\t\t\t\t\tfor (const item of items) {\n\t\t\t\t\t\t\tconst site = this.getNodeParameter('site', undefined, {\n\t\t\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t\t\t}) as string;\n\t\t\t\t\t\t\tconst file = this.getNodeParameter('file', undefined, {\n\t\t\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t\t\t}) as string;\n\t\t\t\t\t\t\tconst binaryProperty = this.getNodeParameter('fileContents') as string;\n\t\t\t\t\t\t\tthis.helpers.assertBinaryData(binaryProperty);\n\t\t\t\t\t\t\tconst binaryDataBuffer = await this.helpers.getBinaryDataBuffer(binaryProperty);\n\t\t\t\t\t\t\tconst response = await microsoftSharePointApiRequest.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\t\t\t`/sites/${site}/drive/items/${file}/content`,\n\t\t\t\t\t\t\t\tbinaryDataBuffer,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\titem.json = response;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn items;\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\ttype: 'string',\n\t},\n];\n\nconst displayOptions = {\n\tshow: {\n\t\tresource: ['file'],\n\t\toperation: ['update'],\n\t},\n};\n\nexport const description = updateDisplayOptions(displayOptions, properties);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAMO;AAEP,uBAA8C;AAC9C,oBAMO;AAEP,MAAM,aAAgC;AAAA,EACrC;AAAA,IACC,GAAG;AAAA,IACH,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,GAAG;AAAA,IACH,aAAa;AAAA,IACb,gBAAgB;AAAA,MACf,MAAM;AAAA,QACL,GAAG;AAAA,MACJ;AAAA,IACD;AAAA,EACD;AAAA,EACA;AAAA,IACC,GAAG;AAAA,IACH,aAAa;AAAA,IACb,gBAAgB;AAAA,MACf,MAAM;AAAA,QACL,GAAG;AAAA,QACH,GAAG;AAAA,MACJ;AAAA,IACD;AAAA,EACD;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aAAa;AAAA,IACb,aAAa;AAAA,IACb,SAAS;AAAA,MACR,MAAM;AAAA,QACL,UAAU;AAAA,QACV,MAAM;AAAA,QACN,OAAO;AAAA,MACR;AAAA,IACD;AAAA,IACA,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAU;AAAA,IACV,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aACC;AAAA,IACD,gBAAgB;AAAA,MACf,MAAM;AAAA,QACL,mBAAmB,CAAC,IAAI;AAAA,MACzB;AAAA,IACD;AAAA,IACA,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,SAAS;AAAA,MACR,QAAQ;AAAA,QACP,aAAa;AAAA,UACZ,eAEC,OACA,WACgC;AAChC,uBAAW,QAAQ,OAAO;AACzB,oBAAM,OAAO,KAAK,iBAAiB,QAAQ,QAAW;AAAA,gBACrD,cAAc;AAAA,cACf,CAAC;AACD,oBAAM,OAAO,KAAK,iBAAiB,QAAQ,QAAW;AAAA,gBACrD,cAAc;AAAA,cACf,CAAC;AACD,oBAAM,iBAAiB,KAAK,iBAAiB,cAAc;AAC3D,mBAAK,QAAQ,iBAAiB,cAAc;AAC5C,oBAAM,mBAAmB,MAAM,KAAK,QAAQ,oBAAoB,cAAc;AAC9E,oBAAM,WAAW,MAAM,+CAA8B;AAAA,gBACpD;AAAA,gBACA;AAAA,gBACA,UAAU,IAAI,gBAAgB,IAAI;AAAA,gBAClC;AAAA,cACD;AACA,mBAAK,OAAO;AAAA,YACb;AACA,mBAAO;AAAA,UACR;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IACA,MAAM;AAAA,EACP;AACD;AAEA,MAAM,iBAAiB;AAAA,EACtB,MAAM;AAAA,IACL,UAAU,CAAC,MAAM;AAAA,IACjB,WAAW,CAAC,QAAQ;AAAA,EACrB;AACD;AAEO,MAAM,kBAAc,0CAAqB,gBAAgB,UAAU;","names":[]}
|
|
@@ -51,8 +51,8 @@ const properties = [
|
|
|
51
51
|
displayName: "File Contents",
|
|
52
52
|
name: "fileContents",
|
|
53
53
|
default: "",
|
|
54
|
-
description: "Find the name of input field containing the binary data to upload
|
|
55
|
-
hint: "The name of the input field containing the binary file data to
|
|
54
|
+
description: "Find the name of input field containing the binary data to upload in the Input panel on the left, in the Binary tab",
|
|
55
|
+
hint: "The name of the input field containing the binary file data to upload",
|
|
56
56
|
placeholder: "data",
|
|
57
57
|
required: true,
|
|
58
58
|
routing: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../nodes/Microsoft/SharePoint/descriptions/file/upload.operation.ts"],"sourcesContent":["import { updateDisplayOptions, type INodeProperties } from 'n8n-workflow';\n\nimport { uploadFilePreSend } from '../../helpers/utils';\nimport { folderRLC, siteRLC, untilSiteSelected } from '../common.descriptions';\n\nconst properties: INodeProperties[] = [\n\t{\n\t\t...siteRLC,\n\t\tdescription: 'Select the site to retrieve folders from',\n\t},\n\t{\n\t\t...folderRLC,\n\t\tdescription: 'Select the folder to upload the file to',\n\t\tdisplayOptions: {\n\t\t\thide: {\n\t\t\t\t...untilSiteSelected,\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\tdisplayName: 'File Name',\n\t\tname: 'fileName',\n\t\tdefault: '',\n\t\tdescription: 'The name of the file being uploaded',\n\t\tplaceholder: 'e.g. My New File',\n\t\trequired: true,\n\t\ttype: 'string',\n\t},\n\t{\n\t\tdisplayName: 'File Contents',\n\t\tname: 'fileContents',\n\t\tdefault: '',\n\t\tdescription:\n\t\t\t'Find the name of input field containing the binary data to upload
|
|
1
|
+
{"version":3,"sources":["../../../../../../nodes/Microsoft/SharePoint/descriptions/file/upload.operation.ts"],"sourcesContent":["import { updateDisplayOptions, type INodeProperties } from 'n8n-workflow';\n\nimport { uploadFilePreSend } from '../../helpers/utils';\nimport { folderRLC, siteRLC, untilSiteSelected } from '../common.descriptions';\n\nconst properties: INodeProperties[] = [\n\t{\n\t\t...siteRLC,\n\t\tdescription: 'Select the site to retrieve folders from',\n\t},\n\t{\n\t\t...folderRLC,\n\t\tdescription: 'Select the folder to upload the file to',\n\t\tdisplayOptions: {\n\t\t\thide: {\n\t\t\t\t...untilSiteSelected,\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\tdisplayName: 'File Name',\n\t\tname: 'fileName',\n\t\tdefault: '',\n\t\tdescription: 'The name of the file being uploaded',\n\t\tplaceholder: 'e.g. My New File',\n\t\trequired: true,\n\t\ttype: 'string',\n\t},\n\t{\n\t\tdisplayName: 'File Contents',\n\t\tname: 'fileContents',\n\t\tdefault: '',\n\t\tdescription:\n\t\t\t'Find the name of input field containing the binary data to upload in the Input panel on the left, in the Binary tab',\n\t\thint: 'The name of the input field containing the binary file data to upload',\n\t\tplaceholder: 'data',\n\t\trequired: true,\n\t\trouting: {\n\t\t\tsend: {\n\t\t\t\tpreSend: [uploadFilePreSend],\n\t\t\t},\n\t\t},\n\t\ttype: 'string',\n\t},\n];\n\nconst displayOptions = {\n\tshow: {\n\t\tresource: ['file'],\n\t\toperation: ['upload'],\n\t},\n};\n\nexport const description = updateDisplayOptions(displayOptions, properties);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA2D;AAE3D,mBAAkC;AAClC,oBAAsD;AAEtD,MAAM,aAAgC;AAAA,EACrC;AAAA,IACC,GAAG;AAAA,IACH,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,GAAG;AAAA,IACH,aAAa;AAAA,IACb,gBAAgB;AAAA,MACf,MAAM;AAAA,QACL,GAAG;AAAA,MACJ;AAAA,IACD;AAAA,EACD;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAU;AAAA,IACV,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aACC;AAAA,IACD,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,SAAS;AAAA,MACR,MAAM;AAAA,QACL,SAAS,CAAC,8BAAiB;AAAA,MAC5B;AAAA,IACD;AAAA,IACA,MAAM;AAAA,EACP;AACD;AAEA,MAAM,iBAAiB;AAAA,EACtB,MAAM;AAAA,IACL,UAAU,CAAC,MAAM;AAAA,IACjB,WAAW,CAAC,QAAQ;AAAA,EACrB;AACD;AAEO,MAAM,kBAAc,0CAAqB,gBAAgB,UAAU;","names":[]}
|
|
@@ -68,7 +68,7 @@ const description = [
|
|
|
68
68
|
{
|
|
69
69
|
name: "Create or Update",
|
|
70
70
|
value: "upsert",
|
|
71
|
-
description: "Create a new
|
|
71
|
+
description: "Create a new item, or update the current one if it already exists (upsert)",
|
|
72
72
|
routing: {
|
|
73
73
|
request: {
|
|
74
74
|
method: "POST",
|