
Research
Malicious fezbox npm Package Steals Browser Passwords from Cookies via Innovative QR Code Steganographic Technique
A malicious package uses a QR code as steganography in an innovative technique.
A simple HTTP client library that serves as a wrapper for making HTTP requests based on XMLHttpRequest.
Aziwork is a simple HTTP client library that serves as a wrapper for making HTTP requests based on XMLHttpRequest. It simplifies API interactions and web service requests with support for GET, POST, PUT, DELETE, and PATCH methods. It works for front-end and Node.js development, reduces boilerplate code, and offers built-in error handling. This makes it easy to make HTTP requests and improves code readability.
Version 1.0.0
Major Changes:
Minor Changes:
Patch changes:
Attributes | HTTP Request Methods | Functionality |
---|---|---|
get | GET | retrieve data |
post | POST | submit data |
put | PUT | new resource/replacer |
delete | DELETE | remove data |
patch | PATCH | updater |
options | OPTIONS | given options |
Attributes | Functionality |
---|---|
aziwork or Aziwork | making HTTP requests |
sunder | takes a JSON string as input and parses it into a JavaScript object |
To install the Aziwork, you can use the following npm command:
npm install aziwork
React component:
import { useEffect, useState } from 'react';
import Aziwork, { sunder } from 'aziwork';
export const ExampleComponent = () => {
const [data, setData] = useState(null);
useEffect(() => {
const apiUrl = 'https://jsonplaceholder.typicode.com/posts/1'; // Adjust the URL as needed
// Your authentication token
const authToken = 'your-auth-token'; // Replace with your actual authentication token
// Log the DELETE data before sending the request
console.log('DELETE Request');
const deleteData = async () => {
try {
const response = await Aziwork.delete(apiUrl, {
headers: {
'Content-type': 'application/json; charset=UTF-8',
'Authorization': `Bearer ${authToken}` // Include the token in the headers
},
});
setData(sunder(response));
// Log the response data in the console
console.log('Response Data:', JSON.stringify(response));
} catch (error) {
console.error(error);
}
};
deleteData();
}, []);
return (
<>
{data ? (
<div>
<h1>Title: {data.title}</h1>
<p>Body: {data.body}</p>
<p>User ID: {data.userId}</p>
</div>
) : (
<p>Loading...</p>
)}
</>
);
};
You can see the data via console.log mode in your browser.
import { useEffect, useState } from 'react';
import Aziwork, { sunder } from 'aziwork';
export const ExampleComponent = () => {
const [data, setData] = useState(null);
useEffect(() => {
const apiUrl = 'https://jsonplaceholder.typicode.com/posts/1';
// Your data object
const postData = {
id: 1,
title: 'foo',
body: 'bar',
userId: 1,
};
// Log the PUT data before sending the request
console.log('PUT Data:', postData);
const putData = async () => {
try {
const response = await Aziwork.put(apiUrl, postData, {
headers: {
'Content-type': 'application/json; charset=UTF-8',
},
});
setData(sunder(response));
// Log the response data in the console
console.log('Response Data:', JSON.stringify(response));
} catch (error) {
console.error(error);
}
};
putData();
}, []);
return (
<>
{data ? (
<div>
<h1>Title: {data.title}</h1>
<p>Body: {data.body}</p>
<p>User ID: {data.userId}</p>
</div>
) : (
<p>Loading...</p>
)}
</>
);
};
import { useEffect, useState } from 'react';
import Aziwork, { sunder } from 'aziwork';
export const ExampleComponent = () => {
const [data, setData] = useState([]);
useEffect(() => {
const apiUrl = 'https://jsonplaceholder.typicode.com/posts';
const fetchData = async () => {
try {
const response = await Aziwork.get(apiUrl);
setData(sunder(response));
} catch (error) {
console.error(error);
}
};
fetchData();
}, []);
return (
<>
{data ? (
<div>
{data.map((post) => (
<div key={post.id}>
<h1>Title: {post.title}</h1>
<p>Body: {post.body}</p>
</div>
))}
</div>
) : (
<p>Loading...</p>
)}
</>
);
};
import { useEffect, useState } from 'react';
import Aziwork, { sunder } from 'aziwork';
export const ExampleComponent = () => {
const [data, setData] = useState(null);
useEffect(() => {
const apiUrl = 'https://jsonplaceholder.typicode.com/posts/1';
const fetchData = async () => {
try {
const response = await Aziwork.get(apiUrl);
setData(sunder(response));
} catch (error) {
console.error(error);
}
};
fetchData();
}, []);
return (
<>
{data ? (
<div>
<h1>Title: {data.title}</h1>
<p>Body: {data.body}</p>
</div>
) : (
<p>Loading...</p>
)}
</>
);
};
Angular component:
import { Component, OnInit } from '@angular/core';
import Aziwork, { sunder } from 'aziwork';
@Component({
selector: 'app-example',
templateUrl: './example.component.html',
styleUrls: ['./example.component.css']
})
export class ExampleComponent implements OnInit {
data: any;
constructor() {}
ngOnInit() {
const apiUrl = 'https://jsonplaceholder.typicode.com/posts/1'; // Adjust the URL as needed
// Your authentication token
const authToken = 'your-auth-token'; // Replace with your actual authentication token
// Log the DELETE data before sending the request
console.log('DELETE Request');
const deleteData = async () => {
try {
// Create a Headers object and set the headers individually
const headers = new Headers() as any; // Explicitly cast to any
headers.append('Content-Type', 'application/json; charset=UTF-8');
headers.append('Authorization', `Bearer ${authToken}`); // Include the token in the headers
const response = await Aziwork.delete(apiUrl, {
headers: headers
});
this.data = sunder(response);
// Log the response data in the console
console.log('Response Data:', response);
} catch (error) {
console.error(error);
}
};
deleteData();
}
}
<div *ngIf="data">
<h1>Title: {{ data.title }}</h1>
<p>Body: {{ data.body }}</p>
<p>User ID: {{ data.userId }}</p>
</div>
<p *ngIf="!data">Loading...</p>
You can see the data via console.log mode in your browser.
import { Component, OnInit } from '@angular/core';
import Aziwork, { sunder } from 'aziwork';
@Component({
selector: 'app-example',
templateUrl: './example.component.html',
styleUrls: ['./example.component.css']
})
export class ExampleComponent implements OnInit {
data: any;
constructor() {}
async ngOnInit() {
const apiUrl = 'https://jsonplaceholder.typicode.com/posts/1';
// Your data object
const postData = {
id: 1,
title: 'foo',
body: 'bar',
userId: 1
};
// Log the PUT data before sending the request
console.log('PUT Data:', postData);
// Define the headers as a formatted string
const headers = 'Content-Type: application/json; charset=UTF-8';
try {
const response = await Aziwork.put(apiUrl, postData, {
headers: headers // Pass headers as a string
});
this.data = sunder(response);
// Log the response data in the console
console.log('Response Data:', response);
} catch (error) {
console.error(error);
}
}
}
<div *ngIf="data; else loading">
<h1>Title: {{ data.title }}</h1>
<p>Body: {{ data.body }}</p>
<p>User ID: {{ data.userId }}</p>
</div>
<ng-template #loading>
<p>Loading...</p>
</ng-template>
import { Component, OnInit } from '@angular/core';
import Aziwork, { sunder } from 'aziwork';
@Component({
selector: 'app-example',
templateUrl: './example.component.html',
styleUrls: ['./example.component.css']
})
export class ExampleComponent implements OnInit {
data: any[] = [];
async ngOnInit() {
const apiUrl = 'https://jsonplaceholder.typicode.com/posts';
try {
const response = await Aziwork.get(apiUrl);
this.data = sunder(response);
} catch (error) {
console.error(error);
}
}
}
<div *ngIf="data.length > 0; else loading">
<div *ngFor="let post of data">
<h1>Title: {{ post.title }}</h1>
<p>Body: {{ post.body }}</p>
</div>
</div>
<ng-template #loading>
<p>Loading...</p>
</ng-template>
import { Component, OnInit } from '@angular/core';
import Aziwork, { sunder } from 'aziwork';
@Component({
selector: 'app-example',
templateUrl: './example.component.html',
styleUrls: ['./example.component.css']
})
export class ExampleComponent implements OnInit {
data: any;
async ngOnInit() {
const apiUrl = 'https://jsonplaceholder.typicode.com/posts/1';
try {
const response = await Aziwork.get(apiUrl);
this.data = sunder(response);
} catch (error) {
console.error(error);
}
}
}
example.component.html
<div>
<div *ngIf="data; else loadingTemplate">
<h1>Title: {{ data.title }}</h1>
<p>Body: {{ data.body }}</p>
</div>
<ng-template #loadingTemplate>
<p>Loading...</p>
</ng-template>
</div>
Demjhon Silver
FAQs
A simple HTTP client library that serves as a wrapper for making HTTP requests based on XMLHttpRequest.
The npm package aziwork receives a total of 0 weekly downloads. As such, aziwork popularity was classified as not popular.
We found that aziwork 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.
Research
A malicious package uses a QR code as steganography in an innovative technique.
Research
/Security News
Socket identified 80 fake candidates targeting engineering roles, including suspected North Korean operators, exposing the new reality of hiring as a security function.
Application Security
/Research
/Security News
Socket detected multiple compromised CrowdStrike npm packages, continuing the "Shai-Hulud" supply chain attack that has now impacted nearly 500 packages.