@sebbo2002/genderize 3.0.0-develop.2 → 3.0.0-develop.3

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.
package/package.json CHANGED
@@ -34,16 +34,12 @@
34
34
  "engines": {
35
35
  "node": "^14.8.0 || >=16.0.0"
36
36
  },
37
- "exports": {
38
- "import": "./dist/index.js",
39
- "require": "./dist/index.cjs"
40
- },
41
37
  "files": [
42
38
  "/dist"
43
39
  ],
44
40
  "homepage": "https://github.com/sebbo2002/genderize#readme",
45
41
  "license": "MIT",
46
- "main": "./dist/index.cjs",
42
+ "main": "./dist/index.js",
47
43
  "module": "./dist/index.js",
48
44
  "name": "@sebbo2002/genderize",
49
45
  "repository": {
@@ -59,5 +55,5 @@
59
55
  "test": "mocha"
60
56
  },
61
57
  "type": "module",
62
- "version": "3.0.0-develop.2"
58
+ "version": "3.0.0-develop.3"
63
59
  }
package/dist/index.cjs DELETED
@@ -1,2 +0,0 @@
1
- var h=Object.create;var o=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var A=Object.getPrototypeOf,H=Object.prototype.hasOwnProperty;var z=(t,e)=>{for(var r in e)o(t,r,{get:e[r],enumerable:!0})},m=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of R(e))!H.call(t,i)&&i!==r&&o(t,i,{get:()=>e[i],enumerable:!(n=f(e,i))||n.enumerable});return t};var b=(t,e,r)=>(r=t!=null?h(A(t)):{},m(e||!t||!t.__esModule?o(r,"default",{value:t,enumerable:!0}):r,t)),x=t=>m(o({},"__esModule",{value:!0}),t);var u=(t,e,r)=>new Promise((n,i)=>{var d=a=>{try{p(r.next(a))}catch(g){i(g)}},y=a=>{try{p(r.throw(a))}catch(g){i(g)}},p=a=>a.done?n(a.value):Promise.resolve(a.value).then(d,y);p((r=r.apply(t,e)).next())});var w={};z(w,{GenderizeGender:()=>c,default:()=>s});module.exports=x(w);var l=b(require("got"),1);var c=(r=>(r.FEMALE="female",r.MALE="male",r))(c||{}),s=class{constructor(e){this.latestHeaders=null;this.apiKey=e}static getIntHeader(e){if(Array.isArray(e))return this.getIntHeader(e[0]);if(e!==void 0)return parseInt(e)}get limit(){if(!this.latestHeaders)return null;let e=s.getIntHeader(this.latestHeaders[0]["x-rate-limit-limit"]),r=s.getIntHeader(this.latestHeaders[0]["x-rate-limit-remaining"]),n=s.getIntHeader(this.latestHeaders[0]["x-rate-limit-reset"]);return e!==void 0&&r!==void 0&&n!==void 0?{limit:e,remaining:r,reset:new Date(this.latestHeaders[1].getTime()+n*1e3)}:null}params(e,r){let n=new URLSearchParams;if(Array.isArray(e)&&e.length>10)throw new Error(`Too many names given: ${e.length} names provided, but 10 is the maximum allowed`);if(Array.isArray(e)&&e.length===0)throw new Error("No name given, but at least one is required");return Array.isArray(e)?e.forEach(i=>n.append("name",i)):n.append("name",e),r&&n.append("country_id",r),this.apiKey&&n.append("apikey",this.apiKey),Array.isArray(e)?n.toString().replace(/name=/g,"name[]="):n.toString()}predict(e,r){return u(this,null,function*(){let n=this.params(e,r),{body:i,headers:d}=yield l.default.get("https://api.genderize.io/",{searchParams:n,responseType:"json"});return this.latestHeaders=[d,new Date],i})}};0&&(module.exports={GenderizeGender});
2
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/index.ts"],"sourcesContent":["import got from 'got';\n\n/**\n * Enum that can be used to compare and check the results\n */\nexport enum GenderizeGender {\n FEMALE = 'female',\n MALE = 'male'\n}\n\nexport interface GenderizeResponse {\n /**\n * Name which was used for this prediction\n */\n name: string;\n\n /**\n * Either a [[`GenderizeGender`]] value (male/female) or null\n * if the API was not able to predict a gender.\n */\n gender: GenderizeGender | null;\n\n /**\n * Value between 0 and 1 (including)\n */\n probability: number;\n\n /**\n * The number of data rows examined in order\n * to calculate the API response\n */\n count: number;\n}\nexport interface GenderizeResponseWithCountry extends GenderizeResponse {\n /**\n * ISO 3166-1 alpha-2 country code which was used for this prediction\n */\n country_id: string;\n}\n\nexport interface GenderizeLimit {\n /**\n * The amount of names available in the current time window\n */\n limit: number;\n\n /**\n * The number of names left in the current time window\n */\n remaining: number;\n\n /**\n * Next time window start time\n *\n * ```javascript\n * import Genderize from '@sebbo2002/genderize';\n * const genderize = new Genderize('API-KEY');\n *\n * // execute a predicition\n *\n * genderize.limit?.reset.toString()\n * ```\n */\n reset: Date;\n}\n\nexport default class Genderize {\n private readonly apiKey;\n private latestHeaders: [Record<string, string[] | string | undefined>, Date] | null = null;\n\n /**\n * Usually you get an `Genderize` instance like this:\n * ```javascript\n * import Genderize from '@sebbo2002/genderize';\n * const genderize = new Genderize('API-KEY');\n * ```\n *\n * You can get an API key from [store.genderize.io](https://store.genderize.io/).\n *\n * If you don't have an API key yet, you can start with the free plan:\n * ```javascript\n * import Genderize from '@sebbo2002/genderize';\n * const genderize = new Genderize();\n * ```\n */\n constructor(apiKey?: string) {\n this.apiKey = apiKey;\n }\n\n /**\n * @internal\n */\n static getIntHeader(value: string | string[] | undefined): number | undefined {\n if(Array.isArray(value)) {\n return this.getIntHeader(value[0]);\n }\n\n if(value === undefined) {\n return undefined;\n }\n\n return parseInt(value);\n }\n\n /**\n * Outputs information about the current state of the rate limit. Updated and cached\n * each time [[`predict`]] is called. If no information is available, for example because\n * [[`predict`]] has not been executed yet, `null` is returned. Otherwise the response is\n * of type [[`GenderizeLimit`]].\n */\n get limit(): GenderizeLimit | null {\n if(!this.latestHeaders) {\n return null;\n }\n\n const limit = Genderize.getIntHeader(this.latestHeaders[0]['x-rate-limit-limit']);\n const remaining = Genderize.getIntHeader(this.latestHeaders[0]['x-rate-limit-remaining']);\n const reset = Genderize.getIntHeader(this.latestHeaders[0]['x-rate-limit-reset']);\n\n if(limit !== undefined && remaining !== undefined && reset !== undefined) {\n return {\n limit,\n remaining,\n reset: new Date(this.latestHeaders[1].getTime() + (reset * 1000))\n };\n }\n\n return null;\n }\n\n /**\n * Internal function which builds the url parameters\n * used to query the prediction endpoint.\n *\n * @internal\n */\n params(names: string | string[], country?: string): string {\n const searchParams = new URLSearchParams();\n if(Array.isArray(names) && names.length > 10) {\n throw new Error(`Too many names given: ${names.length} names provided, but 10 is the maximum allowed`);\n }\n if(Array.isArray(names) && names.length === 0) {\n throw new Error('No name given, but at least one is required');\n }\n\n if(Array.isArray(names)) {\n names.forEach(name => searchParams.append('name', name));\n } else {\n searchParams.append('name', names);\n }\n\n if(country) {\n searchParams.append('country_id', country);\n }\n\n if(this.apiKey) {\n searchParams.append('apikey', this.apiKey);\n }\n if(Array.isArray(names)) {\n return searchParams.toString()\n .replace(/name=/g, 'name[]=');\n }\n\n return searchParams.toString();\n }\n\n /**\n * Predict a single name\n *\n * ```typescript\n * import Genderize from '@sebbo2002/genderize';\n * const genderize = new Genderize('API-KEY');\n * genderize.predict('Mia').then(result => {\n * console.log(result);\n * });\n * ```\n *\n * ```json\n * {\n * name: 'Mia',\n * gender: 'female',\n * probability: 0.96,\n * count: 19266\n * }\n * ```\n */\n async predict(name: string): Promise<GenderizeResponse>;\n\n /**\n * Predict multiple names. Works for up to 10 names at the same time.\n *\n * Please check [this list](https://genderize.io/our-data) if you're unsure about\n * the country code you have to use.\n *\n * It is recommended to check the count of the response when using localization.\n * If the count is very low or gender is null, you can fallback to a request\n * with no localization.\n *\n * ```typescript\n * import Genderize from '@sebbo2002/genderize';\n * const genderize = new Genderize('API-KEY');\n * genderize.predict(['Noah', 'Evelyn']).then(result => {\n * console.log(result);\n * });\n * ```\n *\n * ```json\n * [\n * { name: 'Noah', gender: 'male', probability: 0.88, count: 3939 },\n * { name: 'Evelyn', gender: 'female', probability: 0.98, count: 12188 }\n * ]\n * ```\n */\n async predict(names: string[]): Promise<GenderizeResponse[]>;\n\n /**\n * Predict a single name with a given ISO 3166-1 alpha-2 country code\n *\n * ```typescript\n * import Genderize from '@sebbo2002/genderize';\n * const genderize = new Genderize('API-KEY');\n * genderize.predict('Mia', 'DE').then(result => {\n * console.log(result);\n * });\n * ```\n *\n * ```json\n * {\n * name: 'Mia',\n * gender: 'female',\n * probability: 0.97,\n * count: 1786,\n * country_id: 'DE'\n * }\n * ```\n */\n async predict(name: string, country: string): Promise<GenderizeResponseWithCountry>;\n\n /**\n * Predict multiple names with a given ISO 3166-1 alpha-2\n * country code. Works for up to 10 names at the same time.\n *\n * Please check [this list](https://genderize.io/our-data) if you're unsure about\n * the country code you have to use.\n *\n * It is recommended to check the count of the response when using localization.\n * If the count is very low or gender is null, you can fallback to a request\n * with no localization.\n *\n * ```typescript\n * import Genderize from '@sebbo2002/genderize';\n * const genderize = new Genderize('API-KEY');\n * genderize.predict(['Noah', 'Evelyn'], 'DE').then(result => {\n * console.log(result);\n * });\n * ```\n *\n * ```json\n * [\n * { name: 'Noah', gender: 'male', probability: 1, count: 608, country_id: 'DE' },\n * { name: 'Evelyn', gender: 'female', probability: 0.97, count: 1665, country_id: 'DE' }\n * ]\n * ```\n */\n async predict(names: string[], country: string): Promise<GenderizeResponseWithCountry[]>;\n\n async predict(names: string | string[], country?: string): Promise<GenderizeResponse | GenderizeResponse[] | GenderizeResponseWithCountry | GenderizeResponseWithCountry[]> {\n const searchParams = this.params(names, country);\n const {body, headers} = await got.get('https://api.genderize.io/', { searchParams, responseType: 'json' });\n this.latestHeaders = [headers, new Date()];\n return body as GenderizeResponse | GenderizeResponse[];\n }\n}\n"],"mappings":"0vBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAAgB,oBAKT,IAAKC,OACRA,EAAA,OAAS,SACTA,EAAA,KAAO,OAFCA,OAAA,IA6DSC,EAArB,KAA+B,CAmB3B,YAAYC,EAAiB,CAjB7B,KAAQ,cAA8E,KAkBlF,KAAK,OAASA,CAClB,CAKA,OAAO,aAAaC,EAA0D,CAC1E,GAAG,MAAM,QAAQA,CAAK,EAClB,OAAO,KAAK,aAAaA,EAAM,CAAC,CAAC,EAGrC,GAAGA,IAAU,OAIb,OAAO,SAASA,CAAK,CACzB,CAQA,IAAI,OAA+B,CAC/B,GAAG,CAAC,KAAK,cACL,OAAO,KAGX,IAAMC,EAAQH,EAAU,aAAa,KAAK,cAAc,CAAC,EAAE,oBAAoB,CAAC,EAC1EI,EAAYJ,EAAU,aAAa,KAAK,cAAc,CAAC,EAAE,wBAAwB,CAAC,EAClFK,EAAQL,EAAU,aAAa,KAAK,cAAc,CAAC,EAAE,oBAAoB,CAAC,EAEhF,OAAGG,IAAU,QAAaC,IAAc,QAAaC,IAAU,OACpD,CACH,MAAAF,EACA,UAAAC,EACA,MAAO,IAAI,KAAK,KAAK,cAAc,CAAC,EAAE,QAAQ,EAAKC,EAAQ,GAAK,CACpE,EAGG,IACX,CAQA,OAAOC,EAA0BC,EAA0B,CACvD,IAAMC,EAAe,IAAI,gBACzB,GAAG,MAAM,QAAQF,CAAK,GAAKA,EAAM,OAAS,GACtC,MAAM,IAAI,MAAM,yBAAyBA,EAAM,sDAAsD,EAEzG,GAAG,MAAM,QAAQA,CAAK,GAAKA,EAAM,SAAW,EACxC,MAAM,IAAI,MAAM,6CAA6C,EAgBjE,OAbG,MAAM,QAAQA,CAAK,EAClBA,EAAM,QAAQG,GAAQD,EAAa,OAAO,OAAQC,CAAI,CAAC,EAEvDD,EAAa,OAAO,OAAQF,CAAK,EAGlCC,GACCC,EAAa,OAAO,aAAcD,CAAO,EAG1C,KAAK,QACJC,EAAa,OAAO,SAAU,KAAK,MAAM,EAE1C,MAAM,QAAQF,CAAK,EACXE,EAAa,SAAS,EACxB,QAAQ,SAAU,SAAS,EAG7BA,EAAa,SAAS,CACjC,CAsGM,QAAQF,EAA0BC,EAAoI,QAAAG,EAAA,sBACxK,IAAMF,EAAe,KAAK,OAAOF,EAAOC,CAAO,EACzC,CAAC,KAAAI,EAAM,QAAAC,CAAO,EAAI,MAAM,EAAAC,QAAI,IAAI,4BAA6B,CAAE,aAAAL,EAAc,aAAc,MAAO,CAAC,EACzG,YAAK,cAAgB,CAACI,EAAS,IAAI,IAAM,EAClCD,CACX,GACJ","names":["lib_exports","__export","GenderizeGender","Genderize","__toCommonJS","import_got","GenderizeGender","Genderize","apiKey","value","limit","remaining","reset","names","country","searchParams","name","__async","body","headers","got"]}