1const s=["compound","diluent","device","consumable","container","equipment","packaging","bundle","apparel","merch"];function t(e){return typeof e=="string"&&s.includes(e)}const i=["mg","mcg","g","ml","iu"],a=["each","count","pair","set"],u=["ml","l","oz"],l={compound:{type:"compound",label:"Research compound",hint:"Lyophilized or liquid compound in a vial. Carries a COA per lot.",vocabulary:{unit:"vial",unitPlural:"vials",pack:"kit",packPlural:"kits"},allowedUnits:i,defaultUnit:"mg",requiresCoa:!0,hasDosage:!0,hasNumericSize:!0,supportsReconstitution:!0,sellable:!0},diluent:{type:"diluent",label:"Diluent / solution",hint:"Bacteriostatic water, acetic acid, sterile saline.",vocabulary:{unit:"bottle",unitPlural:"bottles",pack:"case",packPlural:"cases"},allowedUnits:u,defaultUnit:"ml",requiresCoa:!1,hasDosage:!1,hasNumericSize:!0,supportsReconstitution:!0,sellable:!0},device:{type:"device",label:"Device",hint:"Injection pens, syringes, applicators. Sized by gauge or capacity.",vocabulary:{unit:"each",unitPlural:"each",pack:"pack",packPlural:"packs"},allowedUnits:a,defaultUnit:"each",requiresCoa:!1,hasDosage:!1,hasNumericSize:!1,supportsReconstitution:!1,sellable:!0},consumable:{type:"consumable",label:"Consumable",hint:"Single-use goods: alcohol wipes, needles, gauze.",vocabulary:{unit:"each",unitPlural:"each",pack:"box",packPlural:"boxes"},allowedUnits:a,defaultUnit:"each",requiresCoa:!1,hasDosage:!1,hasNumericSize:!1,supportsReconstitution:!1,sellable:!0},container:{type:"container",label:"Container / closure",hint:"Empty vials, cartridge vials, vial caps, bottles.",vocabulary:{unit:"each",unitPlural:"each",pack:"pack",packPlural:"packs"},allowedUnits:a,defaultUnit:"each",requiresCoa:!1,hasDosage:!1,hasNumericSize:!1,supportsReconstitution:!1,sellable:!0},equipment:{type:"equipment",label:"Equipment",hint:"Storage cases, racks, coolers. Durable, not consumed.",vocabulary:{unit:"each",unitPlural:"each",pack:"pack",packPlural:"packs"},allowedUnits:a,defaultUnit:"each",requiresCoa:!1,hasDosage:!1,hasNumericSize:!1,supportsReconstitution:!1,sellable:!0},packaging:{type:"packaging",label:"Packaging (internal)",hint:"Shipping boxes, labels, filler. Consumed by fulfillment, never sold.",vocabulary:{unit:"each",unitPlural:"each",pack:"case",packPlural:"cases"},allowedUnits:a,defaultUnit:"each",requiresCoa:!1,hasDosage:!1,hasNumericSize:!1,supportsReconstitution:!1,sellable:!1},bundle:{type:"bundle",label:"Bundle",hint:"A basket of other products sold as one SKU.",vocabulary:{unit:"bundle",unitPlural:"bundles",pack:"pack",packPlural:"packs"},allowedUnits:null,defaultUnit:"each",requiresCoa:!1,hasDosage:!1,hasNumericSize:!1,supportsReconstitution:!1,sellable:!0},apparel:{type:"apparel",label:"Apparel",hint:"Wearables: t-shirts, hoodies. Variants differ by color and size.",vocabulary:{unit:"shirt",unitPlural:"shirts",pack:"pack",packPlural:"packs"},allowedUnits:a,defaultUnit:"each",requiresCoa:!1,hasDosage:!1,hasNumericSize:!1,supportsReconstitution:!1,sellable:!0},merch:{type:"merch",label:"Merch",hint:"Flat merchandise: stickers, drinkware, decals, print.",vocabulary:{unit:"each",unitPlural:"each",pack:"pack",packPlural:"packs"},allowedUnits:a,defaultUnit:"each",requiresCoa:!1,hasDosage:!1,hasNumericSize:!1,supportsReconstitution:!1,sellable:!0}};function c(e){return t(e)?l[e]:l.compound}function r(e){return c(e).vocabulary}export{c as p,r as v};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.