Ahmad Kholid 3 år sedan
förälder
incheckning
865ed1a357
100 ändrade filer med 104 tillägg och 80 borttagningar
  1. 1 0
      .gitignore
  2. 1 1
      package.json
  3. 0 0
      src/background/WorkflowLogger.js
  4. 0 0
      src/background/WorkflowState.js
  5. 3 3
      src/background/collectionEngine/flowHandler.js
  6. 3 3
      src/background/collectionEngine/index.js
  7. 8 8
      src/background/index.js
  8. 0 0
      src/background/messageListener.js
  9. 2 2
      src/background/workflowEngine/blocksHandler.js
  10. 1 1
      src/background/workflowEngine/blocksHandler/handlerActiveTab.js
  11. 0 0
      src/background/workflowEngine/blocksHandler/handlerBlocksGroup.js
  12. 0 0
      src/background/workflowEngine/blocksHandler/handlerBrowserEvent.js
  13. 0 0
      src/background/workflowEngine/blocksHandler/handlerClipboard.js
  14. 0 0
      src/background/workflowEngine/blocksHandler/handlerCloseTab.js
  15. 3 3
      src/background/workflowEngine/blocksHandler/handlerConditions.js
  16. 0 0
      src/background/workflowEngine/blocksHandler/handlerDelay.js
  17. 0 0
      src/background/workflowEngine/blocksHandler/handlerDeleteData.js
  18. 0 0
      src/background/workflowEngine/blocksHandler/handlerElementExists.js
  19. 1 1
      src/background/workflowEngine/blocksHandler/handlerExecuteWorkflow.js
  20. 1 1
      src/background/workflowEngine/blocksHandler/handlerExportData.js
  21. 0 0
      src/background/workflowEngine/blocksHandler/handlerForwardPage.js
  22. 0 0
      src/background/workflowEngine/blocksHandler/handlerGoBack.js
  23. 0 0
      src/background/workflowEngine/blocksHandler/handlerGoogleSheets.js
  24. 0 0
      src/background/workflowEngine/blocksHandler/handlerHandleDialog.js
  25. 0 0
      src/background/workflowEngine/blocksHandler/handlerHandleDownload.js
  26. 0 0
      src/background/workflowEngine/blocksHandler/handlerHoverElement.js
  27. 1 1
      src/background/workflowEngine/blocksHandler/handlerInsertData.js
  28. 0 0
      src/background/workflowEngine/blocksHandler/handlerInteractionBlock.js
  29. 0 0
      src/background/workflowEngine/blocksHandler/handlerJavascriptCode.js
  30. 0 0
      src/background/workflowEngine/blocksHandler/handlerLoopBreakpoint.js
  31. 0 0
      src/background/workflowEngine/blocksHandler/handlerLoopData.js
  32. 0 0
      src/background/workflowEngine/blocksHandler/handlerNewTab.js
  33. 0 0
      src/background/workflowEngine/blocksHandler/handlerNewWindow.js
  34. 0 0
      src/background/workflowEngine/blocksHandler/handlerProxy.js
  35. 0 0
      src/background/workflowEngine/blocksHandler/handlerReloadTab.js
  36. 0 0
      src/background/workflowEngine/blocksHandler/handlerRepeatTask.js
  37. 0 0
      src/background/workflowEngine/blocksHandler/handlerSaveAssets.js
  38. 0 0
      src/background/workflowEngine/blocksHandler/handlerSwitchTab.js
  39. 1 1
      src/background/workflowEngine/blocksHandler/handlerSwitchTo.js
  40. 0 0
      src/background/workflowEngine/blocksHandler/handlerTakeScreenshot.js
  41. 1 1
      src/background/workflowEngine/blocksHandler/handlerTrigger.js
  42. 0 0
      src/background/workflowEngine/blocksHandler/handlerWaitConnections.js
  43. 6 2
      src/background/workflowEngine/blocksHandler/handlerWebhook.js
  44. 1 1
      src/background/workflowEngine/blocksHandler/handlerWhileLoop.js
  45. 0 0
      src/background/workflowEngine/engine.js
  46. 0 0
      src/background/workflowEngine/executeContentScript.js
  47. 2 0
      src/background/workflowEngine/helper.js
  48. 2 2
      src/background/workflowEngine/worker.js
  49. 1 1
      src/components/newtab/logs/LogsDataViewer.vue
  50. 1 1
      src/components/newtab/settings/SettingsCloudBackup.vue
  51. 1 1
      src/components/newtab/shared/SharedCard.vue
  52. 8 1
      src/components/newtab/workflow/WorkflowBuilder.vue
  53. 1 0
      src/components/newtab/workflow/WorkflowDataTable.vue
  54. 1 1
      src/components/newtab/workflow/WorkflowProtect.vue
  55. 1 1
      src/components/newtab/workflow/WorkflowShare.vue
  56. 1 1
      src/components/newtab/workflow/edit/EditTrigger.vue
  57. 6 1
      src/components/newtab/workflow/edit/EditWebhook.vue
  58. 5 1
      src/components/newtab/workflow/edit/InsertWorkflowData.vue
  59. 1 1
      src/components/newtab/workflow/edit/TriggerEventKeyboard.vue
  60. 2 2
      src/content/blocksHandler.js
  61. 1 1
      src/content/blocksHandler/handlerAttributeValue.js
  62. 1 1
      src/content/blocksHandler/handlerElementExists.js
  63. 1 1
      src/content/blocksHandler/handlerElementScroll.js
  64. 1 1
      src/content/blocksHandler/handlerEventClick.js
  65. 2 2
      src/content/blocksHandler/handlerForms.js
  66. 1 1
      src/content/blocksHandler/handlerGetText.js
  67. 1 1
      src/content/blocksHandler/handlerHoverElement.js
  68. 0 0
      src/content/blocksHandler/handlerJavascriptCode.js
  69. 1 1
      src/content/blocksHandler/handlerLink.js
  70. 1 1
      src/content/blocksHandler/handlerSaveSssets.js
  71. 1 1
      src/content/blocksHandler/handlerSwitchTo.js
  72. 0 0
      src/content/blocksHandler/handlerTakeScreenshot.js
  73. 3 3
      src/content/blocksHandler/handlerTriggerEvent.js
  74. 1 1
      src/content/blocksHandler/handlerUploadFile.js
  75. 2 2
      src/content/elementSelector/App.vue
  76. 5 5
      src/content/elementSelector/AppBlocks.vue
  77. 0 0
      src/content/elementSelector/AppElementHighlighter.vue
  78. 0 0
      src/content/elementSelector/AppElementList.vue
  79. 0 0
      src/content/elementSelector/AppSelector.vue
  80. 0 0
      src/content/elementSelector/compsUi.js
  81. 0 0
      src/content/elementSelector/icons.js
  82. 0 0
      src/content/elementSelector/index.js
  83. 0 0
      src/content/elementSelector/listSelector.js
  84. 2 2
      src/content/elementSelector/main.js
  85. 0 0
      src/content/elementSelector/vueI18n.js
  86. 0 0
      src/content/executedBlock.js
  87. 1 1
      src/content/handleSelector.js
  88. 3 3
      src/content/index.js
  89. 0 0
      src/content/services/recordWorkflow.js
  90. 0 0
      src/content/services/shortcutListener.js
  91. 0 0
      src/content/services/webService.js
  92. 0 0
      src/lib/compsUi.js
  93. 0 0
      src/lib/vRemixicon.js
  94. 0 0
      src/lib/vueI18n.js
  95. 0 0
      src/lib/vuexOrm.js
  96. 2 2
      src/models/workflow.js
  97. 1 1
      src/newtab/App.vue
  98. 3 3
      src/newtab/index.js
  99. 2 2
      src/newtab/pages/Workflows.vue
  100. 1 1
      src/newtab/pages/settings/SettingsShortcuts.vue

