1.0.5 • Published 5 years ago
@safs.io/match v1.0.5
match
usage
import { match, LeftEl, RightEl } from "@safs.io/match";
import { match } from "@safs.io/match/match";
import { LeftEl } from "@safs.io/match/left-element";
import { RightEl } from "@safs.io/match/right-element";publish
pnpm publish --tag next --access=public
API
constraints:
- Left elements
- MUST HAVE a unique id. (e.g. `new Left({ idKey: 'uuid'}))
- Right elements
- MUST HAVE a unique id. (e.g. `new Right({ idKey: 'uuid'}))
- MUST HAVE a capacity set.
                                after rank hook can be used to build up stats(reason for exclusion, reason for rank, etc...).      
  LEFT                            |
  Object -> Rankable(Object)      |         Rankable(Object) with rankedCounterparts -> Matchable(Object)      
                            \     |       /                                                              \     
                              -> Rank ->                                                                  -> Match -> Matches
                            /             \                                                              /     |   
  Object -> Rankable(Object)                Rankable(Object) with rankedCounterparts -> Matchable(Object)      |
  RIGHT                                                                                                        |  
                                                                                                         after match hook used to build up stats (score, ???)POST /match
REQUEST
  {
    "left": [
      { "id": 1, "attrs": { "color": "blue", "fruit": "banana" } },
      { "id": 2, "attrs": { "color": "red", "fruit": "peach" } },
    ],
    "right": [
      { "id": "a23db", "capacity": 1, "attrs": { "color": "blue", "fruit": "peach" } }
    ]
  }STATUS 201
RESPONSE
  {
    "meta": {
      "maxPossibleScore": 30,
      "totalMatches": 1,
      "totalUnmatched": {
        "left": 1,
        "right": 0
      }
    },
    "matched": [
      { "left": 1, "right": "a23db", "score": 20 },
    ],
    "unmatched": {
      "left": [{"id": 2}],
      "right": []
    }
  }