@cytario/web 2.1.3 → 2.1.5
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/README.md +20 -20
- package/app/.server/auth/README.md +8 -8
- package/app/.server/auth/authMiddleware.ts +9 -25
- package/app/.server/auth/exchangeAuthCode.ts +2 -6
- package/app/.server/auth/getS3Client.ts +3 -13
- package/app/.server/auth/getSessionCredentials.ts +6 -20
- package/app/.server/auth/getUserInfo.ts +2 -6
- package/app/.server/auth/keycloakAdmin/client.ts +2 -9
- package/app/.server/auth/keycloakAdmin/groups.ts +9 -26
- package/app/.server/auth/keycloakAdmin/users.ts +7 -23
- package/app/.server/auth/oauthState.ts +4 -13
- package/app/.server/auth/redirectIfAuthenticated.ts +1 -3
- package/app/.server/auth/refreshAuthTokens.ts +5 -19
- package/app/.server/auth/sessionMiddleware.ts +1 -4
- package/app/.server/auth/sessionStorage.ts +1 -4
- package/app/.server/auth/verifyIdToken.ts +1 -3
- package/app/.server/auth/wellKnownEndpoints.ts +1 -4
- package/app/.server/db/redis.ts +5 -1
- package/app/.server/logging.ts +1 -4
- package/app/.server/requestDurationMiddleware.ts +1 -4
- package/app/components/.client/ImageViewer/README.md +5 -5
- package/app/components/.client/ImageViewer/components/ChannelsController/ChannelsController.tsx +7 -9
- package/app/components/.client/ImageViewer/components/ChannelsController/ChannelsControllerBrightfieldItem.tsx +1 -2
- package/app/components/.client/ImageViewer/components/ChannelsController/ChannelsControllerItem.tsx +2 -5
- package/app/components/.client/ImageViewer/components/ChannelsController/ChannelsControllerItemList.tsx +7 -15
- package/app/components/.client/ImageViewer/components/ChannelsController/ColorPicker/ColorPicker.tsx +2 -9
- package/app/components/.client/ImageViewer/components/ChannelsController/ColorPicker/ColorSwatch.tsx +1 -4
- package/app/components/.client/ImageViewer/components/ChannelsController/DomainSlider.tsx +1 -3
- package/app/components/.client/ImageViewer/components/ChannelsController/Histogram.tsx +16 -18
- package/app/components/.client/ImageViewer/components/ChannelsController/HistogramChannel.tsx +2 -8
- package/app/components/.client/ImageViewer/components/ChannelsController/MinMaxSettings.tsx +6 -15
- package/app/components/.client/ImageViewer/components/FeatureBar/FeatureBarDragHandle.tsx +1 -5
- package/app/components/.client/ImageViewer/components/FeatureBar/FeatureBarToggle.tsx +1 -5
- package/app/components/.client/ImageViewer/components/FeatureBar/FeatureItem.tsx +1 -5
- package/app/components/.client/ImageViewer/components/FeatureBar/Presets.tsx +3 -11
- package/app/components/.client/ImageViewer/components/FeatureBar/useFeatureBar.tsx +16 -25
- package/app/components/.client/ImageViewer/components/Image/Channels/useChannelsLayer.ts +7 -18
- package/app/components/.client/ImageViewer/components/Image/ImageContainer.tsx +1 -1
- package/app/components/.client/ImageViewer/components/Image/ImagePanel.tsx +6 -26
- package/app/components/.client/ImageViewer/components/Image/ImagePreview.tsx +2 -9
- package/app/components/.client/ImageViewer/components/Image/Overlays/AdditivePolygonLayer.tsx +1 -5
- package/app/components/.client/ImageViewer/components/Image/Overlays/AdditiveScatterplotLayer.tsx +1 -5
- package/app/components/.client/ImageViewer/components/Image/Overlays/OverlaysLayer.tsx +6 -24
- package/app/components/.client/ImageViewer/components/Image/Overlays/markerUniforms.ts +2 -5
- package/app/components/.client/ImageViewer/components/Image/Overlays/useOverlaysLayer.tsx +7 -21
- package/app/components/.client/ImageViewer/components/Image/useInitializeChannels.ts +1 -7
- package/app/components/.client/ImageViewer/components/Image/useResizeObserver.ts +1 -1
- package/app/components/.client/ImageViewer/components/Magnifier.tsx +5 -13
- package/app/components/.client/ImageViewer/components/Measurements/ActiveViewStatePreview.tsx +3 -8
- package/app/components/.client/ImageViewer/components/Measurements/CursorTick.tsx +2 -7
- package/app/components/.client/ImageViewer/components/Measurements/Ruler.tsx +1 -8
- package/app/components/.client/ImageViewer/components/Measurements/SlideCarrier.tsx +3 -13
- package/app/components/.client/ImageViewer/components/Measurements/Tick.tsx +1 -1
- package/app/components/.client/ImageViewer/components/Measurements/calculateViewStateToFit.ts +1 -1
- package/app/components/.client/ImageViewer/components/Measurements/useMeasurements.ts +9 -28
- package/app/components/.client/ImageViewer/components/OverlaysController/AddOverlay.tsx +4 -13
- package/app/components/.client/ImageViewer/components/OverlaysController/OverlayPicker.modal.tsx +1 -6
- package/app/components/.client/ImageViewer/components/OverlaysController/OverlaysController.Item.tsx +24 -54
- package/app/components/.client/ImageViewer/components/OverlaysController/OverlaysController.tsx +1 -3
- package/app/components/.client/ImageViewer/components/SplitViewToggle.tsx +1 -3
- package/app/components/.client/ImageViewer/components/ViewerHeader.tsx +1 -3
- package/app/components/.client/ImageViewer/state/decoders/decodeJPEG2000.d.ts +9 -11
- package/app/components/.client/ImageViewer/state/decoders/decodeJPEG2000.js +11 -11
- package/app/components/.client/ImageViewer/state/decoders/decoder.worker.js +49 -49
- package/app/components/.client/ImageViewer/state/decoders/genericDecoder.ts +76 -81
- package/app/components/.client/ImageViewer/state/decoders/jp2k-decoder.ts +9 -9
- package/app/components/.client/ImageViewer/state/decoders/lzwDecoder.ts +9 -9
- package/app/components/.client/ImageViewer/state/loaders/loadBioformatsZarrWithCredentials.ts +10 -22
- package/app/components/.client/ImageViewer/state/store/ViewerStoreContext.tsx +4 -18
- package/app/components/.client/ImageViewer/state/store/createViewerStore.ts +110 -194
- package/app/components/.client/ImageViewer/state/store/getInitialChannelsState.ts +2 -6
- package/app/components/.client/ImageViewer/state/store/selectors.ts +9 -9
- package/app/components/.client/ImageViewer/state/store/types.ts +3 -12
- package/app/components/.client/ImageViewer/state/transport/CredentialedHTTPStore.ts +1 -5
- package/app/components/.client/ImageViewer/state/transport/SigV4TiffClient.ts +2 -9
- package/app/components/.client/ImageViewer/utils/getSelectionStats.ts +1 -4
- package/app/components/.client/ImageViewer/utils/handleImageViewerHover.ts +1 -1
- package/app/components/.client/ImageViewer/utils/mapChannelConfigsToState.ts +2 -4
- package/app/components/.client/ImageViewer/utils/useTilesLoading.ts +3 -3
- package/app/components/AppHeader.tsx +1 -4
- package/app/components/Breadcrumbs/Breadcrumbs.tsx +4 -13
- package/app/components/Breadcrumbs/getCrumbs.tsx +1 -1
- package/app/components/ClientOnly.tsx +1 -1
- package/app/components/Container.tsx +3 -15
- package/app/components/DataGrid/ConvertOverlay.modal.tsx +1 -6
- package/app/components/DataGrid/DataGrid.tsx +7 -27
- package/app/components/DataGrid/WktSvg.tsx +2 -4
- package/app/components/DataGrid/getParquetSchema.ts +1 -4
- package/app/components/DescriptionList.tsx +1 -3
- package/app/components/DirectoryView/ConnectionMenu.tsx +8 -22
- package/app/components/DirectoryView/DirectoryView.tsx +10 -46
- package/app/components/DirectoryView/DirectoryViewGrid.tsx +16 -49
- package/app/components/DirectoryView/DirectoryViewTableConnection.tsx +1 -4
- package/app/components/DirectoryView/DirectoryViewTableDirectory.tsx +2 -7
- package/app/components/DirectoryView/DirectoryViewTree.tsx +5 -21
- package/app/components/DirectoryView/FilterBar.tsx +9 -48
- package/app/components/DirectoryView/buildDirectoryTree.ts +6 -25
- package/app/components/DirectoryView/filterNodes.ts +4 -11
- package/app/components/DirectoryView/modals/Cyberduck.modal.tsx +6 -15
- package/app/components/DirectoryView/modals/FileInfo.modal.tsx +1 -5
- package/app/components/DirectoryView/useLayoutStore.ts +5 -25
- package/app/components/GlobalSearch/GlobalSearch.tsx +1 -4
- package/app/components/GlobalSearch/SearchBar.tsx +1 -7
- package/app/components/GlobalSearch/Suggestions.tsx +0 -1
- package/app/components/ImageViewer/state/formatRegistry.ts +5 -18
- package/app/components/LavaLoader.tsx +4 -11
- package/app/components/Layout/Footer.tsx +1 -4
- package/app/components/Pills/ScopePill.tsx +2 -8
- package/app/components/Table/ColumnFilterInput.tsx +5 -20
- package/app/components/Table/ColumnResizeHandle.tsx +1 -5
- package/app/components/Table/ColumnSortButton.tsx +1 -5
- package/app/components/Table/SelectionFooter.tsx +3 -5
- package/app/components/Table/Table.tsx +5 -21
- package/app/components/Table/TableBodyRow.tsx +19 -31
- package/app/components/Table/TableHeaderRow.tsx +7 -28
- package/app/components/Table/TableMenu.tsx +4 -20
- package/app/components/Table/state/createTableStore.ts +3 -9
- package/app/components/Table/state/useTableStore.ts +1 -3
- package/app/components/Table/types.ts +4 -10
- package/app/components/Table/useColumnFilters.ts +1 -4
- package/app/components/Table/useColumnVisibility.ts +4 -11
- package/app/components/Table/useColumnWidths.ts +1 -3
- package/app/components/Table/useTableSorting.ts +4 -12
- package/app/components/Tooltip/Tooltip.tsx +4 -17
- package/app/components/Tooltip/TooltipSpan.tsx +5 -28
- package/app/components/Tooltip/useCopyToClipboard.ts +1 -3
- package/app/components/Tooltip/useMiddleEllipsis.ts +2 -7
- package/app/components/Tooltip/useOverflowDetection.ts +2 -5
- package/app/components/UserMenu.tsx +2 -9
- package/app/entry.server.tsx +9 -19
- package/app/hooks/useSearchParam.ts +2 -4
- package/app/lib/bootstrapPluginsCore.ts +4 -9
- package/app/root.tsx +4 -15
- package/app/routes/admin/assertAdminScope.ts +1 -3
- package/app/routes/admin/assertGroupPathsInScope.ts +3 -11
- package/app/routes/admin/assertGroupsInScope.ts +3 -11
- package/app/routes/admin/assertUsersInScope.ts +2 -8
- package/app/routes/admin/bulkInvite/bulkInvite.action.ts +2 -13
- package/app/routes/admin/bulkInvite/bulkInvite.form.tsx +18 -35
- package/app/routes/admin/createGroup/createGroup.action.ts +3 -10
- package/app/routes/admin/createGroup/createGroup.form.tsx +2 -9
- package/app/routes/admin/createGroup/createGroup.modal.tsx +1 -5
- package/app/routes/admin/inviteUser/inviteUser.action.ts +1 -4
- package/app/routes/admin/inviteUser/inviteUser.form.tsx +2 -8
- package/app/routes/admin/inviteUser/inviteUser.loader.ts +1 -4
- package/app/routes/admin/inviteUser/inviteUser.modal.tsx +3 -16
- package/app/routes/admin/updateUser/updateUser.form.tsx +4 -15
- package/app/routes/admin/updateUser/updateUser.modal.tsx +5 -23
- package/app/routes/admin/updateUser/userDetail.action.ts +2 -10
- package/app/routes/admin/users/BulkActions.tsx +15 -38
- package/app/routes/admin/users/bulkUsers.action.ts +2 -9
- package/app/routes/admin/users/bulkUsers.schema.ts +1 -6
- package/app/routes/admin/users/users.route.tsx +14 -63
- package/app/routes/api/cyberduck-profile.$name.ts +6 -2
- package/app/routes/auth/callback.route.tsx +8 -33
- package/app/routes/auth/login.route.tsx +8 -11
- package/app/routes/auth/logout.route.tsx +4 -14
- package/app/routes/config.route.tsx +1 -5
- package/app/routes/connections/connection.form.tsx +5 -14
- package/app/routes/connections/connection.schema.ts +4 -16
- package/app/routes/connections/connections.loader.ts +11 -23
- package/app/routes/connections/connections.route.tsx +1 -5
- package/app/routes/connections/connections.server.ts +1 -3
- package/app/routes/connections/createConnection.action.ts +2 -8
- package/app/routes/connections/createConnection.modal.tsx +3 -13
- package/app/routes/connections/deleteConnection.action.ts +1 -4
- package/app/routes/connections/updateConnection.action.ts +2 -8
- package/app/routes/connections/updateConnection.modal.tsx +4 -14
- package/app/routes/home/home.route.tsx +8 -33
- package/app/routes/layouts/ModalOutlet.tsx +6 -18
- package/app/routes/objects/objects.loader.ts +5 -19
- package/app/routes/objects/objects.route.tsx +11 -30
- package/app/routes/presign.route.tsx +5 -18
- package/app/routes/recent.route.tsx +1 -4
- package/app/routes/search.route.tsx +4 -17
- package/app/routes.ts +1 -4
- package/app/tailwind.css +17 -12
- package/app/types/cornerstone-codecs.d.ts +25 -29
- package/app/utils/connectionsStore/selectors.ts +2 -6
- package/app/utils/connectionsStore/useConnectionsStore.ts +2 -6
- package/app/utils/db/convertCsvToParquet.ts +1 -3
- package/app/utils/db/createDatabase.ts +1 -3
- package/app/utils/db/createSingleton.ts +1 -1
- package/app/utils/db/getBlobFromObjectNode.ts +3 -9
- package/app/utils/db/getGeomQuery.ts +1 -1
- package/app/utils/db/getMarkerInfoWasm.ts +1 -3
- package/app/utils/db/getTileBoundingBox.ts +1 -4
- package/app/utils/db/sqlQueries.ts +1 -4
- package/app/utils/fileType.ts +80 -10
- package/app/utils/filterObjects.ts +2 -5
- package/app/utils/localFilesStore/useFileStore.ts +7 -7
- package/app/utils/recentlyViewed.server.ts +1 -4
- package/app/utils/resourceId.ts +3 -11
- package/app/utils/s3Provider.ts +3 -7
- package/app/utils/signedFetch.ts +4 -13
- package/bin-src/codegen.ts +4 -1
- package/package.json +5 -1
- package/prisma/seed.ts +1 -2
- package/public/favicon/site.webmanifest +1 -1
- package/server.js +1 -4
- package/server.js.map +1 -1
- package/vite-plugins/cytario-plugins.ts +2 -8
package/prisma/seed.ts
CHANGED
|
@@ -17,8 +17,7 @@ const pool = new Pool({ connectionString: process.env.DATABASE_URL });
|
|
|
17
17
|
const prisma = new PrismaClient({ adapter: new PrismaPg(pool) });
|
|
18
18
|
|
|
19
19
|
const TEST_CONNECTION_NAME = process.env.E2E_CONNECTION_NAME || "Exchange";
|
|
20
|
-
const TEST_PREFIX_CONNECTION_NAME =
|
|
21
|
-
process.env.E2E_PREFIX_CONNECTION_NAME || "Exchange-prefixed";
|
|
20
|
+
const TEST_PREFIX_CONNECTION_NAME = process.env.E2E_PREFIX_CONNECTION_NAME || "Exchange-prefixed";
|
|
22
21
|
|
|
23
22
|
const SHARED_BUCKET = {
|
|
24
23
|
ownerScope: "cytario",
|
package/server.js
CHANGED
|
@@ -27,10 +27,7 @@ app.use(
|
|
|
27
27
|
maxAge: "1y"
|
|
28
28
|
})
|
|
29
29
|
);
|
|
30
|
-
app.use(
|
|
31
|
-
buildModule.publicPath,
|
|
32
|
-
express.static(buildModule.assetsBuildDirectory, { maxAge: "1h" })
|
|
33
|
-
);
|
|
30
|
+
app.use(buildModule.publicPath, express.static(buildModule.assetsBuildDirectory, { maxAge: "1h" }));
|
|
34
31
|
app.use(express.static("public", { maxAge: "1h" }));
|
|
35
32
|
app.use(morgan("tiny"));
|
|
36
33
|
app.all(
|
package/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["server.ts"],"sourcesContent":["import \"dotenv/config\";\nimport { createRequestHandler } from \"@react-router/express\";\nimport compression from \"compression\";\nimport express from \"express\";\nimport morgan from \"morgan\";\nimport path from \"node:path\";\nimport url from \"node:url\";\n\nconst BUILD_PATH = path.resolve(\"build/server/index.js\");\n\nconst buildModule = await import(url.pathToFileURL(BUILD_PATH).href);\n\nconst app = express();\n\n// Trust the first proxy (Traefik) so req.protocol reflects X-Forwarded-Proto\n// and req.ip reflects X-Forwarded-For. This is critical for secure cookie\n// handling when TLS is terminated at the reverse proxy.\napp.set(\"trust proxy\", 1);\n\napp.disable(\"x-powered-by\");\n\nlet isShuttingDown = false;\n\n// Kubernetes readiness/liveness probe — before all middleware so it's fast and\n// never blocked by compression, static-file serving, or request logging.\napp.get(\"/healthz\", (_req, res) => {\n if (isShuttingDown) {\n res.status(503).send(\"shutting down\");\n } else {\n res.status(200).send(\"ok\");\n }\n});\n\napp.use(compression());\n\n// Vite-fingerprinted assets — immutable, cache forever\napp.use(\n path.posix.join(buildModule.publicPath, \"assets\"),\n express.static(path.join(buildModule.assetsBuildDirectory, \"assets\"), {\n immutable: true,\n maxAge: \"1y\",\n }),\n);\n\n// Other build assets — short cache\napp.use(
|
|
1
|
+
{"version":3,"sources":["server.ts"],"sourcesContent":["import \"dotenv/config\";\nimport { createRequestHandler } from \"@react-router/express\";\nimport compression from \"compression\";\nimport express from \"express\";\nimport morgan from \"morgan\";\nimport path from \"node:path\";\nimport url from \"node:url\";\n\nconst BUILD_PATH = path.resolve(\"build/server/index.js\");\n\nconst buildModule = await import(url.pathToFileURL(BUILD_PATH).href);\n\nconst app = express();\n\n// Trust the first proxy (Traefik) so req.protocol reflects X-Forwarded-Proto\n// and req.ip reflects X-Forwarded-For. This is critical for secure cookie\n// handling when TLS is terminated at the reverse proxy.\napp.set(\"trust proxy\", 1);\n\napp.disable(\"x-powered-by\");\n\nlet isShuttingDown = false;\n\n// Kubernetes readiness/liveness probe — before all middleware so it's fast and\n// never blocked by compression, static-file serving, or request logging.\napp.get(\"/healthz\", (_req, res) => {\n if (isShuttingDown) {\n res.status(503).send(\"shutting down\");\n } else {\n res.status(200).send(\"ok\");\n }\n});\n\napp.use(compression());\n\n// Vite-fingerprinted assets — immutable, cache forever\napp.use(\n path.posix.join(buildModule.publicPath, \"assets\"),\n express.static(path.join(buildModule.assetsBuildDirectory, \"assets\"), {\n immutable: true,\n maxAge: \"1y\",\n }),\n);\n\n// Other build assets — short cache\napp.use(buildModule.publicPath, express.static(buildModule.assetsBuildDirectory, { maxAge: \"1h\" }));\n\n// Public static files (fonts, logos, etc.)\napp.use(express.static(\"public\", { maxAge: \"1h\" }));\n\napp.use(morgan(\"tiny\"));\n\napp.all(\n \"*\",\n createRequestHandler({\n build: buildModule,\n mode: process.env.NODE_ENV,\n }),\n);\n\nconst port = Number.parseInt(process.env.PORT || \"3000\", 10);\nconst host = process.env.HOST || \"0.0.0.0\";\n\nconst server = app.listen(port, host, () => {\n console.log(`[cytario-web] http://${host}:${port}`);\n});\n\n// Graceful shutdown on SIGTERM/SIGINT\nconst SHUTDOWN_DELAY_MS = 5_000;\nconst DRAIN_TIMEOUT_MS = 15_000;\n\nfor (const signal of [\"SIGTERM\", \"SIGINT\"]) {\n process.once(signal, () => {\n console.log(`[cytario-web] ${signal} received, shutting down gracefully`);\n isShuttingDown = true;\n\n // Wait for load balancer to deregister the pod before closing connections\n setTimeout(() => {\n console.log(\"[cytario-web] closing server to new connections\");\n server.close((err) => {\n if (err) {\n console.error(\"[cytario-web] error during close:\", err);\n } else {\n console.log(\"[cytario-web] all connections drained, exiting\");\n }\n process.exit(err ? 1 : 0);\n });\n\n // Force exit if connections don't drain in time\n setTimeout(() => {\n console.error(\"[cytario-web] drain timeout, forcing exit\");\n process.exit(1);\n }, DRAIN_TIMEOUT_MS).unref();\n }, SHUTDOWN_DELAY_MS);\n });\n}\n"],"mappings":";AAAA,OAAO;AACP,SAAS,4BAA4B;AACrC,OAAO,iBAAiB;AACxB,OAAO,aAAa;AACpB,OAAO,YAAY;AACnB,OAAO,UAAU;AACjB,OAAO,SAAS;AAEhB,IAAM,aAAa,KAAK,QAAQ,uBAAuB;AAEvD,IAAM,cAAc,MAAM,OAAO,IAAI,cAAc,UAAU,EAAE;AAE/D,IAAM,MAAM,QAAQ;AAKpB,IAAI,IAAI,eAAe,CAAC;AAExB,IAAI,QAAQ,cAAc;AAE1B,IAAI,iBAAiB;AAIrB,IAAI,IAAI,YAAY,CAAC,MAAM,QAAQ;AACjC,MAAI,gBAAgB;AAClB,QAAI,OAAO,GAAG,EAAE,KAAK,eAAe;AAAA,EACtC,OAAO;AACL,QAAI,OAAO,GAAG,EAAE,KAAK,IAAI;AAAA,EAC3B;AACF,CAAC;AAED,IAAI,IAAI,YAAY,CAAC;AAGrB,IAAI;AAAA,EACF,KAAK,MAAM,KAAK,YAAY,YAAY,QAAQ;AAAA,EAChD,QAAQ,OAAO,KAAK,KAAK,YAAY,sBAAsB,QAAQ,GAAG;AAAA,IACpE,WAAW;AAAA,IACX,QAAQ;AAAA,EACV,CAAC;AACH;AAGA,IAAI,IAAI,YAAY,YAAY,QAAQ,OAAO,YAAY,sBAAsB,EAAE,QAAQ,KAAK,CAAC,CAAC;AAGlG,IAAI,IAAI,QAAQ,OAAO,UAAU,EAAE,QAAQ,KAAK,CAAC,CAAC;AAElD,IAAI,IAAI,OAAO,MAAM,CAAC;AAEtB,IAAI;AAAA,EACF;AAAA,EACA,qBAAqB;AAAA,IACnB,OAAO;AAAA,IACP,MAAM,QAAQ,IAAI;AAAA,EACpB,CAAC;AACH;AAEA,IAAM,OAAO,OAAO,SAAS,QAAQ,IAAI,QAAQ,QAAQ,EAAE;AAC3D,IAAM,OAAO,QAAQ,IAAI,QAAQ;AAEjC,IAAM,SAAS,IAAI,OAAO,MAAM,MAAM,MAAM;AAC1C,UAAQ,IAAI,wBAAwB,IAAI,IAAI,IAAI,EAAE;AACpD,CAAC;AAGD,IAAM,oBAAoB;AAC1B,IAAM,mBAAmB;AAEzB,WAAW,UAAU,CAAC,WAAW,QAAQ,GAAG;AAC1C,UAAQ,KAAK,QAAQ,MAAM;AACzB,YAAQ,IAAI,iBAAiB,MAAM,qCAAqC;AACxE,qBAAiB;AAGjB,eAAW,MAAM;AACf,cAAQ,IAAI,iDAAiD;AAC7D,aAAO,MAAM,CAAC,QAAQ;AACpB,YAAI,KAAK;AACP,kBAAQ,MAAM,qCAAqC,GAAG;AAAA,QACxD,OAAO;AACL,kBAAQ,IAAI,gDAAgD;AAAA,QAC9D;AACA,gBAAQ,KAAK,MAAM,IAAI,CAAC;AAAA,MAC1B,CAAC;AAGD,iBAAW,MAAM;AACf,gBAAQ,MAAM,2CAA2C;AACzD,gBAAQ,KAAK,CAAC;AAAA,MAChB,GAAG,gBAAgB,EAAE,MAAM;AAAA,IAC7B,GAAG,iBAAiB;AAAA,EACtB,CAAC;AACH;","names":[]}
|
|
@@ -3,11 +3,7 @@ import { dirname, resolve } from "node:path";
|
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
4
|
import type { Plugin } from "vite";
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
GENERATED_PATH,
|
|
8
|
-
generatePluginsModule,
|
|
9
|
-
parseCytarioPluginsEnv,
|
|
10
|
-
} from "../bin-src/codegen";
|
|
6
|
+
import { GENERATED_PATH, generatePluginsModule, parseCytarioPluginsEnv } from "../bin-src/codegen";
|
|
11
7
|
|
|
12
8
|
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
13
9
|
const ROOT = resolve(HERE, "..");
|
|
@@ -25,9 +21,7 @@ export function cytarioPlugins(): Plugin {
|
|
|
25
21
|
if (didWrite) return;
|
|
26
22
|
const input = parseCytarioPluginsEnv(process.env.CYTARIO_PLUGINS);
|
|
27
23
|
const next = generatePluginsModule(input);
|
|
28
|
-
const current = existsSync(FULL_PATH)
|
|
29
|
-
? readFileSync(FULL_PATH, "utf8")
|
|
30
|
-
: "";
|
|
24
|
+
const current = existsSync(FULL_PATH) ? readFileSync(FULL_PATH, "utf8") : "";
|
|
31
25
|
if (current !== next) {
|
|
32
26
|
writeFileSync(FULL_PATH, next, "utf8");
|
|
33
27
|
}
|