Iván Ovejero
63b6c9f128
refactor: Apply more eslint-plugin-n8n-nodes-base
autofixable rules ( #3243 )
...
* ✏️ Alphabetize rules
* 🔖 Update version
* ⚡ Update lintfix command
* ⚡ Run baseline lintfix
* 📦 Update package-lock.json
* 👕 Apply `node-param-description-untrimmed` (#3200 )
* Removing unneeded backticks (#3249 )
* 👕 Apply node-param-description-wrong-for-return-all (#3253 )
* 👕 Apply node-param-description-missing-limit (#3252 )
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
* 👕 Apply node-param-description-excess-final-period (#3250 )
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
* 👕 Apply node-param-description-unencoded-angle-brackets (#3256 )
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
* 👕 Apply node-param-description-url-missing-protocol (#3258 )
* 👕 Apply `node-param-description-miscased-id` (#3254 )
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
* 👕 Apply node-param-description-wrong-for-limit (#3257 )
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
* 👕 Apply node-param-description-wrong-for-ignore-ssl-issues (#3261 )
* 👕 Apply rule
* ⚡ Restore lintfix script
* ⚡ Restore lintfix script
Co-authored-by: agobrech <45268029+agobrech@users.noreply.github.com>
Co-authored-by: Omar Ajoue <krynble@gmail.com>
Co-authored-by: Michael Kret <88898367+michael-radency@users.noreply.github.com>
2022-05-06 23:01:25 +02:00
Iván Ovejero
0448feec56
refactor: Apply eslint-plugin-n8n-nodes-base
autofixable rules ( #3174 )
...
* ⚡ Initial setup
* 👕 Update `.eslintignore`
* 👕 Autofix node-param-default-missing (#3173 )
* 🔥 Remove duplicate key
* 👕 Add exceptions
* 📦 Update package-lock.json
* 👕 Apply `node-class-description-inputs-wrong-trigger-node` (#3176 )
* 👕 Apply `node-class-description-inputs-wrong-regular-node` (#3177 )
* 👕 Apply `node-class-description-outputs-wrong` (#3178 )
* 👕 Apply `node-execute-block-double-assertion-for-items` (#3179 )
* 👕 Apply `node-param-default-wrong-for-collection` (#3180 )
* 👕 Apply node-param-default-wrong-for-boolean (#3181 )
* Autofixed default missing
* Autofixed booleans, worked well
* ⚡ Fix params
* ⏪ Undo exempted autofixes
* 📦 Update package-lock.json
* 👕 Apply node-class-description-missing-subtitle (#3182 )
* ⚡ Fix missing comma
* 👕 Apply `node-param-default-wrong-for-fixed-collection` (#3184 )
* 👕 Add exception for `node-class-description-missing-subtitle`
* 👕 Apply `node-param-default-wrong-for-multi-options` (#3185 )
* 👕 Apply `node-param-collection-type-unsorted-items` (#3186 )
* Missing coma
* 👕 Apply `node-param-default-wrong-for-simplify` (#3187 )
* 👕 Apply `node-param-description-comma-separated-hyphen` (#3190 )
* 👕 Apply `node-param-description-empty-string` (#3189 )
* 👕 Apply `node-param-description-excess-inner-whitespace` (#3191 )
* Rule looks good
* Add whitespace rule in eslint config
* :zao: fix
* 👕 Apply `node-param-description-identical-to-display-name` (#3193 )
* 👕 Apply `node-param-description-missing-for-ignore-ssl-issues` (#3195 )
* ⏪ Revert ":zao: fix"
This reverts commit ef8a76f3df
.
* 👕 Apply `node-param-description-missing-for-simplify` (#3196 )
* 👕 Apply `node-param-description-missing-final-period` (#3194 )
* Rule working as intended
* Add rule to eslint
* 👕 Apply node-param-description-missing-for-return-all (#3197 )
* ⚡ Restore `lintfix` command
Co-authored-by: agobrech <45268029+agobrech@users.noreply.github.com>
Co-authored-by: Omar Ajoue <krynble@gmail.com>
Co-authored-by: agobrech <ael.gobrecht@gmail.com>
Co-authored-by: Michael Kret <michael.k@radency.com>
2022-04-22 18:29:51 +02:00
Omar Ajoue
d3fecb9f6d
🎨 Centralize error throwing for encryption keys and credentials ( #3105 )
...
* Centralized error throwing for encryption key
* Unifying the error message used by cli and core packages
* Improvements to error messages to make it more DRY
* Removed unnecessary throw
* Throwing error when credential does not exist to simplify node behavior (#3112 )
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
2022-04-15 08:00:47 +02:00
Iván Ovejero
027dfb2f0a
⚡ Enable esModuleInterop
compiler option and upgrade to TypeScript 4.6 ( #3106 )
...
* ⚡ Enable `esModuleInterop` for /core
* ⚡ Adjust imports in /core
* ⚡ Enable `esModuleInterop` for /cli
* ⚡ Adjust imports in /cli
* ⚡ Enable `esModuleInterop` for /nodes-base
* ⚡ Adjust imports in /nodes-base
* ⚡ Make imports consistent
* ⬆️ Upgrade TypeScript to 4.6 (#3109 )
* ⬆️ Upgrade TypeScript to 4.6
* 📦 Update package-lock.json
* 🔧 Avoid erroring on untyped errors
* 📘 Fix type error
Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
2022-04-08 23:32:08 +02:00
Harshil Agrawal
9335ee5deb
⚡ Update Codex files ( #2797 )
2022-02-11 13:20:42 +01:00
Ricardo Espinoza
9639742cc6
🐛 Keep BCC headers when sending email - Gmail node ( #2721 )
...
* 🐛 Keep BCC headers when sending email
* ⚡ Fix typo
Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
2022-01-27 21:25:32 +01:00
Iván Ovejero
26eac80d49
⚡ Parse single-line private key for Google service account ( #2132 )
...
* ⚡ Parse single-line private key
* ✏️ Update description and placeholder
* ⚡ Some improvements
Co-authored-by: Jan Oberhauser <janober@users.noreply.github.com>
Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
2021-12-24 16:12:18 +01:00
Jan Oberhauser
185bc04436
⚡ Automatically remove new lines from Google credentials
2021-12-24 10:48:23 +01:00
Iván Ovejero
2b74b6238e
⚡ Deprecate step size and node color ( #2586 )
...
* 🔥 Deprecate numberStepSize
* 🔥 Deprecate color in non-FA nodes
* ⚡ Minor node name fixes
* 📦 Update package-lock.json
* ⏪ Restore Merge node color
* 👕 Fix lint
2021-12-23 13:30:35 +01:00
Iván Ovejero
a783288338
⚡ Enforce type checking in all node params ( #2509 )
2021-12-03 09:44:16 +01:00
Iván Ovejero
0764c49dcf
🔥 Remove line breaks from param descriptions ( #2473 )
...
* 🔥 Remove line breaks from param descriptions
* 🔥 Remove more line breaks
* 🎨 Fix spacing for list item in tooltip
* ⚡ Apply multiline with <p> tags
* ⚡ Improve <code> and <a> tags
* ✏️ Improve grammar and spelling
* ⚡ Add missing <p> tags
* ✏️ Make "multiple" phrasing consistent
* ⚡ Fix unneeded quote escapes
* ⚡ Encode angle brackets
* ⚡ Fix typo and copy-paste artifact
2021-11-25 18:10:06 +01:00
Mutasem Aldmour
ce066a160f
⚡ Remove unnessasry <br/> ( #2340 )
...
* introduce analytics
* add user survey backend
* add user survey backend
* set answers on survey submit
Co-authored-by: Mutasem Aldmour <4711238+mutdmour@users.noreply.github.com>
* change name to personalization
* lint
Co-authored-by: Mutasem Aldmour <4711238+mutdmour@users.noreply.github.com>
* N8n 2495 add personalization modal (#2280 )
* update modals
* add onboarding modal
* implement questions
* introduce analytics
* simplify impl
* implement survey handling
* add personalized cateogry
* update modal behavior
* add thank you view
* handle empty cases
* rename modal
* standarize modal names
* update image, add tags to headings
* remove unused file
* remove unused interfaces
* clean up footer spacing
* introduce analytics
* refactor to fix bug
* update endpoint
* set min height
* update stories
* update naming from questions to survey
* remove spacing after core categories
* fix bug in logic
* sort nodes
* rename types
* merge with be
* rename userSurvey
* clean up rest api
* use constants for keys
* use survey keys
* clean up types
* move personalization to its own file
Co-authored-by: ahsan-virani <ahsan.virani@gmail.com>
* update parameter inputs to be multiline
* update spacing
* Survey new options (#2300 )
* split up options
* fix quotes
* remove unused import
* refactor node credentials
* add user created workflow event (#2301 )
* update multi params
* simplify env vars
* fix versionCli on FE
* update personalization env
* clean up node detail settings
* fix event User opened Credentials panel
* fix font sizes across modals
* clean up input spacing
* fix select modal spacing
* increase spacing
* fix input copy
* fix webhook, tab spacing, retry button
* fix button sizes
* fix button size
* add mini xlarge sizes
* fix webhook spacing
* fix nodes panel event
* fix workflow id in workflow execute event
* improve telemetry error logging
* fix config and stop process events
* add flush call on n8n stop
* ready for release
* fix input error highlighting
* revert change
* update toggle spacing
* fix delete positioning
* keep tooltip while focused
* set strict size
* increase left spacing
* fix sort icons
* remove unnessasry <br/>
* remove unnessary break
* remove unnessary margin
* clean unused functionality
* remove unnessary css
* remove duplicate tracking
* only show tooltip when hovering over label
* remove extra space
* add br
* remove extra space
* clean up commas
* clean up commas
* remove extra space
* remove extra space
* rewrite desc
* add commas
* add space
* remove extra space
* add space
* add dot
* update credentials section
* use includes
Co-authored-by: ahsan-virani <ahsan.virani@gmail.com>
Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
2021-10-27 15:00:13 -05:00
Omar Ajoue
7ce7285f7a
⚡ Load credentials from the database ( #1741 )
...
* Changes to types so that credentials can be always loaded from DB
This first commit changes all return types from the execute functions
and calls to get credentials to be async so we can use await.
This is a first step as previously credentials were loaded in memory and
always available. We will now be loading them from the DB which requires
turning the whole call chain async.
* Fix updated files
* Removed unnecessary credential loading to improve performance
* Fix typo
* ⚡ Fix issue
* Updated new nodes to load credentials async
* ⚡ Remove not needed comment
Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
2021-08-20 18:57:30 +02:00
Ricardo Espinoza
f372459ecc
⚡ Add sender name parameter to Gmail Node ( #2038 )
...
* ⚡ Add sender name parameter
* ⚡ Small description improvement
Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
2021-07-30 16:26:57 +02:00
Omar Ajoue
d6239d5bfb
⚡ Add full continue-on-fail support to all nodes ( #1996 )
...
* Update Compression node
* Update Crypto node
* Update DateTime node
* Update EditImage node
* Update EmailSend node
* Update ExecuteWorkflow node
* Update FTP node
* Update Function node
* Update FunctionItem node
* Update ExecuteCommand node
* Update OpenWeatherMap node
* Update ReadBinaryFile node
* Update ReadPdf node
* Update RssFeedRead node & add URL validation
* Update SpreadsheetFile node
* Update Switch node
* Update WriteBinaryFile node
* Update Xml node
* Update ActiveCampaign node
* Update Airtable node
* Update ApiTemplateIo node
* Update Asana node
* Update AwsLambda node
* Update AwsSns node
* Update AwsComprehend node
* Update AwsRekognition node
* Update AwsS3 node
* Fix Error item
* Update AwsSes node
* Update AwsSqs node
* Update Amqp node
* Update Bitly node
* Update Box node
* Update Brandfetch node
* Update CircleCi node
* Update Clearbit node
* Update ClickUp node
* Update Cockpit node
* Update CoinGecko node
* Update Contentful node
* Update ConvertKit node
* Update Cortex node
* Update CustomerIo node
* Update DeepL node
* Update Demio node
* Update Disqus node
* Update Drift node
* Update Dropbox node
* Update GetResponse node
* Refactor & Update Ghost node
* Update Github node
* Update Gitlab node
* Update GoogleAnalytics node
* Update GoogleBooks node
* Update GoogleCalendar node
* Update GoogleDrive node
* Update Gmail node
* Update GoogleSheets node
* Update GoogleSlides node
* Update GoogleTasks node
* Update Gotify node
* Update GraphQL node
* Update HackerNews node
* Update Harvest node
* Update HtmlExtract node
* Update Hubspot node
* Update Hunter node
* Update Intercom node
* Update Kafka node
* Refactor & update Line node
* Update LinkedIn node
* Update Mailchimp node
* Update Mandrill node
* Update Matrix node
* Update Mautic node
* Update Medium node
* Update MessageBird node
* Update Mindee node
* Update Mocean node
* Update MondayCom node
* Update MicrosoftExcel node
* Update MicrosoftOneDrive node
* Update MicrosoftOutlook node
* Update Affinity node
* Update Chargebee node
* Update Discourse node
* Update Freshdesk node
* Update YouTube node
* Update InvoiceNinja node
* Update MailerLite node
* Update Mailgun node
* Update Mailjet node
* Update Mattermost node
* Update Nasa node
* Update NextCloud node
* Update OpenThesaurus node
* Update Orbit node
* Update PagerDuty node
* Update PayPal node
* Update Peekalink node
* Update Phantombuster node
* Update PostHog node
* Update ProfitWell node
* Refactor & Update Pushbullet node
* Update QuickBooks node
* Update Raindrop node
* Update Reddit node
* Update Rocketchat node
* Update S3 node
* Update Salesforce node
* Update SendGrid node
* Update SentryIo node
* Update Shopify node
* Update Signl4 node
* Update Slack node
* Update Spontit node
* Update Spotify node
* Update Storyblok node
* Refactor & Update Strapi node
* Refactor & Update Strava node
* Update Taiga node
* Refactor & update Tapfiliate node
* Update Telegram node
* Update TheHive node
* Update Todoist node
* Update TravisCi node
* Update Trello node
* Update Twilio node
* Update Twist node
* Update Twitter node
* Update Uplead node
* Update UProc node
* Update Vero node
* Update Webflow node
* Update Wekan node
* Update Wordpress node
* Update Xero node
* Update Yourls node
* Update Zendesk node
* Update ZohoCrm node
* Refactor & Update Zoom node
* Update Zulip node
* Update Clockify node
* Update MongoDb node
* Update MySql node
* Update MicrosoftTeams node
* Update Stackby node
* Refactor Discourse node
* Support corner-case in Github node update
* Support corner-case in Gitlab node update
* Refactor & Update GoogleContacts node
* Refactor Mindee node
* Update Coda node
* Lint fixes
* Update Beeminder node
* Update Google Firebase RealtimeDatabase node
* Update HelpScout node
* Update Mailcheck node
* Update Paddle node
* Update Pipedrive node
* Update Pushover node
* Update Segment node
* Refactor & Update Vonage node
* Added new conditions to warnings on execute batch cmd
* Added keep only properties flag
* Fixed code for keep only props
* Added dependencies for image editing
Co-authored-by: dali <servfrdali@yahoo.fr>
2021-07-20 08:58:54 +02:00
Iván Ovejero
07a3dbb372
⚡ Add status code for service account error ( #1707 )
2021-06-22 19:59:27 +02:00
Harshil Agrawal
440971673c
⚡ Add and update codex files ( #1834 )
...
* ✨ Add and update codex files
* 🔨 Fix codex format
* 🔨 Fix codex format for remaining files
2021-05-28 14:54:52 -05:00
Harshil Agrawal
f2ec7ec6ac
⚡ Add and update codex files ( #1719 )
2021-04-30 20:28:07 -05:00
Ricardo Espinoza
444fe64bc1
⚡ Handle comma separated binary properties (Gmail) ( #1711 )
2021-04-30 14:44:46 -05:00
Jan Oberhauser
d33dad7ebc
⚡ Optimize svgs
2021-04-17 17:23:59 +02:00
Konstantin Nosov
5e7f27d137
⚡ Optimize svg ( #1653 )
...
* add optimize-svg command to npm scripts
* run svgo over all svg assets in repo
2021-04-17 17:17:16 +02:00
Iván Ovejero
1d27a9e87e
✨ Improve node error handling ( #1309 )
...
* Add path mapping and response error interfaces
* Add error handling and throwing functionality
* Refactor error handling into a single function
* Re-implement error handling in Hacker News node
* Fix linting details
* Re-implement error handling in Spotify node
* Re-implement error handling in G Suite Admin node
* 🚧 create basic setup NodeError
* 🚧 add httpCodes
* 🚧 add path priolist
* 🚧 handle statusCode in error, adjust interfaces
* 🚧 fixing type issues w/Ivan
* 🚧 add error exploration
* 👔 fix linter issues
* 🔧 improve object check
* 🚧 remove path passing from NodeApiError
* 🚧 add multi error + refactor findProperty method
* 👔 allow any
* 🔧 handle multi error message callback
* ⚡ change return type of callback
* ⚡ add customCallback to MultiError
* 🚧 refactor to use INode
* 🔨 handle arrays, continue search after first null property found
* 🚫 refactor method access
* 🚧 setup NodeErrorView
* ⚡ change timestamp to Date.now
* 📚 Add documentation for methods and constants
* 🚧 change message setting
* 🚚 move NodeErrors to workflow
* ✨ add new ErrorView for Nodes
* 🎨 improve error notification
* 🎨 refactor interfaces
* ⚡ add WorkflowOperationError, refactor error throwing
* 👕 fix linter issues
* 🎨 rename param
* 🐛 fix handling normal errors
* ⚡ add usage of NodeApiError
* 🎨 fix throw new error instead of constructor
* 🎨 remove unnecessary code/comments
* 🎨 adjusted spacing + updated status messages
* 🎨 fix tab indentation
* ✨ Replace current errors with custom errors (#1576 )
* ⚡ Introduce NodeApiError in catch blocks
* ⚡ Introduce NodeOperationError in nodes
* ⚡ Add missing errors and remove incompatible
* ⚡ Fix NodeOperationError in incompatible nodes
* 🔧 Adjust error handling in missed nodes
PayPal, FileMaker, Reddit, Taiga and Facebook Graph API nodes
* 🔨 Adjust Strava Trigger node error handling
* 🔨 Adjust AWS nodes error handling
* 🔨 Remove duplicate instantiation of NodeApiError
* 🐛 fix strava trigger node error handling
* Add XML parsing to NodeApiError constructor (#1633 )
* 🐛 Remove type annotation from catch variable
* ✨ Add XML parsing to NodeApiError
* ⚡ Simplify error handling in Rekognition node
* ⚡ Pass in XML flag in generic functions
* 🔥 Remove try/catch wrappers at call sites
* 🔨 Refactor setting description from XML
* 🔨 Refactor let to const in resource loaders
* ⚡ Find property in parsed XML
* ⚡ Change let to const
* 🔥 Remove unneeded try/catch block
* 👕 Fix linting issues
* 🐛 Fix errors from merge conflict resolution
* ⚡ Add custom errors to latest contributions
* 👕 Fix linting issues
* ⚡ Refactor MongoDB helpers for custom errors
* 🐛 Correct custom error type
* ⚡ Apply feedback to A nodes
* ⚡ Apply feedback to missed A node
* ⚡ Apply feedback to B-D nodes
* ⚡ Apply feedback to E-F nodes
* ⚡ Apply feedback to G nodes
* ⚡ Apply feedback to H-L nodes
* ⚡ Apply feedback to M nodes
* ⚡ Apply feedback to P nodes
* ⚡ Apply feedback to R nodes
* ⚡ Apply feedback to S nodes
* ⚡ Apply feedback to T nodes
* ⚡ Apply feedback to V-Z nodes
* ⚡ Add HTTP code to iterable node error
* 🔨 Standardize e as error
* 🔨 Standardize err as error
* ⚡ Fix error handling for non-standard nodes
Co-authored-by: Ben Hesseldieck <b.hesseldieck@gmail.com>
Co-authored-by: Ben Hesseldieck <b.hesseldieck@gmail.com>
Co-authored-by: Ben Hesseldieck <1849459+BHesseldieck@users.noreply.github.com>
2021-04-16 18:33:36 +02:00
Harshil Agrawal
a503c0e86b
⚡ Add new codex files and fix previous files ( #1608 )
...
* ✨ Add new codex files and fixed previous files
* 🔨 Minor fix
* 🔨 Minor fix
2021-04-10 10:18:10 +02:00
MedAliMarz
e9bd518592
🐛 Fix Gmail label filters ( #1499 )
...
* Change array format in the qs stringify options
* Fix lint
2021-03-02 12:47:53 +01:00
Ricardo Espinoza
725b3eb408
🐛 Add the right scopes to Gmail service account authentication. ( #1481 )
...
* fix: request gmail scope instead of books
* ⚡ Small improvement to #1427
* ⚡ Add svg logo
Co-authored-by: Josh <jojo.parillon@gmail.com>
2021-02-28 17:27:52 +01:00
Harshil Agrawal
f258f3ca33
✨ Add Node Codex ( #1335 )
...
* ✨ Add Node Codex 📇
* ⚡ Add codex files for new nodes
* ⚡ Change category for Affinity
* 🔨 Fix credential documentation link
* ⚡ Improve styling
* ⚡ Add blogposts
Co-authored-by: Amudhan <sm.amudhan@live.com>
2021-01-14 13:56:07 +01:00
Ricardo Espinoza
76cee5577b
⚡ Extend googleApi credentials to support user impersonification ( #1304 )
...
* ⚡ Extend googleApi credentials to support user impersonification
* ⚡ Add service account authentication to Gmail
* ⚡ Minor improvements
Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
2021-01-10 20:49:47 +01:00
Omar Ajoue
143c8bd326
⚡ Allow Gmail node to send messages formatted as HTML ( #1285 )
...
* Allowing Gmail node to send messages formatted as HTML
* Improving message field description
* Fixing lint issues
* Adding missing trailing comma
* ⚡ Small improvements to GMail-Node
Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
2021-01-07 11:58:28 +01:00
Jan Oberhauser
8475923ebd
👕 Fix lint issue
2020-11-03 08:17:54 +01:00
Omar Ajoue
3650d3b3bf
🐛 Fixing issue with Gmail subject enconding ( #1121 )
...
Reported by community user huuich (https://community.n8n.io/t/gmail-integration-partly-created/693/12?u=jan )
An attempt to fix the problem using basic JS functions (escape / unescape
/ encoding / decoding) did not work, so I decided to use MailComposer
as suggested by Jan on Jira Issue PROD-575
2020-11-02 22:47:47 +01:00
Jan Oberhauser
546b79bea0
👕 Fix lint issue
2020-10-22 18:00:28 +02:00
Jan Oberhauser
40c2acd77b
👕 Fix lint issue
2020-10-22 15:46:03 +02:00
Jan Oberhauser
a4689fef8c
⚡ Add GMail email id to messages with format "resolved"
2020-10-15 10:41:47 +02:00
Jan Oberhauser
69a71c6eee
⚡ Optimize integration icons
2020-10-13 09:12:39 +02:00
Jan Oberhauser
fe802c8f76
👕 Fix built issue by fixing lint issues
2020-10-01 15:18:47 +02:00
Jan Oberhauser
ebc52acdbc
🐛 Fix Label-ID field
2020-09-02 13:05:43 +02:00
Rupenieks
b01621bc80
🐛 Fixed multiple labelIds not working on message -> getAll ( #916 )
2020-09-02 13:04:43 +02:00
Jan
fb042adae2
✨ Gmail node ( #856 )
...
* ✨ Gmail node
* ⚡ Improvements
* ⚡ Improvements
* ⚡ Improvements to Gmail-Node
* ⚡ Additional improvements to Gmail-Node
Co-authored-by: Erin <erin2722@gmail.com>
Co-authored-by: ricardo <ricardoespinoza105@gmail.com>
2020-08-18 12:40:19 +02:00