整理后台平台配置服务目录结构
This commit is contained in:
@@ -39,7 +39,7 @@ import {
|
|||||||
updateAdminFulfillmentBindingConfigs,
|
updateAdminFulfillmentBindingConfigs,
|
||||||
verifyAdminCloudtentaclesLoginCode,
|
verifyAdminCloudtentaclesLoginCode,
|
||||||
validateAdminCloudtentaclesSession,
|
validateAdminCloudtentaclesSession,
|
||||||
} from '../../services/admin/admin-platform-config-service.js'
|
} from '../../services/admin/platform-config/service.js'
|
||||||
import { createJsonHandler, requireAdminRoles } from './shared.js'
|
import { createJsonHandler, requireAdminRoles } from './shared.js'
|
||||||
|
|
||||||
/** @typedef {import('../../types/admin-route-inputs.js').AdminAgisoShopConfigRouteBody} AdminAgisoShopConfigRouteBody */
|
/** @typedef {import('../../types/admin-route-inputs.js').AdminAgisoShopConfigRouteBody} AdminAgisoShopConfigRouteBody */
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ export {
|
|||||||
lookupAdminFulfillmentBindingOrder,
|
lookupAdminFulfillmentBindingOrder,
|
||||||
updateAdminAgisoShopConfigs,
|
updateAdminAgisoShopConfigs,
|
||||||
updateAdminFulfillmentBindingConfigs,
|
updateAdminFulfillmentBindingConfigs,
|
||||||
} from './admin-platform-config-service.js'
|
} from './platform-config/service.js'
|
||||||
|
|
||||||
export { getAdminDashboardSummary } from './admin-dashboard-service.js'
|
export { getAdminDashboardSummary } from './admin-dashboard-service.js'
|
||||||
export { getAdminMessageDeliveries } from './admin-message-delivery-service.js'
|
export { getAdminMessageDeliveries } from './admin-message-delivery-service.js'
|
||||||
|
|||||||
+3
-3
@@ -1,8 +1,8 @@
|
|||||||
// @ts-check
|
// @ts-check
|
||||||
|
|
||||||
import { getCloudtentaclesSourceConfig } from '../platforms/cloudtentacles/source-config-service.js'
|
import { getCloudtentaclesSourceConfig } from '../../platforms/cloudtentacles/source-config-service.js'
|
||||||
import { getCloudtentaclesSessionState } from '../platforms/cloudtentacles/session-state-service.js'
|
import { getCloudtentaclesSessionState } from '../../platforms/cloudtentacles/session-state-service.js'
|
||||||
import { pickFirstNonEmpty, resolveCloudtentaclesAdminContext } from './admin-platform-config-context.js'
|
import { pickFirstNonEmpty, resolveCloudtentaclesAdminContext } from './context.js'
|
||||||
|
|
||||||
const DEFAULT_CLOUDTENTACLES_BASE_URL = 'https://123.207.217.176'
|
const DEFAULT_CLOUDTENTACLES_BASE_URL = 'https://123.207.217.176'
|
||||||
|
|
||||||
+1
-1
@@ -4,7 +4,7 @@ import assert from 'node:assert/strict'
|
|||||||
import {
|
import {
|
||||||
resolveAdminCloudtentaclesCredentialPayload,
|
resolveAdminCloudtentaclesCredentialPayload,
|
||||||
resolveAdminCloudtentaclesSessionPayload,
|
resolveAdminCloudtentaclesSessionPayload,
|
||||||
} from './admin-platform-config-cloudtentacles.js'
|
} from './cloudtentacles.js'
|
||||||
|
|
||||||
test('resolveAdminCloudtentaclesCredentialPayload merges payload and saved source defaults', () => {
|
test('resolveAdminCloudtentaclesCredentialPayload merges payload and saved source defaults', () => {
|
||||||
assert.deepEqual(
|
assert.deepEqual(
|
||||||
+1
-1
@@ -7,7 +7,7 @@ import {
|
|||||||
pickFirstNonEmpty,
|
pickFirstNonEmpty,
|
||||||
resolveCloudtentaclesAdminContext,
|
resolveCloudtentaclesAdminContext,
|
||||||
resolveKuaishouEticketAdminContext,
|
resolveKuaishouEticketAdminContext,
|
||||||
} from './admin-platform-config-context.js'
|
} from './context.js'
|
||||||
|
|
||||||
test('pickFirstNonEmpty returns first trimmed non-empty string value', () => {
|
test('pickFirstNonEmpty returns first trimmed non-empty string value', () => {
|
||||||
assert.equal(pickFirstNonEmpty(['', ' ', ' value ', 'fallback']), 'value')
|
assert.equal(pickFirstNonEmpty(['', ' ', ' value ', 'fallback']), 'value')
|
||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
// @ts-check
|
// @ts-check
|
||||||
|
|
||||||
import { normalizeAgisoMessageTemplate } from '../platforms/agiso/xianyu/message-service.js'
|
import { normalizeAgisoMessageTemplate } from '../../platforms/agiso/xianyu/message-service.js'
|
||||||
import { maskSecret } from './admin-platform-config-mappers.js'
|
import { maskSecret } from './mappers.js'
|
||||||
|
|
||||||
export function mapAdminAgisoMessagingDefaults(defaults = {}) {
|
export function mapAdminAgisoMessagingDefaults(defaults = {}) {
|
||||||
return {
|
return {
|
||||||
+1
-1
@@ -10,7 +10,7 @@ import {
|
|||||||
mapAdminObservedProductItem,
|
mapAdminObservedProductItem,
|
||||||
matchesObservedProduct,
|
matchesObservedProduct,
|
||||||
resolveFulfillmentBindingMatchShopId,
|
resolveFulfillmentBindingMatchShopId,
|
||||||
} from './admin-platform-config-domain.js'
|
} from './domain.js'
|
||||||
|
|
||||||
test('mapAdminAgisoMessagingDefaults normalizes escaped newlines', () => {
|
test('mapAdminAgisoMessagingDefaults normalizes escaped newlines', () => {
|
||||||
assert.deepEqual(
|
assert.deepEqual(
|
||||||
+4
-4
@@ -1,9 +1,9 @@
|
|||||||
// @ts-check
|
// @ts-check
|
||||||
|
|
||||||
import { createHttpError } from '../../utils/http.js'
|
import { createHttpError } from '../../../utils/http.js'
|
||||||
import { formatFenToAmount } from '../../utils/money.js'
|
import { formatFenToAmount } from '../../../utils/money.js'
|
||||||
import { isPlainObject, pickFirstNonEmpty } from './admin-platform-config-context.js'
|
import { isPlainObject, pickFirstNonEmpty } from './context.js'
|
||||||
import { mapAdminObservedProductItem } from './admin-platform-config-domain.js'
|
import { mapAdminObservedProductItem } from './domain.js'
|
||||||
|
|
||||||
export function normalizeFulfillmentLookupPayload(payload = {}) {
|
export function normalizeFulfillmentLookupPayload(payload = {}) {
|
||||||
const provider = String(payload.provider || 'agiso').trim() || 'agiso'
|
const provider = String(payload.provider || 'agiso').trim() || 'agiso'
|
||||||
+1
-1
@@ -5,7 +5,7 @@ import {
|
|||||||
buildFulfillmentLookupResult,
|
buildFulfillmentLookupResult,
|
||||||
normalizeFulfillmentLookupPayload,
|
normalizeFulfillmentLookupPayload,
|
||||||
resolveFulfillmentLookupDetail,
|
resolveFulfillmentLookupDetail,
|
||||||
} from './admin-platform-config-fulfillment.js'
|
} from './fulfillment.js'
|
||||||
|
|
||||||
test('normalizeFulfillmentLookupPayload validates required fields and defaults provider/platform', () => {
|
test('normalizeFulfillmentLookupPayload validates required fields and defaults provider/platform', () => {
|
||||||
assert.deepEqual(
|
assert.deepEqual(
|
||||||
+1
-1
@@ -9,7 +9,7 @@ import {
|
|||||||
mapAdminKuaishouEticketSourceConfig,
|
mapAdminKuaishouEticketSourceConfig,
|
||||||
maskPhone,
|
maskPhone,
|
||||||
maskSecret,
|
maskSecret,
|
||||||
} from './admin-platform-config-mappers.js'
|
} from './mappers.js'
|
||||||
|
|
||||||
test('maskSecret preserves edges while hiding middle characters', () => {
|
test('maskSecret preserves edges while hiding middle characters', () => {
|
||||||
assert.equal(maskSecret('abcdef1234567890'), 'abcdef****567890')
|
assert.equal(maskSecret('abcdef1234567890'), 'abcdef****567890')
|
||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
// @ts-check
|
// @ts-check
|
||||||
|
|
||||||
import { query } from '../../db/client.js'
|
import { query } from '../../../db/client.js'
|
||||||
import { mapAdminObservedProductItem } from './admin-platform-config-domain.js'
|
import { mapAdminObservedProductItem } from './domain.js'
|
||||||
|
|
||||||
export const ADMIN_OBSERVED_PRODUCTS_QUERY = `
|
export const ADMIN_OBSERVED_PRODUCTS_QUERY = `
|
||||||
SELECT
|
SELECT
|
||||||
+1
-1
@@ -5,7 +5,7 @@ import {
|
|||||||
ADMIN_OBSERVED_PRODUCTS_QUERY,
|
ADMIN_OBSERVED_PRODUCTS_QUERY,
|
||||||
listAdminObservedProducts,
|
listAdminObservedProducts,
|
||||||
mapAdminObservedProductRow,
|
mapAdminObservedProductRow,
|
||||||
} from './admin-platform-config-observed-products.js'
|
} from './observed-products.js'
|
||||||
|
|
||||||
test('mapAdminObservedProductRow normalizes query row fields', () => {
|
test('mapAdminObservedProductRow normalizes query row fields', () => {
|
||||||
assert.deepEqual(
|
assert.deepEqual(
|
||||||
+52
-52
@@ -1,24 +1,24 @@
|
|||||||
// @ts-check
|
// @ts-check
|
||||||
|
|
||||||
import { query } from '../../db/client.js'
|
import { query } from '../../../db/client.js'
|
||||||
import {
|
import {
|
||||||
getAgisoMessagingDefaults,
|
getAgisoMessagingDefaults,
|
||||||
getAgisoShopConfig,
|
getAgisoShopConfig,
|
||||||
getAgisoShopConfigMap,
|
getAgisoShopConfigMap,
|
||||||
getAgisoShopsFilePath,
|
getAgisoShopsFilePath,
|
||||||
saveAgisoMessagingConfig,
|
saveAgisoMessagingConfig,
|
||||||
} from '../platforms/agiso/shop-config-service.js'
|
} from '../../platforms/agiso/shop-config-service.js'
|
||||||
import { enrichAgisoXianyuTradeOrder } from '../platforms/agiso/xianyu/order-detail-service.js'
|
import { enrichAgisoXianyuTradeOrder } from '../../platforms/agiso/xianyu/order-detail-service.js'
|
||||||
import { mapKhhaoOrderPreviewList } from '../platforms/khhao/order-mapper-service.js'
|
import { mapKhhaoOrderPreviewList } from '../../platforms/khhao/order-mapper-service.js'
|
||||||
import { queryKhhaoOrderList } from '../platforms/khhao/order-query-service.js'
|
import { queryKhhaoOrderList } from '../../platforms/khhao/order-query-service.js'
|
||||||
import { syncKhhaoOrders } from '../platforms/khhao/order-sync-service.js'
|
import { syncKhhaoOrders } from '../../platforms/khhao/order-sync-service.js'
|
||||||
import { getKhhaoSourceConfig, getKhhaoSourcesFilePath, saveKhhaoSourceConfig } from '../platforms/khhao/source-config-service.js'
|
import { getKhhaoSourceConfig, getKhhaoSourcesFilePath, saveKhhaoSourceConfig } from '../../platforms/khhao/source-config-service.js'
|
||||||
import { ensureKhhaoSyncBaseline, getKhhaoSyncState, getKhhaoSyncStateFilePath } from '../platforms/khhao/sync-state-service.js'
|
import { ensureKhhaoSyncBaseline, getKhhaoSyncState, getKhhaoSyncStateFilePath } from '../../platforms/khhao/sync-state-service.js'
|
||||||
import { loginKhhaoSession } from '../platforms/khhao/session-service.js'
|
import { loginKhhaoSession } from '../../platforms/khhao/session-service.js'
|
||||||
import {
|
import {
|
||||||
consumeKuaishouEticket,
|
consumeKuaishouEticket,
|
||||||
queryKuaishouEticketConsumeDetail,
|
queryKuaishouEticketConsumeDetail,
|
||||||
} from '../platforms/kuaishou-eticket/consume-service.js'
|
} from '../../platforms/kuaishou-eticket/consume-service.js'
|
||||||
import {
|
import {
|
||||||
findKuaishouEticketShopConfig,
|
findKuaishouEticketShopConfig,
|
||||||
getFirstAvailableKuaishouEticketShop,
|
getFirstAvailableKuaishouEticketShop,
|
||||||
@@ -27,32 +27,32 @@ import {
|
|||||||
listKuaishouEticketShopConfigs,
|
listKuaishouEticketShopConfigs,
|
||||||
resolveKuaishouEticketShopConfig,
|
resolveKuaishouEticketShopConfig,
|
||||||
saveKuaishouEticketSourceConfig,
|
saveKuaishouEticketSourceConfig,
|
||||||
} from '../platforms/kuaishou-eticket/source-config-service.js'
|
} from '../../platforms/kuaishou-eticket/source-config-service.js'
|
||||||
import { queryKuaishouEticketStableInfo } from '../platforms/kuaishou-eticket/info-service.js'
|
import { queryKuaishouEticketStableInfo } from '../../platforms/kuaishou-eticket/info-service.js'
|
||||||
import {
|
import {
|
||||||
getCloudtentaclesSourceConfig,
|
getCloudtentaclesSourceConfig,
|
||||||
getCloudtentaclesSourcesFilePath,
|
getCloudtentaclesSourcesFilePath,
|
||||||
saveCloudtentaclesSourceConfig,
|
saveCloudtentaclesSourceConfig,
|
||||||
} from '../platforms/cloudtentacles/source-config-service.js'
|
} from '../../platforms/cloudtentacles/source-config-service.js'
|
||||||
import {
|
import {
|
||||||
clearCloudtentaclesSessionState,
|
clearCloudtentaclesSessionState,
|
||||||
getCloudtentaclesSessionFilePath,
|
getCloudtentaclesSessionFilePath,
|
||||||
getCloudtentaclesSessionState,
|
getCloudtentaclesSessionState,
|
||||||
saveCloudtentaclesSessionState,
|
saveCloudtentaclesSessionState,
|
||||||
} from '../platforms/cloudtentacles/session-state-service.js'
|
} from '../../platforms/cloudtentacles/session-state-service.js'
|
||||||
import {
|
import {
|
||||||
loginCloudtentaclesSession,
|
loginCloudtentaclesSession,
|
||||||
sendCloudtentaclesSmsCode,
|
sendCloudtentaclesSmsCode,
|
||||||
validateCloudtentaclesSession,
|
validateCloudtentaclesSession,
|
||||||
} from '../platforms/cloudtentacles/session-service.js'
|
} from '../../platforms/cloudtentacles/session-service.js'
|
||||||
import {
|
import {
|
||||||
buyCloudtentaclesSku,
|
buyCloudtentaclesSku,
|
||||||
getCloudtentaclesAsset,
|
getCloudtentaclesAsset,
|
||||||
getCloudtentaclesCategories,
|
getCloudtentaclesCategories,
|
||||||
listCloudtentaclesSku,
|
listCloudtentaclesSku,
|
||||||
useCloudtentaclesSku,
|
useCloudtentaclesSku,
|
||||||
} from '../platforms/cloudtentacles/catalog-service.js'
|
} from '../../platforms/cloudtentacles/catalog-service.js'
|
||||||
import { getCloudtentaclesKnapsack } from '../platforms/cloudtentacles/knapsack-service.js'
|
import { getCloudtentaclesKnapsack } from '../../platforms/cloudtentacles/knapsack-service.js'
|
||||||
import {
|
import {
|
||||||
appointCloudtentaclesVirtualNumber,
|
appointCloudtentaclesVirtualNumber,
|
||||||
backCloudtentaclesVirtualNumber,
|
backCloudtentaclesVirtualNumber,
|
||||||
@@ -61,49 +61,49 @@ import {
|
|||||||
getCloudtentaclesBindUrl,
|
getCloudtentaclesBindUrl,
|
||||||
listCloudtentaclesVirtualNumbers,
|
listCloudtentaclesVirtualNumbers,
|
||||||
verifyCloudtentaclesLoginCode,
|
verifyCloudtentaclesLoginCode,
|
||||||
} from '../platforms/cloudtentacles/virtual-number-service.js'
|
} from '../../platforms/cloudtentacles/virtual-number-service.js'
|
||||||
import { runCloudtentaclesFullDebugFlow } from '../platforms/cloudtentacles/debug-flow-service.js'
|
import { runCloudtentaclesFullDebugFlow } from '../../platforms/cloudtentacles/debug-flow-service.js'
|
||||||
import {
|
import {
|
||||||
getOrderFulfillmentBindingConfigs,
|
getOrderFulfillmentBindingConfigs,
|
||||||
getOrderFulfillmentBindingsFilePath,
|
getOrderFulfillmentBindingsFilePath,
|
||||||
saveOrderFulfillmentBindingConfigs,
|
saveOrderFulfillmentBindingConfigs,
|
||||||
} from '../order/fulfillment-binding-config-service.js'
|
} from '../../order/fulfillment-binding-config-service.js'
|
||||||
import {
|
import {
|
||||||
getKuaishouCloudFulfillmentConfig,
|
getKuaishouCloudFulfillmentConfig,
|
||||||
getKuaishouCloudFulfillmentFilePath,
|
getKuaishouCloudFulfillmentFilePath,
|
||||||
saveKuaishouCloudFulfillmentConfig,
|
saveKuaishouCloudFulfillmentConfig,
|
||||||
} from '../order/kuaishou-cloud-fulfillment-config-service.js'
|
} from '../../order/kuaishou-cloud-fulfillment-config-service.js'
|
||||||
import { getFulfillmentProfileByKey } from '../../repositories/fulfillment-profile-repo.js'
|
import { getFulfillmentProfileByKey } from '../../../repositories/fulfillment-profile-repo.js'
|
||||||
import { createHttpError } from '../../utils/http.js'
|
import { createHttpError } from '../../../utils/http.js'
|
||||||
import { syncConfiguredFulfillmentBindings } from '../bootstrap/fulfillment-bootstrap-service.js'
|
import { syncConfiguredFulfillmentBindings } from '../../bootstrap/fulfillment-bootstrap-service.js'
|
||||||
import { resolveDisplayShopName } from './admin-read-shared-helpers.js'
|
import { resolveDisplayShopName } from '../admin-read-shared-helpers.js'
|
||||||
import {
|
import {
|
||||||
hasCloudtentaclesCredentialContextChanged,
|
hasCloudtentaclesCredentialContextChanged,
|
||||||
isPlainObject,
|
isPlainObject,
|
||||||
pickFirstNonEmpty,
|
pickFirstNonEmpty,
|
||||||
resolveKuaishouEticketAdminContext,
|
resolveKuaishouEticketAdminContext,
|
||||||
} from './admin-platform-config-context.js'
|
} from './context.js'
|
||||||
import {
|
import {
|
||||||
buildFulfillmentLookupResult,
|
buildFulfillmentLookupResult,
|
||||||
normalizeFulfillmentLookupPayload,
|
normalizeFulfillmentLookupPayload,
|
||||||
resolveFulfillmentLookupDetail,
|
resolveFulfillmentLookupDetail,
|
||||||
} from './admin-platform-config-fulfillment.js'
|
} from './fulfillment.js'
|
||||||
import {
|
import {
|
||||||
resolveAdminCloudtentaclesCredentialPayload,
|
resolveAdminCloudtentaclesCredentialPayload,
|
||||||
resolveAdminCloudtentaclesSessionPayload,
|
resolveAdminCloudtentaclesSessionPayload,
|
||||||
} from './admin-platform-config-cloudtentacles.js'
|
} from './cloudtentacles.js'
|
||||||
import { listAdminObservedProducts } from './admin-platform-config-observed-products.js'
|
import { listAdminObservedProducts } from './observed-products.js'
|
||||||
import {
|
import {
|
||||||
assertAdminFulfillmentBindingsInput,
|
assertAdminFulfillmentBindingsInput,
|
||||||
buildAdminFulfillmentBindingUniqueKey,
|
buildAdminFulfillmentBindingUniqueKey,
|
||||||
normalizeAdminFulfillmentBindingItem,
|
normalizeAdminFulfillmentBindingItem,
|
||||||
} from './admin-platform-config-validation.js'
|
} from './validation.js'
|
||||||
import {
|
import {
|
||||||
applyOptionalStringField,
|
applyOptionalStringField,
|
||||||
mapAdminAgisoMessagingDefaults,
|
mapAdminAgisoMessagingDefaults,
|
||||||
mapAdminAgisoShopConfigItem,
|
mapAdminAgisoShopConfigItem,
|
||||||
mapAdminFulfillmentBindingConfigItem,
|
mapAdminFulfillmentBindingConfigItem,
|
||||||
} from './admin-platform-config-domain.js'
|
} from './domain.js'
|
||||||
import {
|
import {
|
||||||
mapAdminCloudtentaclesSession,
|
mapAdminCloudtentaclesSession,
|
||||||
mapAdminCloudtentaclesSourceConfig,
|
mapAdminCloudtentaclesSourceConfig,
|
||||||
@@ -113,28 +113,28 @@ import {
|
|||||||
mapAdminKuaishouEticketSourceConfig,
|
mapAdminKuaishouEticketSourceConfig,
|
||||||
maskPhone,
|
maskPhone,
|
||||||
maskSecret,
|
maskSecret,
|
||||||
} from './admin-platform-config-mappers.js'
|
} from './mappers.js'
|
||||||
|
|
||||||
/** @typedef {import('../../types/admin-write-inputs.js').AdminAgisoShopConfigSaveInput} AdminAgisoShopConfigSaveInput */
|
/** @typedef {import('../../../types/admin-write-inputs.js').AdminAgisoShopConfigSaveInput} AdminAgisoShopConfigSaveInput */
|
||||||
/** @typedef {import('../../types/admin-write-inputs.js').AdminKhhaoSourceConfigInput} AdminKhhaoSourceConfigInput */
|
/** @typedef {import('../../../types/admin-write-inputs.js').AdminKhhaoSourceConfigInput} AdminKhhaoSourceConfigInput */
|
||||||
/** @typedef {import('../../types/admin-write-inputs.js').AdminKuaishouEticketSourceConfigInput} AdminKuaishouEticketSourceConfigInput */
|
/** @typedef {import('../../../types/admin-write-inputs.js').AdminKuaishouEticketSourceConfigInput} AdminKuaishouEticketSourceConfigInput */
|
||||||
/** @typedef {import('../../types/admin-write-inputs.js').AdminKuaishouEticketShopInfoInput} AdminKuaishouEticketShopInfoInput */
|
/** @typedef {import('../../../types/admin-write-inputs.js').AdminKuaishouEticketShopInfoInput} AdminKuaishouEticketShopInfoInput */
|
||||||
/** @typedef {import('../../types/admin-write-inputs.js').AdminKuaishouEticketDetailQueryInput} AdminKuaishouEticketDetailQueryInput */
|
/** @typedef {import('../../../types/admin-write-inputs.js').AdminKuaishouEticketDetailQueryInput} AdminKuaishouEticketDetailQueryInput */
|
||||||
/** @typedef {import('../../types/admin-write-inputs.js').AdminKuaishouEticketConsumeInput} AdminKuaishouEticketConsumeInput */
|
/** @typedef {import('../../../types/admin-write-inputs.js').AdminKuaishouEticketConsumeInput} AdminKuaishouEticketConsumeInput */
|
||||||
/** @typedef {import('../../types/admin-write-inputs.js').AdminKhhaoOrderQueryInput} AdminKhhaoOrderQueryInput */
|
/** @typedef {import('../../../types/admin-write-inputs.js').AdminKhhaoOrderQueryInput} AdminKhhaoOrderQueryInput */
|
||||||
/** @typedef {import('../../types/admin-write-inputs.js').AdminKhhaoTestLoginInput} AdminKhhaoTestLoginInput */
|
/** @typedef {import('../../../types/admin-write-inputs.js').AdminKhhaoTestLoginInput} AdminKhhaoTestLoginInput */
|
||||||
/** @typedef {import('../../types/admin-write-inputs.js').AdminCloudtentaclesSourceConfigInput} AdminCloudtentaclesSourceConfigInput */
|
/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesSourceConfigInput} AdminCloudtentaclesSourceConfigInput */
|
||||||
/** @typedef {import('../../types/admin-write-inputs.js').AdminKuaishouCloudFulfillmentConfigInput} AdminKuaishouCloudFulfillmentConfigInput */
|
/** @typedef {import('../../../types/admin-write-inputs.js').AdminKuaishouCloudFulfillmentConfigInput} AdminKuaishouCloudFulfillmentConfigInput */
|
||||||
/** @typedef {import('../../types/admin-write-inputs.js').AdminCloudtentaclesSendSmsCodeInput} AdminCloudtentaclesSendSmsCodeInput */
|
/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesSendSmsCodeInput} AdminCloudtentaclesSendSmsCodeInput */
|
||||||
/** @typedef {import('../../types/admin-write-inputs.js').AdminCloudtentaclesTestLoginInput} AdminCloudtentaclesTestLoginInput */
|
/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesTestLoginInput} AdminCloudtentaclesTestLoginInput */
|
||||||
/** @typedef {import('../../types/admin-write-inputs.js').AdminCloudtentaclesValidateSessionInput} AdminCloudtentaclesValidateSessionInput */
|
/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesValidateSessionInput} AdminCloudtentaclesValidateSessionInput */
|
||||||
/** @typedef {import('../../types/admin-write-inputs.js').AdminCloudtentaclesCatalogQueryInput} AdminCloudtentaclesCatalogQueryInput */
|
/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesCatalogQueryInput} AdminCloudtentaclesCatalogQueryInput */
|
||||||
/** @typedef {import('../../types/admin-write-inputs.js').AdminCloudtentaclesSkuBuyInput} AdminCloudtentaclesSkuBuyInput */
|
/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesSkuBuyInput} AdminCloudtentaclesSkuBuyInput */
|
||||||
/** @typedef {import('../../types/admin-write-inputs.js').AdminCloudtentaclesSkuUseInput} AdminCloudtentaclesSkuUseInput */
|
/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesSkuUseInput} AdminCloudtentaclesSkuUseInput */
|
||||||
/** @typedef {import('../../types/admin-write-inputs.js').AdminCloudtentaclesVirtualNumberInput} AdminCloudtentaclesVirtualNumberInput */
|
/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesVirtualNumberInput} AdminCloudtentaclesVirtualNumberInput */
|
||||||
/** @typedef {import('../../types/admin-write-inputs.js').AdminCloudtentaclesFullFlowInput} AdminCloudtentaclesFullFlowInput */
|
/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesFullFlowInput} AdminCloudtentaclesFullFlowInput */
|
||||||
/** @typedef {import('../../types/admin-write-inputs.js').AdminFulfillmentBindingConfigSaveInput} AdminFulfillmentBindingConfigSaveInput */
|
/** @typedef {import('../../../types/admin-write-inputs.js').AdminFulfillmentBindingConfigSaveInput} AdminFulfillmentBindingConfigSaveInput */
|
||||||
/** @typedef {import('../../types/admin-write-inputs.js').AdminFulfillmentBindingLookupInput} AdminFulfillmentBindingLookupInput */
|
/** @typedef {import('../../../types/admin-write-inputs.js').AdminFulfillmentBindingLookupInput} AdminFulfillmentBindingLookupInput */
|
||||||
|
|
||||||
export async function getAdminAgisoShopConfigs() {
|
export async function getAdminAgisoShopConfigs() {
|
||||||
const configMap = getAgisoShopConfigMap()
|
const configMap = getAgisoShopConfigMap()
|
||||||
+4
-4
@@ -1,9 +1,9 @@
|
|||||||
// @ts-check
|
// @ts-check
|
||||||
|
|
||||||
import { createHttpError } from '../../utils/http.js'
|
import { createHttpError } from '../../../utils/http.js'
|
||||||
import { normalizeProductName } from '../order/product-match-service.js'
|
import { normalizeProductName } from '../../order/product-match-service.js'
|
||||||
import { isPlainObject } from './admin-platform-config-context.js'
|
import { isPlainObject } from './context.js'
|
||||||
import { resolveFulfillmentBindingMatchShopId } from './admin-platform-config-domain.js'
|
import { resolveFulfillmentBindingMatchShopId } from './domain.js'
|
||||||
|
|
||||||
export function assertAdminFulfillmentBindingsInput(bindings) {
|
export function assertAdminFulfillmentBindingsInput(bindings) {
|
||||||
if (Array.isArray(bindings)) {
|
if (Array.isArray(bindings)) {
|
||||||
+1
-1
@@ -5,7 +5,7 @@ import {
|
|||||||
assertAdminFulfillmentBindingsInput,
|
assertAdminFulfillmentBindingsInput,
|
||||||
buildAdminFulfillmentBindingUniqueKey,
|
buildAdminFulfillmentBindingUniqueKey,
|
||||||
normalizeAdminFulfillmentBindingItem,
|
normalizeAdminFulfillmentBindingItem,
|
||||||
} from './admin-platform-config-validation.js'
|
} from './validation.js'
|
||||||
|
|
||||||
test('assertAdminFulfillmentBindingsInput rejects non-array payloads', () => {
|
test('assertAdminFulfillmentBindingsInput rejects non-array payloads', () => {
|
||||||
assert.doesNotThrow(() => assertAdminFulfillmentBindingsInput([]))
|
assert.doesNotThrow(() => assertAdminFulfillmentBindingsInput([]))
|
||||||
Reference in New Issue
Block a user