
Security News
MCP Steering Committee Launches Official MCP Registry in Preview
The MCP Steering Committee has launched the official MCP Registry in preview, a central hub for discovering and publishing MCP servers.
Ajax functionality for Mobx 3+.
Based on async-mobx
npm
npm i ajax-mobx
yarn
yarn add ajax-mobx
Ajax
is a Promise
like constructor
import Ajax from 'ajax-mobx'
const user = await new Ajax('https://reqres.in/api/users/1')
// user === "{...}"
Use then
, catch
and finally
like for Promise
const user = new Ajax('https://reqres.in/api/users/1')
user
.finally(value => console.log('finally', value))
.then(value => console.log('then', value))
.catch(value => console.log('catch', value))
You may check status of the request with loading
field,
it's true
when data is loading. This field is observable.
const user = new Ajax('https://reqres.in/api/users/1')
// user.loading === true
await user
// user.loading === false
You may check status of the request with loaded
field,
it's true
if the data is loaded at least one time.
This is an observable field.
const user = new Ajax('https://reqres.in/api/users/1')
// user.loaded === false
await user
// user.loaded === true
You may get result with value
.
This is an observable field.
const user = new Ajax('https://reqres.in/api/users/1')
autorun(() => console.log(user.loading ? 'loading...' : user.value))
// autorun from mobx
You may handle errors or responses with error status by error
field.
This is an observable field.
const user = new Ajax('https://reqres.in/api/users/23')
// returns 404 user not found
autorun(() => console.log(
user.loading ? 'loading...' : user.error || user.value
))
You can convert the response to json
| text
| blob
| arrayBuffer
| formData
.
const user = new Ajax('https://reqres.in/api/users/1', {type: 'json'})
await user
// user.value.data.id === 1
You may provide default value
for Ajax
const user = new Ajax('https://reqres.in/api/users/1', {
type: 'json',
default: {data: {id: null}}
})
// user.value.data.id === null
await user
// user.value.data.id === 1
response
is the same value
but without default value.
This is an observable field.
const user = new Ajax('https://reqres.in/api/users/1', {
type: 'json',
default: {data: {id: null}}
})
// user.value.data.id === null
// user.response === undefined
await user
// user.value.data.id === 1
// user.response.data.id === 1
You can change url of the request via data
field or option.
Returns an observable object.
const user = new Ajax('https://reqres.in/api/users/{userId}', {
type: 'json',
data: {userId: 1}
})
// request to https://reqres.in/api/users/1
await user
// user.value.data.id === 1
Unlike a Promise
, you may reuse Ajax
with update
method
const user = new Ajax(
'https://reqres.in/api/users/{userId}',
{type: 'json'}
)
user.data.userId = 1
await user // request to https://reqres.in/api/users/1
// user.value.data.id === 1
user.data.userId = 2
user.update()
await user // request to https://reqres.in/api/users/2
// user.value.data.id === 2
query
works like data, but it changes URL search params.
Returns an observable object.
const user = new Ajax('https://reqres.in/api/users', {
type: 'json',
query: {page: 1}
})
// request to https://reqres.in/api/users?page=1
await user
// user.value.page === 1
user.query.page = 2
user.update()
await user
// user.value.page === 2
You may use resolve
to set value without updating or loading.
const user = new Ajax('https://reqres.in/api/users/{user}', {data: {user: 1}, type: 'json'})
user.resolve({data: {id: 2}})
await user
// user.value.data.id === 2
user.update()
await user
// user.value.data.id === 1
The same as resolve, but it set an error
instead of value
.
You may add a listener to react on the next events resolve
| reject
| update
const user = new Ajax('https://reqres.in/api/users/1')
let test = false
user.on('resolve', value => test = value)
await user
// test === '{...}'
You may add a listener which reacts only once with once
method.
const user = new Ajax('https://reqres.in/api/users/1')
let test = false
user.once('resolve', value => test = value)
await user
// test === '{...}'
You may turn off a listener
const user = new Ajax('https://reqres.in/api/users/1')
let test = false
const listenr = e => test = e
user.once('resolve', listenr)
user.off('resolve', listenr)
await user
// test === undefined
If you wont to know the status of the response or headers you can use answer
field.
const user = new Ajax('https://reqres.in/api/users/23')
// user.answer === undefined
await user
// user.answer.ok === false
// user.answer.status === 404
It's better if you extend Ajax
class to get it.
class Api extends Ajax {
@computed get status (): number {
return this.answer?.status
}
}
const user = new Api('https://reqres.in/api/users/23')
// user.status === undefined
await user
// user.status === 404
If you find a bug, please file an issue on GitHub
async-mobx
to v1.1FAQs
Ajax for MobX
We found that ajax-mobx demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The MCP Steering Committee has launched the official MCP Registry in preview, a central hub for discovering and publishing MCP servers.
Product
Socket’s new Pull Request Stories give security teams clear visibility into dependency risks and outcomes across scanned pull requests.
Research
/Security News
npm author Qix’s account was compromised, with malicious versions of popular packages like chalk-template, color-convert, and strip-ansi published.