统一前后端代码格式化配置

This commit is contained in:
yml2213
2026-08-16 17:27:12 +08:00
parent 8705f6a6a1
commit 5c7c3e14e3
278 changed files with 6386 additions and 5500 deletions
@@ -1,17 +1,11 @@
import type { JsonObject } from '../../types/json.js'
import {
listCloudtentaclesSources,
} from '../platforms/cloudtentacles/source-config-service.js'
import {
getCloudtentaclesSessionStateByKey,
} from '../platforms/cloudtentacles/session-state-service.js'
import { listCloudtentaclesSources } from '../platforms/cloudtentacles/source-config-service.js'
import { getCloudtentaclesSessionStateByKey } from '../platforms/cloudtentacles/session-state-service.js'
import {
normalizeCloudtentaclesDeviceId,
normalizeCloudtentaclesDeviceType,
} from '../platforms/cloudtentacles/defaults.js'
import {
listCloudtentaclesSku,
} from '../platforms/cloudtentacles/catalog-service.js'
import { listCloudtentaclesSku } from '../platforms/cloudtentacles/catalog-service.js'
import {
resolveCloudtentaclesOverrideRule,
type CloudtentaclesOverrideRule,
@@ -79,9 +73,11 @@ export async function resolveCloudtentaclesSkuByProductName(
}
const listSources = deps.listCloudtentaclesSources || listCloudtentaclesSources
const getSessionByKey = deps.getCloudtentaclesSessionStateByKey || getCloudtentaclesSessionStateByKey
const getSessionByKey =
deps.getCloudtentaclesSessionStateByKey || getCloudtentaclesSessionStateByKey
const listSku = deps.listCloudtentaclesSku || listCloudtentaclesSku
const resolveOverrideRule = deps.resolveCloudtentaclesOverrideRule || resolveCloudtentaclesOverrideRule
const resolveOverrideRule =
deps.resolveCloudtentaclesOverrideRule || resolveCloudtentaclesOverrideRule
const sourcesConfig = listSources()
if (sourcesConfig.enabled === false) {
@@ -89,8 +85,13 @@ export async function resolveCloudtentaclesSkuByProductName(
}
const sourceContexts = (Array.isArray(sourcesConfig.sources) ? sourcesConfig.sources : [])
.map((source: CloudtentaclesSource) => buildCloudtentaclesSourceContext(source, getSessionByKey))
.filter((context): context is NonNullable<ReturnType<typeof buildCloudtentaclesSourceContext>> => Boolean(context))
.map((source: CloudtentaclesSource) =>
buildCloudtentaclesSourceContext(source, getSessionByKey),
)
.filter(
(context): context is NonNullable<ReturnType<typeof buildCloudtentaclesSourceContext>> =>
Boolean(context),
)
if (sourceContexts.length === 0) {
return null
@@ -98,7 +99,13 @@ export async function resolveCloudtentaclesSkuByProductName(
const overrideRule = resolveOverrideRule(productName)
const overrideMatch = overrideRule
? await resolveOverrideMatch(productName, normalizedProductName, overrideRule, sourceContexts, listSku)
? await resolveOverrideMatch(
productName,
normalizedProductName,
overrideRule,
sourceContexts,
listSku,
)
: null
if (overrideMatch) {
return overrideMatch
@@ -215,7 +222,8 @@ async function resolveOverrideMatch(
}
const firstDeliveryItem = deliveryItems[0]
const firstSku = items.find((item) => Number(item.id || 0) === firstDeliveryItem.cloudSkuId) || {}
const firstSku =
items.find((item) => Number(item.id || 0) === firstDeliveryItem.cloudSkuId) || {}
const cloudSourceKeys = rule.sourceKey
? [context.sourceKey]
: sourceContexts.map((sourceContext) => sourceContext.sourceKey)
@@ -246,13 +254,17 @@ async function resolveOverrideMatch(
return null
}
function resolveOverrideDeliveryItems(rule: CloudtentaclesOverrideRule, skuItems: CloudtentaclesSku[]) {
function resolveOverrideDeliveryItems(
rule: CloudtentaclesOverrideRule,
skuItems: CloudtentaclesSku[],
) {
const resolvedItems: CloudtentaclesResolvedDeliveryItem[] = []
for (const ruleItem of rule.deliveryItems) {
const matchedSku = ruleItem.cloudSkuId > 0
? skuItems.find((item) => Number(item.id || 0) === ruleItem.cloudSkuId)
: findCloudtentaclesSkuByName(skuItems, ruleItem.cloudSkuName)
const matchedSku =
ruleItem.cloudSkuId > 0
? skuItems.find((item) => Number(item.id || 0) === ruleItem.cloudSkuId)
: findCloudtentaclesSkuByName(skuItems, ruleItem.cloudSkuName)
const cloudSkuId = Number(matchedSku?.id || 0)
const cloudSkuName = String(matchedSku?.name || '').trim()
@@ -1,9 +1,7 @@
import test from 'node:test'
import assert from 'node:assert/strict'
import {
normalizeCloudtentaclesOverrideRuleConfig,
} from './cloudtentacles-override-rule-service.js'
import { normalizeCloudtentaclesOverrideRuleConfig } from './cloudtentacles-override-rule-service.js'
test('normalizeCloudtentaclesOverrideRuleConfig merges duplicated delivery items', () => {
const config = normalizeCloudtentaclesOverrideRuleConfig({
@@ -3,10 +3,7 @@ import type { JsonObject } from '../../types/json.js'
import { APP_CONFIG_KEYS } from '../../config/app-config-keys.js'
import { PROJECT_ROOT } from '../../config/runtime.js'
import {
readAppConfigEntry,
saveAppConfigEntry,
} from '../config/app-config-store.js'
import { readAppConfigEntry, saveAppConfigEntry } from '../config/app-config-store.js'
import { normalizeCloudtentaclesMatchName } from './cloudtentacles-match-utils.js'
const CLOUDTENTACLES_OVERRIDE_RULE_FILE_PATH = path.join(
@@ -49,7 +46,9 @@ export function getCloudtentaclesOverrideRuleConfig(): CloudtentaclesOverrideRul
})
}
export function saveCloudtentaclesOverrideRuleConfig(rawValue: unknown): Promise<CloudtentaclesOverrideRuleConfig> {
export function saveCloudtentaclesOverrideRuleConfig(
rawValue: unknown,
): Promise<CloudtentaclesOverrideRuleConfig> {
return saveAppConfigEntry({
configKey: APP_CONFIG_KEYS.cloudtentaclesOverrideRules,
legacyFilePath: CLOUDTENTACLES_OVERRIDE_RULE_FILE_PATH,
@@ -69,14 +68,19 @@ export function resolveCloudtentaclesOverrideRule(productName: unknown) {
return null
}
return config.rules.find((rule) =>
rule.enabled !== false &&
rule.normalizedProductName === normalizedProductName &&
rule.deliveryItems.length > 0
) || null
return (
config.rules.find(
(rule) =>
rule.enabled !== false &&
rule.normalizedProductName === normalizedProductName &&
rule.deliveryItems.length > 0,
) || null
)
}
export function normalizeCloudtentaclesOverrideRuleConfig(rawValue: unknown): CloudtentaclesOverrideRuleConfig {
export function normalizeCloudtentaclesOverrideRuleConfig(
rawValue: unknown,
): CloudtentaclesOverrideRuleConfig {
const source = isPlainObject(rawValue) ? rawValue : {}
const rules = Array.isArray(source.rules) ? source.rules : []
@@ -142,7 +146,10 @@ function mergeDeliveryItems(items: CloudtentaclesOverrideDeliveryItem[]) {
const merged = new Map<string, CloudtentaclesOverrideDeliveryItem>()
for (const item of items) {
const key = item.cloudSkuId > 0 ? `id:${item.cloudSkuId}` : `name:${normalizeCloudtentaclesMatchName(item.cloudSkuName)}`
const key =
item.cloudSkuId > 0
? `id:${item.cloudSkuId}`
: `name:${normalizeCloudtentaclesMatchName(item.cloudSkuName)}`
const existing = merged.get(key)
if (existing) {
existing.quantity += item.quantity
@@ -13,7 +13,9 @@ type CreatedTaskInput = {
[key: string]: unknown
}
function stubOrder(patch: Partial<OrderRow> & Pick<OrderRow, 'id' | 'platform_order_id'>): OrderRow {
function stubOrder(
patch: Partial<OrderRow> & Pick<OrderRow, 'id' | 'platform_order_id'>,
): OrderRow {
return {
id: patch.id,
order_id: patch.id,
@@ -10,10 +10,7 @@ import { preparePaidFulfillmentTask } from '../fulfillment/executors/registry.js
import type { FulfillmentPrepareDeps } from '../fulfillment/executors/types.js'
import { nowIso } from '../../utils/time.js'
import { randomId } from '../../utils/random.js'
import {
TASK_STATUS,
resolveInitialPaidTaskStatus,
} from '../../domain/task-status.js'
import { TASK_STATUS, resolveInitialPaidTaskStatus } from '../../domain/task-status.js'
import type { OrderItemRow, OrderRow, TaskRow } from '../../types/repository/rows.js'
type ClaimTokenLike = {
@@ -152,10 +149,7 @@ export async function syncDeliveryTasksForOrderWithDeps(
return preparedTasks.filter(isTaskRow)
}
async function preparePaidTasks(
tasks: TaskRow[],
deps: FulfillmentPrepareDeps,
) {
async function preparePaidTasks(tasks: TaskRow[], deps: FulfillmentPrepareDeps) {
const preparedTasks = await Promise.all(
tasks.map((task) => preparePaidFulfillmentTask(task, deps)),
)
@@ -1,10 +1,7 @@
import test from 'node:test'
import assert from 'node:assert/strict'
import {
isOrderItemConfiguredForFulfillment,
mergeSourceOrderState,
} from './order-service.js'
import { isOrderItemConfiguredForFulfillment, mergeSourceOrderState } from './order-service.js'
import type { OrderItemRow } from '../../types/repository/rows.js'
function buildOrderItem(snapshot: OrderItemRow['item_snapshot_json']): OrderItemRow {
@@ -20,17 +17,11 @@ function buildOrderItem(snapshot: OrderItemRow['item_snapshot_json']): OrderItem
}
test('isOrderItemConfiguredForFulfillment accepts PostgreSQL JSONB object results', () => {
assert.equal(
isOrderItemConfiguredForFulfillment(buildOrderItem({ isConfigured: true })),
true,
)
assert.equal(isOrderItemConfiguredForFulfillment(buildOrderItem({ isConfigured: true })), true)
})
test('isOrderItemConfiguredForFulfillment accepts serialized snapshots', () => {
assert.equal(
isOrderItemConfiguredForFulfillment(buildOrderItem('{"isConfigured":true}')),
true,
)
assert.equal(isOrderItemConfiguredForFulfillment(buildOrderItem('{"isConfigured":true}')), true)
})
test('isOrderItemConfiguredForFulfillment rejects unconfigured or malformed snapshots', () => {
@@ -297,7 +297,7 @@ function parseOrderItemSnapshot(value: unknown): Record<string, unknown> | null
try {
const parsed = JSON.parse(String(value || '{}'))
return parsed && typeof parsed === 'object' && !Array.isArray(parsed)
? parsed as Record<string, unknown>
? (parsed as Record<string, unknown>)
: null
} catch {
return null