'use strict'; const { createHash } = require('crypto'); function normalizeText(value, maxLength = 1000) { return String(value ?? '').trim().slice(0, maxLength); } function buildAlibaba1688SkuKey(sku, position) { const specs = (Array.isArray(sku?.specs) ? sku.specs : []) .map(item => `${normalizeText(item?.name, 120)}=${normalizeText(item?.value, 500)}`) .filter(value => value !== '=') .join('|'); return `${Number(sku?.index) || position + 1}:${specs || normalizeText(sku?.name, 500)}`; } function buildAlibaba1688SkuFingerprint(skus) { const keys = (Array.isArray(skus) ? skus : []) .map((sku, index) => buildAlibaba1688SkuKey(sku, index)); return createHash('sha256').update(JSON.stringify(keys), 'utf8').digest('hex'); } module.exports = { buildAlibaba1688SkuKey, buildAlibaba1688SkuFingerprint, };