+ 1 - 0
.gitignore

@@ -24,5 +24,6 @@
 secrets.production.js
 secrets.development.js
 get-pass-key.js
+getPassKey.js
 
 .idea

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "automa",
-  "version": "1.9.2",
+  "version": "1.9.3",
   "description": "An extension for automating your browser by connecting blocks",
   "license": "MIT",
   "repository": {

+ 0 - 0
src/background/workflow-logger.js → src/background/WorkflowLogger.js


+ 0 - 0
src/background/workflow-state.js → src/background/WorkflowState.js


+ 3 - 3
src/background/collection-engine/flow-handler.js → src/background/collectionEngine/flowHandler.js

@@ -1,6 +1,6 @@
-import dataExporter from '@/utils/data-exporter';
-import WorkflowEngine from '../workflow-engine/engine';
-import blocksHandler from '../workflow-engine/blocks-handler';
+import dataExporter from '@/utils/dataExporter';
+import WorkflowEngine from '../workflowEngine/engine';
+import blocksHandler from '../workflowEngine/blocksHandler';
 
 export function workflow(flow) {
   return new Promise((resolve, reject) => {

+ 3 - 3
src/background/collection-engine/index.js → src/background/collectionEngine/index.js

@@ -1,9 +1,9 @@
 import { nanoid } from 'nanoid';
 import browser from 'webextension-polyfill';
 import { toCamelCase } from '@/utils/helper';
-import * as flowHandler from './flow-handler';
-import blocksHandler from '../workflow-engine/blocks-handler';
-import WorkflowEngine from '../workflow-engine/engine';
+import * as flowHandler from './flowHandler';
+import blocksHandler from '../workflowEngine/blocksHandler';
+import WorkflowEngine from '../workflowEngine/engine';
 
 const executedWorkflows = (workflows, options) => {
   if (workflows.length === 0) return;

+ 8 - 8
src/background/index.js

@@ -1,17 +1,17 @@
 import browser from 'webextension-polyfill';
 import { MessageListener } from '@/utils/message';
 import { parseJSON, findTriggerBlock } from '@/utils/helper';
-import getFile from '@/utils/get-file';
-import decryptFlow, { getWorkflowPass } from '@/utils/decrypt-flow';
+import getFile from '@/utils/getFile';
+import decryptFlow, { getWorkflowPass } from '@/utils/decryptFlow';
 import {
   registerSpecificDay,
   registerWorkflowTrigger,
-} from '../utils/workflow-trigger';
-import WorkflowState from './workflow-state';
-import CollectionEngine from './collection-engine';
-import WorkflowEngine from './workflow-engine/engine';
-import blocksHandler from './workflow-engine/blocks-handler';
-import WorkflowLogger from './workflow-logger';
+} from '../utils/workflowTrigger';
+import WorkflowState from './WorkflowState';
+import CollectionEngine from './collectionEngine';
+import WorkflowEngine from './workflowEngine/engine';
+import blocksHandler from './workflowEngine/blocksHandler';
+import WorkflowLogger from './WorkflowLogger';
 
 const validateUrl = (str) => str?.startsWith('http');
 const storage = {

+ 0 - 0
src/background/message-listener.js → src/background/messageListener.js


+ 2 - 2
src/content/blocks-handler.js → src/background/workflowEngine/blocksHandler.js

@@ -1,8 +1,8 @@
 import { toCamelCase } from '@/utils/helper';
 
-const blocksHandler = require.context('./blocks-handler', false, /\.js$/);
+const blocksHandler = require.context('./blocksHandler', false, /\.js$/);
 const handlers = blocksHandler.keys().reduce((acc, key) => {
-  const name = key.replace(/^\.\/handler-|\.js/g, '');
+  const name = key.replace(/^\.\/handler|\.js/g, '');
 
   acc[toCamelCase(name)] = blocksHandler(key).default;
 

+ 1 - 1
src/background/workflow-engine/blocks-handler/handler-active-tab.js → src/background/workflowEngine/blocksHandler/handlerActiveTab.js

@@ -1,6 +1,6 @@
 import browser from 'webextension-polyfill';
 import { getBlockConnection } from '../helper';
-import executeContentScript from '../execute-content-script';
+import executeContentScript from '../executeContentScript';
 
 async function activeTab(block) {
   const nextBlockId = getBlockConnection(block);

+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-blocks-group.js → src/background/workflowEngine/blocksHandler/handlerBlocksGroup.js


+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-browser-event.js → src/background/workflowEngine/blocksHandler/handlerBrowserEvent.js


+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-clipboard.js → src/background/workflowEngine/blocksHandler/handlerClipboard.js


+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-close-tab.js → src/background/workflowEngine/blocksHandler/handlerCloseTab.js


+ 3 - 3
src/background/workflow-engine/blocks-handler/handler-conditions.js → src/background/workflowEngine/blocksHandler/handlerConditions.js

@@ -1,6 +1,6 @@
-import compareBlockValue from '@/utils/compare-block-value';
-import mustacheReplacer from '@/utils/reference-data/mustache-replacer';
-import testConditions from '@/utils/test-conditions';
+import compareBlockValue from '@/utils/compareBlockValue';
+import mustacheReplacer from '@/utils/referenceData/mustacheReplacer';
+import testConditions from '@/utils/testConditions';
 import { getBlockConnection } from '../helper';
 
 async function conditions({ data, outputs }, { prevBlockData, refData }) {

+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-delay.js → src/background/workflowEngine/blocksHandler/handlerDelay.js


+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-delete-data.js → src/background/workflowEngine/blocksHandler/handlerDeleteData.js


+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-element-exists.js → src/background/workflowEngine/blocksHandler/handlerElementExists.js


+ 1 - 1
src/background/workflow-engine/blocks-handler/handler-execute-workflow.js → src/background/workflowEngine/blocksHandler/handlerExecuteWorkflow.js

@@ -1,6 +1,6 @@
 import browser from 'webextension-polyfill';
 import { isWhitespace, parseJSON } from '@/utils/helper';
-import decryptFlow, { getWorkflowPass } from '@/utils/decrypt-flow';
+import decryptFlow, { getWorkflowPass } from '@/utils/decryptFlow';
 import WorkflowEngine from '../engine';
 import { getBlockConnection } from '../helper';
 

+ 1 - 1
src/background/workflow-engine/blocks-handler/handler-export-data.js → src/background/workflowEngine/blocksHandler/handlerExportData.js

@@ -1,5 +1,5 @@
 import browser from 'webextension-polyfill';
-import { default as dataExporter, files } from '@/utils/data-exporter';
+import { default as dataExporter, files } from '@/utils/dataExporter';
 import { getBlockConnection } from '../helper';
 
 async function exportData({ data, outputs }, { refData }) {

+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-forward-page.js → src/background/workflowEngine/blocksHandler/handlerForwardPage.js


+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-go-back.js → src/background/workflowEngine/blocksHandler/handlerGoBack.js


+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-google-sheets.js → src/background/workflowEngine/blocksHandler/handlerGoogleSheets.js


+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-handle-dialog.js → src/background/workflowEngine/blocksHandler/handlerHandleDialog.js


+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-handle-download.js → src/background/workflowEngine/blocksHandler/handlerHandleDownload.js


+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-hover-element.js → src/background/workflowEngine/blocksHandler/handlerHoverElement.js


+ 1 - 1
src/background/workflow-engine/blocks-handler/handler-insert-data.js → src/background/workflowEngine/blocksHandler/handlerInsertData.js

@@ -1,5 +1,5 @@
 import { parseJSON } from '@/utils/helper';
-import mustacheReplacer from '@/utils/reference-data/mustache-replacer';
+import mustacheReplacer from '@/utils/referenceData/mustacheReplacer';
 import { getBlockConnection } from '../helper';
 
 function insertData({ outputs, data }, { refData }) {

+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-interaction-block.js → src/background/workflowEngine/blocksHandler/handlerInteractionBlock.js


+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-javascript-code.js → src/background/workflowEngine/blocksHandler/handlerJavascriptCode.js


+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-loop-breakpoint.js → src/background/workflowEngine/blocksHandler/handlerLoopBreakpoint.js


+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-loop-data.js → src/background/workflowEngine/blocksHandler/handlerLoopData.js


+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-new-tab.js → src/background/workflowEngine/blocksHandler/handlerNewTab.js


+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-new-window.js → src/background/workflowEngine/blocksHandler/handlerNewWindow.js


+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-proxy.js → src/background/workflowEngine/blocksHandler/handlerProxy.js


+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-reload-tab.js → src/background/workflowEngine/blocksHandler/handlerReloadTab.js


+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-repeat-task.js → src/background/workflowEngine/blocksHandler/handlerRepeatTask.js


+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-save-assets.js → src/background/workflowEngine/blocksHandler/handlerSaveAssets.js


+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-switch-tab.js → src/background/workflowEngine/blocksHandler/handlerSwitchTab.js


+ 1 - 1
src/background/workflow-engine/blocks-handler/handler-switch-to.js → src/background/workflowEngine/blocksHandler/handlerSwitchTo.js

@@ -1,6 +1,6 @@
 import { objectHasKey } from '@/utils/helper';
 import { getBlockConnection } from '../helper';
-import executeContentScript, { getFrames } from '../execute-content-script';
+import executeContentScript, { getFrames } from '../executeContentScript';
 
 async function switchTo(block) {
   const nextBlockId = getBlockConnection(block);

+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-take-screenshot.js → src/background/workflowEngine/blocksHandler/handlerTakeScreenshot.js


+ 1 - 1
src/background/workflow-engine/blocks-handler/handler-trigger.js → src/background/workflowEngine/blocksHandler/handlerTrigger.js

@@ -1,5 +1,5 @@
 import { getBlockConnection } from '../helper';
-import executeContentScript from '../execute-content-script';
+import executeContentScript from '../executeContentScript';
 
 async function trigger(block) {
   const nextBlockId = getBlockConnection(block);

+ 0 - 0
src/background/workflow-engine/blocks-handler/handler-wait-connections.js → src/background/workflowEngine/blocksHandler/handlerWaitConnections.js


+ 6 - 2
src/background/workflow-engine/blocks-handler/handler-webhook.js → src/background/workflowEngine/blocksHandler/handlerWebhook.js

@@ -14,7 +14,7 @@ export async function webhook({ data, outputs }) {
     const response = await executeWebhook(data);
 
     if (!response.ok) {
-      if (fallbackOutput) {
+      if (fallbackOutput.connections.length > 0) {
         return {
           data: '',
           nextBlockId: fallbackOutput,
@@ -45,7 +45,11 @@ export async function webhook({ data, outputs }) {
       this.setVariable(data.variableName, returnData);
     }
     if (data.saveData) {
-      this.addDataToColumn(data.dataColumn, returnData);
+      if (data.dataColumn === '$assignColumns' && Array.isArray(returnData)) {
+        this.addDataToColumn(returnData);
+      } else {
+        this.addDataToColumn(data.dataColumn, returnData);
+      }
     }
 
     return {

+ 1 - 1
src/background/workflow-engine/blocks-handler/handler-while-loop.js → src/background/workflowEngine/blocksHandler/handlerWhileLoop.js

@@ -1,4 +1,4 @@
-import testConditions from '@/utils/test-conditions';
+import testConditions from '@/utils/testConditions';
 import { getBlockConnection } from '../helper';
 
 async function whileLoop({ data, outputs }, { refData }) {

+ 0 - 0
src/background/workflow-engine/engine.js → src/background/workflowEngine/engine.js


+ 0 - 0
src/background/workflow-engine/execute-content-script.js → src/background/workflowEngine/executeContentScript.js


+ 2 - 0
src/background/workflow-engine/helper.js → src/background/workflowEngine/helper.js

@@ -40,6 +40,8 @@ export function waitTabLoaded(tabId) {
 }
 
 export function convertData(data, type) {
+  if (type === 'any') return data;
+
   let result = data;
 
   switch (type) {

+ 2 - 2
src/background/workflow-engine/worker.js → src/background/workflowEngine/worker.js

@@ -3,9 +3,9 @@ import browser from 'webextension-polyfill';
 import cloneDeep from 'lodash.clonedeep';
 import { toCamelCase, sleep, objectHasKey, isObject } from '@/utils/helper';
 import { tasks } from '@/utils/shared';
-import referenceData from '@/utils/reference-data';
+import referenceData from '@/utils/referenceData';
 import { convertData, waitTabLoaded, getBlockConnection } from './helper';
-import executeContentScript from './execute-content-script';
+import executeContentScript from './executeContentScript';
 
 class Worker {
   constructor(engine) {

+ 1 - 1
src/components/newtab/logs/LogsDataViewer.vue

@@ -47,7 +47,7 @@ import { shallowReactive, computed, defineAsyncComponent } from 'vue';
 import { useI18n } from 'vue-i18n';
 import { dataExportTypes } from '@/utils/shared';
 import { objectHasKey } from '@/utils/helper';
-import dataExporter from '@/utils/data-exporter';
+import dataExporter from '@/utils/dataExporter';
 
 const SharedCodemirror = defineAsyncComponent(() =>
   import('@/components/newtab/shared/SharedCodemirror.vue')

+ 1 - 1
src/components/newtab/settings/SettingsCloudBackup.vue

@@ -127,7 +127,7 @@ import { useStore } from 'vuex';
 import { useToast } from 'vue-toastification';
 import browser from 'webextension-polyfill';
 import { fetchApi, cacheApi } from '@/utils/api';
-import { convertWorkflow } from '@/utils/workflow-data';
+import { convertWorkflow } from '@/utils/workflowData';
 import { parseJSON } from '@/utils/helper';
 import dayjs from '@/lib/dayjs';
 import Workflow from '@/models/workflow';

+ 1 - 1
src/components/newtab/shared/SharedCard.vue

@@ -70,7 +70,7 @@
 import { onMounted, shallowReactive } from 'vue';
 import { useI18n } from 'vue-i18n';
 import dayjs from '@/lib/dayjs';
-import triggerText from '@/utils/trigger-text';
+import triggerText from '@/utils/triggerText';
 
 const props = defineProps({
   data: {

+ 8 - 1
src/components/newtab/workflow/WorkflowBuilder.vue

@@ -792,7 +792,14 @@ export default {
         const copiedNodesLen = store.state.copiedNodes.length;
         if (copiedNodesLen > 0) {
           if (isBlock) {
-            contextMenu.items.unshift(...contextMenuItems.common);
+            contextMenuItems.common.forEach((item) => {
+              const isExists = contextMenu.items.some(
+                (menu) => menu.id === item.id
+              );
+              if (isExists) return;
+
+              contextMenu.items.unshift(item);
+            });
           } else {
             contextMenu.items = contextMenuItems.common;
           }

+ 1 - 0
src/components/newtab/workflow/WorkflowDataTable.vue

@@ -59,6 +59,7 @@ const emit = defineEmits(['update', 'close', 'change']);
 const { t } = useI18n();
 
 const dataTypes = [
+  { id: 'any', name: 'Any' },
   { id: 'string', name: 'Text' },
   { id: 'integer', name: 'Number' },
   { id: 'boolean', name: 'Boolean' },

+ 1 - 1
src/components/newtab/workflow/WorkflowProtect.vue

@@ -35,7 +35,7 @@ import { useI18n } from 'vue-i18n';
 import { nanoid } from 'nanoid';
 import AES from 'crypto-js/aes';
 import hmacSHA256 from 'crypto-js/hmac-sha256';
-import getPassKey from '@/utils/get-pass-key';
+import getPassKey from '@/utils/getPassKey';
 
 const props = defineProps({
   workflow: {

+ 1 - 1
src/components/newtab/workflow/WorkflowShare.vue

@@ -179,7 +179,7 @@ import { useToast } from 'vue-toastification';
 import { fetchApi } from '@/utils/api';
 import { workflowCategories } from '@/utils/shared';
 import { parseJSON, debounce } from '@/utils/helper';
-import { convertWorkflow } from '@/utils/workflow-data';
+import { convertWorkflow } from '@/utils/workflowData';
 import SharedWysiwyg from '@/components/newtab/shared/SharedWysiwyg.vue';
 
 const props = defineProps({

+ 1 - 1
src/components/newtab/workflow/edit/EditTrigger.vue

@@ -213,7 +213,7 @@ import { useI18n } from 'vue-i18n';
 import { useToast } from 'vue-toastification';
 import dayjs from 'dayjs';
 import { isObject } from '@/utils/helper';
-import recordShortcut from '@/utils/record-shortcut';
+import recordShortcut from '@/utils/recordShortcut';
 
 const props = defineProps({
   data: {

+ 6 - 1
src/components/newtab/workflow/edit/EditWebhook.vue

@@ -119,7 +119,12 @@
           class="w-full mt-2"
           @change="updateData({ dataPath: $event })"
         />
-        <insert-workflow-data :data="data" variables @update="updateData" />
+        <insert-workflow-data
+          :data="data"
+          :columns="[{ name: '[Assign columns]', id: '$assignColumns' }]"
+          variables
+          @update="updateData"
+        />
       </ui-tab-panel>
     </ui-tab-panels>
     <ui-modal

+ 5 - 1
src/components/newtab/workflow/edit/InsertWorkflowData.vue

@@ -33,7 +33,7 @@
     @change="updateData({ dataColumn: $event })"
   >
     <option
-      v-for="column in workflow.data.value.table"
+      v-for="column in [...columns, ...workflow.data.value.table]"
       :key="column.id"
       :value="column.id"
     >
@@ -85,6 +85,10 @@ defineProps({
   },
   extraRow: Boolean,
   variables: Boolean,
+  columns: {
+    type: Array,
+    default: () => [],
+  },
 });
 const emit = defineEmits(['update']);
 

+ 1 - 1
src/components/newtab/workflow/edit/TriggerEventKeyboard.vue

@@ -36,7 +36,7 @@
 <script setup>
 import { shallowReactive, watch, onMounted } from 'vue';
 import { objectHasKey } from '@/utils/helper';
-import { keyDefinitions } from '@/utils/us-keyboard-layout';
+import { keyDefinitions } from '@/utils/USKeyboardLayout';
 
 const props = defineProps({
   params: {

+ 2 - 2
src/background/workflow-engine/blocks-handler.js → src/content/blocksHandler.js

@@ -1,8 +1,8 @@
 import { toCamelCase } from '@/utils/helper';
 
-const blocksHandler = require.context('./blocks-handler', false, /\.js$/);
+const blocksHandler = require.context('./blocksHandler', false, /\.js$/);
 const handlers = blocksHandler.keys().reduce((acc, key) => {
-  const name = key.replace(/^\.\/handler-|\.js/g, '');
+  const name = key.replace(/^\.\/handler|\.js/g, '');
 
   acc[toCamelCase(name)] = blocksHandler(key).default;
 

+ 1 - 1
src/content/blocks-handler/handler-attribute-value.js → src/content/blocksHandler/handlerAttributeValue.js

@@ -1,4 +1,4 @@
-import handleSelector from '../handle-selector';
+import handleSelector from '../handleSelector';
 
 function attributeValue(block) {
   return new Promise((resolve, reject) => {

+ 1 - 1
src/content/blocks-handler/handler-element-exists.js → src/content/blocksHandler/handlerElementExists.js

@@ -1,4 +1,4 @@
-import handleSelector from '../handle-selector';
+import handleSelector from '../handleSelector';
 
 function elementExists(block) {
   return new Promise((resolve) => {

+ 1 - 1
src/content/blocks-handler/handler-element-scroll.js → src/content/blocksHandler/handlerElementScroll.js

@@ -1,4 +1,4 @@
-import handleSelector from '../handle-selector';
+import handleSelector from '../handleSelector';
 
 function elementScroll(block) {
   function incScrollPos(element, data, vertical = true) {

+ 1 - 1
src/content/blocks-handler/handler-event-click.js → src/content/blocksHandler/handlerEventClick.js

@@ -1,5 +1,5 @@
 import { sendMessage } from '@/utils/message';
-import handleSelector from '../handle-selector';
+import handleSelector from '../handleSelector';
 
 function eventClick(block) {
   return new Promise((resolve, reject) => {

+ 2 - 2
src/content/blocks-handler/handler-forms.js → src/content/blocksHandler/handlerForms.js

@@ -1,5 +1,5 @@
-import handleFormElement from '@/utils/handle-form-element';
-import handleSelector, { markElement } from '../handle-selector';
+import handleFormElement from '@/utils/handleFormElement';
+import handleSelector, { markElement } from '../handleSelector';
 
 async function forms(block) {
   const { data } = block;

+ 1 - 1
src/content/blocks-handler/handler-get-text.js → src/content/blocksHandler/handlerGetText.js

@@ -1,4 +1,4 @@
-import handleSelector from '../handle-selector';
+import handleSelector from '../handleSelector';
 
 function getText(block) {
   return new Promise((resolve, reject) => {

+ 1 - 1
src/content/blocks-handler/handler-hover-element.js → src/content/blocksHandler/handlerHoverElement.js

@@ -1,5 +1,5 @@
 import { sendMessage } from '@/utils/message';
-import handleSelector from '../handle-selector';
+import handleSelector from '../handleSelector';
 
 function eventClick(block) {
   return new Promise((resolve, reject) => {

+ 0 - 0
src/content/blocks-handler/handler-javascript-code.js → src/content/blocksHandler/handlerJavascriptCode.js


+ 1 - 1
src/content/blocks-handler/handler-link.js → src/content/blocksHandler/handlerLink.js

@@ -1,4 +1,4 @@
-import handleSelector, { markElement } from '../handle-selector';
+import handleSelector, { markElement } from '../handleSelector';
 
 async function link(block) {
   const element = await handleSelector(block, { returnElement: true });

+ 1 - 1
src/content/blocks-handler/handler-save-assets.js → src/content/blocksHandler/handlerSaveSssets.js

@@ -1,4 +1,4 @@
-import handleSelector from '../handle-selector';
+import handleSelector from '../handleSelector';
 
 async function saveAssets(block) {
   let elements = await handleSelector(block, { returnElement: true });

+ 1 - 1
src/content/blocks-handler/handler-switch-to.js → src/content/blocksHandler/handlerSwitchTo.js

@@ -1,4 +1,4 @@
-import handleSelector from '../handle-selector';
+import handleSelector from '../handleSelector';
 
 function switchTo(block) {
   return new Promise((resolve, reject) => {

+ 0 - 0
src/content/blocks-handler/handler-take-screenshot.js → src/content/blocksHandler/handlerTakeScreenshot.js


+ 3 - 3
src/content/blocks-handler/handler-trigger-event.js → src/content/blocksHandler/handlerTriggerEvent.js

@@ -1,7 +1,7 @@
 import { sendMessage } from '@/utils/message';
-import simulateEvent from '@/utils/simulate-event';
-import simulateMouseEvent from '@/utils/simulate-event/mouse-event';
-import handleSelector from '../handle-selector';
+import simulateEvent from '@/utils/simulateEvent';
+import simulateMouseEvent from '@/utils/simulateEvent/mouseEvent';
+import handleSelector from '../handleSelector';
 
 const modifiers = {
   altKey: 1,

+ 1 - 1
src/content/blocks-handler/handler-upload-file.js → src/content/blocksHandler/handlerUploadFile.js

@@ -1,5 +1,5 @@
 import { sendMessage } from '@/utils/message';
-import handleSelector from '../handle-selector';
+import handleSelector from '../handleSelector';
 
 function injectFiles(element, files) {
   const notFileTypeAttr = element.getAttribute('type') !== 'file';

+ 2 - 2
src/content/element-selector/App.vue → src/content/elementSelector/App.vue

@@ -150,12 +150,12 @@ import { reactive, ref, watch, inject, nextTick } from 'vue';
 import { getCssSelector } from 'css-selector-generator';
 import { debounce } from '@/utils/helper';
 import { finder } from '@medv/finder';
-import findElement from '@/utils/find-element';
+import findElement from '@/utils/FindElement';
 import AppBlocks from './AppBlocks.vue';
 import AppSelector from './AppSelector.vue';
 import AppElementList from './AppElementList.vue';
 import AppElementHighlighter from './AppElementHighlighter.vue';
-import findElementList from './list-selector';
+import findElementList from './listSelector';
 
 const selectedElement = {
   path: [],

+ 5 - 5
src/content/element-selector/AppBlocks.vue → src/content/elementSelector/AppBlocks.vue

@@ -39,11 +39,11 @@ import { tasks } from '@/utils/shared';
 import EditForms from '@/components/newtab/workflow/edit/EditForms.vue';
 import EditTriggerEvent from '@/components/newtab/workflow/edit/EditTriggerEvent.vue';
 import EditScrollElement from '@/components/newtab/workflow/edit/EditScrollElement.vue';
-import handleForms from '../blocks-handler/handler-forms';
-import handleGetText from '../blocks-handler/handler-get-text';
-import handleEventClick from '../blocks-handler/handler-event-click';
-import handelTriggerEvent from '../blocks-handler/handler-trigger-event';
-import handleElementScroll from '../blocks-handler/handler-element-scroll';
+import handleForms from '../blocksHandler/handlerForms';
+import handleGetText from '../blocksHandler/handlerGetText';
+import handleEventClick from '../blocksHandler/handlerEventClick';
+import handelTriggerEvent from '../blocksHandler/handlerTriggerEvent';
+import handleElementScroll from '../blocksHandler/handlerElementScroll';
 
 const props = defineProps({
   selector: {

+ 0 - 0
src/content/element-selector/AppElementHighlighter.vue → src/content/elementSelector/AppElementHighlighter.vue


+ 0 - 0
src/content/element-selector/AppElementList.vue → src/content/elementSelector/AppElementList.vue


+ 0 - 0
src/content/element-selector/AppSelector.vue → src/content/elementSelector/AppSelector.vue


+ 0 - 0
src/content/element-selector/comps-ui.js → src/content/elementSelector/compsUi.js


+ 0 - 0
src/content/element-selector/icons.js → src/content/elementSelector/icons.js


+ 0 - 0
src/content/element-selector/index.js → src/content/elementSelector/index.js


+ 0 - 0
src/content/element-selector/list-selector.js → src/content/elementSelector/listSelector.js


+ 2 - 2
src/content/element-selector/main.js → src/content/elementSelector/main.js

@@ -1,9 +1,9 @@
 import { createApp } from 'vue';
 import vRemixicon from 'v-remixicon';
 import App from './App.vue';
-import compsUi from './comps-ui';
+import compsUi from './compsUi';
 import icons from './icons';
-import vueI18n from './vue-i18n';
+import vueI18n from './vueI18n';
 import '@/assets/css/tailwind.css';
 
 export default function (rootElement) {

+ 0 - 0
src/content/element-selector/vue-i18n.js → src/content/elementSelector/vueI18n.js


+ 0 - 0
src/content/executed-block.js → src/content/executedBlock.js


+ 1 - 1
src/content/handle-selector.js → src/content/handleSelector.js

@@ -1,4 +1,4 @@
-import FindElement from '@/utils/find-element';
+import FindElement from '@/utils/FindElement';
 import { scrollIfNeeded } from '@/utils/helper';
 
 /* eslint-disable consistent-return */

+ 3 - 3
src/content/index.js

@@ -1,9 +1,9 @@
 import browser from 'webextension-polyfill';
 import { nanoid } from 'nanoid';
 import { toCamelCase } from '@/utils/helper';
-import FindElement from '@/utils/find-element';
-import executedBlock from './executed-block';
-import blocksHandler from './blocks-handler';
+import FindElement from '@/utils/FindElement';
+import executedBlock from './executedBlock';
+import blocksHandler from './blocksHandler';
 
 function handleConditionBuilder({ data, type }) {
   if (!type.startsWith('element')) return null;

+ 0 - 0
src/content/services/record-workflow.js → src/content/services/recordWorkflow.js


+ 0 - 0
src/content/services/shortcut-listener.js → src/content/services/shortcutListener.js


+ 0 - 0
src/content/services/web-service.js → src/content/services/webService.js


+ 0 - 0
src/lib/comps-ui.js → src/lib/compsUi.js


+ 0 - 0
src/lib/v-remixicon.js → src/lib/vRemixicon.js


+ 0 - 0
src/lib/vue-i18n.js → src/lib/vueI18n.js


+ 0 - 0
src/lib/vuex-orm.js → src/lib/vuexOrm.js


+ 2 - 2
src/models/workflow.js

@@ -1,9 +1,9 @@
 import { Model } from '@vuex-orm/core';
 import { nanoid } from 'nanoid';
 import browser from 'webextension-polyfill';
-import { cleanWorkflowTriggers } from '@/utils/workflow-trigger';
+import { cleanWorkflowTriggers } from '@/utils/workflowTrigger';
 import { fetchApi } from '@/utils/api';
-import decryptFlow, { getWorkflowPass } from '@/utils/decrypt-flow';
+import decryptFlow, { getWorkflowPass } from '@/utils/decryptFlow';
 import Log from './log';
 
 class Workflow extends Model {

+ 1 - 1
src/newtab/App.vue

@@ -57,7 +57,7 @@ import { useI18n } from 'vue-i18n';
 import { compare } from 'compare-versions';
 import browser from 'webextension-polyfill';
 import { useTheme } from '@/composable/theme';
-import { loadLocaleMessages, setI18nLanguage } from '@/lib/vue-i18n';
+import { loadLocaleMessages, setI18nLanguage } from '@/lib/vueI18n';
 import { fetchApi, getSharedWorkflows, getUserWorkflows } from '@/utils/api';
 import dayjs from '@/lib/dayjs';
 import Log from '@/models/log';

+ 3 - 3
src/newtab/index.js

@@ -2,9 +2,9 @@ import { createApp } from 'vue';
 import App from './App.vue';
 import router from './router';
 import store from '../store';
-import compsUi from '../lib/comps-ui';
-import vueI18n from '../lib/vue-i18n';
-import vRemixicon, { icons } from '../lib/v-remixicon';
+import compsUi from '../lib/compsUi';
+import vueI18n from '../lib/vueI18n';
+import vRemixicon, { icons } from '../lib/vRemixicon';
 import vueToastification from '../lib/vue-toastification';
 import '../assets/css/tailwind.css';
 import '../assets/css/fonts.css';

+ 2 - 2
src/newtab/pages/Workflows.vue

@@ -316,11 +316,11 @@ import { useShortcut } from '@/composable/shortcut';
 import { useGroupTooltip } from '@/composable/groupTooltip';
 import { sendMessage } from '@/utils/message';
 import { fetchApi } from '@/utils/api';
-import { exportWorkflow, importWorkflow } from '@/utils/workflow-data';
+import { exportWorkflow, importWorkflow } from '@/utils/workflowData';
 import {
   registerWorkflowTrigger,
   cleanWorkflowTriggers,
-} from '@/utils/workflow-trigger';
+} from '@/utils/workflowTrigger';
 import { findTriggerBlock, isWhitespace } from '@/utils/helper';
 import SharedCard from '@/components/newtab/shared/SharedCard.vue';
 import Workflow from '@/models/workflow';

+ 1 - 1
src/newtab/pages/settings/SettingsShortcuts.vue

@@ -56,7 +56,7 @@ import { ref, reactive, computed, onBeforeUnmount } from 'vue';
 import { useI18n } from 'vue-i18n';
 import { useToast } from 'vue-toastification';
 import { mapShortcuts, getReadableShortcut } from '@/composable/shortcut';
-import recordShortcut from '@/utils/record-shortcut';
+import recordShortcut from '@/utils/recordShortcut';
 
 const { t } = useI18n();
 const toast = useToast();

Vissa filer visades inte eftersom för många filer har ändrats