dijs / wiki

Wikipedia Interface for Node.js
MIT License
315 stars 61 forks source link

[TS] Page.content() has incorrect return type #164

Open Angoooose opened 2 years ago

Angoooose commented 2 years ago

Page.content() is set to return a promise of a string, however this is not always the case. Sometimes (more often than not it seems) it returns a promise for an array of page sections.

wiki().page('January_12').then(p => p.content()).then(async res => {
    console.log(res);
});
[
  {
    title: 'Events',
    content: '',
    items: [ [Object], [Object], [Object] ]
  },
  {
    title: 'Births',
    content: '',
    items: [ [Object], [Object], [Object] ]
  },
  {
    title: 'Deaths',
    content: '',
    items: [ [Object], [Object], [Object] ]
  },
  {
    title: 'Holidays and observances',
    content: 'Christian feast day:\n' +
      'Aelred of Rievaulx\n' +
      'Benedict Biscop\n' +
      'Bernard of Corleone\n' +
      'Marguerite Bourgeoys\n' +
      'Tatiana\n' +
      'January 12 (Eastern Orthodox liturgics)\n' +
      'Memorial Day (Turkmenistan)\n' +
      'National Youth Day (India)\n' +
      "Prosecutor General's Day (Russia)\n" +
      'Zanzibar Revolution Day (Tanzania)\n' +
      'Aseggwas Amaziɣ, ⴰⵙⴳⴳⴰⵙ ⴰⵎⴰⵣⵉⵖ (Algeria)'
  },
  { title: 'References', content: '' },
  {
    title: 'External links',
    content: 'BBC: On This Day\n' +
      '\n' +
      'The New York Times: On This DayHistorical Events on January 12\n' +
      'Today in Canadian History'
  }
]
dijs commented 2 years ago

Thanks for the example. I will look info this.

dijs commented 2 years ago

After looking at this again, the function seems to be doing exactly as described in the docs: https://dijs.github.io/wiki/WikiPage.html#content

It parses the extracted content from sections on the page.

If you would like to transform the results into a string , i am sure that would not be difficult.

Angoooose commented 2 years ago

The method acts as it should, however its return type is incorrect. It's said to return a string while it actually returns an array.

(method) Page.content(): Promise<string>
Text content from page

@returns

@memberof — Page