@vendure/dashboard 3.4.0-minor-202506250934 → 3.4.0
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 +102 -3
- package/dist/plugin/api/api-extensions.d.ts +1 -0
- package/dist/plugin/api/api-extensions.js +38 -0
- package/dist/plugin/api/metrics.resolver.d.ts +8 -0
- package/dist/plugin/api/metrics.resolver.js +40 -0
- package/dist/plugin/config/metrics-strategies.d.ts +39 -0
- package/dist/plugin/config/metrics-strategies.js +74 -0
- package/dist/plugin/constants.d.ts +4 -3
- package/dist/plugin/constants.js +10 -277
- package/dist/plugin/dashboard.plugin.d.ts +95 -0
- package/dist/plugin/dashboard.plugin.js +168 -0
- package/dist/plugin/index.d.ts +2 -1
- package/dist/plugin/index.js +18 -1
- package/dist/plugin/package.json +3 -0
- package/dist/plugin/service/metrics.service.d.ts +15 -0
- package/dist/plugin/service/metrics.service.js +145 -0
- package/dist/plugin/types.d.ts +23 -0
- package/dist/plugin/types.js +13 -0
- package/dist/vite/constants.d.ts +5 -0
- package/dist/vite/constants.js +277 -0
- package/dist/vite/index.d.ts +1 -0
- package/dist/vite/index.js +1 -0
- package/dist/vite/types.d.ts +40 -0
- package/dist/{plugin → vite}/utils/ast-utils.d.ts +0 -5
- package/dist/vite/utils/ast-utils.js +29 -0
- package/dist/vite/utils/ast-utils.spec.d.ts +1 -0
- package/dist/vite/utils/ast-utils.spec.js +45 -0
- package/dist/vite/utils/compiler.d.ts +22 -0
- package/dist/vite/utils/compiler.js +162 -0
- package/dist/vite/utils/config-loader.d.ts +1 -0
- package/dist/vite/utils/config-loader.js +1 -0
- package/dist/vite/utils/logger.d.ts +3 -0
- package/dist/vite/utils/logger.js +39 -0
- package/dist/vite/utils/plugin-discovery.d.ts +27 -0
- package/dist/vite/utils/plugin-discovery.js +387 -0
- package/dist/vite/utils/tsconfig-utils.d.ts +9 -0
- package/dist/vite/utils/tsconfig-utils.js +50 -0
- package/dist/vite/utils/ui-config.d.ts +3 -0
- package/dist/vite/utils/ui-config.js +30 -0
- package/dist/{plugin → vite}/vite-plugin-config-loader.d.ts +3 -3
- package/dist/{plugin → vite}/vite-plugin-config-loader.js +18 -13
- package/dist/{plugin → vite}/vite-plugin-config.js +6 -7
- package/dist/{plugin → vite}/vite-plugin-dashboard-metadata.d.ts +1 -3
- package/dist/{plugin → vite}/vite-plugin-dashboard-metadata.js +20 -10
- package/dist/vite/vite-plugin-tailwind-source.d.ts +7 -0
- package/dist/vite/vite-plugin-tailwind-source.js +61 -0
- package/dist/vite/vite-plugin-theme.js +130 -0
- package/dist/vite/vite-plugin-ui-config.d.ts +123 -0
- package/dist/{plugin → vite}/vite-plugin-ui-config.js +3 -11
- package/dist/vite/vite-plugin-vendure-dashboard.d.ts +85 -0
- package/dist/{plugin → vite}/vite-plugin-vendure-dashboard.js +10 -7
- package/index.html +1 -1
- package/package.json +56 -31
- package/src/app/app-providers.tsx +7 -7
- package/src/app/common/delete-bulk-action.tsx +148 -0
- package/src/app/common/duplicate-bulk-action.tsx +134 -0
- package/src/app/main.tsx +9 -9
- package/src/app/routes/__root.tsx +1 -2
- package/src/app/routes/_authenticated/_administrators/administrators.graphql.ts +10 -1
- package/src/app/routes/_authenticated/_administrators/administrators.tsx +15 -8
- package/src/app/routes/_authenticated/_administrators/administrators_.$id.tsx +16 -12
- package/src/app/routes/_authenticated/_administrators/components/administrator-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_administrators/components/role-permissions-display.tsx +16 -16
- package/src/app/routes/_authenticated/_assets/assets.graphql.ts +13 -2
- package/src/app/routes/_authenticated/_assets/assets.tsx +16 -4
- package/src/app/routes/_authenticated/_assets/assets_.$id.tsx +52 -38
- package/src/app/routes/_authenticated/_assets/components/asset-bulk-actions.tsx +45 -0
- package/src/app/routes/_authenticated/_channels/channels.graphql.ts +10 -1
- package/src/app/routes/_authenticated/_channels/channels.tsx +17 -10
- package/src/app/routes/_authenticated/_channels/channels_.$id.tsx +21 -17
- package/src/app/routes/_authenticated/_channels/components/channel-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_collections/collections.graphql.ts +60 -3
- package/src/app/routes/_authenticated/_collections/collections.tsx +168 -124
- package/src/app/routes/_authenticated/_collections/collections_.$id.tsx +21 -17
- package/src/app/routes/_authenticated/_collections/components/collection-bulk-actions.tsx +123 -0
- package/src/app/routes/_authenticated/_collections/components/collection-contents-preview-table.tsx +8 -9
- package/src/app/routes/_authenticated/_collections/components/collection-contents-sheet.tsx +9 -5
- package/src/app/routes/_authenticated/_collections/components/collection-contents-table.tsx +10 -9
- package/src/app/routes/_authenticated/_collections/components/collection-filters-selector.tsx +12 -79
- package/src/app/routes/_authenticated/_collections/components/move-collections-dialog.tsx +430 -0
- package/src/app/routes/_authenticated/_collections/components/move-single-collection.tsx +33 -0
- package/src/app/routes/_authenticated/_countries/components/country-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_countries/countries.graphql.ts +11 -2
- package/src/app/routes/_authenticated/_countries/countries.tsx +13 -6
- package/src/app/routes/_authenticated/_countries/countries_.$id.tsx +21 -17
- package/src/app/routes/_authenticated/_customer-groups/components/customer-group-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_customer-groups/components/customer-group-members-sheet.tsx +12 -5
- package/src/app/routes/_authenticated/_customer-groups/components/customer-group-members-table.tsx +22 -17
- package/src/app/routes/_authenticated/_customer-groups/customer-groups.graphql.ts +11 -2
- package/src/app/routes/_authenticated/_customer-groups/customer-groups.tsx +13 -6
- package/src/app/routes/_authenticated/_customer-groups/customer-groups_.$id.tsx +18 -15
- package/src/app/routes/_authenticated/_customers/components/customer-address-card.tsx +19 -19
- package/src/app/routes/_authenticated/_customers/components/customer-address-form.tsx +10 -10
- package/src/app/routes/_authenticated/_customers/components/customer-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_customers/components/customer-history/customer-history-container.tsx +5 -5
- package/src/app/routes/_authenticated/_customers/components/customer-history/customer-history.tsx +11 -7
- package/src/app/routes/_authenticated/_customers/components/customer-history/use-customer-history.ts +4 -4
- package/src/app/routes/_authenticated/_customers/components/customer-order-table.tsx +75 -73
- package/src/app/routes/_authenticated/_customers/components/customer-status-badge.tsx +4 -4
- package/src/app/routes/_authenticated/_customers/customers.graphql.ts +10 -2
- package/src/app/routes/_authenticated/_customers/customers.tsx +13 -6
- package/src/app/routes/_authenticated/_customers/customers_.$id.tsx +19 -15
- package/src/app/routes/_authenticated/_facets/components/edit-facet-value.tsx +9 -9
- package/src/app/routes/_authenticated/_facets/components/facet-bulk-actions.tsx +104 -0
- package/src/app/routes/_authenticated/_facets/components/facet-values-sheet.tsx +4 -4
- package/src/app/routes/_authenticated/_facets/components/facet-values-table.tsx +76 -65
- package/src/app/routes/_authenticated/_facets/facets.graphql.ts +80 -1
- package/src/app/routes/_authenticated/_facets/facets.tsx +31 -7
- package/src/app/routes/_authenticated/_facets/facets_.$facetId.values_.$id.tsx +147 -0
- package/src/app/routes/_authenticated/_facets/facets_.$id.tsx +17 -13
- package/src/app/routes/_authenticated/_global-settings/global-settings.graphql.ts +1 -1
- package/src/app/routes/_authenticated/_global-settings/global-settings.tsx +26 -18
- package/src/app/routes/_authenticated/_orders/components/add-manual-payment-dialog.tsx +191 -0
- package/src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx +11 -15
- package/src/app/routes/_authenticated/_orders/components/edit-order-table.tsx +111 -80
- package/src/app/routes/_authenticated/_orders/components/fulfill-order-dialog.tsx +320 -0
- package/src/app/routes/_authenticated/_orders/components/fulfillment-details.tsx +153 -0
- package/src/app/routes/_authenticated/_orders/components/money-gross-net.tsx +11 -9
- package/src/app/routes/_authenticated/_orders/components/order-address.tsx +19 -13
- package/src/app/routes/_authenticated/_orders/components/order-history/order-history-container.tsx +67 -62
- package/src/app/routes/_authenticated/_orders/components/order-history/order-history.tsx +391 -39
- package/src/app/routes/_authenticated/_orders/components/order-history/use-order-history.ts +9 -5
- package/src/app/routes/_authenticated/_orders/components/order-line-custom-fields-form.tsx +28 -13
- package/src/app/routes/_authenticated/_orders/components/order-modification-preview-dialog.tsx +364 -0
- package/src/app/routes/_authenticated/_orders/components/order-modification-summary.tsx +222 -0
- package/src/app/routes/_authenticated/_orders/components/order-table-totals.tsx +39 -22
- package/src/app/routes/_authenticated/_orders/components/order-table.tsx +148 -87
- package/src/app/routes/_authenticated/_orders/components/order-tax-summary.tsx +37 -36
- package/src/app/routes/_authenticated/_orders/components/payment-details.tsx +274 -48
- package/src/app/routes/_authenticated/_orders/components/settle-refund-dialog.tsx +80 -0
- package/src/app/routes/_authenticated/_orders/components/shipping-method-selector.tsx +43 -44
- package/src/app/routes/_authenticated/_orders/components/state-transition-control.tsx +102 -0
- package/src/app/routes/_authenticated/_orders/components/use-transition-order-to-state.tsx +144 -0
- package/src/app/routes/_authenticated/_orders/orders.graphql.ts +219 -5
- package/src/app/routes/_authenticated/_orders/orders.tsx +23 -22
- package/src/app/routes/_authenticated/_orders/orders_.$id.tsx +190 -42
- package/src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx +550 -0
- package/src/app/routes/_authenticated/_orders/orders_.draft.$id.tsx +187 -107
- package/src/app/routes/_authenticated/_orders/utils/order-types.ts +10 -0
- package/src/app/routes/_authenticated/_orders/utils/order-utils.ts +78 -0
- package/src/app/routes/_authenticated/_payment-methods/components/payment-eligibility-checker-selector.tsx +12 -79
- package/src/app/routes/_authenticated/_payment-methods/components/payment-handler-selector.tsx +12 -79
- package/src/app/routes/_authenticated/_payment-methods/components/payment-method-bulk-actions.tsx +58 -0
- package/src/app/routes/_authenticated/_payment-methods/payment-methods.graphql.ts +29 -2
- package/src/app/routes/_authenticated/_payment-methods/payment-methods.tsx +36 -14
- package/src/app/routes/_authenticated/_payment-methods/payment-methods_.$id.tsx +22 -15
- package/src/app/routes/_authenticated/_product-variants/components/product-variant-bulk-actions.tsx +110 -0
- package/src/app/routes/_authenticated/_product-variants/components/variant-price-detail.tsx +7 -6
- package/src/app/routes/_authenticated/_product-variants/product-variants.graphql.ts +64 -3
- package/src/app/routes/_authenticated/_product-variants/product-variants.tsx +39 -9
- package/src/app/routes/_authenticated/_product-variants/product-variants_.$id.tsx +33 -22
- package/src/app/routes/_authenticated/_products/components/add-product-variant-dialog.tsx +10 -10
- package/src/app/routes/_authenticated/_products/components/assign-facet-values-dialog.tsx +281 -0
- package/src/app/routes/_authenticated/_products/components/create-product-options-dialog.tsx +57 -41
- package/src/app/routes/_authenticated/_products/components/create-product-variants-dialog.tsx +11 -11
- package/src/app/routes/_authenticated/_products/components/create-product-variants.tsx +18 -14
- package/src/app/routes/_authenticated/_products/components/option-value-input.tsx +23 -17
- package/src/app/routes/_authenticated/_products/components/product-bulk-actions.tsx +123 -0
- package/src/app/routes/_authenticated/_products/components/product-option-select.tsx +28 -34
- package/src/app/routes/_authenticated/_products/components/product-variants-table.tsx +84 -53
- package/src/app/routes/_authenticated/_products/products.graphql.ts +70 -2
- package/src/app/routes/_authenticated/_products/products.tsx +36 -7
- package/src/app/routes/_authenticated/_products/products_.$id.tsx +34 -26
- package/src/app/routes/_authenticated/_profile/profile.graphql.ts +1 -1
- package/src/app/routes/_authenticated/_profile/profile.tsx +8 -8
- package/src/app/routes/_authenticated/_promotions/components/promotion-actions-selector.tsx +14 -86
- package/src/app/routes/_authenticated/_promotions/components/promotion-bulk-actions.tsx +82 -0
- package/src/app/routes/_authenticated/_promotions/components/promotion-conditions-selector.tsx +14 -86
- package/src/app/routes/_authenticated/_promotions/promotions.graphql.ts +27 -2
- package/src/app/routes/_authenticated/_promotions/promotions.tsx +31 -7
- package/src/app/routes/_authenticated/_promotions/promotions_.$id.tsx +20 -16
- package/src/app/routes/_authenticated/_roles/components/expandable-permissions.tsx +5 -5
- package/src/app/routes/_authenticated/_roles/components/permissions-grid.tsx +21 -17
- package/src/app/routes/_authenticated/_roles/components/role-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_roles/roles.graphql.ts +10 -1
- package/src/app/routes/_authenticated/_roles/roles.tsx +17 -10
- package/src/app/routes/_authenticated/_roles/roles_.$id.tsx +16 -12
- package/src/app/routes/_authenticated/_sellers/components/seller-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_sellers/sellers.graphql.ts +10 -1
- package/src/app/routes/_authenticated/_sellers/sellers.tsx +13 -6
- package/src/app/routes/_authenticated/_sellers/sellers_.$id.tsx +17 -13
- package/src/app/routes/_authenticated/_shipping-methods/components/fulfillment-handler-selector.tsx +6 -6
- package/src/app/routes/_authenticated/_shipping-methods/components/shipping-calculator-selector.tsx +12 -80
- package/src/app/routes/_authenticated/_shipping-methods/components/shipping-eligibility-checker-selector.tsx +15 -80
- package/src/app/routes/_authenticated/_shipping-methods/components/shipping-method-bulk-actions.tsx +61 -0
- package/src/app/routes/_authenticated/_shipping-methods/components/test-shipping-method-dialog.tsx +3 -3
- package/src/app/routes/_authenticated/_shipping-methods/shipping-methods.graphql.ts +29 -2
- package/src/app/routes/_authenticated/_shipping-methods/shipping-methods.tsx +25 -6
- package/src/app/routes/_authenticated/_shipping-methods/shipping-methods_.$id.tsx +25 -19
- package/src/app/routes/_authenticated/_stock-locations/components/stock-location-bulk-actions.tsx +58 -0
- package/src/app/routes/_authenticated/_stock-locations/stock-locations.graphql.ts +26 -1
- package/src/app/routes/_authenticated/_stock-locations/stock-locations.tsx +25 -6
- package/src/app/routes/_authenticated/_stock-locations/stock-locations_.$id.tsx +16 -12
- package/src/app/routes/_authenticated/_system/components/payload-dialog.tsx +5 -5
- package/src/app/routes/_authenticated/_system/healthchecks.tsx +5 -5
- package/src/app/routes/_authenticated/_system/job-queue.graphql.ts +12 -1
- package/src/app/routes/_authenticated/_system/job-queue.tsx +110 -11
- package/src/app/routes/_authenticated/_system/scheduled-tasks.tsx +34 -28
- package/src/app/routes/_authenticated/_tax-categories/components/tax-category-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_tax-categories/tax-categories.graphql.ts +11 -2
- package/src/app/routes/_authenticated/_tax-categories/tax-categories.tsx +14 -7
- package/src/app/routes/_authenticated/_tax-categories/tax-categories_.$id.tsx +20 -16
- package/src/app/routes/_authenticated/_tax-rates/components/tax-rate-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_tax-rates/tax-rates.graphql.ts +11 -2
- package/src/app/routes/_authenticated/_tax-rates/tax-rates.tsx +15 -8
- package/src/app/routes/_authenticated/_tax-rates/tax-rates_.$id.tsx +22 -18
- package/src/app/routes/_authenticated/_zones/components/zone-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_zones/components/zone-countries-sheet.tsx +4 -4
- package/src/app/routes/_authenticated/_zones/components/zone-countries-table.tsx +12 -15
- package/src/app/routes/_authenticated/_zones/zones.graphql.ts +11 -2
- package/src/app/routes/_authenticated/_zones/zones.tsx +13 -6
- package/src/app/routes/_authenticated/_zones/zones_.$id.tsx +18 -14
- package/src/app/routes/_authenticated/index.tsx +6 -6
- package/src/app/routes/_authenticated.tsx +4 -4
- package/src/app/routes/login.tsx +2 -2
- package/src/app/styles.css +5 -2
- package/src/lib/components/data-display/boolean.tsx +1 -1
- package/src/lib/components/data-display/date-time.tsx +9 -3
- package/src/lib/components/data-display/json.tsx +1 -1
- package/src/lib/components/data-display/money.tsx +2 -3
- package/src/lib/components/data-input/affixed-input.tsx +3 -8
- package/src/lib/components/data-input/combination-mode-input.tsx +52 -0
- package/src/lib/components/data-input/configurable-operation-list-input.tsx +433 -0
- package/src/lib/components/data-input/custom-field-list-input.tsx +297 -0
- package/src/lib/components/data-input/customer-group-input.tsx +2 -2
- package/src/lib/components/data-input/datetime-input.tsx +132 -146
- package/src/lib/components/data-input/default-relation-input.tsx +599 -0
- package/src/lib/components/data-input/facet-value-input.tsx +30 -22
- package/src/lib/components/data-input/index.ts +17 -0
- package/src/lib/components/data-input/money-input.tsx +5 -12
- package/src/lib/components/data-input/product-multi-selector.tsx +426 -0
- package/src/lib/components/data-input/relation-input.tsx +164 -0
- package/src/lib/components/data-input/relation-selector.tsx +476 -0
- package/src/lib/components/data-input/{richt-text-input.tsx → rich-text-input.tsx} +15 -9
- package/src/lib/components/data-input/select-with-options.tsx +84 -0
- package/src/lib/components/data-input/struct-form-input.tsx +324 -0
- package/src/lib/components/data-table/add-filter-menu.tsx +9 -18
- package/src/lib/components/data-table/data-table-bulk-action-item.tsx +101 -0
- package/src/lib/components/data-table/data-table-bulk-actions.tsx +108 -0
- package/src/lib/components/data-table/data-table-column-header.tsx +4 -22
- package/src/lib/components/data-table/data-table-faceted-filter.tsx +8 -8
- package/src/lib/components/data-table/data-table-filter-badge.tsx +16 -8
- package/src/lib/components/data-table/data-table-filter-dialog.tsx +8 -8
- package/src/lib/components/data-table/data-table-pagination.tsx +4 -4
- package/src/lib/components/data-table/data-table-utils.ts +34 -0
- package/src/lib/components/data-table/data-table-view-options.tsx +27 -23
- package/src/lib/components/data-table/data-table.tsx +90 -43
- package/src/lib/components/data-table/filters/data-table-boolean-filter.tsx +11 -8
- package/src/lib/components/data-table/filters/data-table-datetime-filter.tsx +14 -23
- package/src/lib/components/data-table/filters/data-table-id-filter.tsx +15 -10
- package/src/lib/components/data-table/filters/data-table-number-filter.tsx +18 -17
- package/src/lib/components/data-table/filters/data-table-string-filter.tsx +29 -12
- package/src/lib/components/data-table/human-readable-operator.tsx +3 -3
- package/src/lib/components/data-table/refresh-button.tsx +30 -15
- package/src/lib/components/data-table/use-generated-columns.tsx +322 -0
- package/src/lib/components/labeled-data.tsx +21 -0
- package/src/lib/components/layout/app-layout.tsx +8 -13
- package/src/lib/components/layout/app-sidebar.tsx +5 -5
- package/src/lib/components/layout/channel-switcher.tsx +171 -62
- package/src/lib/components/layout/content-language-selector.tsx +16 -10
- package/src/lib/components/layout/dev-mode-indicator.tsx +18 -0
- package/src/lib/components/layout/generated-breadcrumbs.tsx +1 -1
- package/src/lib/components/layout/language-dialog.tsx +7 -12
- package/src/lib/components/layout/manage-languages-dialog.tsx +405 -0
- package/src/lib/components/layout/nav-item-wrapper.tsx +107 -0
- package/src/lib/components/layout/nav-main.tsx +200 -111
- package/src/lib/components/layout/nav-projects.tsx +2 -2
- package/src/lib/components/layout/nav-user.tsx +7 -7
- package/src/lib/components/layout/prerelease-popup.tsx +1 -1
- package/src/lib/components/login/login-form.tsx +85 -50
- package/src/lib/components/shared/alerts.tsx +3 -3
- package/src/lib/components/shared/animated-number.tsx +2 -2
- package/src/lib/components/shared/asset/asset-bulk-actions.tsx +109 -0
- package/src/lib/components/shared/asset/asset-focal-point-editor.tsx +29 -19
- package/src/lib/components/shared/asset/asset-gallery.tsx +25 -20
- package/src/lib/components/shared/asset/asset-picker-dialog.tsx +63 -66
- package/src/lib/components/shared/asset/asset-preview-dialog.tsx +3 -7
- package/src/lib/components/shared/asset/asset-preview-selector.tsx +4 -6
- package/src/lib/components/shared/asset/asset-preview.tsx +7 -21
- package/src/lib/components/shared/asset/asset-properties.tsx +7 -9
- package/src/lib/components/shared/asset/focal-point-control.tsx +5 -13
- package/src/lib/components/shared/assign-to-channel-bulk-action.tsx +71 -0
- package/src/lib/components/shared/assign-to-channel-dialog.tsx +155 -0
- package/src/lib/components/shared/assigned-facet-values.tsx +1 -5
- package/src/lib/components/shared/channel-code-label.tsx +3 -4
- package/src/lib/components/shared/channel-selector.tsx +6 -6
- package/src/lib/components/shared/configurable-operation-arg-input.tsx +367 -23
- package/src/lib/components/shared/configurable-operation-input.tsx +87 -48
- package/src/lib/components/shared/configurable-operation-multi-selector.tsx +260 -0
- package/src/lib/components/shared/configurable-operation-selector.tsx +156 -0
- package/src/lib/components/shared/confirmation-dialog.tsx +2 -2
- package/src/lib/components/shared/copyable-text.tsx +3 -4
- package/src/lib/components/shared/country-selector.tsx +21 -18
- package/src/lib/components/shared/currency-selector.tsx +5 -5
- package/src/lib/components/shared/custom-fields-form.tsx +423 -50
- package/src/lib/components/shared/customer-address-form.tsx +18 -13
- package/src/lib/components/shared/customer-group-selector.tsx +6 -6
- package/src/lib/components/shared/customer-selector.tsx +24 -18
- package/src/lib/components/shared/detail-page-button.tsx +45 -1
- package/src/lib/components/shared/entity-assets.tsx +33 -34
- package/src/lib/components/shared/error-page.tsx +6 -6
- package/src/lib/components/shared/facet-value-chip.tsx +12 -5
- package/src/lib/components/shared/facet-value-selector.tsx +64 -63
- package/src/lib/components/shared/form-field-wrapper.tsx +47 -24
- package/src/lib/components/shared/history-timeline/history-entry-date.tsx +37 -0
- package/src/lib/components/shared/history-timeline/history-entry.tsx +146 -70
- package/src/lib/components/shared/history-timeline/history-note-checkbox.tsx +3 -3
- package/src/lib/components/shared/history-timeline/history-note-editor.tsx +4 -4
- package/src/lib/components/shared/history-timeline/history-note-input.tsx +7 -7
- package/src/lib/components/shared/history-timeline/history-timeline.tsx +8 -48
- package/src/lib/components/shared/language-selector.tsx +5 -5
- package/src/lib/components/shared/logo-mark.tsx +2 -2
- package/src/lib/components/shared/multi-select.tsx +6 -6
- package/src/lib/components/shared/navigation-confirmation.tsx +24 -9
- package/src/lib/components/shared/option-value-input.tsx +18 -16
- package/src/lib/components/shared/paginated-list-data-table.tsx +35 -230
- package/src/lib/components/shared/permission-guard.tsx +4 -4
- package/src/lib/components/shared/product-variant-selector.tsx +59 -34
- package/src/lib/components/shared/remove-from-channel-bulk-action.tsx +90 -0
- package/src/lib/components/shared/role-code-label.tsx +10 -6
- package/src/lib/components/shared/role-selector.tsx +4 -4
- package/src/lib/components/shared/seller-selector.tsx +21 -17
- package/src/lib/components/shared/stock-level-label.tsx +5 -5
- package/src/lib/components/shared/tax-category-selector.tsx +5 -5
- package/src/lib/components/shared/translatable-form-field.tsx +46 -23
- package/src/lib/components/shared/vendure-image.tsx +31 -2
- package/src/lib/components/shared/zone-selector.tsx +5 -6
- package/src/lib/components/ui/accordion.tsx +3 -3
- package/src/lib/components/ui/alert-dialog.tsx +10 -10
- package/src/lib/components/ui/alert.tsx +3 -3
- package/src/lib/components/ui/aspect-ratio.tsx +9 -0
- package/src/lib/components/ui/badge.tsx +2 -2
- package/src/lib/components/ui/breadcrumb.tsx +4 -4
- package/src/lib/components/ui/button.tsx +10 -3
- package/src/lib/components/ui/calendar.tsx +392 -459
- package/src/lib/components/ui/card.tsx +2 -2
- package/src/lib/components/ui/carousel.tsx +241 -0
- package/src/lib/components/ui/chart.tsx +351 -0
- package/src/lib/components/ui/checkbox.tsx +2 -2
- package/src/lib/components/ui/command.tsx +12 -6
- package/src/lib/components/ui/context-menu.tsx +252 -0
- package/src/lib/components/ui/dialog.tsx +2 -2
- package/src/lib/components/ui/drawer.tsx +133 -0
- package/src/lib/components/ui/dropdown-menu.tsx +7 -7
- package/src/lib/components/ui/form.tsx +8 -8
- package/src/lib/components/ui/hover-card.tsx +3 -3
- package/src/lib/components/ui/input-otp.tsx +77 -0
- package/src/lib/components/ui/input.tsx +1 -1
- package/src/lib/components/ui/label.tsx +2 -2
- package/src/lib/components/ui/menubar.tsx +274 -0
- package/src/lib/components/ui/navigation-menu.tsx +168 -0
- package/src/lib/components/ui/pagination.tsx +87 -108
- package/src/lib/components/ui/popover.tsx +3 -3
- package/src/lib/components/ui/progress.tsx +29 -0
- package/src/lib/components/ui/radio-group.tsx +45 -0
- package/src/lib/components/ui/resizable.tsx +54 -0
- package/src/lib/components/ui/scroll-area.tsx +2 -2
- package/src/lib/components/ui/select.tsx +151 -129
- package/src/lib/components/ui/separator.tsx +2 -2
- package/src/lib/components/ui/sheet.tsx +5 -5
- package/src/lib/components/ui/sidebar.tsx +10 -10
- package/src/lib/components/ui/skeleton.tsx +1 -1
- package/src/lib/components/ui/slider.tsx +63 -0
- package/src/lib/components/ui/switch.tsx +2 -2
- package/src/lib/components/ui/table.tsx +2 -2
- package/src/lib/components/ui/tabs.tsx +3 -3
- package/src/lib/components/ui/textarea.tsx +1 -1
- package/src/lib/components/ui/toggle-group.tsx +73 -0
- package/src/lib/components/ui/toggle.tsx +45 -0
- package/src/lib/components/ui/tooltip.tsx +3 -3
- package/src/lib/framework/alert/alert-extensions.tsx +2 -3
- package/src/lib/framework/alert/alert-item.tsx +5 -3
- package/src/lib/framework/component-registry/component-registry.tsx +33 -47
- package/src/lib/framework/component-registry/dynamic-component.tsx +3 -3
- package/src/lib/framework/dashboard-widget/base-widget.tsx +5 -13
- package/src/lib/framework/dashboard-widget/latest-orders-widget/index.tsx +8 -8
- package/src/lib/framework/dashboard-widget/latest-orders-widget/latest-orders-widget.graphql.ts +1 -1
- package/src/lib/framework/dashboard-widget/metrics-widget/index.tsx +7 -8
- package/src/lib/framework/dashboard-widget/metrics-widget/metrics-widget.graphql.ts +1 -1
- package/src/lib/framework/dashboard-widget/orders-summary/index.tsx +7 -8
- package/src/lib/framework/dashboard-widget/orders-summary/order-summary-widget.graphql.ts +1 -1
- package/src/lib/framework/dashboard-widget/widget-extensions.tsx +1 -1
- package/src/lib/framework/data-table/data-table-extensions.ts +35 -0
- package/src/lib/framework/defaults.ts +5 -11
- package/src/lib/framework/document-extension/extend-detail-form-query.ts +50 -0
- package/src/lib/framework/document-extension/extend-document.spec.ts +884 -0
- package/src/lib/framework/document-extension/extend-document.ts +159 -0
- package/src/lib/framework/document-introspection/add-custom-fields.ts +50 -2
- package/src/lib/framework/document-introspection/get-document-structure.spec.ts +321 -2
- package/src/lib/framework/document-introspection/get-document-structure.ts +187 -36
- package/src/lib/framework/document-introspection/hooks.ts +4 -1
- package/src/lib/framework/extension-api/define-dashboard-extension.ts +35 -49
- package/src/lib/framework/extension-api/display-component-extensions.tsx +69 -0
- package/src/lib/framework/extension-api/extension-api-types.ts +34 -98
- package/src/lib/framework/extension-api/input-component-extensions.tsx +73 -0
- package/src/lib/framework/extension-api/logic/alerts.ts +10 -0
- package/src/lib/framework/extension-api/logic/data-table.ts +60 -0
- package/src/lib/framework/extension-api/logic/detail-forms.ts +48 -0
- package/src/lib/framework/extension-api/logic/form-components.ts +13 -0
- package/src/lib/framework/extension-api/logic/index.ts +9 -0
- package/src/lib/framework/extension-api/logic/layout.ts +22 -0
- package/src/lib/framework/extension-api/logic/login.ts +17 -0
- package/src/lib/framework/extension-api/logic/navigation.ts +38 -0
- package/src/lib/framework/extension-api/logic/widgets.ts +10 -0
- package/src/lib/framework/extension-api/types/alerts.ts +54 -0
- package/src/lib/framework/extension-api/types/data-table.ts +96 -0
- package/src/lib/framework/extension-api/types/detail-forms.ts +94 -0
- package/src/lib/framework/extension-api/types/form-components.ts +43 -0
- package/src/lib/framework/extension-api/types/index.ts +9 -0
- package/src/lib/framework/extension-api/types/layout.ts +90 -0
- package/src/lib/framework/extension-api/types/login.ts +96 -0
- package/src/lib/framework/extension-api/types/navigation.ts +76 -0
- package/src/lib/framework/extension-api/types/widgets.ts +93 -0
- package/src/lib/framework/extension-api/use-dashboard-extensions.ts +2 -1
- package/src/lib/framework/extension-api/use-login-extensions.ts +26 -0
- package/src/lib/framework/form-engine/custom-form-component-extensions.ts +38 -0
- package/src/lib/framework/form-engine/custom-form-component.tsx +33 -0
- package/src/lib/framework/form-engine/form-schema-tools.spec.ts +472 -0
- package/src/lib/framework/form-engine/form-schema-tools.ts +341 -6
- package/src/lib/framework/form-engine/overridden-form-component.tsx +51 -0
- package/src/lib/framework/form-engine/use-generated-form.tsx +82 -24
- package/src/lib/framework/form-engine/utils.spec.ts +37 -0
- package/src/lib/framework/form-engine/utils.ts +99 -0
- package/src/lib/framework/layout-engine/dev-mode-button.tsx +24 -0
- package/src/lib/framework/layout-engine/layout-extensions.ts +1 -4
- package/src/lib/framework/layout-engine/location-wrapper.tsx +98 -72
- package/src/lib/framework/layout-engine/page-block-provider.tsx +6 -0
- package/src/lib/framework/layout-engine/page-layout.tsx +135 -58
- package/src/lib/framework/page/detail-page-route-loader.tsx +26 -7
- package/src/lib/framework/page/detail-page.tsx +94 -37
- package/src/lib/framework/page/list-page.tsx +18 -11
- package/src/lib/framework/page/use-detail-page.ts +47 -13
- package/src/lib/framework/page/use-extended-router.tsx +4 -5
- package/src/lib/framework/registry/global-registry.ts +4 -0
- package/src/lib/framework/registry/registry-types.ts +17 -5
- package/src/lib/graphql/api.ts +25 -3
- package/src/lib/graphql/common-operations.ts +18 -0
- package/src/lib/graphql/{fragments.tsx → fragments.ts} +1 -2
- package/src/lib/graphql/graphql-env.d.ts +27 -24
- package/src/lib/graphql/settings-store-operations.ts +17 -0
- package/src/lib/hooks/use-auth.tsx +1 -1
- package/src/lib/hooks/use-channel.ts +1 -1
- package/src/lib/hooks/use-extended-detail-query.ts +37 -0
- package/src/lib/hooks/use-extended-list-query.ts +75 -0
- package/src/lib/hooks/use-floating-bulk-actions.ts +82 -0
- package/src/lib/hooks/use-grouped-permissions.ts +3 -2
- package/src/lib/hooks/use-local-format.ts +20 -5
- package/src/lib/hooks/use-page-block.tsx +18 -0
- package/src/lib/hooks/use-page.tsx +2 -2
- package/src/lib/hooks/use-permissions.ts +3 -2
- package/src/lib/hooks/use-server-config.ts +1 -1
- package/src/lib/hooks/use-theme.ts +1 -1
- package/src/lib/hooks/use-user-settings.tsx +1 -1
- package/src/lib/index.ts +85 -7
- package/src/lib/lib/trans.tsx +3 -3
- package/src/lib/lib/utils.ts +52 -1
- package/src/lib/providers/auth.tsx +37 -14
- package/src/lib/providers/channel-provider.tsx +17 -15
- package/src/lib/providers/server-config.tsx +13 -11
- package/src/lib/providers/theme-provider.tsx +2 -3
- package/src/lib/providers/user-settings.tsx +78 -3
- package/src/lib/virtual.d.ts +26 -2
- package/src/vite-env.d.ts +2 -0
- package/vite/tests/barrel-exports.spec.ts +30 -0
- package/vite/tests/fixtures-barrel-exports/my-plugin/index.ts +1 -0
- package/vite/tests/fixtures-barrel-exports/my-plugin/src/my.plugin.ts +8 -0
- package/vite/tests/fixtures-barrel-exports/package.json +6 -0
- package/vite/tests/fixtures-barrel-exports/vendure-config.ts +19 -0
- package/vite/tests/fixtures-npm-plugin/fake_node_modules/test-plugin/index.js +20 -0
- package/vite/tests/fixtures-npm-plugin/fake_node_modules/test-plugin/package.json +8 -0
- package/vite/tests/fixtures-npm-plugin/package.json +6 -0
- package/vite/tests/fixtures-npm-plugin/vendure-config.ts +18 -0
- package/vite/tests/fixtures-path-alias/js-aliased/index.ts +1 -0
- package/vite/tests/fixtures-path-alias/js-aliased/src/js-aliased.plugin.ts +8 -0
- package/vite/tests/fixtures-path-alias/package.json +6 -0
- package/vite/tests/fixtures-path-alias/star-aliased/index.ts +1 -0
- package/vite/tests/fixtures-path-alias/star-aliased/src/star-aliased.plugin.ts +8 -0
- package/vite/tests/fixtures-path-alias/ts-aliased/index.ts +1 -0
- package/vite/tests/fixtures-path-alias/ts-aliased/src/ts-aliased.plugin.ts +8 -0
- package/vite/tests/fixtures-path-alias/vendure-config.ts +20 -0
- package/vite/tests/npm-plugin.spec.ts +46 -0
- package/vite/tests/path-alias.spec.ts +61 -0
- package/vite/tests/tsconfig.json +21 -0
- package/vite/types.ts +44 -0
- package/vite/utils/ast-utils.spec.ts +1 -80
- package/vite/utils/ast-utils.ts +0 -86
- package/vite/utils/compiler.ts +244 -0
- package/vite/utils/config-loader.ts +0 -445
- package/vite/utils/logger.ts +43 -0
- package/vite/utils/plugin-discovery.ts +494 -0
- package/vite/utils/tsconfig-utils.ts +79 -0
- package/vite/utils/ui-config.ts +30 -42
- package/vite/vite-plugin-config-loader.ts +25 -17
- package/vite/vite-plugin-config.ts +6 -7
- package/vite/vite-plugin-dashboard-metadata.ts +27 -16
- package/vite/vite-plugin-tailwind-source.ts +81 -0
- package/vite/vite-plugin-theme.ts +69 -69
- package/vite/vite-plugin-ui-config.ts +119 -17
- package/vite/vite-plugin-vendure-dashboard.ts +60 -16
- package/dist/plugin/utils/ast-utils.js +0 -96
- package/dist/plugin/utils/ast-utils.spec.js +0 -120
- package/dist/plugin/utils/config-loader.d.ts +0 -52
- package/dist/plugin/utils/config-loader.js +0 -343
- package/dist/plugin/utils/ui-config.d.ts +0 -3
- package/dist/plugin/utils/ui-config.js +0 -34
- package/dist/plugin/vite-plugin-theme.js +0 -130
- package/dist/plugin/vite-plugin-ui-config.d.ts +0 -15
- package/dist/plugin/vite-plugin-vendure-dashboard.d.ts +0 -44
- package/src/lib/components/shared/rich-text-editor.tsx +0 -0
- package/src/lib/framework/alert/types.ts +0 -13
- package/src/lib/framework/dashboard-widget/types.ts +0 -22
- /package/dist/{plugin/utils/ast-utils.spec.d.ts → vite/types.js} +0 -0
- /package/dist/{plugin → vite}/utils/schema-generator.d.ts +0 -0
- /package/dist/{plugin → vite}/utils/schema-generator.js +0 -0
- /package/dist/{plugin → vite}/vite-plugin-admin-api-schema.d.ts +0 -0
- /package/dist/{plugin → vite}/vite-plugin-admin-api-schema.js +0 -0
- /package/dist/{plugin → vite}/vite-plugin-config.d.ts +0 -0
- /package/dist/{plugin → vite}/vite-plugin-gql-tada.d.ts +0 -0
- /package/dist/{plugin → vite}/vite-plugin-gql-tada.js +0 -0
- /package/dist/{plugin → vite}/vite-plugin-theme.d.ts +0 -0
- /package/dist/{plugin → vite}/vite-plugin-transform-index.d.ts +0 -0
- /package/dist/{plugin → vite}/vite-plugin-transform-index.js +0 -0
- /package/src/lib/components/data-table/{data-table-types.ts → types.ts} +0 -0
|
@@ -1,343 +0,0 @@
|
|
|
1
|
-
import fs from 'fs-extra';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import tsConfigPaths from 'tsconfig-paths';
|
|
4
|
-
import * as ts from 'typescript';
|
|
5
|
-
import { pathToFileURL } from 'url';
|
|
6
|
-
import { findConfigExport, getPluginInfo } from './ast-utils.js';
|
|
7
|
-
const defaultLogger = {
|
|
8
|
-
info: (message) => {
|
|
9
|
-
/* noop */
|
|
10
|
-
},
|
|
11
|
-
warn: (message) => {
|
|
12
|
-
/* noop */
|
|
13
|
-
},
|
|
14
|
-
debug: (message) => {
|
|
15
|
-
/* noop */
|
|
16
|
-
},
|
|
17
|
-
};
|
|
18
|
-
/**
|
|
19
|
-
* @description
|
|
20
|
-
* This function compiles the given Vendure config file and any imported relative files (i.e.
|
|
21
|
-
* project files, not npm packages) into a temporary directory, and returns the compiled config.
|
|
22
|
-
*
|
|
23
|
-
* The reason we need to do this is that Vendure code makes use of TypeScript experimental decorators
|
|
24
|
-
* (e.g. for NestJS decorators and TypeORM column decorators) which are not supported by esbuild.
|
|
25
|
-
*
|
|
26
|
-
* In Vite, when we load some TypeScript into the top-level Vite config file (in the end-user project), Vite
|
|
27
|
-
* internally uses esbuild to temporarily compile that TypeScript code. Unfortunately, esbuild does not support
|
|
28
|
-
* these experimental decorators, errors will be thrown as soon as e.g. a TypeORM column decorator is encountered.
|
|
29
|
-
*
|
|
30
|
-
* To work around this, we compile the Vendure config file and all its imports using the TypeScript compiler,
|
|
31
|
-
* which fully supports these experimental decorators. The compiled files are then loaded by Vite, which is able
|
|
32
|
-
* to handle the compiled JavaScript output.
|
|
33
|
-
*/
|
|
34
|
-
export async function loadVendureConfig(options) {
|
|
35
|
-
const { vendureConfigPath, vendureConfigExport, tempDir } = options;
|
|
36
|
-
const logger = options.logger || defaultLogger;
|
|
37
|
-
const outputPath = tempDir;
|
|
38
|
-
const configFileName = path.basename(vendureConfigPath);
|
|
39
|
-
const inputRootDir = path.dirname(vendureConfigPath);
|
|
40
|
-
await fs.remove(outputPath);
|
|
41
|
-
const pluginInfo = await compileFile({
|
|
42
|
-
inputRootDir,
|
|
43
|
-
inputPath: vendureConfigPath,
|
|
44
|
-
outputDir: outputPath,
|
|
45
|
-
logger,
|
|
46
|
-
});
|
|
47
|
-
const compiledConfigFilePath = pathToFileURL(path.join(outputPath, configFileName)).href.replace(/.ts$/, '.js');
|
|
48
|
-
// create package.json with type commonjs and save it to the output dir
|
|
49
|
-
await fs.writeFile(path.join(outputPath, 'package.json'), JSON.stringify({ type: 'commonjs' }, null, 2));
|
|
50
|
-
// We need to figure out the symbol exported by the config file by
|
|
51
|
-
// analyzing the AST and finding an export with the type "VendureConfig"
|
|
52
|
-
const sourceFile = ts.createSourceFile(vendureConfigPath, await fs.readFile(vendureConfigPath, 'utf-8'), ts.ScriptTarget.Latest, true);
|
|
53
|
-
const detectedExportedSymbolName = findConfigExport(sourceFile);
|
|
54
|
-
const configExportedSymbolName = detectedExportedSymbolName || vendureConfigExport;
|
|
55
|
-
if (!configExportedSymbolName) {
|
|
56
|
-
throw new Error(`Could not find a variable exported as VendureConfig. Please specify the name of the exported variable using the "vendureConfigExport" option.`);
|
|
57
|
-
}
|
|
58
|
-
// Register path aliases from tsconfig before importing
|
|
59
|
-
const tsConfigInfo = await findTsConfigPaths(vendureConfigPath, logger);
|
|
60
|
-
if (tsConfigInfo) {
|
|
61
|
-
tsConfigPaths.register({
|
|
62
|
-
baseUrl: outputPath,
|
|
63
|
-
paths: tsConfigInfo.paths,
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
const config = await import(compiledConfigFilePath).then(m => m[configExportedSymbolName]);
|
|
67
|
-
if (!config) {
|
|
68
|
-
throw new Error(`Could not find a variable exported as VendureConfig with the name "${configExportedSymbolName}".`);
|
|
69
|
-
}
|
|
70
|
-
return { vendureConfig: config, exportedSymbolName: configExportedSymbolName, pluginInfo };
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Finds and parses tsconfig files in the given directory and its parent directories.
|
|
74
|
-
* Returns the paths configuration if found.
|
|
75
|
-
*/
|
|
76
|
-
async function findTsConfigPaths(configPath, logger) {
|
|
77
|
-
const configDir = path.dirname(configPath);
|
|
78
|
-
let currentDir = configDir;
|
|
79
|
-
while (currentDir !== path.parse(currentDir).root) {
|
|
80
|
-
try {
|
|
81
|
-
const files = await fs.readdir(currentDir);
|
|
82
|
-
const tsConfigFiles = files.filter(file => /^tsconfig(\..*)?\.json$/.test(file));
|
|
83
|
-
for (const fileName of tsConfigFiles) {
|
|
84
|
-
const tsConfigPath = path.join(currentDir, fileName);
|
|
85
|
-
try {
|
|
86
|
-
const tsConfigContent = await fs.readFile(tsConfigPath, 'utf-8');
|
|
87
|
-
// Use JSON5 or similar parser if comments are expected in tsconfig.json
|
|
88
|
-
// For simplicity, assuming standard JSON here. Handle parse errors.
|
|
89
|
-
const tsConfig = JSON.parse(tsConfigContent);
|
|
90
|
-
const compilerOptions = tsConfig.compilerOptions || {};
|
|
91
|
-
if (compilerOptions.paths) {
|
|
92
|
-
// Determine the effective baseUrl: explicitly set or the directory of tsconfig.json
|
|
93
|
-
const tsConfigBaseUrl = path.resolve(currentDir, compilerOptions.baseUrl || '.');
|
|
94
|
-
const paths = {};
|
|
95
|
-
for (const [alias, patterns] of Object.entries(compilerOptions.paths)) {
|
|
96
|
-
// Store paths as defined in tsconfig, they will be relative to baseUrl
|
|
97
|
-
paths[alias] = patterns.map(pattern =>
|
|
98
|
-
// Normalize slashes for consistency, keep relative
|
|
99
|
-
pattern.replace(/\\/g, '/'));
|
|
100
|
-
}
|
|
101
|
-
logger.debug(`Found tsconfig paths in ${tsConfigPath}: ${JSON.stringify({
|
|
102
|
-
baseUrl: tsConfigBaseUrl,
|
|
103
|
-
paths,
|
|
104
|
-
}, null, 2)}`);
|
|
105
|
-
return { baseUrl: tsConfigBaseUrl, paths };
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
catch (e) {
|
|
109
|
-
logger.warn(`Could not read or parse tsconfig file ${tsConfigPath}: ${e.message}`);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
catch (e) {
|
|
114
|
-
// If we can't read the directory, just continue to the parent
|
|
115
|
-
logger.warn(`Could not read directory ${currentDir}: ${e.message}`);
|
|
116
|
-
}
|
|
117
|
-
currentDir = path.dirname(currentDir);
|
|
118
|
-
}
|
|
119
|
-
logger.debug(`No tsconfig paths found traversing up from ${configDir}`);
|
|
120
|
-
return undefined;
|
|
121
|
-
}
|
|
122
|
-
export async function compileFile({ inputRootDir, inputPath, outputDir, logger = defaultLogger, compiledFiles = new Set(), isRoot = true, pluginInfo = [], reportCompilationErrors = false, }) {
|
|
123
|
-
const absoluteInputPath = path.resolve(inputPath);
|
|
124
|
-
if (compiledFiles.has(absoluteInputPath)) {
|
|
125
|
-
return pluginInfo;
|
|
126
|
-
}
|
|
127
|
-
compiledFiles.add(absoluteInputPath);
|
|
128
|
-
// Ensure output directory exists
|
|
129
|
-
await fs.ensureDir(outputDir);
|
|
130
|
-
// Read the source file
|
|
131
|
-
const source = await fs.readFile(inputPath, 'utf-8');
|
|
132
|
-
// Parse the source to find relative imports
|
|
133
|
-
const sourceFile = ts.createSourceFile(absoluteInputPath, source, ts.ScriptTarget.Latest, true);
|
|
134
|
-
const importPaths = new Set();
|
|
135
|
-
let tsConfigInfo;
|
|
136
|
-
if (isRoot) {
|
|
137
|
-
tsConfigInfo = await findTsConfigPaths(absoluteInputPath, logger);
|
|
138
|
-
if (tsConfigInfo) {
|
|
139
|
-
logger === null || logger === void 0 ? void 0 : logger.debug(`Using TypeScript configuration: ${JSON.stringify(tsConfigInfo, null, 2)}`);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
async function collectImports(node) {
|
|
143
|
-
if (ts.isImportDeclaration(node) && ts.isStringLiteral(node.moduleSpecifier)) {
|
|
144
|
-
const importPath = node.moduleSpecifier.text;
|
|
145
|
-
// Handle relative imports
|
|
146
|
-
if (importPath.startsWith('.')) {
|
|
147
|
-
const resolvedPath = path.resolve(path.dirname(absoluteInputPath), importPath);
|
|
148
|
-
let resolvedTsPath = resolvedPath + '.ts';
|
|
149
|
-
// Also check for .tsx if .ts doesn't exist
|
|
150
|
-
if (!(await fs.pathExists(resolvedTsPath))) {
|
|
151
|
-
const resolvedTsxPath = resolvedPath + '.tsx';
|
|
152
|
-
if (await fs.pathExists(resolvedTsxPath)) {
|
|
153
|
-
resolvedTsPath = resolvedTsxPath;
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
// If neither exists, maybe it's an index file?
|
|
157
|
-
const resolvedIndexPath = path.join(resolvedPath, 'index.ts');
|
|
158
|
-
if (await fs.pathExists(resolvedIndexPath)) {
|
|
159
|
-
resolvedTsPath = resolvedIndexPath;
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
const resolvedIndexTsxPath = path.join(resolvedPath, 'index.tsx');
|
|
163
|
-
if (await fs.pathExists(resolvedIndexTsxPath)) {
|
|
164
|
-
resolvedTsPath = resolvedIndexTsxPath;
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
// If still not found, log a warning or let TS handle it later
|
|
168
|
-
logger === null || logger === void 0 ? void 0 : logger.warn(`Could not resolve relative import "${importPath}" from "${absoluteInputPath}" to an existing .ts/.tsx file.`);
|
|
169
|
-
// Do not add to importPaths if we can't verify existence
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
importPaths.add(resolvedTsPath);
|
|
176
|
-
}
|
|
177
|
-
// Handle path aliases if tsConfigInfo exists
|
|
178
|
-
else if (tsConfigInfo) {
|
|
179
|
-
// Attempt to resolve using path aliases
|
|
180
|
-
let resolved = false;
|
|
181
|
-
for (const [alias, patterns] of Object.entries(tsConfigInfo.paths)) {
|
|
182
|
-
const aliasPrefix = alias.replace('*', '');
|
|
183
|
-
const aliasSuffix = alias.endsWith('*') ? '*' : '';
|
|
184
|
-
if (importPath.startsWith(aliasPrefix) &&
|
|
185
|
-
(aliasSuffix === '*' || importPath === aliasPrefix)) {
|
|
186
|
-
const remainingImportPath = importPath.slice(aliasPrefix.length);
|
|
187
|
-
for (const pattern of patterns) {
|
|
188
|
-
const patternPrefix = pattern.replace('*', '');
|
|
189
|
-
const patternSuffix = pattern.endsWith('*') ? '*' : '';
|
|
190
|
-
// Ensure suffix match consistency (* vs exact)
|
|
191
|
-
if (aliasSuffix !== patternSuffix)
|
|
192
|
-
continue;
|
|
193
|
-
const potentialPathBase = path.resolve(tsConfigInfo.baseUrl, patternPrefix);
|
|
194
|
-
const resolvedPath = path.join(potentialPathBase, remainingImportPath);
|
|
195
|
-
let resolvedTsPath = resolvedPath + '.ts';
|
|
196
|
-
// Similar existence checks as relative paths
|
|
197
|
-
if (!(await fs.pathExists(resolvedTsPath))) {
|
|
198
|
-
const resolvedTsxPath = resolvedPath + '.tsx';
|
|
199
|
-
if (await fs.pathExists(resolvedTsxPath)) {
|
|
200
|
-
resolvedTsPath = resolvedTsxPath;
|
|
201
|
-
}
|
|
202
|
-
else {
|
|
203
|
-
const resolvedIndexPath = path.join(resolvedPath, 'index.ts');
|
|
204
|
-
if (await fs.pathExists(resolvedIndexPath)) {
|
|
205
|
-
resolvedTsPath = resolvedIndexPath;
|
|
206
|
-
}
|
|
207
|
-
else {
|
|
208
|
-
const resolvedIndexTsxPath = path.join(resolvedPath, 'index.tsx');
|
|
209
|
-
if (await fs.pathExists(resolvedIndexTsxPath)) {
|
|
210
|
-
resolvedTsPath = resolvedIndexTsxPath;
|
|
211
|
-
}
|
|
212
|
-
else {
|
|
213
|
-
// Path doesn't resolve to a file for this pattern
|
|
214
|
-
continue;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
// Add the first successful resolution for this alias
|
|
220
|
-
importPaths.add(resolvedTsPath);
|
|
221
|
-
resolved = true;
|
|
222
|
-
break; // Stop checking patterns for this alias
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
if (resolved)
|
|
226
|
-
break; // Stop checking other aliases if resolved
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
// For all other imports (node_modules, etc), we should still add them to be processed
|
|
230
|
-
// by the TypeScript compiler, even if we can't resolve them to a file
|
|
231
|
-
else {
|
|
232
|
-
// Add the import path as is - TypeScript will handle resolution
|
|
233
|
-
// importPaths.add(importPath);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
else {
|
|
237
|
-
const children = node.getChildren();
|
|
238
|
-
for (const child of children) {
|
|
239
|
-
// Only process nodes that could contain import statements
|
|
240
|
-
if (ts.isSourceFile(child) ||
|
|
241
|
-
ts.isModuleBlock(child) ||
|
|
242
|
-
ts.isModuleDeclaration(child) ||
|
|
243
|
-
ts.isImportDeclaration(child) ||
|
|
244
|
-
child.kind === ts.SyntaxKind.SyntaxList) {
|
|
245
|
-
await collectImports(child);
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
// Start collecting imports from the source file
|
|
251
|
-
await collectImports(sourceFile);
|
|
252
|
-
const extractedPluginInfo = getPluginInfo(sourceFile);
|
|
253
|
-
if (extractedPluginInfo) {
|
|
254
|
-
pluginInfo.push(extractedPluginInfo);
|
|
255
|
-
}
|
|
256
|
-
// Store the tsConfigInfo on the first call if found
|
|
257
|
-
const rootTsConfigInfo = isRoot ? tsConfigInfo : undefined;
|
|
258
|
-
// Recursively collect all files that need to be compiled
|
|
259
|
-
for (const importPath of importPaths) {
|
|
260
|
-
// Pass rootTsConfigInfo down, but set isRoot to false
|
|
261
|
-
await compileFile({
|
|
262
|
-
inputRootDir,
|
|
263
|
-
inputPath: importPath,
|
|
264
|
-
outputDir,
|
|
265
|
-
logger,
|
|
266
|
-
compiledFiles,
|
|
267
|
-
isRoot: false,
|
|
268
|
-
pluginInfo,
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
// If this is the root file (the one that started the compilation),
|
|
272
|
-
// use the TypeScript compiler API to compile all files together
|
|
273
|
-
if (isRoot) {
|
|
274
|
-
logger.info(`Starting compilation for ${compiledFiles.size} files...`);
|
|
275
|
-
const allFiles = Array.from(compiledFiles);
|
|
276
|
-
const compilerOptions = {
|
|
277
|
-
// Base options
|
|
278
|
-
target: ts.ScriptTarget.ES2020,
|
|
279
|
-
module: ts.ModuleKind.CommonJS, // Output CommonJS for Node compatibility
|
|
280
|
-
experimentalDecorators: true,
|
|
281
|
-
emitDecoratorMetadata: true,
|
|
282
|
-
esModuleInterop: true,
|
|
283
|
-
skipLibCheck: true, // Faster compilation
|
|
284
|
-
forceConsistentCasingInFileNames: true,
|
|
285
|
-
moduleResolution: ts.ModuleResolutionKind.NodeJs, // Use Node.js module resolution
|
|
286
|
-
incremental: false, // No need for incremental compilation
|
|
287
|
-
noEmitOnError: false, // Continue emitting even with errors
|
|
288
|
-
isolatedModules: true, // Treat files as separate modules
|
|
289
|
-
strict: false, // Disable strict type checking for speed
|
|
290
|
-
noUnusedLocals: false, // Skip unused locals check
|
|
291
|
-
noUnusedParameters: false, // Skip unused parameters check
|
|
292
|
-
// Output options
|
|
293
|
-
outDir: outputDir, // Output directory for all compiled files
|
|
294
|
-
sourceMap: false, // Generate source maps
|
|
295
|
-
declaration: false, // Don't generate .d.ts files
|
|
296
|
-
// Path resolution options - use info found from tsconfig
|
|
297
|
-
baseUrl: rootTsConfigInfo ? rootTsConfigInfo.baseUrl : undefined, // Let TS handle resolution if no baseUrl
|
|
298
|
-
paths: rootTsConfigInfo ? rootTsConfigInfo.paths : undefined,
|
|
299
|
-
// rootDir: inputRootDir, // Often inferred correctly, can cause issues if set explicitly sometimes
|
|
300
|
-
allowJs: true, // Allow JS files if needed, though we primarily collect TS
|
|
301
|
-
resolveJsonModule: true, // Allow importing JSON
|
|
302
|
-
};
|
|
303
|
-
logger.debug(`compilerOptions: ${JSON.stringify(compilerOptions, null, 2)}`);
|
|
304
|
-
// Create a Program to represent the compilation context
|
|
305
|
-
const program = ts.createProgram(allFiles, compilerOptions);
|
|
306
|
-
logger.info(`Emitting compiled files to ${outputDir}`);
|
|
307
|
-
const emitResult = program.emit();
|
|
308
|
-
if (reportCompilationErrors) {
|
|
309
|
-
const hasEmitErrors = reportDiagnostics(program, emitResult, logger);
|
|
310
|
-
if (hasEmitErrors) {
|
|
311
|
-
throw new Error('TypeScript compilation failed with errors.');
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
logger.info(`Successfully compiled ${allFiles.length} files to ${outputDir}`);
|
|
315
|
-
}
|
|
316
|
-
return pluginInfo;
|
|
317
|
-
}
|
|
318
|
-
function reportDiagnostics(program, emitResult, logger) {
|
|
319
|
-
const allDiagnostics = ts.getPreEmitDiagnostics(program).concat(emitResult.diagnostics);
|
|
320
|
-
let hasEmitErrors = emitResult.emitSkipped;
|
|
321
|
-
allDiagnostics.forEach(diagnostic => {
|
|
322
|
-
if (diagnostic.file && diagnostic.start) {
|
|
323
|
-
const { line, character } = ts.getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start);
|
|
324
|
-
const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n');
|
|
325
|
-
const logFn = diagnostic.category === ts.DiagnosticCategory.Error ? logger.warn : logger.info;
|
|
326
|
-
// eslint-disable-next-line no-console
|
|
327
|
-
console.log(`TS${diagnostic.code} ${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`);
|
|
328
|
-
if (diagnostic.category === ts.DiagnosticCategory.Error) {
|
|
329
|
-
hasEmitErrors = true;
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
else {
|
|
333
|
-
const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n');
|
|
334
|
-
const logFn = diagnostic.category === ts.DiagnosticCategory.Error ? logger.warn : logger.info;
|
|
335
|
-
// eslint-disable-next-line no-console
|
|
336
|
-
console.log(`TS${diagnostic.code}: ${message}`);
|
|
337
|
-
if (diagnostic.category === ts.DiagnosticCategory.Error) {
|
|
338
|
-
hasEmitErrors = true;
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
});
|
|
342
|
-
return hasEmitErrors;
|
|
343
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { ADMIN_API_PATH, DEFAULT_AUTH_TOKEN_HEADER_KEY, DEFAULT_CHANNEL_TOKEN_KEY, } from '@vendure/common/lib/shared-constants';
|
|
2
|
-
import { defaultAvailableLanguages, defaultAvailableLocales, defaultLanguage, defaultLocale, } from '../constants.js';
|
|
3
|
-
export function getAdminUiConfig(config, adminUiConfig) {
|
|
4
|
-
const { authOptions, apiOptions } = config;
|
|
5
|
-
const propOrDefault = (prop, defaultVal, isArray = false) => {
|
|
6
|
-
var _a;
|
|
7
|
-
if (isArray) {
|
|
8
|
-
const isValidArray = !!adminUiConfig
|
|
9
|
-
? !!((_a = adminUiConfig[prop]) === null || _a === void 0 ? void 0 : _a.length)
|
|
10
|
-
: false;
|
|
11
|
-
return !!adminUiConfig && isValidArray ? adminUiConfig[prop] : defaultVal;
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
return adminUiConfig ? adminUiConfig[prop] || defaultVal : defaultVal;
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
return {
|
|
18
|
-
adminApiPath: propOrDefault('adminApiPath', apiOptions.adminApiPath || ADMIN_API_PATH),
|
|
19
|
-
apiHost: propOrDefault('apiHost', 'auto'),
|
|
20
|
-
apiPort: propOrDefault('apiPort', 'auto'),
|
|
21
|
-
tokenMethod: propOrDefault('tokenMethod', authOptions.tokenMethod === 'bearer' ? 'bearer' : 'cookie'),
|
|
22
|
-
authTokenHeaderKey: propOrDefault('authTokenHeaderKey', authOptions.authTokenHeaderKey || DEFAULT_AUTH_TOKEN_HEADER_KEY),
|
|
23
|
-
channelTokenKey: propOrDefault('channelTokenKey', apiOptions.channelTokenKey || DEFAULT_CHANNEL_TOKEN_KEY),
|
|
24
|
-
defaultLanguage: propOrDefault('defaultLanguage', defaultLanguage),
|
|
25
|
-
defaultLocale: propOrDefault('defaultLocale', defaultLocale),
|
|
26
|
-
availableLanguages: propOrDefault('availableLanguages', defaultAvailableLanguages, true),
|
|
27
|
-
availableLocales: propOrDefault('availableLocales', defaultAvailableLocales, true),
|
|
28
|
-
brand: adminUiConfig === null || adminUiConfig === void 0 ? void 0 : adminUiConfig.brand,
|
|
29
|
-
hideVendureBranding: propOrDefault('hideVendureBranding', (adminUiConfig === null || adminUiConfig === void 0 ? void 0 : adminUiConfig.hideVendureBranding) || false),
|
|
30
|
-
hideVersion: propOrDefault('hideVersion', (adminUiConfig === null || adminUiConfig === void 0 ? void 0 : adminUiConfig.hideVersion) || false),
|
|
31
|
-
loginImageUrl: adminUiConfig === null || adminUiConfig === void 0 ? void 0 : adminUiConfig.loginImageUrl,
|
|
32
|
-
cancellationReasons: propOrDefault('cancellationReasons', undefined),
|
|
33
|
-
};
|
|
34
|
-
}
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
const defaultVariables = {
|
|
2
|
-
light: {
|
|
3
|
-
background: 'hsl(0 0% 100%)',
|
|
4
|
-
foreground: 'hsl(0 0% 3.9%)',
|
|
5
|
-
card: 'hsl(0 0% 100%)',
|
|
6
|
-
'card-foreground': 'hsl(0 0% 3.9%)',
|
|
7
|
-
popover: 'hsl(0 0% 100%)',
|
|
8
|
-
'popover-foreground': 'hsl(0 0% 3.9%)',
|
|
9
|
-
primary: 'hsl(0 0% 9%)',
|
|
10
|
-
'primary-foreground': 'hsl(0 0% 98%)',
|
|
11
|
-
secondary: 'hsl(0 0% 96.1%)',
|
|
12
|
-
'secondary-foreground': 'hsl(0 0% 9%)',
|
|
13
|
-
muted: 'hsl(0 0% 96.1%)',
|
|
14
|
-
'muted-foreground': 'hsl(0 0% 45.1%)',
|
|
15
|
-
accent: 'hsl(0 0% 96.1%)',
|
|
16
|
-
'accent-foreground': 'hsl(0 0% 9%)',
|
|
17
|
-
destructive: 'hsl(0 84.2% 60.2%)',
|
|
18
|
-
'destructive-foreground': 'hsl(0 0% 98%)',
|
|
19
|
-
success: 'hsl(100, 81%, 35%)',
|
|
20
|
-
'success-foreground': 'hsl(0 0% 98%)',
|
|
21
|
-
'dev-mode': 'hsl(204, 76%, 62%)',
|
|
22
|
-
'dev-mode-foreground': 'hsl(0 0% 98%)',
|
|
23
|
-
border: 'hsl(0 0% 89.8%)',
|
|
24
|
-
input: 'hsl(0 0% 89.8%)',
|
|
25
|
-
ring: 'hsl(0 0% 3.9%)',
|
|
26
|
-
'chart-1': 'hsl(12 76% 61%)',
|
|
27
|
-
'chart-2': 'hsl(173 58% 39%)',
|
|
28
|
-
'chart-3': 'hsl(197 37% 24%)',
|
|
29
|
-
'chart-4': 'hsl(43 74% 66%)',
|
|
30
|
-
'chart-5': 'hsl(27 87% 67%)',
|
|
31
|
-
radius: '0.6rem',
|
|
32
|
-
sidebar: 'hsl(0 0% 98%)',
|
|
33
|
-
'sidebar-foreground': 'hsl(240 5.3% 26.1%)',
|
|
34
|
-
'sidebar-primary': 'hsl(240 5.9% 10%)',
|
|
35
|
-
'sidebar-primary-foreground': 'hsl(0 0% 98%)',
|
|
36
|
-
'sidebar-accent': 'hsl(0, 0%, 92%)',
|
|
37
|
-
'sidebar-accent-foreground': 'hsl(240 5.9% 10%)',
|
|
38
|
-
'sidebar-border': 'hsl(220 13% 91%)',
|
|
39
|
-
'sidebar-ring': 'hsl(217.2 91.2% 59.8%)',
|
|
40
|
-
brand: '#17c1ff',
|
|
41
|
-
'brand-lighter': '#e6f9ff',
|
|
42
|
-
'brand-darker': '#0099ff',
|
|
43
|
-
'font-sans': "'Geist', sans-serif",
|
|
44
|
-
'font-mono': "'Geist Mono', monospace",
|
|
45
|
-
},
|
|
46
|
-
dark: {
|
|
47
|
-
background: 'hsl(0 0% 3.9%)',
|
|
48
|
-
foreground: 'hsl(0 0% 98%)',
|
|
49
|
-
card: 'hsl(0 0% 3.9%)',
|
|
50
|
-
'card-foreground': 'hsl(0 0% 98%)',
|
|
51
|
-
popover: 'hsl(0 0% 3.9%)',
|
|
52
|
-
'popover-foreground': 'hsl(0 0% 98%)',
|
|
53
|
-
primary: 'hsl(0 0% 98%)',
|
|
54
|
-
'primary-foreground': 'hsl(0 0% 9%)',
|
|
55
|
-
secondary: 'hsl(0 0% 14.9%)',
|
|
56
|
-
'secondary-foreground': 'hsl(0 0% 98%)',
|
|
57
|
-
muted: 'hsl(0 0% 14.9%)',
|
|
58
|
-
'muted-foreground': 'hsl(0 0% 63.9%)',
|
|
59
|
-
accent: 'hsl(0 0% 14.9%)',
|
|
60
|
-
'accent-foreground': 'hsl(0 0% 98%)',
|
|
61
|
-
destructive: 'hsl(0 62.8% 30.6%)',
|
|
62
|
-
'destructive-foreground': 'hsl(0 0% 98%)',
|
|
63
|
-
success: 'hsl(100, 100%, 35%)',
|
|
64
|
-
'success-foreground': 'hsl(0 0% 98%)',
|
|
65
|
-
'dev-mode': 'hsl(204, 86%, 53%)',
|
|
66
|
-
'dev-mode-foreground': 'hsl(0 0% 98%)',
|
|
67
|
-
border: 'hsl(0 0% 14.9%)',
|
|
68
|
-
input: 'hsl(0 0% 14.9%)',
|
|
69
|
-
ring: 'hsl(0 0% 83.1%)',
|
|
70
|
-
'chart-1': 'hsl(220 70% 50%)',
|
|
71
|
-
'chart-2': 'hsl(160 60% 45%)',
|
|
72
|
-
'chart-3': 'hsl(30 80% 55%)',
|
|
73
|
-
'chart-4': 'hsl(280 65% 60%)',
|
|
74
|
-
'chart-5': 'hsl(340 75% 55%)',
|
|
75
|
-
sidebar: 'hsl(240 5.9% 10%)',
|
|
76
|
-
'sidebar-foreground': 'hsl(240 4.8% 95.9%)',
|
|
77
|
-
'sidebar-primary': 'hsl(224.3 76.3% 48%)',
|
|
78
|
-
'sidebar-primary-foreground': 'hsl(0 0% 100%)',
|
|
79
|
-
'sidebar-accent': 'hsl(240 3.7% 15.9%)',
|
|
80
|
-
'sidebar-accent-foreground': 'hsl(240 4.8% 95.9%)',
|
|
81
|
-
'sidebar-border': 'hsl(240 3.7% 15.9%)',
|
|
82
|
-
'sidebar-ring': 'hsl(217.2 91.2% 59.8%)',
|
|
83
|
-
brand: '#17c1ff',
|
|
84
|
-
'brand-lighter': '#e6f9ff',
|
|
85
|
-
'brand-darker': '#0099ff',
|
|
86
|
-
'font-sans': "'Geist', sans-serif",
|
|
87
|
-
'font-mono': "'Geist Mono', monospace",
|
|
88
|
-
},
|
|
89
|
-
};
|
|
90
|
-
export function themeVariablesPlugin(options) {
|
|
91
|
-
const virtualModuleId = 'virtual:admin-theme';
|
|
92
|
-
const resolvedVirtualModuleId = `\0${virtualModuleId}`;
|
|
93
|
-
return {
|
|
94
|
-
name: 'vendure:admin-theme',
|
|
95
|
-
enforce: 'pre', // This ensures our plugin runs before other CSS processors
|
|
96
|
-
transform(code, id) {
|
|
97
|
-
var _a, _b;
|
|
98
|
-
// Only transform CSS files
|
|
99
|
-
if (!id.endsWith('styles.css')) {
|
|
100
|
-
return null;
|
|
101
|
-
}
|
|
102
|
-
// Replace the @import 'virtual:admin-theme'; with our theme variables
|
|
103
|
-
if (code.includes('@import "virtual:admin-theme";') ||
|
|
104
|
-
code.includes("@import 'virtual:admin-theme';")) {
|
|
105
|
-
const lightTheme = ((_a = options.theme) === null || _a === void 0 ? void 0 : _a.light) || {};
|
|
106
|
-
const darkTheme = ((_b = options.theme) === null || _b === void 0 ? void 0 : _b.dark) || {};
|
|
107
|
-
// Merge default themes with custom themes
|
|
108
|
-
const mergedLightTheme = Object.assign(Object.assign({}, defaultVariables.light), lightTheme);
|
|
109
|
-
const mergedDarkTheme = Object.assign(Object.assign({}, defaultVariables.dark), darkTheme);
|
|
110
|
-
const themeCSS = `
|
|
111
|
-
:root {
|
|
112
|
-
${Object.entries(mergedLightTheme)
|
|
113
|
-
.filter(([key, value]) => value !== undefined)
|
|
114
|
-
.map(([key, value]) => `--${key}: ${value};`)
|
|
115
|
-
.join('\n')}
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
.dark {
|
|
119
|
-
${Object.entries(mergedDarkTheme)
|
|
120
|
-
.filter(([key, value]) => value !== undefined)
|
|
121
|
-
.map(([key, value]) => `--${key}: ${value};`)
|
|
122
|
-
.join('\n')}
|
|
123
|
-
}
|
|
124
|
-
`;
|
|
125
|
-
return code.replace(/@import ['"]virtual:admin-theme['"];?/, themeCSS);
|
|
126
|
-
}
|
|
127
|
-
return null;
|
|
128
|
-
},
|
|
129
|
-
};
|
|
130
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { AdminUiConfig } from '@vendure/core';
|
|
2
|
-
import { Plugin } from 'vite';
|
|
3
|
-
export type UiConfigPluginOptions = {
|
|
4
|
-
/**
|
|
5
|
-
* @description
|
|
6
|
-
* The admin UI config to be passed to the Vendure Dashboard.
|
|
7
|
-
*/
|
|
8
|
-
adminUiConfig?: Partial<AdminUiConfig>;
|
|
9
|
-
};
|
|
10
|
-
/**
|
|
11
|
-
* This Vite plugin scans the configured plugins for any dashboard extensions and dynamically
|
|
12
|
-
* generates an import statement for each one, wrapped up in a `runDashboardExtensions()`
|
|
13
|
-
* function which can then be imported and executed in the Dashboard app.
|
|
14
|
-
*/
|
|
15
|
-
export declare function uiConfigPlugin({ adminUiConfig }: UiConfigPluginOptions): Plugin;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { PluginOption } from 'vite';
|
|
2
|
-
import { ThemeVariablesPluginOptions } from './vite-plugin-theme.js';
|
|
3
|
-
import { UiConfigPluginOptions } from './vite-plugin-ui-config.js';
|
|
4
|
-
/**
|
|
5
|
-
* @description
|
|
6
|
-
* Options for the {@link vendureDashboardPlugin} Vite plugin.
|
|
7
|
-
*/
|
|
8
|
-
export type VitePluginVendureDashboardOptions = {
|
|
9
|
-
/**
|
|
10
|
-
* @description
|
|
11
|
-
* The path to the Vendure server configuration file.
|
|
12
|
-
*/
|
|
13
|
-
vendureConfigPath: string | URL;
|
|
14
|
-
/**
|
|
15
|
-
* @description
|
|
16
|
-
* The name of the exported variable from the Vendure server configuration file.
|
|
17
|
-
* This is only required if the plugin is unable to auto-detect the name of the exported variable.
|
|
18
|
-
*/
|
|
19
|
-
vendureConfigExport?: string;
|
|
20
|
-
/**
|
|
21
|
-
* @description
|
|
22
|
-
* The path to the directory where the generated GraphQL Tada files will be output.
|
|
23
|
-
*/
|
|
24
|
-
gqlTadaOutputPath?: string;
|
|
25
|
-
tempCompilationDir?: string;
|
|
26
|
-
disableTansStackRouterPlugin?: boolean;
|
|
27
|
-
/**
|
|
28
|
-
* @description
|
|
29
|
-
* If set to `true`, compilation errors during the build process will be reported and
|
|
30
|
-
* the build will fail.
|
|
31
|
-
*
|
|
32
|
-
* @default false
|
|
33
|
-
*/
|
|
34
|
-
reportCompilationErrors?: boolean;
|
|
35
|
-
} & UiConfigPluginOptions & ThemeVariablesPluginOptions;
|
|
36
|
-
/**
|
|
37
|
-
* @description
|
|
38
|
-
* This is a Vite plugin which configures a set of plugins required to build the Vendure Dashboard.
|
|
39
|
-
*/
|
|
40
|
-
export declare function vendureDashboardPlugin(options: VitePluginVendureDashboardOptions): PluginOption[];
|
|
41
|
-
/**
|
|
42
|
-
* Get the normalized path to the Vendure config file given either a string or URL.
|
|
43
|
-
*/
|
|
44
|
-
export declare function getNormalizedVendureConfigPath(vendureConfigPath: string | URL): string;
|
|
File without changes
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export interface DashboardAlertDefinition<TResponse = any> {
|
|
2
|
-
id: string;
|
|
3
|
-
title: string | ((data: TResponse) => string);
|
|
4
|
-
description?: string | ((data: TResponse) => string);
|
|
5
|
-
severity: 'info' | 'warning' | 'error';
|
|
6
|
-
check: () => Promise<TResponse> | TResponse;
|
|
7
|
-
recheckInterval?: number;
|
|
8
|
-
shouldShow?: (data: TResponse) => boolean;
|
|
9
|
-
actions?: Array<{
|
|
10
|
-
label: string;
|
|
11
|
-
onClick: (data: TResponse) => void;
|
|
12
|
-
}>;
|
|
13
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { DashboardBaseWidgetProps } from './base-widget.js';
|
|
2
|
-
|
|
3
|
-
export type DashboardWidgetInstance = {
|
|
4
|
-
id: string;
|
|
5
|
-
widgetId: string;
|
|
6
|
-
layout: {
|
|
7
|
-
x: number;
|
|
8
|
-
y: number;
|
|
9
|
-
w: number;
|
|
10
|
-
h: number;
|
|
11
|
-
};
|
|
12
|
-
config?: Record<string, unknown>;
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
export type DashboardWidgetDefinition = {
|
|
16
|
-
id: string;
|
|
17
|
-
name: string;
|
|
18
|
-
component: React.ComponentType<DashboardBaseWidgetProps>;
|
|
19
|
-
defaultSize: { w: number; h: number; x?: number; y?: number };
|
|
20
|
-
minSize?: { w: number; h: number };
|
|
21
|
-
maxSize?: { w: number; h: number };
|
|
22
|
-
};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|