@overlordai/server 1.0.175 → 1.0.177
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/database/migrations/020-connectors.sql +48 -0
- package/database/migrations/021-task-design-context.sql +17 -0
- package/dist/adapters/command-parser.utils.d.ts +1 -0
- package/dist/adapters/command-parser.utils.d.ts.map +1 -1
- package/dist/adapters/command-parser.utils.js +9 -0
- package/dist/adapters/command-parser.utils.js.map +1 -1
- package/dist/adapters/nlu.service.d.ts.map +1 -1
- package/dist/adapters/nlu.service.js +4 -1
- package/dist/adapters/nlu.service.js.map +1 -1
- package/dist/app.module.d.ts.map +1 -1
- package/dist/app.module.js +2 -0
- package/dist/app.module.js.map +1 -1
- package/dist/connectors/connector-closure.service.d.ts +16 -0
- package/dist/connectors/connector-closure.service.d.ts.map +1 -0
- package/dist/connectors/connector-closure.service.js +97 -0
- package/dist/connectors/connector-closure.service.js.map +1 -0
- package/dist/connectors/connector-dispatch.service.d.ts +30 -0
- package/dist/connectors/connector-dispatch.service.d.ts.map +1 -0
- package/dist/connectors/connector-dispatch.service.js +226 -0
- package/dist/connectors/connector-dispatch.service.js.map +1 -0
- package/dist/connectors/connector.constants.d.ts +4 -0
- package/dist/connectors/connector.constants.d.ts.map +1 -0
- package/dist/connectors/connector.constants.js +12 -0
- package/dist/connectors/connector.constants.js.map +1 -0
- package/dist/connectors/connector.controller.d.ts +20 -0
- package/dist/connectors/connector.controller.d.ts.map +1 -0
- package/dist/connectors/connector.controller.js +166 -0
- package/dist/connectors/connector.controller.js.map +1 -0
- package/dist/connectors/connector.interface.d.ts +61 -0
- package/dist/connectors/connector.interface.d.ts.map +1 -0
- package/dist/connectors/connector.interface.js +3 -0
- package/dist/connectors/connector.interface.js.map +1 -0
- package/dist/connectors/connector.module.d.ts +3 -0
- package/dist/connectors/connector.module.d.ts.map +1 -0
- package/dist/connectors/connector.module.js +50 -0
- package/dist/connectors/connector.module.js.map +1 -0
- package/dist/connectors/connector.registry.d.ts +15 -0
- package/dist/connectors/connector.registry.d.ts.map +1 -0
- package/dist/connectors/connector.registry.js +48 -0
- package/dist/connectors/connector.registry.js.map +1 -0
- package/dist/connectors/design-context.service.d.ts +21 -0
- package/dist/connectors/design-context.service.d.ts.map +1 -0
- package/dist/connectors/design-context.service.js +77 -0
- package/dist/connectors/design-context.service.js.map +1 -0
- package/dist/connectors/design-review-trigger.service.d.ts +15 -0
- package/dist/connectors/design-review-trigger.service.d.ts.map +1 -0
- package/dist/connectors/design-review-trigger.service.js +98 -0
- package/dist/connectors/design-review-trigger.service.js.map +1 -0
- package/dist/connectors/figma/figma-url-parser.d.ts +12 -0
- package/dist/connectors/figma/figma-url-parser.d.ts.map +1 -0
- package/dist/connectors/figma/figma-url-parser.js +28 -0
- package/dist/connectors/figma/figma-url-parser.js.map +1 -0
- package/dist/connectors/figma/figma.client.d.ts +67 -0
- package/dist/connectors/figma/figma.client.d.ts.map +1 -0
- package/dist/connectors/figma/figma.client.js +67 -0
- package/dist/connectors/figma/figma.client.js.map +1 -0
- package/dist/connectors/figma/figma.connector.d.ts +29 -0
- package/dist/connectors/figma/figma.connector.d.ts.map +1 -0
- package/dist/connectors/figma/figma.connector.js +223 -0
- package/dist/connectors/figma/figma.connector.js.map +1 -0
- package/dist/connectors/figma/index.d.ts +4 -0
- package/dist/connectors/figma/index.d.ts.map +1 -0
- package/dist/connectors/figma/index.js +10 -0
- package/dist/connectors/figma/index.js.map +1 -0
- package/dist/connectors/issue-ref-helpers.d.ts +10 -0
- package/dist/connectors/issue-ref-helpers.d.ts.map +1 -0
- package/dist/connectors/issue-ref-helpers.js +24 -0
- package/dist/connectors/issue-ref-helpers.js.map +1 -0
- package/dist/connectors/issue-ref-parser.d.ts +22 -0
- package/dist/connectors/issue-ref-parser.d.ts.map +1 -0
- package/dist/connectors/issue-ref-parser.js +35 -0
- package/dist/connectors/issue-ref-parser.js.map +1 -0
- package/dist/connectors/issue-ref-resolver.service.d.ts +44 -0
- package/dist/connectors/issue-ref-resolver.service.d.ts.map +1 -0
- package/dist/connectors/issue-ref-resolver.service.js +226 -0
- package/dist/connectors/issue-ref-resolver.service.js.map +1 -0
- package/dist/connectors/jira/jira.client.d.ts +58 -0
- package/dist/connectors/jira/jira.client.d.ts.map +1 -0
- package/dist/connectors/jira/jira.client.js +70 -0
- package/dist/connectors/jira/jira.client.js.map +1 -0
- package/dist/connectors/jira/jira.connector.d.ts +17 -0
- package/dist/connectors/jira/jira.connector.d.ts.map +1 -0
- package/dist/connectors/jira/jira.connector.js +141 -0
- package/dist/connectors/jira/jira.connector.js.map +1 -0
- package/dist/connectors/sentry/sentry.client.d.ts +54 -0
- package/dist/connectors/sentry/sentry.client.d.ts.map +1 -0
- package/dist/connectors/sentry/sentry.client.js +69 -0
- package/dist/connectors/sentry/sentry.client.js.map +1 -0
- package/dist/connectors/sentry/sentry.connector.d.ts +17 -0
- package/dist/connectors/sentry/sentry.connector.d.ts.map +1 -0
- package/dist/connectors/sentry/sentry.connector.js +173 -0
- package/dist/connectors/sentry/sentry.connector.js.map +1 -0
- package/dist/connectors/webhook-comment-parser.d.ts +18 -0
- package/dist/connectors/webhook-comment-parser.d.ts.map +1 -0
- package/dist/connectors/webhook-comment-parser.js +28 -0
- package/dist/connectors/webhook-comment-parser.js.map +1 -0
- package/dist/database/repositories/connector.repository.d.ts +84 -0
- package/dist/database/repositories/connector.repository.d.ts.map +1 -0
- package/dist/database/repositories/connector.repository.js +222 -0
- package/dist/database/repositories/connector.repository.js.map +1 -0
- package/dist/database/repositories/developer.repository.d.ts +6 -1
- package/dist/database/repositories/developer.repository.d.ts.map +1 -1
- package/dist/database/repositories/developer.repository.js +19 -1
- package/dist/database/repositories/developer.repository.js.map +1 -1
- package/dist/database/repositories/external-issue-link.repository.d.ts +27 -0
- package/dist/database/repositories/external-issue-link.repository.d.ts.map +1 -0
- package/dist/database/repositories/external-issue-link.repository.js +85 -0
- package/dist/database/repositories/external-issue-link.repository.js.map +1 -0
- package/dist/database/repositories/task-design-context.repository.d.ts +33 -0
- package/dist/database/repositories/task-design-context.repository.d.ts.map +1 -0
- package/dist/database/repositories/task-design-context.repository.js +76 -0
- package/dist/database/repositories/task-design-context.repository.js.map +1 -0
- package/dist/database/repository.module.d.ts.map +1 -1
- package/dist/database/repository.module.js +6 -0
- package/dist/database/repository.module.js.map +1 -1
- package/dist/dispatcher/dedup.service.d.ts +1 -1
- package/dist/dispatcher/dedup.service.d.ts.map +1 -1
- package/dist/dispatcher/dedup.service.js +2 -2
- package/dist/dispatcher/dedup.service.js.map +1 -1
- package/dist/dispatcher/dispatcher.module.d.ts.map +1 -1
- package/dist/dispatcher/dispatcher.module.js +2 -1
- package/dist/dispatcher/dispatcher.module.js.map +1 -1
- package/dist/dispatcher/dispatcher.service.d.ts +7 -1
- package/dist/dispatcher/dispatcher.service.d.ts.map +1 -1
- package/dist/dispatcher/dispatcher.service.js +79 -8
- package/dist/dispatcher/dispatcher.service.js.map +1 -1
- package/dist/dispatcher/dispatcher.types.d.ts +26 -0
- package/dist/dispatcher/dispatcher.types.d.ts.map +1 -1
- package/dist/dispatcher/scheduler.service.d.ts +3 -1
- package/dist/dispatcher/scheduler.service.d.ts.map +1 -1
- package/dist/dispatcher/scheduler.service.js +16 -2
- package/dist/dispatcher/scheduler.service.js.map +1 -1
- package/dist/dispatcher/task-creation.service.d.ts +47 -3
- package/dist/dispatcher/task-creation.service.d.ts.map +1 -1
- package/dist/dispatcher/task-creation.service.js +26 -9
- package/dist/dispatcher/task-creation.service.js.map +1 -1
- package/dist/dispatcher/task-lifecycle.service.d.ts +5 -1
- package/dist/dispatcher/task-lifecycle.service.d.ts.map +1 -1
- package/dist/dispatcher/task-lifecycle.service.js +32 -3
- package/dist/dispatcher/task-lifecycle.service.js.map +1 -1
- package/dist/notifier/notification-consumer.d.ts +3 -1
- package/dist/notifier/notification-consumer.d.ts.map +1 -1
- package/dist/notifier/notification-consumer.js +26 -5
- package/dist/notifier/notification-consumer.js.map +1 -1
- package/dist/notifier/template.service.d.ts +6 -0
- package/dist/notifier/template.service.d.ts.map +1 -1
- package/dist/notifier/template.service.js +12 -0
- package/dist/notifier/template.service.js.map +1 -1
- package/dist/web/admin/admin-connector.controller.d.ts +58 -0
- package/dist/web/admin/admin-connector.controller.d.ts.map +1 -0
- package/dist/web/admin/admin-connector.controller.js +327 -0
- package/dist/web/admin/admin-connector.controller.js.map +1 -0
- package/dist/web/admin/admin-developer.controller.d.ts +1 -1
- package/dist/web/admin/admin-developer.controller.d.ts.map +1 -1
- package/dist/web/admin/admin-developer.controller.js +16 -5
- package/dist/web/admin/admin-developer.controller.js.map +1 -1
- package/dist/web/dashboard.controller.d.ts +1 -1
- package/dist/web/dashboard.service.d.ts +2 -7
- package/dist/web/dashboard.service.d.ts.map +1 -1
- package/dist/web/dashboard.service.js +16 -21
- package/dist/web/dashboard.service.js.map +1 -1
- package/dist/web/frame-handlers/review-report.handler.d.ts +3 -1
- package/dist/web/frame-handlers/review-report.handler.d.ts.map +1 -1
- package/dist/web/frame-handlers/review-report.handler.js +8 -3
- package/dist/web/frame-handlers/review-report.handler.js.map +1 -1
- package/dist/web/task.controller.d.ts +11 -1
- package/dist/web/task.controller.d.ts.map +1 -1
- package/dist/web/task.controller.js +118 -4
- package/dist/web/task.controller.js.map +1 -1
- package/dist/web/web.module.d.ts.map +1 -1
- package/dist/web/web.module.js +4 -1
- package/dist/web/web.module.js.map +1 -1
- package/dist/web/worker-channel.gateway.d.ts +3 -1
- package/dist/web/worker-channel.gateway.d.ts.map +1 -1
- package/dist/web/worker-channel.gateway.js +6 -3
- package/dist/web/worker-channel.gateway.js.map +1 -1
- package/package.json +4 -4
- package/public/assets/{AccessTokensPage-BlZBgj0-.js → AccessTokensPage-BhRmma33.js} +1 -1
- package/public/assets/{AdminPage-C0OFG0LC.js → AdminPage-ByfD-Bj7.js} +1 -1
- package/public/assets/{AgentCliPage-Ci2XVaN8.js → AgentCliPage-DyJnRmFm.js} +1 -1
- package/public/assets/{ApiReferencePage-Dm9y-zCM.js → ApiReferencePage-Wcyoo5XT.js} +1 -1
- package/public/assets/{ArchitecturePage-BetPO5Ws.js → ArchitecturePage-DgwFpJ3c.js} +1 -1
- package/public/assets/{AuditLogPage-Dbd27v1s.js → AuditLogPage-ByFVvlFb.js} +1 -1
- package/public/assets/{AutomationCreatePage-BvSw8KoZ.js → AutomationCreatePage-Cx-FCZEr.js} +1 -1
- package/public/assets/{AutomationDetailPage-1Y2tp1KP.js → AutomationDetailPage-BDh7SFeh.js} +1 -1
- package/public/assets/{AutomationEditPage-C9UO1XrW.js → AutomationEditPage-D76Ybtpz.js} +1 -1
- package/public/assets/{AutomationListPage-CJk8o3Vp.js → AutomationListPage-bNDDFN0Y.js} +1 -1
- package/public/assets/{AutomationRunDetailPage-h7T4V9Yq.js → AutomationRunDetailPage-BEWaGMai.js} +1 -1
- package/public/assets/{BindPlatformPage-DpzV1bpB.js → BindPlatformPage-CgfAbUal.js} +1 -1
- package/public/assets/{BotIntegrationPage-9kAG4BIL.js → BotIntegrationPage-D1A10L4d.js} +1 -1
- package/public/assets/{BotManage-BanZ5a5-.js → BotManage-IJm4jT-7.js} +1 -1
- package/public/assets/{BotSetupPage-BZIfJYqL.js → BotSetupPage-DIUSFgGv.js} +1 -1
- package/public/assets/{ChangelogPage-Da8n7_T3.js → ChangelogPage-D3R17QQT.js} +1 -1
- package/public/assets/{Checkbox-Dsj1BuTd.js → Checkbox-Drx9oKpj.js} +1 -1
- package/public/assets/{CliReferencePage-BDFsLYmx.js → CliReferencePage-BQ6Eyq2_.js} +1 -1
- package/public/assets/{ConfirmStageDialog-BUTA9YZ1.js → ConfirmStageDialog-BjjJNcLJ.js} +1 -1
- package/public/assets/ConnectorsPage-BgBXQlwq.js +48 -0
- package/public/assets/{DeploymentPage-B5TlN0FI.js → DeploymentPage-Cbmb8KKs.js} +1 -1
- package/public/assets/{DevWorkflowPage-Abvhng0F.js → DevWorkflowPage-Dur0zn7L.js} +1 -1
- package/public/assets/DeveloperManage-BmFhmcbZ.js +16 -0
- package/public/assets/{DeveloperSetupPage-QipfVSjp.js → DeveloperSetupPage-G9amle-q.js} +1 -1
- package/public/assets/{DocsIndexPage-Dw-saIXq.js → DocsIndexPage-CAPCKH_C.js} +11 -6
- package/public/assets/{DocsLayout-BsGaDVp1.js → DocsLayout-gVsQBlHm.js} +1 -1
- package/public/assets/{DocsPrimitives-Bv8TQpkc.js → DocsPrimitives-VBA7lZhS.js} +1 -1
- package/public/assets/{EditProjectPage-CtNCwK-z.js → EditProjectPage-Dn-MgU4f.js} +1 -1
- package/public/assets/{EmptyState-BpbqIJyG.js → EmptyState-B0pdsOsA.js} +1 -1
- package/public/assets/{EnvVariablesPage-D5Cn_E5P.js → EnvVariablesPage-DXaJ3Ejc.js} +1 -1
- package/public/assets/HomePage-B4ION8nK.js +1 -0
- package/public/assets/{InfoRow-BCDb21nt.js → InfoRow-DTHohr5Y.js} +1 -1
- package/public/assets/{InstallationPage-DLW6MXhs.js → InstallationPage-BVY5fIOG.js} +1 -1
- package/public/assets/{LandingPage-BLcQBvuD.js → LandingPage-DAP65IzR.js} +1 -1
- package/public/assets/{LocalDevelopmentPage-BnbdovKe.js → LocalDevelopmentPage-C9pD5y0c.js} +1 -1
- package/public/assets/{LoginPage-Bh-p4hP9.js → LoginPage-BToTW-qz.js} +1 -1
- package/public/assets/{MetricBar-DLR15rum.js → MetricBar-DA42IEeN.js} +1 -1
- package/public/assets/{MultiSelect-BKtGWYgt.js → MultiSelect-5hKAHK2N.js} +1 -1
- package/public/assets/{NotFoundPage-BpUwim1l.js → NotFoundPage-BQbQRjCC.js} +1 -1
- package/public/assets/{OnboardingGuide-BTsSW7Mq.js → OnboardingGuide-or_CwmfY.js} +1 -1
- package/public/assets/{PermissionsPage-A828G2ih.js → PermissionsPage-D867c8K5.js} +1 -1
- package/public/assets/{PipelineConfigPage-Cw1OxgKV.js → PipelineConfigPage-DYL-Eg8a.js} +1 -1
- package/public/assets/{PipelineEditorPage-tewviYrj.js → PipelineEditorPage-D6EpDvPI.js} +1 -1
- package/public/assets/{PlanPage-Bidp5iEn.js → PlanPage-Bfgn9hdf.js} +1 -1
- package/public/assets/{ProfilePage-DgFxZS6i.js → ProfilePage-DydZ_JO_.js} +1 -1
- package/public/assets/{ProjectDetailPage-BoIU1U3V.js → ProjectDetailPage-BLSkZmV0.js} +1 -1
- package/public/assets/{ProjectListPage-DMoN7Ghc.js → ProjectListPage-KWBq3v71.js} +1 -1
- package/public/assets/{PtyTerminal-QdM0LGge.js → PtyTerminal-DZ-tRh7i.js} +1 -1
- package/public/assets/{QuickAuth-CGnZQLaj.js → QuickAuth-D_2JnzxW.js} +1 -1
- package/public/assets/{RemoveMemberConfirmDialog-uFuATit4.js → RemoveMemberConfirmDialog-B1T8FRls.js} +1 -1
- package/public/assets/ReviewAggregatePage-D-sgcTHd.js +6 -0
- package/public/assets/ReviewPage-DLXr5nmf.js +1 -0
- package/public/assets/{Select-CC0FnszM.js → Select-PNbJCK1d.js} +1 -1
- package/public/assets/{SettingsPage-DiecpWAG.js → SettingsPage-DgNCPUzP.js} +1 -1
- package/public/assets/{Skeleton-WCDZdltv.js → Skeleton-C9OmZNVj.js} +1 -1
- package/public/assets/{SkillPage-ABYkJSop.js → SkillPage-jXi2VAvG.js} +1 -1
- package/public/assets/TaskDetailPage-Dy0CSg-i.js +21 -0
- package/public/assets/{TaskGuidePage-CFzoePPd.js → TaskGuidePage-C2VJEOGp.js} +1 -1
- package/public/assets/TaskListPage-63cj9-Gf.js +1 -0
- package/public/assets/{TaskStatusBadge-CzUIb3QQ.js → TaskStatusBadge-Ieecwysj.js} +1 -1
- package/public/assets/{TerminalHomePage-DP-gqkiq.js → TerminalHomePage-wxZHwphZ.js} +1 -1
- package/public/assets/{TokenManage-CbLsJbR9.js → TokenManage-D_fRhfSC.js} +1 -1
- package/public/assets/{Tooltip-Ds3lc4sS.js → Tooltip-hO7lE45q.js} +1 -1
- package/public/assets/{TotpSetupPage-Bakhx3kM.js → TotpSetupPage-DPv5zEkr.js} +1 -1
- package/public/assets/{WorkerDetailPage-W_1tf-Ng.js → WorkerDetailPage-BNHh3G4i.js} +1 -1
- package/public/assets/{WorkerListPage-DAgJojBW.js → WorkerListPage-CnUaksv5.js} +1 -1
- package/public/assets/{WorkerOperationsPage-BE8gDr3P.js → WorkerOperationsPage-BF-j3TGV.js} +1 -1
- package/public/assets/{WorkerSetupGuidePage-Cjwu7yCO.js → WorkerSetupGuidePage-CgoXTtvB.js} +1 -1
- package/public/assets/{WorkerSetupPage-C4F2PDWx.js → WorkerSetupPage-C9FJdEtx.js} +1 -1
- package/public/assets/{agent-type-options-BTd_pbKQ.js → agent-type-options-DPcGCrTV.js} +1 -1
- package/public/assets/{arrow-left-Czit8jGK.js → arrow-left-CMC8xPNU.js} +1 -1
- package/public/assets/{arrow-right-DUvU3ZSE.js → arrow-right-CzgMaKkq.js} +1 -1
- package/public/assets/{bot-xYitrdXz.js → bot-DZNbJaal.js} +1 -1
- package/public/assets/{chevron-down-DwSdaR46.js → chevron-down-Byw_H7qa.js} +1 -1
- package/public/assets/{chevron-left-DMFdbT8q.js → chevron-left-B9OwsObK.js} +1 -1
- package/public/assets/{chevron-right-BqoEBUXc.js → chevron-right-BDxmkY05.js} +1 -1
- package/public/assets/{chevron-up-4jZShvn6.js → chevron-up-qpQChOEd.js} +1 -1
- package/public/assets/{circle-alert-gAYg5DQY.js → circle-alert-qjGQBuvk.js} +1 -1
- package/public/assets/{clock-Bn8CRcdc.js → clock-RH0F7m7Y.js} +1 -1
- package/public/assets/{copy-_C7txolK.js → copy-sq8YNzps.js} +1 -1
- package/public/assets/{download-CGR9pdGa.js → download-BILbhyFl.js} +1 -1
- package/public/assets/{external-link-DGEar13h.js → external-link-6-aTSDMz.js} +1 -1
- package/public/assets/{git-fork-bd2vu3ng.js → git-fork-Tz0-ma48.js} +1 -1
- package/public/assets/{index-DAwsREkq.js → index-CqgRY3L6.js} +13 -13
- package/public/assets/{key-b6kn-A1T.js → key-D8a2ymYq.js} +1 -1
- package/public/assets/{loader-circle-vH-Hp_AS.js → loader-circle-CRxnDWNg.js} +1 -1
- package/public/assets/{pencil-Cxzh8oiw.js → pencil-BB-LZCT2.js} +1 -1
- package/public/assets/{play-bFi1k4eQ.js → play-DP6MNxNf.js} +1 -1
- package/public/assets/{plus-DJTaWh3N.js → plus-DSLmbw91.js} +1 -1
- package/public/assets/{rotate-ccw-CXFQ7046.js → rotate-ccw-DkPBqmSU.js} +1 -1
- package/public/assets/{scroll-text-UIbwyc0E.js → scroll-text-Cn9LA-xo.js} +1 -1
- package/public/assets/{settings-DA_C9Znv.js → settings-DQCRnFRi.js} +1 -1
- package/public/assets/{skip-forward-C71GgwGt.js → skip-forward-ZkknEL37.js} +1 -1
- package/public/assets/{status-colors-C14ffr9M.js → status-colors-CpKIU449.js} +1 -1
- package/public/assets/{task-agent-BasiQZ0L.js → task-agent-knUib-IL.js} +1 -1
- package/public/assets/{task-constants-DihuKtBw.js → task-constants-DiU1z_dP.js} +1 -1
- package/public/assets/{task.store-MpV9TV7z.js → task.store-BfdxbFUg.js} +1 -1
- package/public/assets/{timer-COkLkLUF.js → timer-BJw0BmGT.js} +1 -1
- package/public/assets/{trash-2-CDhJihtl.js → trash-2-DLdIg5hq.js} +1 -1
- package/public/assets/{useFetch-CgkGfhaP.js → useFetch-cT1ib8kh.js} +1 -1
- package/public/assets/{users-BwpIig9c.js → users-D2JV7gxB.js} +1 -1
- package/public/assets/{wifi-D5o6IWuC.js → wifi-Jy12B8KN.js} +1 -1
- package/public/assets/{workflow-DXTOpHef.js → workflow-BmBIBEn9.js} +1 -1
- package/public/assets/{zap-CEUF2oJs.js → zap-oNjSxQ6J.js} +1 -1
- package/public/index.html +1 -1
- package/public/sw.js +1 -1
- package/public/assets/DeveloperManage-DPSHCC6K.js +0 -16
- package/public/assets/HomePage-BFNO_Hk6.js +0 -1
- package/public/assets/ReviewAggregatePage-D5S57j51.js +0 -6
- package/public/assets/ReviewPage-tkUY7vrY.js +0 -1
- package/public/assets/TaskDetailPage-D6qSqsm0.js +0 -21
- package/public/assets/TaskListPage-rDPMfjmN.js +0 -1
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var ConnectorRegistry_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.ConnectorRegistry = exports.CONNECTORS = void 0;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
exports.CONNECTORS = Symbol('CONNECTORS');
|
|
19
|
+
let ConnectorRegistry = ConnectorRegistry_1 = class ConnectorRegistry {
|
|
20
|
+
constructor(registered = []) {
|
|
21
|
+
this.registered = registered;
|
|
22
|
+
this.logger = new common_1.Logger(ConnectorRegistry_1.name);
|
|
23
|
+
this.connectors = new Map();
|
|
24
|
+
}
|
|
25
|
+
onModuleInit() {
|
|
26
|
+
for (const connector of this.registered) {
|
|
27
|
+
this.connectors.set(connector.platform, connector);
|
|
28
|
+
this.logger.log(`Registered connector: ${connector.platform}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
get(platform) {
|
|
32
|
+
return this.connectors.get(platform);
|
|
33
|
+
}
|
|
34
|
+
getAll() {
|
|
35
|
+
return Array.from(this.connectors.values());
|
|
36
|
+
}
|
|
37
|
+
platforms() {
|
|
38
|
+
return Array.from(this.connectors.keys());
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
exports.ConnectorRegistry = ConnectorRegistry;
|
|
42
|
+
exports.ConnectorRegistry = ConnectorRegistry = ConnectorRegistry_1 = __decorate([
|
|
43
|
+
(0, common_1.Injectable)(),
|
|
44
|
+
__param(0, (0, common_1.Optional)()),
|
|
45
|
+
__param(0, (0, common_1.Inject)(exports.CONNECTORS)),
|
|
46
|
+
__metadata("design:paramtypes", [Array])
|
|
47
|
+
], ConnectorRegistry);
|
|
48
|
+
//# sourceMappingURL=connector.registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector.registry.js","sourceRoot":"","sources":["../../src/connectors/connector.registry.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAoF;AAIvE,QAAA,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAGxC,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAI5B,YACkC,aAA4C,EAAE;QAA7B,eAAU,GAAV,UAAU,CAAmB;QAJ/D,WAAM,GAAG,IAAI,eAAM,CAAC,mBAAiB,CAAC,IAAI,CAAC,CAAC;QAC5C,eAAU,GAAG,IAAI,GAAG,EAAsB,CAAC;IAIzD,CAAC;IAEJ,YAAY;QACV,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,GAAG,CAAC,QAAoC;QACtC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,SAAS;QACP,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF,CAAA;AA1BY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,iBAAQ,GAAE,CAAA;IAAE,WAAA,IAAA,eAAM,EAAC,kBAAU,CAAC,CAAA;;GALtB,iBAAiB,CA0B7B"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ConnectorRepository } from '../database/repositories/connector.repository';
|
|
2
|
+
import type { ConnectorInstanceRow } from '../database/repositories/connector.repository';
|
|
3
|
+
import { TaskDesignContextRepository } from '../database/repositories/task-design-context.repository';
|
|
4
|
+
import { ConnectorRegistry } from './connector.registry';
|
|
5
|
+
import type { FigmaDesignData } from './figma/figma.connector';
|
|
6
|
+
export declare class DesignContextService {
|
|
7
|
+
private readonly connectorRepo;
|
|
8
|
+
private readonly designContextRepo;
|
|
9
|
+
private readonly connectorRegistry;
|
|
10
|
+
private readonly logger;
|
|
11
|
+
constructor(connectorRepo: ConnectorRepository, designContextRepo: TaskDesignContextRepository, connectorRegistry: ConnectorRegistry);
|
|
12
|
+
/** Step 1: Call Figma API to fetch design data (slow, requires await). Does not write to DB. */
|
|
13
|
+
fetch(fileKey: string, nodeIds?: string[], projectKey?: string, connectorInstanceId?: number): Promise<{
|
|
14
|
+
instance: ConnectorInstanceRow;
|
|
15
|
+
context: FigmaDesignData;
|
|
16
|
+
}>;
|
|
17
|
+
/** Step 2: Write design context to DB (fast, synchronous better-sqlite3). Call after createTask. */
|
|
18
|
+
store(taskId: number, instanceId: number, context: FigmaDesignData, commentId?: string): void;
|
|
19
|
+
private resolveInstance;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=design-context.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"design-context.service.d.ts","sourceRoot":"","sources":["../../src/connectors/design-context.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAC1F,OAAO,EAAE,2BAA2B,EAAE,MAAM,yDAAyD,CAAC;AACtG,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAkB,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/E,qBACa,oBAAoB;IAI7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IALpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;gBAG7C,aAAa,EAAE,mBAAmB,EAClC,iBAAiB,EAAE,2BAA2B,EAC9C,iBAAiB,EAAE,iBAAiB;IAGvD,gGAAgG;IAC1F,KAAK,CACT,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,EAAE,EAClB,UAAU,CAAC,EAAE,MAAM,EACnB,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC;QAAE,QAAQ,EAAE,oBAAoB,CAAC;QAAC,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC;IAaxE,oGAAoG;IACpG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAa7F,OAAO,CAAC,eAAe;CAgBxB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var DesignContextService_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.DesignContextService = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const connector_repository_1 = require("../database/repositories/connector.repository");
|
|
16
|
+
const task_design_context_repository_1 = require("../database/repositories/task-design-context.repository");
|
|
17
|
+
const connector_registry_1 = require("./connector.registry");
|
|
18
|
+
let DesignContextService = DesignContextService_1 = class DesignContextService {
|
|
19
|
+
constructor(connectorRepo, designContextRepo, connectorRegistry) {
|
|
20
|
+
this.connectorRepo = connectorRepo;
|
|
21
|
+
this.designContextRepo = designContextRepo;
|
|
22
|
+
this.connectorRegistry = connectorRegistry;
|
|
23
|
+
this.logger = new common_1.Logger(DesignContextService_1.name);
|
|
24
|
+
}
|
|
25
|
+
/** Step 1: Call Figma API to fetch design data (slow, requires await). Does not write to DB. */
|
|
26
|
+
async fetch(fileKey, nodeIds, projectKey, connectorInstanceId) {
|
|
27
|
+
const instance = this.resolveInstance(connectorInstanceId, projectKey);
|
|
28
|
+
if (!instance) {
|
|
29
|
+
throw new Error('No active Figma connector instance found');
|
|
30
|
+
}
|
|
31
|
+
const connector = this.connectorRegistry.get('figma');
|
|
32
|
+
if (!connector) {
|
|
33
|
+
throw new Error('Figma connector is not registered');
|
|
34
|
+
}
|
|
35
|
+
const context = await connector.buildDesignContext(instance, fileKey, nodeIds);
|
|
36
|
+
return { instance, context };
|
|
37
|
+
}
|
|
38
|
+
/** Step 2: Write design context to DB (fast, synchronous better-sqlite3). Call after createTask. */
|
|
39
|
+
store(taskId, instanceId, context, commentId) {
|
|
40
|
+
this.designContextRepo.create({
|
|
41
|
+
taskId,
|
|
42
|
+
connectorInstanceId: instanceId,
|
|
43
|
+
platform: 'figma',
|
|
44
|
+
fileKey: context.fileKey,
|
|
45
|
+
fileUrl: context.fileUrl,
|
|
46
|
+
nodeIds: JSON.stringify(context.nodeIds),
|
|
47
|
+
images: JSON.stringify(context.images),
|
|
48
|
+
commentId: commentId ?? null,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
resolveInstance(connectorInstanceId, projectKey) {
|
|
52
|
+
if (connectorInstanceId != null) {
|
|
53
|
+
const inst = this.connectorRepo.findInstanceById(connectorInstanceId);
|
|
54
|
+
if (inst)
|
|
55
|
+
return inst;
|
|
56
|
+
}
|
|
57
|
+
if (projectKey) {
|
|
58
|
+
const bindings = this.connectorRepo.findBindingsByProjectKey(projectKey);
|
|
59
|
+
for (const b of bindings) {
|
|
60
|
+
const inst = this.connectorRepo.findInstanceById(b.connectorInstanceId);
|
|
61
|
+
if (inst?.platform === 'figma' && inst.status === 'active')
|
|
62
|
+
return inst;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Do NOT fall back to a global instance — the caller must provide
|
|
66
|
+
// a connectorInstanceId or a projectKey with an explicit binding.
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
exports.DesignContextService = DesignContextService;
|
|
71
|
+
exports.DesignContextService = DesignContextService = DesignContextService_1 = __decorate([
|
|
72
|
+
(0, common_1.Injectable)(),
|
|
73
|
+
__metadata("design:paramtypes", [connector_repository_1.ConnectorRepository,
|
|
74
|
+
task_design_context_repository_1.TaskDesignContextRepository,
|
|
75
|
+
connector_registry_1.ConnectorRegistry])
|
|
76
|
+
], DesignContextService);
|
|
77
|
+
//# sourceMappingURL=design-context.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"design-context.service.js","sourceRoot":"","sources":["../../src/connectors/design-context.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,wFAAoF;AAEpF,4GAAsG;AACtG,6DAAyD;AAIlD,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IAG/B,YACmB,aAAkC,EAClC,iBAA8C,EAC9C,iBAAoC;QAFpC,kBAAa,GAAb,aAAa,CAAqB;QAClC,sBAAiB,GAAjB,iBAAiB,CAA6B;QAC9C,sBAAiB,GAAjB,iBAAiB,CAAmB;QALtC,WAAM,GAAG,IAAI,eAAM,CAAC,sBAAoB,CAAC,IAAI,CAAC,CAAC;IAM7D,CAAC;IAEJ,gGAAgG;IAChG,KAAK,CAAC,KAAK,CACT,OAAe,EACf,OAAkB,EAClB,UAAmB,EACnB,mBAA4B;QAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;QACvE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAmB,CAAC;QACxE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/E,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC/B,CAAC;IAED,oGAAoG;IACpG,KAAK,CAAC,MAAc,EAAE,UAAkB,EAAE,OAAwB,EAAE,SAAkB;QACpF,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAC5B,MAAM;YACN,mBAAmB,EAAE,UAAU;YAC/B,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;YACxC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;YACtC,SAAS,EAAE,SAAS,IAAI,IAAI;SAC7B,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,CAAC,mBAA4B,EAAE,UAAmB;QACvE,IAAI,mBAAmB,IAAI,IAAI,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;YACtE,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;QACxB,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;YACzE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;gBACxE,IAAI,IAAI,EAAE,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;oBAAE,OAAO,IAAI,CAAC;YAC1E,CAAC;QACH,CAAC;QACD,kEAAkE;QAClE,kEAAkE;QAClE,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAA;AA1DY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;qCAKuB,0CAAmB;QACf,4DAA2B;QAC3B,sCAAiB;GAN5C,oBAAoB,CA0DhC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type TaskStatusChangedPayload } from '../events/event-types';
|
|
2
|
+
import { TaskRepository } from '../database/repositories/task.repository';
|
|
3
|
+
import { TaskDesignContextRepository } from '../database/repositories/task-design-context.repository';
|
|
4
|
+
import { ConnectorRepository } from '../database/repositories/connector.repository';
|
|
5
|
+
import { TaskCreationService } from '../dispatcher/task-creation.service';
|
|
6
|
+
export declare class DesignReviewTriggerService {
|
|
7
|
+
private readonly taskRepo;
|
|
8
|
+
private readonly designContextRepo;
|
|
9
|
+
private readonly connectorRepo;
|
|
10
|
+
private readonly taskCreationService;
|
|
11
|
+
private readonly logger;
|
|
12
|
+
constructor(taskRepo: TaskRepository, designContextRepo: TaskDesignContextRepository, connectorRepo: ConnectorRepository, taskCreationService: TaskCreationService);
|
|
13
|
+
handleTaskCompleted(payload: TaskStatusChangedPayload): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=design-review-trigger.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"design-review-trigger.service.d.ts","sourceRoot":"","sources":["../../src/connectors/design-review-trigger.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,yDAAyD,CAAC;AACtG,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAG1E,qBACa,0BAA0B;IAInC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IANtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;gBAGnD,QAAQ,EAAE,cAAc,EACxB,iBAAiB,EAAE,2BAA2B,EAC9C,aAAa,EAAE,mBAAmB,EAClC,mBAAmB,EAAE,mBAAmB;IAIrD,mBAAmB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;CAyD5E"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var DesignReviewTriggerService_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.DesignReviewTriggerService = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const event_emitter_1 = require("@nestjs/event-emitter");
|
|
16
|
+
const protocol_1 = require("@overlordai/protocol");
|
|
17
|
+
const event_types_1 = require("../events/event-types");
|
|
18
|
+
const task_repository_1 = require("../database/repositories/task.repository");
|
|
19
|
+
const task_design_context_repository_1 = require("../database/repositories/task-design-context.repository");
|
|
20
|
+
const connector_repository_1 = require("../database/repositories/connector.repository");
|
|
21
|
+
const task_creation_service_1 = require("../dispatcher/task-creation.service");
|
|
22
|
+
const connector_constants_1 = require("./connector.constants");
|
|
23
|
+
let DesignReviewTriggerService = DesignReviewTriggerService_1 = class DesignReviewTriggerService {
|
|
24
|
+
constructor(taskRepo, designContextRepo, connectorRepo, taskCreationService) {
|
|
25
|
+
this.taskRepo = taskRepo;
|
|
26
|
+
this.designContextRepo = designContextRepo;
|
|
27
|
+
this.connectorRepo = connectorRepo;
|
|
28
|
+
this.taskCreationService = taskCreationService;
|
|
29
|
+
this.logger = new common_1.Logger(DesignReviewTriggerService_1.name);
|
|
30
|
+
}
|
|
31
|
+
async handleTaskCompleted(payload) {
|
|
32
|
+
if (payload.status !== protocol_1.TaskStatus.COMPLETED)
|
|
33
|
+
return;
|
|
34
|
+
const task = this.taskRepo.findById(payload.taskId);
|
|
35
|
+
if (!task || task.taskMode !== 'develop')
|
|
36
|
+
return;
|
|
37
|
+
const contexts = this.designContextRepo.findByTaskId(task.id);
|
|
38
|
+
if (contexts.length === 0)
|
|
39
|
+
return;
|
|
40
|
+
// Check auto-review is enabled for the specific connector instance(s)
|
|
41
|
+
// that provided the design context — not just any Figma binding in the project.
|
|
42
|
+
const contextInstanceIds = new Set(contexts.map((c) => c.connectorInstanceId));
|
|
43
|
+
const bindings = this.connectorRepo.findBindingsByProjectKey(task.projectKey);
|
|
44
|
+
const hasFigmaAutoReview = bindings.some((b) => {
|
|
45
|
+
if (!contextInstanceIds.has(b.connectorInstanceId))
|
|
46
|
+
return false;
|
|
47
|
+
const inst = this.connectorRepo.findInstanceById(b.connectorInstanceId);
|
|
48
|
+
return inst?.platform === 'figma' && b.autoDesignReview;
|
|
49
|
+
});
|
|
50
|
+
if (!hasFigmaAutoReview)
|
|
51
|
+
return;
|
|
52
|
+
// Prevent duplicate auto-review
|
|
53
|
+
const existing = this.taskRepo.findBySourceTaskId(task.id);
|
|
54
|
+
if (existing.some((t) => t.taskMode === 'review' && connector_constants_1.ACTIVE_TASK_STATUSES.has(t.status)))
|
|
55
|
+
return;
|
|
56
|
+
if (!task.createdBy) {
|
|
57
|
+
this.logger.warn({ taskId: task.id }, 'Cannot auto-trigger design review: task has no creator');
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
await this.taskCreationService.createReviewTasks(task.id, [], task.createdBy, `Design review for Task #${task.id}`, true, // skipFix
|
|
62
|
+
(rt) => {
|
|
63
|
+
// beforeEnqueue: synchronously copy design context from source task
|
|
64
|
+
for (const ctx of contexts) {
|
|
65
|
+
this.designContextRepo.create({
|
|
66
|
+
taskId: rt.id,
|
|
67
|
+
connectorInstanceId: ctx.connectorInstanceId,
|
|
68
|
+
platform: ctx.platform,
|
|
69
|
+
fileKey: ctx.fileKey,
|
|
70
|
+
fileUrl: ctx.fileUrl,
|
|
71
|
+
nodeIds: ctx.nodeIds,
|
|
72
|
+
images: ctx.images,
|
|
73
|
+
commentId: ctx.commentId,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
this.logger.log({ sourceTaskId: task.id }, 'Auto design review triggered');
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
this.logger.warn({ err, sourceTaskId: task.id }, 'Auto design review failed');
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
exports.DesignReviewTriggerService = DesignReviewTriggerService;
|
|
85
|
+
__decorate([
|
|
86
|
+
(0, event_emitter_1.OnEvent)(event_types_1.DomainEvents.TASK_STATUS_CHANGED),
|
|
87
|
+
__metadata("design:type", Function),
|
|
88
|
+
__metadata("design:paramtypes", [Object]),
|
|
89
|
+
__metadata("design:returntype", Promise)
|
|
90
|
+
], DesignReviewTriggerService.prototype, "handleTaskCompleted", null);
|
|
91
|
+
exports.DesignReviewTriggerService = DesignReviewTriggerService = DesignReviewTriggerService_1 = __decorate([
|
|
92
|
+
(0, common_1.Injectable)(),
|
|
93
|
+
__metadata("design:paramtypes", [task_repository_1.TaskRepository,
|
|
94
|
+
task_design_context_repository_1.TaskDesignContextRepository,
|
|
95
|
+
connector_repository_1.ConnectorRepository,
|
|
96
|
+
task_creation_service_1.TaskCreationService])
|
|
97
|
+
], DesignReviewTriggerService);
|
|
98
|
+
//# sourceMappingURL=design-review-trigger.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"design-review-trigger.service.js","sourceRoot":"","sources":["../../src/connectors/design-review-trigger.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface ParsedFigmaUrl {
|
|
2
|
+
fileKey: string;
|
|
3
|
+
fileName?: string;
|
|
4
|
+
nodeId?: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Parse a Figma URL into its component parts.
|
|
8
|
+
* Supports /file/KEY/... and /design/KEY/... URL formats.
|
|
9
|
+
* Node IDs in URLs use dashes (1-2) which are converted to colons (1:2) for the API.
|
|
10
|
+
*/
|
|
11
|
+
export declare function parseFigmaUrl(url: string): ParsedFigmaUrl | null;
|
|
12
|
+
//# sourceMappingURL=figma-url-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"figma-url-parser.d.ts","sourceRoot":"","sources":["../../../src/connectors/figma/figma-url-parser.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAmBhE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseFigmaUrl = parseFigmaUrl;
|
|
4
|
+
/**
|
|
5
|
+
* Parse a Figma URL into its component parts.
|
|
6
|
+
* Supports /file/KEY/... and /design/KEY/... URL formats.
|
|
7
|
+
* Node IDs in URLs use dashes (1-2) which are converted to colons (1:2) for the API.
|
|
8
|
+
*/
|
|
9
|
+
function parseFigmaUrl(url) {
|
|
10
|
+
try {
|
|
11
|
+
const parsed = new URL(url);
|
|
12
|
+
if (parsed.hostname !== 'figma.com' && parsed.hostname !== 'www.figma.com') {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
const match = parsed.pathname.match(/\/(?:file|design)\/([a-zA-Z0-9_-]+)(?:\/([^?]*))?/);
|
|
16
|
+
if (!match)
|
|
17
|
+
return null;
|
|
18
|
+
const fileKey = match[1];
|
|
19
|
+
const fileName = match[2] ? decodeURIComponent(match[2].replace(/\/$/, '')) : undefined;
|
|
20
|
+
const rawNodeId = parsed.searchParams.get('node-id');
|
|
21
|
+
const nodeId = rawNodeId ? rawNodeId.replace(/-/g, ':') : undefined;
|
|
22
|
+
return { fileKey, fileName, nodeId };
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=figma-url-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"figma-url-parser.js","sourceRoot":"","sources":["../../../src/connectors/figma/figma-url-parser.ts"],"names":[],"mappings":";;AAWA,sCAmBC;AAxBD;;;;GAIG;AACH,SAAgB,aAAa,CAAC,GAAW;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,KAAK,eAAe,EAAE,CAAC;YAC3E,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACzF,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxF,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEpE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export interface FigmaCredentials {
|
|
2
|
+
personalAccessToken: string;
|
|
3
|
+
}
|
|
4
|
+
export interface FigmaFileResponse {
|
|
5
|
+
name: string;
|
|
6
|
+
document: {
|
|
7
|
+
children: Array<{
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
type: string;
|
|
11
|
+
children?: Array<{
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
type: string;
|
|
15
|
+
}>;
|
|
16
|
+
}>;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export interface FigmaFileNodesResponse {
|
|
20
|
+
nodes: Record<string, {
|
|
21
|
+
document: {
|
|
22
|
+
id: string;
|
|
23
|
+
name: string;
|
|
24
|
+
type: string;
|
|
25
|
+
};
|
|
26
|
+
}>;
|
|
27
|
+
}
|
|
28
|
+
export interface FigmaImageResponse {
|
|
29
|
+
images: Record<string, string | null>;
|
|
30
|
+
}
|
|
31
|
+
export interface FigmaComment {
|
|
32
|
+
id: string;
|
|
33
|
+
message: string;
|
|
34
|
+
client_meta?: {
|
|
35
|
+
node_id?: string;
|
|
36
|
+
node_offset?: {
|
|
37
|
+
x: number;
|
|
38
|
+
y: number;
|
|
39
|
+
};
|
|
40
|
+
} | null;
|
|
41
|
+
order_id?: number;
|
|
42
|
+
parent_id?: string;
|
|
43
|
+
created_at: string;
|
|
44
|
+
}
|
|
45
|
+
export interface FigmaCommentsResponse {
|
|
46
|
+
comments: FigmaComment[];
|
|
47
|
+
}
|
|
48
|
+
export interface FigmaUser {
|
|
49
|
+
id: string;
|
|
50
|
+
handle: string;
|
|
51
|
+
email: string;
|
|
52
|
+
}
|
|
53
|
+
export declare class FigmaClient {
|
|
54
|
+
private readonly headers;
|
|
55
|
+
constructor(credentials: FigmaCredentials);
|
|
56
|
+
private api;
|
|
57
|
+
getFile(fileKey: string): Promise<FigmaFileResponse>;
|
|
58
|
+
getFileNodes(fileKey: string, nodeIds: string[]): Promise<FigmaFileNodesResponse>;
|
|
59
|
+
exportImages(fileKey: string, nodeIds: string[], format?: 'png' | 'svg' | 'jpg' | 'pdf', scale?: number): Promise<FigmaImageResponse>;
|
|
60
|
+
getComments(fileKey: string): Promise<FigmaCommentsResponse>;
|
|
61
|
+
postComment(fileKey: string, message: string, opts?: {
|
|
62
|
+
nodeId?: string;
|
|
63
|
+
commentId?: string;
|
|
64
|
+
}): Promise<void>;
|
|
65
|
+
getCurrentUser(): Promise<FigmaUser>;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=figma.client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"figma.client.d.ts","sourceRoot":"","sources":["../../../src/connectors/figma/figma.client.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QACR,QAAQ,EAAE,KAAK,CAAC;YACd,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,CAAC,EAAE,KAAK,CAAC;gBACf,EAAE,EAAE,MAAM,CAAC;gBACX,IAAI,EAAE,MAAM,CAAC;gBACb,IAAI,EAAE,MAAM,CAAC;aACd,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QACpB,QAAQ,EAAE;YACR,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAQD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;gBAErC,WAAW,EAAE,gBAAgB;YAM3B,GAAG;IASX,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAOpD,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAOjF,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,GAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAa,EAC7C,KAAK,SAAI,GACR,OAAO,CAAC,kBAAkB,CAAC;IAWxB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAK5D,WAAW,CACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7C,OAAO,CAAC,IAAI,CAAC;IAYV,cAAc,IAAI,OAAO,CAAC,SAAS,CAAC;CAI3C"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FigmaClient = void 0;
|
|
4
|
+
let _ky;
|
|
5
|
+
async function getKy() {
|
|
6
|
+
if (!_ky)
|
|
7
|
+
_ky = (await import('ky')).default;
|
|
8
|
+
return _ky;
|
|
9
|
+
}
|
|
10
|
+
class FigmaClient {
|
|
11
|
+
constructor(credentials) {
|
|
12
|
+
this.headers = {
|
|
13
|
+
'X-Figma-Token': credentials.personalAccessToken,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
async api(timeout = 30_000) {
|
|
17
|
+
const ky = await getKy();
|
|
18
|
+
return ky.create({
|
|
19
|
+
prefixUrl: 'https://api.figma.com',
|
|
20
|
+
headers: this.headers,
|
|
21
|
+
timeout,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
async getFile(fileKey) {
|
|
25
|
+
const api = await this.api(30_000);
|
|
26
|
+
return api.get(`v1/files/${fileKey}`, {
|
|
27
|
+
searchParams: { depth: 2 },
|
|
28
|
+
}).json();
|
|
29
|
+
}
|
|
30
|
+
async getFileNodes(fileKey, nodeIds) {
|
|
31
|
+
const api = await this.api(30_000);
|
|
32
|
+
return api.get(`v1/files/${fileKey}/nodes`, {
|
|
33
|
+
searchParams: { ids: nodeIds.join(',') },
|
|
34
|
+
}).json();
|
|
35
|
+
}
|
|
36
|
+
async exportImages(fileKey, nodeIds, format = 'png', scale = 2) {
|
|
37
|
+
const api = await this.api(60_000);
|
|
38
|
+
return api.get(`v1/images/${fileKey}`, {
|
|
39
|
+
searchParams: {
|
|
40
|
+
ids: nodeIds.join(','),
|
|
41
|
+
format,
|
|
42
|
+
scale: String(scale),
|
|
43
|
+
},
|
|
44
|
+
}).json();
|
|
45
|
+
}
|
|
46
|
+
async getComments(fileKey) {
|
|
47
|
+
const api = await this.api(30_000);
|
|
48
|
+
return api.get(`v1/files/${fileKey}/comments`).json();
|
|
49
|
+
}
|
|
50
|
+
async postComment(fileKey, message, opts) {
|
|
51
|
+
const api = await this.api(30_000);
|
|
52
|
+
const json = { message };
|
|
53
|
+
if (opts?.commentId) {
|
|
54
|
+
json.comment_id = opts.commentId;
|
|
55
|
+
}
|
|
56
|
+
if (opts?.nodeId) {
|
|
57
|
+
json.client_meta = { node_id: opts.nodeId, node_offset: { x: 0, y: 0 } };
|
|
58
|
+
}
|
|
59
|
+
await api.post(`v1/files/${fileKey}/comments`, { json });
|
|
60
|
+
}
|
|
61
|
+
async getCurrentUser() {
|
|
62
|
+
const api = await this.api(15_000);
|
|
63
|
+
return api.get('v1/me').json();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.FigmaClient = FigmaClient;
|
|
67
|
+
//# sourceMappingURL=figma.client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"figma.client.js","sourceRoot":"","sources":["../../../src/connectors/figma/figma.client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { IConnector, ConnectorWebhookRequest, ConnectorWebhookResult, ExternalContext } from '../connector.interface';
|
|
2
|
+
import type { ConnectorInstanceRow } from '../../database/repositories/connector.repository';
|
|
3
|
+
import { FigmaClient } from './figma.client';
|
|
4
|
+
import { CryptoService } from '../../common/crypto.service';
|
|
5
|
+
export interface FigmaDesignData {
|
|
6
|
+
fileKey: string;
|
|
7
|
+
fileUrl: string;
|
|
8
|
+
nodeIds: string[];
|
|
9
|
+
images: Array<{
|
|
10
|
+
nodeId: string;
|
|
11
|
+
name: string;
|
|
12
|
+
url: string;
|
|
13
|
+
}>;
|
|
14
|
+
}
|
|
15
|
+
export declare class FigmaConnector implements IConnector {
|
|
16
|
+
private readonly cryptoService;
|
|
17
|
+
readonly platform: "figma";
|
|
18
|
+
private readonly logger;
|
|
19
|
+
constructor(cryptoService: CryptoService);
|
|
20
|
+
handleWebhook(req: ConnectorWebhookRequest, instance: ConnectorInstanceRow): Promise<ConnectorWebhookResult | null>;
|
|
21
|
+
fetchContext(instance: ConnectorInstanceRow, externalId: string): Promise<ExternalContext>;
|
|
22
|
+
buildDesignContext(instance: ConnectorInstanceRow, fileKey: string, nodeIds?: string[]): Promise<FigmaDesignData>;
|
|
23
|
+
addComment(instance: ConnectorInstanceRow, externalId: string, comment: string): Promise<void>;
|
|
24
|
+
transitionStatus(_instance: ConnectorInstanceRow, _externalId: string, _targetStatus: string): Promise<void>;
|
|
25
|
+
linkMR(_instance: ConnectorInstanceRow, _externalId: string, _mrUrl: string): Promise<void>;
|
|
26
|
+
validateCredentials(credentials: Record<string, string>): Promise<boolean>;
|
|
27
|
+
createClient(instance: ConnectorInstanceRow): FigmaClient;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=figma.connector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"figma.connector.d.ts","sourceRoot":"","sources":["../../../src/connectors/figma/figma.connector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,uBAAuB,EACvB,sBAAsB,EACtB,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAyB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9D;AAOD,qBACa,cAAe,YAAW,UAAU;IAInC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAH1C,QAAQ,CAAC,QAAQ,UAA2B;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;gBAE7B,aAAa,EAAE,aAAa;IAEnD,aAAa,CACjB,GAAG,EAAE,uBAAuB,EAC5B,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAuFnC,YAAY,CAAC,QAAQ,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAY1F,kBAAkB,CACtB,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,eAAe,CAAC;IAgFrB,UAAU,CAAC,QAAQ,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9F,gBAAgB,CACpB,SAAS,EAAE,oBAAoB,EAC/B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IAIV,MAAM,CAAC,SAAS,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3F,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAUhF,YAAY,CAAC,QAAQ,EAAE,oBAAoB,GAAG,WAAW;CAa1D"}
|