Commit graph

1059 commits

Author SHA1 Message Date
कारतोफ्फेलस्क्रिप्ट™ 3b969d2cd1
fix(Move Binary Data Node): Stringify objects before encoding them in MoveBinaryData (#4882)
* stringify objects before encoding them objects in MoveBinaryData

* add fileSize and fileType on MoveBinaryData converted data

* show `view` option for text files as well

* improve how JSON binary data is shown in the UI
2022-12-11 14:10:54 +01:00
Jan Oberhauser 5eadb94fb0 🔖 Release n8n-nodes-base@0.204.1 2022-12-07 11:46:00 +00:00
Jan Oberhauser 7d869ec3fa ⬆️ Set n8n-core@0.146.1 and n8n-workflow@0.128.1 on n8n-nodes-base 2022-12-07 11:46:00 +00:00
Jan Oberhauser f6374db31a 🔖 Release n8n-nodes-base@0.204.0 2022-12-06 19:46:44 +00:00
Jan Oberhauser 2a2b9fa84f ⬆️ Set n8n-core@0.146.0 and n8n-workflow@0.128.0 on n8n-nodes-base 2022-12-06 19:46:44 +00:00
Iván Ovejero cfd32d2642
refactor: Phase out TSLint in nodes-base (no-changelog) (#4798)
* 🔥 Remove TSLint scripts

* 🔥 Remove TSLint config

* 🔥 Remove TSLint exceptions

* 👕 Adjust lint config

* ✏️ Add story numbers
2022-12-02 15:25:21 +01:00
Jan Oberhauser 0cd1fe06c0 🔖 Release n8n-nodes-base@0.203.0 2022-12-02 09:13:31 +00:00
Jan Oberhauser fcabb4231a ⬆️ Set n8n-core@0.145.0 and n8n-workflow@0.127.0 on n8n-nodes-base 2022-12-02 09:13:31 +00:00
Iván Ovejero cc7f8fd5de
refactor: Apply lint rule cred-class-field-display-name-miscased (#4762)
* 👕 Apply lint rule `cred-class-field-display-name-miscased`

*  Update `pnpm-lock.yaml`

* 🙈 Update `.prettierignore`
2022-11-30 15:31:44 +01:00
Jan Oberhauser bfaf04f463 🔖 Release n8n-nodes-base@0.202.0 2022-11-24 15:44:23 +00:00
Jan Oberhauser f924c81a51 ⬆️ Set n8n-core@0.144.0 and n8n-workflow@0.126.0 on n8n-nodes-base 2022-11-24 15:44:23 +00:00
कारतोफ्फेलस्क्रिप्ट™ b6c57e19fc
feat(core): Lazy-load nodes and credentials to reduce baseline memory usage (#4577) 2022-11-23 16:20:28 +01:00
Iván Ovejero eafef019d7
fix: Expand nodes-base formatting validation (no-changelog) (#4689)
*  Simplify `format` command

* 🎨 Format more deeply nested files
2022-11-22 13:43:28 +01:00
Iván Ovejero 60d66426ff
refactor: Validate formatting in nodes-base (no-changelog) (#4685)
* 🔥 Remove Prettier exceptions

* 👕 Start linting on formatting

*  Update `format` command

* 🎨 Apply formatting
2022-11-22 12:44:35 +01:00
Jan Oberhauser 5ac8c34ae9 🔖 Release n8n-nodes-base@0.201.1 2022-11-18 13:11:25 +00:00
Jan Oberhauser 0ade24dfaf 🔖 Release n8n-nodes-base@0.201.0 2022-11-17 16:27:13 +00:00
Jan Oberhauser a0c2e527e4 ⬆️ Set n8n-core@0.143.0 and n8n-workflow@0.125.0 on n8n-nodes-base 2022-11-17 16:27:12 +00:00
कारतोफ्फेलस्क्रिप्ट™ 0148631d28
build: Upgrade some of the backend dev-tooling (no-changelog) (#4589)
* upgrade ts-node

* move tslint and typescript to a single place

* source-map-support should be loaded in the `n8n` bin script, and not in core

* upgrade jest

* Support only node.js 14, 16, or 18
2022-11-14 15:37:32 +01:00
Jan Oberhauser 4a484af986 🔖 Release n8n-nodes-base@0.200.1 2022-11-10 20:54:06 +00:00
Jan Oberhauser 2723e3ea15 ⬆️ Set n8n-core@0.142.1 and n8n-workflow@0.124.1 on n8n-nodes-base 2022-11-10 20:54:05 +00:00
Jan Oberhauser 05c479968c 🔖 Release n8n-nodes-base@0.200.0 2022-11-10 15:44:15 +00:00
Jan Oberhauser 005d1dd46e ⬆️ Set n8n-core@0.142.0 and n8n-workflow@0.124.0 on n8n-nodes-base 2022-11-10 15:44:12 +00:00
कारतोफ्फेलस्क्रिप्ट™ 736777385c
feat: Switch from npm to pnpm (#4429) 2022-11-09 17:32:05 +01:00
कारतोफ्फेलस्क्रिप्ट™ 1c98f97e9e
ci: Revert support for node.js 18 (#4518) (#4537)
Revert "ci: Start supporting node.js 18 (#4518)"

This reverts commit 9ee292cd17.
2022-11-07 17:23:08 +01:00
कारतोफ्फेलस्क्रिप्ट™ 9ee292cd17
ci: Start supporting node.js 18 (#4518)
* ci: start supporting node.js 18

Node.js 18 becomes the active LTS on 2022-10-25, as Node.js 16 goes into maintenance mode.
https://github.com/nodejs/Release#release-schedule

* continue using node 16 for production images

* node 16 for debian and base images as well for now
2022-11-07 15:51:57 +01:00
Jan Oberhauser 747b496ce1 🔖 Release n8n-nodes-base@0.199.0 2022-11-02 17:25:43 +00:00
Jan Oberhauser cd445ce689 ⬆️ Set n8n-core@0.141.0 and n8n-workflow@0.123.0 on n8n-nodes-base 2022-11-02 17:25:42 +00:00
Iván Ovejero 1c229a7b52
refactor(core): apply lint rule cred-class-field-unobscured-sensitive-input (#4495)
* ⬆️ Upgrade linter

* 📦 Update `package-lock.json`

* 👕 Enable rule

* 👕 Apply rule

* 📦 Re-update `package-lock.json`
2022-11-01 17:41:45 +01:00
Jan Oberhauser 3f9089a1da 🔖 Release n8n-nodes-base@0.198.1 2022-10-28 14:21:49 +00:00
Jan Oberhauser 9800123634 ⬆️ Set n8n-core@0.140.1 and n8n-workflow@0.122.1 on n8n-nodes-base 2022-10-28 14:21:49 +00:00
Jan Oberhauser 4b0ba8fe29 🔖 Release n8n-nodes-base@0.198.0 2022-10-27 14:31:01 +00:00
Jan Oberhauser f8826226a3 ⬆️ Set n8n-core@0.140.0 and n8n-workflow@0.122.0 on n8n-nodes-base 2022-10-27 14:31:01 +00:00
कारतोफ्फेलस्क्रिप्ट™ 99157cf581
feat: setup nightly tests for postgres and mysql schemas (#4441)
* feat: unify Jest config

* feat: simplify DB setup for tests

* feat: setup nightly tests for postgres and mysql schemas
2022-10-25 22:06:03 +02:00
कारतोफ्फेलस्क्रिप्ट™ 5c9b40117a
refactor: rename NodeVersionedType to VersionedNodeType and move it to the workflow package (#4443) 2022-10-25 21:33:12 +02:00
Jan Oberhauser c6a9477fab 🔖 Release n8n-nodes-base@0.197.0 2022-10-21 05:45:10 +00:00
Jan Oberhauser e63ef8870a ⬆️ Set n8n-core@0.139.0 and n8n-workflow@0.121.0 on n8n-nodes-base 2022-10-21 05:45:10 +00:00
OlegIvaniv dae01f3abe
feat(editor, core, cli): implement new workflow experience (#4358)
* feat(ExecuteWorkflowTrigger node): Implement ExecuteWorkflowTrigger node (#4108)

* feat(ExecuteWorkflowTrigger node): Implement ExecuteWorkflowTrigger node

* feat(editor): Do not show duplicate button if canvas contains `maxNodes` amount of nodes

* feat(ManualTrigger node): Implement ManualTrigger node (#4110)

* feat(ManualTrigger node): Implement ManualTrigger node

* 📝 Remove generics doc items from ManualTrigger node

* feat(editor-ui): Trigger tab redesign (#4150)

* 🚧 Begin with TriggerPanel implementation, add Other Trigger Nodes subcategory

* 🚧 Extracted categorized categories/subcategory/nodes rendering into its own component — CategorizedItems, removed SubcategoryPanel, added translations

*  Implement MainPanel background scrim

* ♻️ Move `categoriesWithNodes`, 'visibleNodeTypes` and 'categorizedItems` to store, implemented dynamic categories count based on `selectedType`

* 🐛 Fix SlideTransition for all the NodeCreato panels

* 💄 Fix cursos for CategoryItem and NodeItem

* 🐛 Make sure ALL_NODE_FILTER is always set when MainPanel is mounted

* 🎨 Address PR comments

* label: Use Array type for CategorizedItems props

* 🏷️ Add proper types for Vue props

* 🎨 Use standard component registration for CategorizedItems inside TriggerHelperPanel

* 🎨 Use kebab case for main-panel and icon component

* 🏷️ Improve types

* feat(editor-ui): Redesign search input inside node creator panel (#4204)

* 🚧 Begin with TriggerPanel implementation, add Other Trigger Nodes subcategory

* 🚧 Extracted categorized categories/subcategory/nodes rendering into its own component — CategorizedItems, removed SubcategoryPanel, added translations

*  Implement MainPanel background scrim

* ♻️ Move `categoriesWithNodes`, 'visibleNodeTypes` and 'categorizedItems` to store, implemented dynamic categories count based on `selectedType`

* 🐛 Fix SlideTransition for all the NodeCreato panels

* 💄 Fix cursos for CategoryItem and NodeItem

* 🐛 Make sure ALL_NODE_FILTER is always set when MainPanel is mounted

* 🎨 Address PR comments

* label: Use Array type for CategorizedItems props

* 🏷️ Add proper types for Vue props

* 🎨 Use standard component registration for CategorizedItems inside TriggerHelperPanel

*  Redesign search input and unify usage of categorized items

* 🏷️ Use lowercase "Boolean" as `isSearchVisible` computed return type

* 🔥 Remove useless emit

*  Implement no result view based on subcategory, minor fixes

* 🎨 Remove unused properties

* feat(node-email): Change EmailReadImap display name and name (#4239)

* feat(editor-ui):  Implement "Choose a Triger" action and related behaviour (#4226)

*  Implement "Choose a Triger" action and related behaviour

* 🔇 Lint fix

* ♻️ Remove PlaceholderTrigger node, add a button instead

* 🎨 Merge onMouseEnter and onMouseLeave to a single function

* 💡 Add comment

* 🔥 Remove PlaceholderNode registration

* 🎨 Rename TriggerPlaceholderButton to CanvasAddButton

*  Add method to unregister custom action and rework CanvasAddButton centering logic

* 🎨 Run `setRecenteredCanvasAddButtonPosition` on `CanvasAddButton` mount

* fix(editor): Fix selecting of node from node-creator panel by clicking

* 🔀 Merge fixes

* fix(editor): Show execute workflow trigger instead of workflow trigger in the trigger helper panel

* feat(editor): Fix node creator panel slide transition (#4261)

* fix(editor): Fix node creator panel slide-in/slide-out transitions

* 🎨 Fix naming

* 🎨 Use kebab-case for transition component name

* feat(editor): Disable execution and show notice when user tries to run workflow without enabled triggers

* fix(editor): Address first batch of new WF experience review (#4279)

* fix(editor): Fix first batch of review items

* bug(editor): Fix nodeview canvas add button centering

* 🔇 Fix linter errors

* bug(ManualTrigger Node): Fix manual trigger node execution

* fix(editor): Do not show canvas add button in execution or demo mode and prevent clicking if creator is open

* fix(editor): do not show pin data tooltip for manual trigger node

* fix(editor): do not use nodeViewOffset on zoomToFit

* 💄 Add margin for last node creator item and set font-weight to 700 for category title

*  Position welcome note next to the added trigger node

* 🐛 Remve always true welcome note

* feat(editor): Minor UI and UX tweaks (#4328)

* 💄 Make top viewport buttons less prominent

*  Allow user to switch to all tabs if it contains filter results, move nodecreator state props to its own module

* 🔇 Fix linting errors

* 🔇 Fix linting errors

* 🔇 Fix linting errors

* chore(build): Ping Turbo version to 1.5.5

* 💄 Minor traigger panel and node view style changes

* 💬 Update display name of execute workflow trigger

* feat(core, editor): Update subworkflow execution logic (#4269)

*  Implement `findWorkflowStart`

*  Extend `WorkflowOperationError`

*  Add `WorkflowOperationError` to toast

* 📘 Extend interface

*  Add `subworkflowExecutionError` to store

*  Create `SubworkflowOperationError`

*  Render subworkflow error as node error

* 🚚 Move subworkflow start validation to `cli`

*  Reset subworkflow execution error state

* 🔥 Remove unused import

*  Adjust CLI commands

* 🔥 Remove unneeded check

* 🔥 Remove stray log

*  Simplify syntax

*  Sort in case both Start and EWT present

* ♻️ Address Omar's feedback

* 🔥 Remove unneeded lint exception

* ✏️ Fix copy

* 👕 Fix lint

* fix: moved find start node function to catchable place

Co-authored-by: Omar Ajoue <krynble@gmail.com>

* 💄 Change ExecuteWorkflow node to primary

*  Allow user to navigate to all tab if it contains search results

* 🐛 Fixed canvas control button while in demo, disable workflow activation for non-activavle nodes and revert zoomToFit bottom offset

* :fix: Do not chow request text if there's results

* 💬 Update noResults text

Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
Co-authored-by: Omar Ajoue <krynble@gmail.com>
2022-10-18 14:23:22 +02:00
agobrech 128c3b83df
feat(Node): add the Scheduler Node (#4223)
*  Create Schedule node with MVP structure

*  Add 24 increments for hours picker

* 🚨  Lintfix

* Add timestamp, add hour minute and cron expression

* Fix bug where there was one extra interval object

* Fix default value from fixedCollection

* 🐛 UI fixes

* 🎨 Changed logic to reflect UI fixes

* Fix auto intitialising

* Deprecated interval and cron in favor of schedule node

* 🐛 Ui fixes

* 🐛 Fix issue with week intervals

* 🚨 Lint fixes

* change order of days in the week to chronological order
2022-10-18 13:59:17 +02:00
Michael Kret 638d6f60d3
feat(Compare Node): new node to compare two inputs 2022-10-18 14:10:18 +03:00
Jan Oberhauser ce0b6477e9 🔖 Release n8n-nodes-base@0.196.0 2022-10-14 05:47:46 +00:00
Jan Oberhauser 9701aff1df ⬆️ Set n8n-core@0.138.0 and n8n-workflow@0.120.0 on n8n-nodes-base 2022-10-14 05:47:46 +00:00
Iván Ovejero 1db4fa2bf8
feat(Code Node): create Code node (#3965)
* Introduce node deprecation (#3930)

 Introduce node deprecation

* 🚧 Scaffold out Code node

* 👕 Fix lint

* 📘 Create types file

* 🚚 Rename theme

* 🔥 Remove unneeded prop

*  Override keybindings

*  Expand lintings

*  Create editor content getter

* 🚚 Ensure all helpers use `$`

*  Add autocompletion

*  Filter out welcome note node

*  Convey error line number

*  Highlight error line

*  Restore logging from node

*  More autocompletions

*  Streamline completions

* ✏️ Update placeholders

*  Update linter to new methods

* 🔥 Remove `$nodeItem` completions

*  Re-update placeholders

* 🎨 Fix formatting

* 📦 Update `package-lock.json`

*  Refresh with multi-line empty string

*  Account for syntax errors

* 🔥 Remove unneeded variant

*  Minor improvements

*  Add more autocompletions

* 🚚 Rename extension

* 🔥 Remove outdated comments

* 🚚 Rename field

*  More autocompletions

*  Fix up error display when empty text

* 🔥 Remove logging

*  More error validation

* 🐛 Fix `pairedItem` to `pairedItem()`

*  Add item to validation info

* 📦 Update `package-lock.json`

*  Leftover fixes

*  Set `insertNewlineAndIndent`

* 📦 Update `package-lock.json`

* 📦 Re-update `package-lock.json`

* 👕 Add lint exception

* 📘 Add type to mixin type

* Clean up comment

*  Refactor completion per new requirements

*  Adjust placeholders

*  Add `json` autocompletions for `$input`

* 🎨 Set border

*  Restore local completion source

*  Implement autocompletion for imports

*  Add `.*` to follow user typing on autocompletion

* 📘 Fix typings in autocompletions

* 👕 Add linting for use of `item()`

* 📦 Update `package-lock.json`

* 🐛 Fix for `$items(nodeName)[0]`

*  Filter down built-in modules list

*  Refactor error handling

*  Linter and validation improvements

*  Apply review feedback

* ♻️ More general refactorings

*  Add dot notation utility

* Customize input handler

*  Support `.json.` completions

*  Adjust placeholder

*  Sort imports

* 🔥 Remove blank rows addition

*  Add more error validation

* 📦 Update `package-lock.json`

*  Make date logging consistent

* 🔧 Adjust linting highlight range

*  Add line numbers to each item mode errors

*  Allow for links in error descriptions

*  More input validation

*  Expand linting to loops

*  Deprecate Function and Function Item nodes

* 🐛 Fix placeholder syntax

* 📘 Narrow down type

* 🚚 Rename using kebab-case

* 🔥 Remove `mapGetters`

* ✏️ Fix casing

*  Adjust import for type

* ✏️ Fix quotes

* 🐛 Fix `activeNode` reference

*  Use constant

* 🔥 Remove logging

* ✏️ Fix typo

*  Add missing `notice`

* ✏️ Add tags

* ✏️ Fix alias

* ✏️ Update copy

* 🔥 Remove wrong linting

* ✏️ Update copy

*  Add validation for `null`

*  Add validation for non-object and non-array

*  Add validation for non-array with json

* ✏️ Intentionally use wrong spelling

*  More validation

* ✏️ More copy updates

* ✏️ Placeholder updates

*  Restore spelling

*  Fix var name

* ✏️ More copy updates

*  Add luxon autocompletions

*  Make scrollable

*  Fix comma from merge conflict resolution

* 📦 Update `package-lock.json`

* 👕 Fix lint detail

* 🎨 Set font family

*  Bring in expressions fix

* ♻️ Address feedback

*  Exclude codemirror packages from render chunks

* 🐛 Fix placeholder not showing on first load

* feat(editor-ui): Replace `lezer` with `esprima` in client linter (#4192)

* 🔥 Remove addition from misresolved conflict

*  Replace `lezer` with `esprima` in client linter

*  Add missing key

* 📦 Update `package-lock.json`

*  Match dependencies

* 📦 Update `package-lock.json`

* 📦 Re-update `package-lock.json`

*  Match whitespace

* 🐛 Fix selection

*  Expand validation

* 🔥 Remove validation

* ✏️ Update copy

* 🚚 Move to constants

*  More `null` validation

*  Support `all()` with index to access item

*  Gloss over n8n syntax error

* 🎨 Re-style diagnostic button

* 🔥 Remove `item` as `itemAlias`

*  Add linting for `item.json` in single item mode

*  Refactor to add label info descriptions

*  More autocompletions

* 👕 Fix lint

*  Simplify typings

* feat(nodes-base): Multiline autocompletion for `code-node-editor` (#4220)

*  Simplify typings

*  Consolidate helpers in utils

*  Multiline autocompletion for standalone vars

* 🔥 Remove unneeded mixins

* ✏️ Update copy

* ✏️ Prep TODOs

*  Multiline completion for `$input.method` + `$input.item`

* 🔥 Remove unused method

* 🔥 Remove another unused method

* 🚚 Move luxon strings to helpers

*  Multiline autocompletion for methods output

*  Refactor to use optional chaining

* 👕 Fix lint

* ✏️ Update TODOs

*  Multiline autocompletion for `json` fields

* 📘 Add typings

*  De-duplicate callback to forEach

* 🐛 Fix autocompletions not working with leading whitespace

* 🌐 Apply i18n

* 👕 Fix lint

* :constructor: Second-period var usage completions

* 👕 Fix lint

* 👕 Add exception

*  Add completion telemetry

* 📘 Add typing

*  Major refactoring to organize

* 🐛 Fix multiline `.all()[index]`

* 🐛 Do not autoclose square brackets prior to `.json`

* 🐛 Fix accessor for multiline `jsonField` completions

*  Add completions for half-assignments

* 🐛 Fix `jsonField` completions for `x.json`

* ✏️ Improve comments

* 🐛 Fix `.json[field]` for multiline matches

*  Cleanup

* 📦 Update `package-lock.json`

* 👕 Fix lint

* 🐛 Rely on original value for custom matcher

*  Create `customMatcherJsonFieldCompletions` to simplify setup

* 🐛 Include selector in `customMatcherJsonField` completions

* ✏️ Make naming consistent

* ✏️ Add docline

*  Finish self-review cleanup

* 🔥 Remove outdated comment

* 📌 Pin luxon to major-minor

* ✏️ Fix typo

* 📦 Update `package-lock.json`

* 📦 Update `package-lock.json`

* 📦 Re-update `package-lock.json`

*  Add `luxon` for Gmail node

* 📦 Update `package-lock.json`

*  Replace Function with Code in suggested nodes

* 🐛 Fix `$prevNode` completions

* ✏️ Update `$execution.mode` copy

*  Separate luxon getters from methods

*  Adjusting linter to tolerate `.binary`

*  Adjust top-level item keys check

*  Anticipate user expecting `item` to pre-exist

*  Add linting for legacy item access

*  Add hint for attempted `items` access

*  Add keybinding for toggling comments

* ✏️ Update copy of `all`, `first`, `last` and `itemMatching`

* 🐛 Make `input.all()` etc act on copies

* 📦 Update `package-lock.json`

* 🐛 Fix guard in `$input.last()`

* ♻️ Address Jan's feedback

* ⬆️ Upgrade `eslint-plugin-n8n-nodes-base`

* 📦 Update `package-lock.json`

* 🔥 Remove unneeded exceptions

*  Restore placeholder logic

*  Add placeholders to client

*  Account for shadow item

* ✏️ More completion info labels

* 👕 Fix lint

* ✏️ Update copy

* ✏️ Update copy

* ✏️ More copy updates

* 📦 Update `package-lock.json`

*  Add more validation

*  Add placheolder on first load

* Replace `Cmd` with `Mod`

* 📦 Update `package-lock.json`
2022-10-13 14:28:02 +02:00
Iván Ovejero 27d04062f5
refactor(core): integrate lint rule node-param-name-untrimmed (#4331)
* ⬆️ Upgrade `eslint-plugin-n8n-nodes-base`

* 📦 Update `package-lock.json`

* 👕 Add `node-param-name-untrimmed`

Co-authored-by: Michael Kret <michael.k@radency.com>
2022-10-13 09:19:17 +02:00
Ricardo Espinoza 7a2e5bde90
feat(Venafi TLS Protect Cloud Trigger Node): add Venafi TLS Protect Cloud Trigger (#4288)
*  Add Venafi webhook trigger

* Fix typo
2022-10-11 10:07:36 -04:00
Jan Oberhauser 9295841983 🔖 Release n8n-nodes-base@0.195.1 2022-10-10 12:25:50 +00:00
Jan Oberhauser 7949a22b64 🔖 Release n8n-nodes-base@0.195.0 2022-10-10 08:32:53 +00:00
Jan Oberhauser daf8132c35 ⬆️ Set n8n-core@0.137.0 and n8n-workflow@0.119.0 on n8n-nodes-base 2022-10-10 08:32:53 +00:00
Ricardo Espinoza d36e920997
feat(Venafi TLS Protect Cloud): add Venafi TLS Protect Cloud (#4253)
*  Venafi TTL Protect Cloud

*  Improvements

*  Add authenticate generic type

*  Add paired items

*  Add codex

*  Update package.json
2022-10-07 09:48:45 -04:00
Ricardo Espinoza 7abc7e6408
feat(Citrix ADC): add Citrix ADC node (#4274)
*  Citrix ADC node

* 🐛 Fix typo in codex file

*  Remove trailing slash if there is one

*  Add certificate resource

* 🐛 Fix merge conflict issue
2022-10-07 09:10:02 -04:00
Ricardo Espinoza 9b3f30d584
feat(AWS Certificate Manager): add AWS Certificate Manager node (#4263)
*  AWS Certificate Manager

*  Add codex and paired items

*  Add codex

* 🐛 Fix typo
2022-10-07 09:08:55 -04:00