Warehousing Provider Plugins
A warehousing adapter models stock availability and fulfilment timing. A store can have several; each warehousing provider invokes the adapter it is configured with.
| Factory | For |
|---|---|
registerPhysicalWarehousing | physical goods (stock / production / commissioning time) |
registerVirtualWarehousing | tokenized / NFT products (tokenize) |
Example: physical store stock
import { registerPhysicalWarehousing } from '@unchainedshop/core';
registerPhysicalWarehousing({
adapterId: 'flagship-store',
stock: async (referenceDate, configuration, context) => 99999,
productionTime: 0, // ms; made-to-order lead time
commissioningTime: 0, // ms to prepare for shipping
});
Each option accepts either a literal value or a (…args, configuration, context) => Promise<number> callback.
| Option | Description |
|---|---|
stock | available quantity at a reference date |
productionTime | ms to produce a quantity (made-to-order) |
commissioningTime | ms to prepare a quantity for shipping |
orderIndex | sorts adapter listings ascending (default 0); each provider still invokes a single adapter |
Example: tokenized products
import { registerVirtualWarehousing } from '@unchainedshop/core';
registerVirtualWarehousing({
adapterId: 'nft-minter',
tokenize: async (configuration, context) => {
// return the token surrogates to mint for the checked-out position
return [{
_id: crypto.randomUUID(),
quantity: 1,
contractAddress: '0x…',
tokenSerialNumber: '1',
meta: {},
}];
},
});
For full control of every
IWarehousingAdaptermethod, build the adapter directly and register it viapluginRegistry.register()— see Plugin System.
Related
- Plugin Factories — the warehousing factories
- Warehousing plugins — shipped adapters