@mailwoman/corpus 7.4.0 → 7.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"locale.js","sourceRoot":"","sources":["../../../src/shard-recipes/locale.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"locale.js","sourceRoot":"","sources":["../../../src/shard-recipes/locale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAmD,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC9G,OAAO,EAAE,cAAc,EAAoB,MAAM,eAAe,CAAA;AAkDhE;;;;;;;GAOG;AACH,MAAM,eAAe,GAAwC;IAC5D,EAAE,EAAE;QACH,MAAM,EAAE,cAAc;QACtB,aAAa,EAAE,OAAO;QACtB,KAAK,EAAE;YACN,EAAE,GAAG,EAAE,8BAA8B,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE;YAC/E,EAAE,GAAG,EAAE,qCAAqC,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,SAAS,EAAE;SAC7F;KACD;IACD,EAAE,EAAE;QACH,MAAM,EAAE,UAAU;QAClB,aAAa,EAAE,OAAO;QACtB,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,mCAAmC,EAAE,GAAG,EAAE,oBAAoB,EAAE,CAAC;KAChF;IACD,EAAE,EAAE;QACH,MAAM,EAAE,UAAU;QAClB,aAAa,EAAE,OAAO;QACtB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,CAAC,EAAE,CAAC;KACtF;IACD,EAAE,EAAE;QACH,MAAM,EAAE,UAAU;QAClB,aAAa,EAAE,OAAO;QACtB,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,UAAU,EAAE,qBAAqB,CAAC,EAAE,GAAG,EAAE,oBAAoB,EAAE,CAAC;KAC5F;IACD,EAAE,EAAE;QACH,MAAM,EAAE,UAAU;QAClB,aAAa,EAAE,OAAO;QACtB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,CAAC,EAAE,CAAC;QACtF,yGAAyG;QACzG,2GAA2G;QAC3G,wGAAwG;QACxG,yEAAyE;QACzE,YAAY,EAAE;YACb;gBACC,GAAG,EAAE,YAAY,CAAC,UAAU,EAAE,qBAAqB,CAAC;gBACpD,GAAG,EAAE,kBAAkB;gBACvB,OAAO,EAAE,IAAI;gBACb,kBAAkB,EAAE,IAAI;aACxB;SACD;KACD;IACD,EAAE,EAAE;QACH,mGAAmG;QACnG,wGAAwG;QACxG,MAAM,EAAE,UAAU;QAClB,aAAa,EAAE,OAAO;QACtB,6GAA6G;QAC7G,4GAA4G;QAC5G,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;KAChH;IACD,EAAE,EAAE;QACH,wGAAwG;QACxG,yGAAyG;QACzG,wGAAwG;QACxG,yGAAyG;QACzG,wCAAwC;QACxC,MAAM,EAAE,UAAU;QAClB,aAAa,EAAE,OAAO;QACtB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,eAAe,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;KAC/F;CACD,CAAA;AAED;;;;GAIG;AACH,MAAM,aAAa,GAAG,SAAS,CAAA;AAE/B;;;;GAIG;AACH,MAAM,sBAAsB,GAAG,GAAG,CAAA;AAElC;;;;GAIG;AACH,MAAM,0BAA0B,GAAG,GAAG,CAAA;AAEtC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IAC1C,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAErC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAElE,OAAO,QAAQ,IAAI,IAAI,CAAA;AACxB,CAAC;AAgBD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAgB,EAAE,GAAiB;IACnE,IAAI,KAA4B,CAAA;IAEhC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,8FAA8F;QAC9F,qEAAqE;QACrE,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC;SAAM,CAAC;QACP,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,GAAI,EAAE,IAAI,CAAC,GAAI,CAAC,CAAC,CAAA;QAC1D,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,OAAO,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;QACtE,CAAC,CAAC,CAAA;QACF,KAAK,GAAG,KAAK,CAAC,MAAO,CAAA;IACtB,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,KAAe,EAAE,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAC/G,MAAM,SAAS,GAAsB,EAAE,CAAA;IACvC,IAAI,IAAI,GAAuB,IAAI,CAAA;IACnC,IAAI,MAAM,GAAoB,IAAI,CAAA;IAClC,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,OAAO,GAAG,CAAC,CAAA;IAEf,IAAI,CAAC;QACJ,gGAAgG;QAChG,iGAAiG;QACjG,mGAAmG;QACnG,sGAAsG;QACtG,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,cAAc,CAAC,SAAS,CAAW,KAAK,EAAE;YACnE,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,KAAK;YACb,mBAAmB,EAAE,IAAI;SACzB,CAAC,EAAE,CAAC;YACJ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACrB,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;gBACjD,MAAM,EAAE,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,MAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBAC1D,sGAAsG;gBACtG,oGAAoG;gBACpG,kCAAkC;gBAClC,IAAI,GAAG,IAAI,CAAC,OAAO;oBAClB,CAAC,CAAC;wBACA,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC;wBACjB,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC;wBACxB,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC;wBACzB,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC;wBACrB,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC;wBACzB,MAAM,EAAE,EAAE,CAAC,oBAAoB,CAAC;wBAChC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC;qBACtB;oBACF,CAAC,CAAC;wBACA,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC;wBACjB,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC;wBACpB,QAAQ,EAAE,CAAC,CAAC;wBACZ,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC;wBAChB,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC;wBACxB,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC;wBACpB,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC;qBACpB,CAAA;gBAEH,SAAQ;YACT,CAAC;YAED,IAAI,IAAI,KAAK,IAAI;gBAAE,SAAQ;YAC3B,gGAAgG;YAChG,qGAAqG;YACrG,kGAAkG;YAClG,iFAAiF;YACjF,MAAM,MAAM,GACX,IAAI,CAAC,QAAQ,IAAI,CAAC;gBACjB,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBAChF,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;YAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;YAErC,IAAI,CAAC,MAAM;gBAAE,SAAQ;YAErB,qGAAqG;YACrG,2FAA2F;YAC3F,qGAAqG;YACrG,sGAAsG;YACtG,qGAAqG;YACrG,sGAAsG;YACtG,2EAA2E;YAC3E,yCAAyC;YACzC,IAAI,QAAuB,CAAA;YAC3B,IAAI,kBAAsC,CAAA;YAE1C,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC7B,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAE7C,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW;oBAAE,SAAQ;gBAEtC,MAAM,eAAe,GAAG,cAAc,CAAC,WAAW,CAAC,CAAA;gBAEnD,IAAI,eAAe,EAAE,CAAC;oBACrB,QAAQ,GAAG,eAAe,CAAA;oBAC1B,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;oBAC3C,4FAA4F;oBAC5F,6FAA6F;oBAC7F,uFAAuF;oBACvF,2FAA2F;oBAC3F,4FAA4F;oBAC5F,2FAA2F;oBAC3F,8DAA8D;oBAC9D,kBAAkB;wBACjB,WAAW,IAAI,WAAW,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC;4BAC3F,CAAC,CAAC,WAAW;4BACb,CAAC,CAAC,SAAS,CAAA;gBACd,CAAC;qBAAM,CAAC;oBACP,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;gBACnC,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,OAAO;oBAAE,SAAQ;gBACtB,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;YACnC,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACf,OAAO,EAAE,CAAA;gBAET,SAAQ;YACT,CAAC;YACD,MAAM,KAAK,GAAoB;gBAC9B,YAAY,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;gBAClC,MAAM;gBACN,QAAQ;gBACR,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE;gBACpD,QAAQ,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;gBAC/B,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACrD,CAAA;YACD,IAAI,EAAE,CAAA;YAEN,IAAI,SAAS,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;gBACtC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACtB,CAAC;iBAAM,CAAC;gBACP,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;gBAElC,cAAc;gBACd,IAAI,CAAC,GAAG,aAAa,EAAE,CAAC;oBACvB,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;gBACrB,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,2BAA2B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;QAE5F,OAAO,EAAE,CAAA;IACV,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,MAAM,eAAe,IAAI,UAAU,OAAO,oBAAoB,CAAC,CAAA;IAEtH,OAAO,SAAS,CAAA;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CACjC,KAA2B,EAC3B,OAAe,EACf,eAAuB,EACvB,MAAoB;IAEpB,IAAI,eAAe,GAAG,CAAC,IAAI,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,qBAAqB,CAAC,OAA6C,CAAC,CAAA;QAElF,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YACpB,2FAA2F;YAC3F,+FAA+F;YAC/F,MAAM,IAAI,KAAK,CACd,sCAAsC,OAAO,uEAAuE,CACpH,CAAA;QACF,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAE,CAAA;QACxD,KAAK,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE,CAAA;QACnC,KAAK,CAAC,UAAU,GAAG,EAAE,GAAG,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC1D,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAAC,IAAgB,EAAE,QAA6B;IAC9F,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAA;AACjF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,aAAkC,EAAE,QAA6B;IACnG,OAAO,QAAQ,KAAK,IAAI,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAA;AAC1G,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAgB;IACxC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,wGAAwG;IACrH,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE;QACR,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,mDAAmD,EAAE;QAC5F,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,oDAAoD,EAAE;QAClG;YACC,IAAI,EAAE,wBAAwB;YAC9B,WAAW,EACV,uLAAuL;SACxL;QACD;YACC,IAAI,EAAE,oDAAoD;YAC1D,WAAW,EACV,qUAAqU;SACtU;KACD;IACD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK;QACpB,kGAAkG;QAClG,0FAA0F;QAC1F,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;QACpD,MAAM,aAAa,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;QAE9C,IAAI,CAAC,aAAa,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACd,0CAA0C,OAAO,YAAY,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACvG,CAAA;QACF,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,GAAG,CAAA;QAE7C,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,0CAA0C,YAAY,EAAE,CAAC,CAAA;QAC1E,CAAC;QACD,kGAAkG;QAClG,qGAAqG;QACrG,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,CAAC,CAAA;QAEjD,IAAI,CAAC,CAAC,eAAe,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,6CAA6C,eAAe,EAAE,CAAC,CAAA;QAChF,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,IAAI,aAAa,CAAC,MAAM,CAAA;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAA;QAChC,uGAAuG;QACvG,2GAA2G;QAC3G,0GAA0G;QAC1G,2FAA2F;QAC3F,MAAM,0BAA0B,GAAG,IAAI,CAAC,kBAAkB,CAAA;QAC1D,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,EAAE,0BAA0B,CAAC,CAAA;QAE3E,MAAM,IAAI,GAAsB,EAAE,CAAA;QAElC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YAC1C,kGAAkG;YAClG,yDAAyD;YACzD,MAAM,YAAY,GAAG,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;YAChF,MAAM,aAAa,GAAG,+BAA+B,CAAC,KAAK,CAAC,EAAE,CAAE,EAAE,0BAA0B,CAAC,CAAA;YAC7F,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;YAEvD,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACb,CAAC,CAAC,kEAAkE;QACrE,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,MAAM,OAAO,yEAAyE,CAAC,CAAA;QACxG,CAAC;QAED,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAA;QAErB,OAAO,OAAO,GAAG,KAAK,IAAI,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAE,CAAA;YAC5C,MAAM,KAAK,GAAG,MAAM,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAA;YAClE,6FAA6F;YAC7F,6DAA6D;YAC7D,MAAM,eAAe,GACpB,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,sBAAsB,CAAC,CAAC,CAAE,OAAiB,CAAC,CAAC,CAAE,UAAoB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YAChH,MAAM,aAAa,GAClB,OAAO,KAAK,IAAI;gBACf,CAAC,CAAC,MAAM,EAAE,GAAG,0BAA0B;oBACtC,CAAC,CAAE,WAAqB;oBACxB,CAAC,CAAE,cAAwB;gBAC5B,CAAC,CAAC,SAAS,CAAA;YACb,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,CAAA;YAEnG,IAAI,CAAC,KAAK,EAAE,CAAC;gBACZ,OAAO,EAAE,CAAA;gBACT,SAAQ;YACT,CAAC;YACD,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,CAAA;YAE3D,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,8FAA8F;gBAC9F,gGAAgG;gBAChG,MAAM,eAAe,GAAG;oBACvB,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,OAAO;oBACP,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,MAAM;oBACN,SAAS,EAAE,oBAAoB;iBAC/B,CAAA;gBACD,MAAM,aAAa,GAAG,QAAQ,CAAC,eAAiD,CAAC,CAAA;gBAEjF,IAAI,aAAa,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;oBAC5D,OAAO,EAAE,CAAA;oBACT,SAAQ;gBACT,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,CAAA;gBAC9F,OAAO,EAAE,CAAA;gBACT,SAAQ;YACT,CAAC;YACD,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE;gBACvC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM;gBAC/B,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,YAAY;gBAC3C,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ;gBACnC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ;aACnC,CAAC,CAAA;YACF,MAAM,SAAS,GAAG;gBACjB,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,OAAO;gBACP,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,MAAM;gBACN,SAAS,EAAE,QAAQ;gBACnB,cAAc,EAAE,aAAa,CAAC,aAAa;gBAC3C,OAAO,EAAE,iBAAiB,OAAO,qBAAqB,KAAK,6BAA6B;aACxF,CAAA;YACD,MAAM,OAAO,GAAG,QAAQ,CAAC,SAA2C,CAAC,CAAA;YAErE,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChD,OAAO,EAAE,CAAA;gBACT,SAAQ;YACT,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAA;YAC/G,OAAO,EAAE,CAAA;QACV,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;IAC5B,CAAC;CACD,CAAA"}
@@ -69,9 +69,21 @@ export interface ShardRecipeOpts {
69
69
  edgesDir?: string;
70
70
  country?: string;
71
71
  intlFraction?: number;
72
+ /** `locale`: fraction of rows that append an explicit country surface form + a `country` component. Default 0. */
73
+ countryFraction?: number;
74
+ /**
75
+ * `locale`: tri-state override of the per-part `districtAsLocality` mapping for this invocation. `undefined` (flag
76
+ * absent) leaves each `COUNTRY_SOURCES` part's own value untouched — every existing locale build stays
77
+ * byte-identical. `true`/`false` forces that value on every part read this run. ES's pedanía shard
78
+ * (`synth-es-pedania`) additionally uses `true` to select {@link LocaleCountrySource.pedaniaParts} instead of the
79
+ * default `parts` — see `locale.ts`.
80
+ */
81
+ districtAsLocality?: boolean;
72
82
  bareProb?: number;
73
83
  hnProb?: number;
74
84
  communes?: string;
85
+ /** `fr-lieudit`: BAN `adresses-<dept>.csv` directory. Default `$MAILWOMAN_DATA_ROOT/corpus/sources/ban`. */
86
+ banDir?: string;
75
87
  multilocaleCount?: number;
76
88
  /**
77
89
  * `fr-fragment` / `no-fragment` / `no-street-led`: the eval board's reserved street-surface list. REQUIRED for those
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../src/shard-recipes/scaffold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../src/shard-recipes/scaffold.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export interface PPDExtractStats {
2
+ kept: number;
3
+ skippedSAON: number;
4
+ skippedPAON: number;
5
+ skippedNoStreet: number;
6
+ skippedNoPostcode: number;
7
+ }
8
+ /**
9
+ * Convert PPD rows (`id,price,date,postcode,type,new,tenure,PAON,SAON,street,locality,town,district,county,cat,status`
10
+ * — headerless) into OA-shaped tuple lines via `write`, applying the skip rules + title-casing. Accepts a plain array
11
+ * of rows (tests) or a streamed async source (the real 31M-row extraction).
12
+ */
13
+ export declare function extractPPDTuples(input: AsyncIterable<string[]> | Iterable<string[]>, write: (line: string) => void): Promise<PPDExtractStats>;
14
+ /** Stream `inputPath` (PPD CSV) → `outputPath` (OA-shaped tuples CSV), returning the row-count stats. */
15
+ export declare function runPPDExtract(inputPath: string, outputPath: string): Promise<PPDExtractStats>;
16
+ //# sourceMappingURL=ppd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ppd.d.ts","sourceRoot":"","sources":["../../../../src/tools/fetch/ppd.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;CACzB;AAID;;;;GAIG;AACH,wBAAsB,gBAAgB,CACrC,KAAK,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EACnD,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC3B,OAAO,CAAC,eAAe,CAAC,CA4C1B;AAED,yGAAyG;AACzG,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAcnG"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ *
6
+ * HM Land Registry Price Paid Data → OA-shaped GB tuples CSV for the `locale` shard recipe.
7
+ *
8
+ * PPD is E&W-only, ALL-CAPS, and column-structured (no header row). We emit the exact OA header
9
+ * `readTuples` (`shard-recipes/locale.ts`) indexes by name, mapped for `districtAsLocality: true`:
10
+ * CITY = PPD locality (dependent locality; blank when it merely repeats the town — 1995-era rows
11
+ * pad locality=town), DISTRICT = PPD post town, REGION = county. SAON (flat/unit) rows and
12
+ * building-name PAONs are skipped in v1 and counted — `LocaleBaseTuple` has no unit field yet.
13
+ *
14
+ * Snapshot provenance: `$MAILWOMAN_DATA_ROOT/ppd/<date>/pp-complete.csv` (md5 sibling).
15
+ * License: OGL v3 (attribution: HM Land Registry).
16
+ */
17
+ import { createReadStream, createWriteStream } from "node:fs";
18
+ import { parseArgs } from "node:util";
19
+ import { runIfScript } from "@mailwoman/core/scripting";
20
+ import { dataRootPath } from "@mailwoman/core/utils";
21
+ import { CSVSpliterator } from "spliterator";
22
+ import { titleCaseGB } from "../gb-title-case.js";
23
+ const HOUSE_NUMBER_PATTERN = /^\d+[A-Za-z]?(\s*-\s*\d+[A-Za-z]?)?$/;
24
+ const quote = (value) => (value ? `"${value.replaceAll('"', '""')}"` : "");
25
+ /**
26
+ * Convert PPD rows (`id,price,date,postcode,type,new,tenure,PAON,SAON,street,locality,town,district,county,cat,status`
27
+ * — headerless) into OA-shaped tuple lines via `write`, applying the skip rules + title-casing. Accepts a plain array
28
+ * of rows (tests) or a streamed async source (the real 31M-row extraction).
29
+ */
30
+ export async function extractPPDTuples(input, write) {
31
+ const stats = { kept: 0, skippedSAON: 0, skippedPAON: 0, skippedNoStreet: 0, skippedNoPostcode: 0 };
32
+ write("NUMBER,STREET,CITY,DISTRICT,REGION,POSTCODE");
33
+ for await (const cells of input) {
34
+ const [, , , postcode, , , , paon, saon, street, locality, town, , county] = cells;
35
+ if (saon) {
36
+ stats.skippedSAON++;
37
+ continue;
38
+ }
39
+ if (!paon || !HOUSE_NUMBER_PATTERN.test(paon)) {
40
+ stats.skippedPAON++;
41
+ continue;
42
+ }
43
+ if (!street) {
44
+ stats.skippedNoStreet++;
45
+ continue;
46
+ }
47
+ if (!postcode) {
48
+ stats.skippedNoPostcode++;
49
+ continue;
50
+ }
51
+ const number = paon.replace(/\s*-\s*/, "-");
52
+ const city = locality && locality !== town ? titleCaseGB(locality) : "";
53
+ write([
54
+ number,
55
+ quote(titleCaseGB(street)),
56
+ quote(city),
57
+ quote(titleCaseGB(town ?? "")),
58
+ quote(titleCaseGB(county ?? "")),
59
+ postcode,
60
+ ].join(","));
61
+ stats.kept++;
62
+ }
63
+ return stats;
64
+ }
65
+ /** Stream `inputPath` (PPD CSV) → `outputPath` (OA-shaped tuples CSV), returning the row-count stats. */
66
+ export async function runPPDExtract(inputPath, outputPath) {
67
+ // No `encoding` — CSVSpliterator delimits raw bytes and decodes utf-8 itself (see readTuples in
68
+ // shard-recipes/locale.ts). `header: false` yields every row as data — PPD ships no header row.
69
+ const rows = CSVSpliterator.fromAsync(createReadStream(inputPath), {
70
+ mode: "array",
71
+ header: false,
72
+ enableQuoteHandling: true,
73
+ });
74
+ const out = createWriteStream(outputPath, { encoding: "utf8" });
75
+ const stats = await extractPPDTuples(rows, (line) => out.write(line + "\n"));
76
+ await new Promise((res) => out.end(res));
77
+ return stats;
78
+ }
79
+ runIfScript(import.meta, async () => {
80
+ const { values } = parseArgs({
81
+ options: {
82
+ input: { type: "string", default: dataRootPath("ppd", "2026-07-22", "pp-complete.csv") },
83
+ output: { type: "string", default: dataRootPath("ppd", "2026-07-22", "gb-tuples.csv") },
84
+ },
85
+ });
86
+ const stats = await runPPDExtract(values.input, values.output);
87
+ console.log(`[ppd] ${JSON.stringify(stats)}`);
88
+ });
89
+ //# sourceMappingURL=ppd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ppd.js","sourceRoot":"","sources":["../../../../src/tools/fetch/ppd.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function titleCaseGB(value: string): string;
2
+ //# sourceMappingURL=gb-title-case.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gb-title-case.d.ts","sourceRoot":"","sources":["../../../src/tools/gb-title-case.ts"],"names":[],"mappings":"AAkDA,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiBjD"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Title-case an ALL-CAPS GB place/street string (#690 — all-caps is OOD for the model). PPD ships every field
3
+ * upper-case; the model trains on natural casing. Particles (upon, super, next, …) stay lowercase mid-name, both
4
+ * between words and between hyphen segments. Each apostrophe-separated segment is capitalized on its own (D'Arcy,
5
+ * James'), except a bare trailing possessive 's, which stays lowercase (BISHOP'S → Bishop's).
6
+ */
7
+ const GB_PARTICLES = new Set([
8
+ "upon",
9
+ "on",
10
+ "under",
11
+ "in",
12
+ "by",
13
+ "the",
14
+ "le",
15
+ "la",
16
+ "de",
17
+ "cum",
18
+ "next",
19
+ "with",
20
+ "over",
21
+ "at",
22
+ "super",
23
+ "sub",
24
+ "and",
25
+ "of",
26
+ "y",
27
+ "en",
28
+ ]);
29
+ function caseWord(word, isFirst) {
30
+ if (!word)
31
+ return word;
32
+ const lower = word.toLowerCase();
33
+ if (!isFirst && GB_PARTICLES.has(lower))
34
+ return lower;
35
+ // Capitalize the first letter of each apostrophe-separated segment, except possessive 's.
36
+ return lower
37
+ .split("'")
38
+ .map((segment, idx) => {
39
+ if (!segment)
40
+ return segment;
41
+ // Don't capitalize a trailing bare possessive 's
42
+ if (idx > 0 && segment === "s")
43
+ return segment;
44
+ // Capitalize the first letter of this segment
45
+ return segment[0].toUpperCase() + segment.slice(1);
46
+ })
47
+ .join("'");
48
+ }
49
+ export function titleCaseGB(value) {
50
+ value = value.trim();
51
+ let wordIndex = 0;
52
+ return value
53
+ .split(/\s+/)
54
+ .map((token) => {
55
+ const cased = token
56
+ .split("-")
57
+ .map((seg, segIndex) => caseWord(seg, wordIndex === 0 && segIndex === 0))
58
+ .join("-");
59
+ wordIndex += 1;
60
+ return cased;
61
+ })
62
+ .join(" ")
63
+ .trim();
64
+ }
65
+ //# sourceMappingURL=gb-title-case.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gb-title-case.js","sourceRoot":"","sources":["../../../src/tools/gb-title-case.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC5B,MAAM;IACN,IAAI;IACJ,OAAO;IACP,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,IAAI;IACJ,OAAO;IACP,KAAK;IACL,KAAK;IACL,IAAI;IACJ,GAAG;IACH,IAAI;CACJ,CAAC,CAAA;AAEF,SAAS,QAAQ,CAAC,IAAY,EAAE,OAAgB;IAC/C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IACtB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IAEhC,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAErD,0FAA0F;IAC1F,OAAO,KAAK;SACV,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;QACrB,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAA;QAE5B,iDAAiD;QACjD,IAAI,GAAG,GAAG,CAAC,IAAI,OAAO,KAAK,GAAG;YAAE,OAAO,OAAO,CAAA;QAE9C,8CAA8C;QAC9C,OAAO,OAAO,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACpD,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACxC,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IACpB,IAAI,SAAS,GAAG,CAAC,CAAA;IAEjB,OAAO,KAAK;SACV,KAAK,CAAC,KAAK,CAAC;SACZ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACd,MAAM,KAAK,GAAG,KAAK;aACjB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC,CAAC;aACxE,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,SAAS,IAAI,CAAC,CAAA;QAEd,OAAO,KAAK,CAAA;IACb,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC;SACT,IAAI,EAAE,CAAA;AACT,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mailwoman/corpus",
3
- "version": "7.4.0",
3
+ "version": "7.6.0",
4
4
  "description": "Mailwoman corpus pipeline: BIO-labeled dataset builder for the neural classifier.",
5
5
  "license": "AGPL-3.0-only OR LicenseRef-Commercial",
6
6
  "repository": {
@@ -90,9 +90,10 @@
90
90
  },
91
91
  "dependencies": {
92
92
  "@dsnp/parquetjs": "1.8.8",
93
- "@mailwoman/codex": "7.4.0",
94
- "@mailwoman/core": "7.4.0",
95
- "@mailwoman/formatter": "7.4.0",
93
+ "@mailwoman/ban": "7.6.0",
94
+ "@mailwoman/codex": "7.6.0",
95
+ "@mailwoman/core": "7.6.0",
96
+ "@mailwoman/formatter": "7.6.0",
96
97
  "csv-parse": "^7.0.1",
97
98
  "fast-glob": "^3.3.3",
98
99
  "fastest-levenshtein": "^1.0.16",
@@ -0,0 +1,274 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ *
6
+ * `fr-lieudit` shard recipe — FR lieu-dit (hamlet/place) `dependent_locality` coverage
7
+ * (`.superpowers/sdd/deploc-world-survey.md`, FR section, 2026-07-22). Streams every BAN
8
+ * `adresses-<dept>.csv` dump under `--ban-dir` through `@mailwoman/ban/sdk`'s
9
+ * `extractBANAddrPoints`, which now surfaces a cleaned `lieuDit` per record (junk/dup filtering
10
+ * lives in `ban/sdk/extract.ts`'s `cleanLieuDit`, not duplicated here). Only rows carrying a clean
11
+ * lieu-dit survive into the pool; the existing `ban`/`synth-fr` sources and their emitted rows are
12
+ * untouched — this recipe reads the SAME raw CSVs but emits under its own source name.
13
+ *
14
+ * Mapping: lieu-dit → `dependent_locality`, commune → `locality`. Rendered to match the formatter's
15
+ * FR `place`-slot convention (`fix(formatter): render dependent_locality for neither-slot templates`,
16
+ * b1edc1b7, verified via a `formatAddress` smoke call): house+street on line 1, the lieu-dit ALONE on
17
+ * line 2, postcode+commune on line 3 — French postal convention (La Poste's line 5).
18
+ *
19
+ * ~1.69M clean rows survive the filter nationally (26M total BAN rows, 1.81M raw `nom_ld` fills, ~6.6%
20
+ * junk/dup). The pool is read in full (small string tuples only — no coordinates needed) and
21
+ * Fisher-Yates shuffled with the seeded PRNG before slicing to `--count`, rather than sampled WITH
22
+ * replacement — at a `--count` a sizeable fraction of the pool, with-replacement draws would produce a
23
+ * large duplicate rate (birthday-paradox math: ~190k expected collisions at count=800k over a 1.69M
24
+ * pool).
25
+ */
26
+
27
+ import { readdirSync } from "node:fs"
28
+ import { join } from "node:path"
29
+
30
+ import { extractBANAddrPoints } from "@mailwoman/ban/sdk"
31
+ import { COUNTRY_SURFACE_FORMS } from "@mailwoman/codex/country"
32
+ import type { ComponentTag } from "@mailwoman/core/types"
33
+ import { dataRootPath } from "@mailwoman/core/utils"
34
+
35
+ import { stableSourceID } from "../adapter.ts"
36
+ import { decomposeFrStreet } from "../adapters/ban/street-decompose.ts"
37
+ import { alignRow } from "../align.ts"
38
+ import type { CanonicalRow } from "../types.ts"
39
+ import { makeMulberry32, type ShardRecipe } from "./scaffold.ts"
40
+
41
+ const DEFAULT_LICENSE = "Licence Ouverte 2.0" // matches the `ban` adapter's Tier-B election for BAN data
42
+
43
+ /** One BAN row surviving the lieu-dit filter — the minimal tuple the pool holds. */
44
+ interface LieuDitTuple {
45
+ numero: string
46
+ rep: string | null
47
+ street: string
48
+ postcode: string | null
49
+ locality: string
50
+ dependentLocality: string
51
+ }
52
+
53
+ /**
54
+ * Enumerate `adresses-<dept>.csv[.gz]` files in `banDir`, ONE path per département. Excludes the `merged`/`france`
55
+ * aggregates (they duplicate the per-département rows) and, when both a `.csv` and a `.csv.gz` exist for the same dept
56
+ * (observed on disk for 13/2A/48/69/75 — a stale re-fetch artifact), prefers the uncompressed `.csv` — mirrors
57
+ * `ban/scripts/build-address-point-shard.ts`'s `departementFiles`, which hit and fixed this exact double-count trap
58
+ * first.
59
+ */
60
+ function departementFiles(banDir: string): string[] {
61
+ const byDept = new Map<string, string>()
62
+
63
+ for (const name of readdirSync(banDir).sort()) {
64
+ const m = /^adresses-(.+?)\.csv(\.gz)?$/.exec(name)
65
+
66
+ if (!m) continue
67
+
68
+ const dept = m[1]!
69
+
70
+ if (dept === "merged" || dept === "france") continue
71
+
72
+ const existing = byDept.get(dept)
73
+
74
+ if (!existing || (existing.endsWith(".gz") && !name.endsWith(".gz"))) {
75
+ byDept.set(dept, join(banDir, name))
76
+ }
77
+ }
78
+
79
+ return [...byDept.keys()].sort().map((dept) => byDept.get(dept)!)
80
+ }
81
+
82
+ /** Stream every département file, keeping only rows with a clean `lieuDit` (junk/dup filtering lives in `ban/sdk`). */
83
+ async function readLieuDitPool(banDir: string): Promise<LieuDitTuple[]> {
84
+ const files = departementFiles(banDir)
85
+
86
+ if (files.length === 0) {
87
+ throw new Error(
88
+ `No BAN adresses-<dept>.csv files found in ${banDir} — fetch BAN first (\`mailwoman corpus fetch ban\`).`
89
+ )
90
+ }
91
+
92
+ const pool: LieuDitTuple[] = []
93
+ let scanned = 0
94
+
95
+ for (const path of files) {
96
+ let deptCount = 0
97
+
98
+ for await (const rec of extractBANAddrPoints(path)) {
99
+ scanned++
100
+
101
+ if (!rec.lieuDit || !rec.city) continue
102
+
103
+ pool.push({
104
+ numero: rec.numero,
105
+ rep: rec.rep,
106
+ street: rec.street,
107
+ postcode: rec.postcode,
108
+ locality: rec.city,
109
+ dependentLocality: rec.lieuDit,
110
+ })
111
+ deptCount++
112
+ }
113
+ console.error(` ${path}: ${deptCount.toLocaleString()} clean lieu-dit rows`)
114
+ }
115
+ console.error(
116
+ ` scanned ${scanned.toLocaleString()} BAN rows across ${files.length} départements → pool=${pool.length.toLocaleString()}`
117
+ )
118
+
119
+ return pool
120
+ }
121
+
122
+ /** `house_number` = `numero` + folded `rep` ("10 bis"), matching the `ban` adapter's own composition. */
123
+ function composeHouseNumber(numero: string, rep: string | null): string {
124
+ return rep ? `${numero} ${rep}` : numero
125
+ }
126
+
127
+ /**
128
+ * Render the raw address string: house+street line, the lieu-dit ALONE on its own line, postcode+commune line — the
129
+ * exact shape `formatAddress` produces for FR's `place`-slot mapping (verified via a smoke call before this recipe was
130
+ * written; see the module docstring).
131
+ */
132
+ function composeRaw(
133
+ house: string,
134
+ street: string,
135
+ dependentLocality: string,
136
+ postcode: string | null,
137
+ locality: string
138
+ ): string {
139
+ const lines: string[] = []
140
+ const streetLine = `${house} ${street}`.trim()
141
+
142
+ if (streetLine) {
143
+ lines.push(streetLine)
144
+ }
145
+ lines.push(dependentLocality)
146
+ const cityLine = [postcode, locality].filter(Boolean).join(" ").trim()
147
+
148
+ if (cityLine) {
149
+ lines.push(cityLine)
150
+ }
151
+
152
+ return lines.join("\n")
153
+ }
154
+
155
+ /** Fisher-Yates shuffle, in place, with the recipe's seeded PRNG — reproducible sampling without replacement. */
156
+ function shuffleInPlace<T>(arr: T[], random: () => number): void {
157
+ for (let i = arr.length - 1; i > 0; i--) {
158
+ const j = Math.floor(random() * (i + 1))
159
+ ;[arr[i], arr[j]] = [arr[j]!, arr[i]!]
160
+ }
161
+ }
162
+
163
+ export const frLieuditRecipe: ShardRecipe = {
164
+ name: "fr-lieudit",
165
+ description: "FR lieu-dit rows: BAN nom_ld → dependent_locality (commune → locality), lieu-dit on its own line",
166
+ mode: "generate",
167
+ options: [
168
+ {
169
+ flag: "--ban-dir <dir>",
170
+ description: "BAN adresses-<dept>.csv directory. Default $MAILWOMAN_DATA_ROOT/corpus/sources/ban",
171
+ },
172
+ {
173
+ flag: "--country-fraction <f>",
174
+ description: "Fraction of rows that append an explicit 'France' surface form + a `country` component. Default 0",
175
+ },
176
+ ],
177
+ async run(opts, write) {
178
+ const random = makeMulberry32(opts.seed)
179
+ const source = opts.sourceName ?? "synth-fr-lieudit"
180
+ const count = opts.count ?? 800_000
181
+ const banDir = opts.banDir ?? dataRootPath("corpus", "sources", "ban")
182
+ const countryFraction = opts.countryFraction ?? 0
183
+
184
+ if (!(countryFraction >= 0 && countryFraction <= 1)) {
185
+ throw new Error(`--country-fraction must be in [0, 1], got ${countryFraction}`)
186
+ }
187
+
188
+ const pool = await readLieuDitPool(banDir)
189
+
190
+ if (pool.length === 0) {
191
+ throw new Error(`No clean lieu-dit rows found under ${banDir} — see ban/sdk/extract.ts's cleanLieuDit filter.`)
192
+ }
193
+
194
+ shuffleInPlace(pool, random)
195
+ const selected = pool.slice(0, Math.min(count, pool.length))
196
+
197
+ let emitted = 0
198
+ let skipped = 0
199
+ let countryAppended = 0
200
+
201
+ for (const t of selected) {
202
+ const house = composeHouseNumber(t.numero, t.rep)
203
+ const decomposed = decomposeFrStreet(t.street)
204
+
205
+ const components: Partial<Record<ComponentTag, string>> = {
206
+ house_number: house,
207
+ dependent_locality: t.dependentLocality,
208
+ locality: t.locality,
209
+ }
210
+
211
+ if (decomposed.prefix) {
212
+ components.street_prefix = decomposed.prefix
213
+ }
214
+
215
+ if (decomposed.street) {
216
+ components.street = decomposed.street
217
+ }
218
+
219
+ if (t.postcode) {
220
+ components.postcode = t.postcode
221
+ }
222
+
223
+ let raw = composeRaw(house, t.street, t.dependentLocality, t.postcode, t.locality)
224
+
225
+ if (!raw) {
226
+ skipped++
227
+ continue
228
+ }
229
+
230
+ // Country-append (the fr-admin-split #728 pattern, generalized): ~`countryFraction` of the time
231
+ // append an explicit "France" surface form onto the trailing (postcode+commune) line + a
232
+ // `country` component — the model relearns to emit country WHEN present without over-firing it
233
+ // on the (still-majority) country-less rows. `countryFraction <= 0` (the default) never draws
234
+ // from `random`, so the byte-stream is unaffected when the flag is unset.
235
+ if (countryFraction > 0 && random() < countryFraction) {
236
+ const forms = COUNTRY_SURFACE_FORMS.FR
237
+ const form = forms[Math.floor(random() * forms.length)]!
238
+ raw = `${raw}, ${form}`
239
+ components.country = form
240
+ countryAppended++
241
+ }
242
+
243
+ const sourceID = stableSourceID(source, {
244
+ street: t.street,
245
+ house_number: house,
246
+ dependent_locality: t.dependentLocality,
247
+ locality: t.locality,
248
+ postcode: t.postcode ?? undefined,
249
+ })
250
+ const canonical: CanonicalRow = {
251
+ raw,
252
+ components,
253
+ country: "FR",
254
+ locale: "fr-FR",
255
+ source,
256
+ source_id: sourceID,
257
+ corpus_version: "",
258
+ license: DEFAULT_LICENSE,
259
+ }
260
+ const aligned = alignRow(canonical)
261
+
262
+ if (aligned.kind !== "labeled" || !aligned.row) {
263
+ skipped++
264
+ continue
265
+ }
266
+ write(JSON.stringify({ ...aligned.row, synth_method: source, synth_base_id: null }) + "\n")
267
+ emitted++
268
+ }
269
+
270
+ console.error(` emitted=${emitted} skipped=${skipped} country-appended=${countryAppended} pool=${pool.length}`)
271
+
272
+ return { emitted, skipped }
273
+ },
274
+ }
@@ -15,6 +15,7 @@ import { czPcFirstPrepositionRecipe } from "./cz-pcfirst-preposition.ts"
15
15
  import { frAdminSplitRecipe } from "./fr-admin-split.ts"
16
16
  import { frBareStreetRecipe } from "./fr-bare-street.ts"
17
17
  import { frFragmentRecipe } from "./fr-fragment.ts"
18
+ import { frLieuditRecipe } from "./fr-lieudit.ts"
18
19
  import { frOrderRecipe } from "./fr-order.ts"
19
20
  import { germanRecipe } from "./german.ts"
20
21
  import { houseVenueRecipe } from "./house-venue.ts"
@@ -52,6 +53,7 @@ const RECIPES: readonly ShardRecipe[] = [
52
53
  frAdminSplitRecipe,
53
54
  frBareStreetRecipe,
54
55
  frFragmentRecipe,
56
+ frLieuditRecipe,
55
57
  czPcFirstPrepositionRecipe,
56
58
  nlPostcodeRecipe,
57
59
  noStreetLedRecipe,