Compare commits

...

4 Commits

Author SHA1 Message Date
3f85c9cf7d Updated package.json to include types file
All checks were successful
Build / Build NPM Project (push) Successful in 41s
Build / Tag Version (push) Successful in 5s
2024-06-17 10:23:48 -04:00
1eff60e7dd Fixed build
All checks were successful
Build / Build NPM Project (push) Successful in 22s
Build / Tag Version (push) Successful in 5s
2024-06-16 08:36:45 -04:00
1d9ad2ef63 Fixed module exports?
All checks were successful
Build / Build NPM Project (push) Successful in 38s
Build / Tag Version (push) Successful in 5s
Build / Publish (push) Successful in 7s
2024-06-16 08:29:49 -04:00
973a884b3e Added query & fragment to xhr
All checks were successful
Build / Build NPM Project (push) Successful in 38s
Build / Tag Version (push) Successful in 5s
Build / Publish (push) Successful in 7s
2024-06-15 22:29:37 -04:00
3 changed files with 25 additions and 42 deletions

View File

@ -37,11 +37,15 @@ jobs:
key: node_modules key: node_modules
pattern: node_modules pattern: node_modules
- name: Cache Artifacts - name: Upload to Registry
uses: ztimson/actions/cache@develop uses: ztimson/actions/npm/publish@develop
- name: Upload to NPM
uses: ztimson/actions/npm/publish@develop
with: with:
key: dist owner: ztimson
pattern: dist registry: https://registry.npmjs.org/
token: ${{secrets.NPM_TOKEN}}
tag: tag:
name: Tag Version name: Tag Version
needs: build needs: build
@ -59,31 +63,3 @@ jobs:
uses: ztimson/actions/tag@develop uses: ztimson/actions/tag@develop
with: with:
tag: ${{env.VERSION}} tag: ${{env.VERSION}}
publish:
name: Publish
needs: build
if: ${{github.ref_name}} == 'release'
runs-on: ubuntu-latest
container:
image: node
volumes:
- '/mnt/swarm/gitea/runner/cache:/cache'
steps:
- name: Clone Repository
uses: ztimson/actions/clone@develop
- name: Restore Artifacts
uses: ztimson/actions/cache/restore@develop
with:
key: dist
- name: Upload to Registry
uses: ztimson/actions/npm/publish@develop
- name: Upload to NPM
uses: ztimson/actions/npm/publish@develop
with:
owner: ztimson
registry: https://registry.npmjs.org/
token: ${{secrets.NPM_TOKEN}}

View File

@ -1,6 +1,6 @@
{ {
"name": "@ztimson/utils", "name": "@ztimson/utils",
"version": "0.10.4", "version": "0.11.3",
"description": "Utility library", "description": "Utility library",
"author": "Zak Timson", "author": "Zak Timson",
"license": "MIT", "license": "MIT",
@ -12,6 +12,13 @@
"main": "./dist/utils.cjs", "main": "./dist/utils.cjs",
"module": "./dist/utils.mjs", "module": "./dist/utils.mjs",
"types": "./dist/index.d.ts", "types": "./dist/index.d.ts",
"exports": {
".": {
"import": "./dist/utils.mjs",
"require": "./dist/utils.cjs",
"types": "./dist/index.d.ts"
}
},
"scripts": { "scripts": {
"build": "npx tsc && npx vite build", "build": "npx tsc && npx vite build",
"test": "npx jest", "test": "npx jest",

View File

@ -1,17 +1,11 @@
import {
BadRequestError,
CustomError,
ForbiddenError,
InternalServerError,
NotFoundError,
UnauthorizedError
} from './errors.ts';
import {clean} from './objects'; import {clean} from './objects';
export type Interceptor = (request: Response, next: () => void) => void; export type Interceptor = (request: Response, next: () => void) => void;
export type RequestOptions = { export type RequestOptions = {
url?: string; url?: string;
fragment?: string;
query?: {key: string, value: string}[] | {[key: string]: string};
method?: 'GET' | 'POST' | 'PATCH' | 'DELETE'; method?: 'GET' | 'POST' | 'PATCH' | 'DELETE';
body?: any; body?: any;
headers?: {[key: string | symbol]: string | null | undefined}; headers?: {[key: string | symbol]: string | null | undefined};
@ -55,7 +49,13 @@ export class XHR {
async request<T>(opts: RequestOptions = {}): Promise<T> { async request<T>(opts: RequestOptions = {}): Promise<T> {
if(!this.opts.url && !opts.url) throw new Error('URL needs to be set'); if(!this.opts.url && !opts.url) throw new Error('URL needs to be set');
const url = (opts.url?.startsWith('http') ? opts.url : (this.opts.url || '') + (opts.url || '')).replace(/([^:]\/)\/+/g, '$1'); let url = (opts.url?.startsWith('http') ? opts.url : (this.opts.url || '') + (opts.url || '')).replace(/([^:]\/)\/+/g, '$1');
if(opts.fragment) url.includes('#') ? url.replace(/#.*(\?|\n)/g, (match, arg1) => `#${opts.fragment}${arg1}`) : url += '#' + opts.fragment;
if(opts.query) {
const q = Array.isArray(opts.query) ? opts.query :
Object.keys(opts.query).map(k => ({key: k, value: (<any>opts.query)[k]}))
url += (url.includes('?') ? '&' : '?') + q.map(q => `${q.key}=${q.value}`).join('&');
}
// Prep headers // Prep headers
const headers = <any>clean({ const headers = <any>clean({