Skip to content

Commit

Permalink
removed usage of lodash from ArrayBuffer and added AxiosJsonUncompressed
Browse files Browse the repository at this point in the history
  • Loading branch information
arietrouw committed Oct 17, 2024
1 parent 8d55c4a commit dd98e57
Show file tree
Hide file tree
Showing 12 changed files with 260 additions and 8 deletions.
1 change: 1 addition & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@
"typeeof",
"userid",
"webp",
"Wermke",
"wordlist",
"xdescribe",
"xtest",
Expand Down
18 changes: 17 additions & 1 deletion eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,21 @@ export default [
...typescriptConfig.rules,
'@typescript-eslint/consistent-type-imports': ['warn']
},
}
},
{
rules: {
'no-restricted-imports': [
'warn',
{
paths: [
...rulesConfig.rules['no-restricted-imports'][1].paths,
'@xyo-network/*',
'lodash',
'lodash-es',
'@xylabs/lodash',
],
},
],
},
},
]
4 changes: 2 additions & 2 deletions packages/arraybuffer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,13 @@
"dependencies": {
"@scure/base": "^1.1.9",
"@xylabs/assert": "workspace:^",
"@xylabs/lodash": "^4.2.0",
"@xylabs/typeof": "workspace:^"
},
"devDependencies": {
"@xylabs/ts-scripts-yarn3": "^4.2.0",
"@xylabs/tsconfig": "^4.2.0",
"typescript": "^5.6.3"
"typescript": "^5.6.3",
"vitest": "^2.1.3"
},
"engines": {
"node": ">=18"
Expand Down
2 changes: 1 addition & 1 deletion packages/arraybuffer/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export * from './equalArrayBuffers.ts'
export * from './isArrayBuffer.ts'
export * from './toArrayBuffer.ts'
export * from './toUint8Array.ts'
export { isArrayBuffer } from '@xylabs/lodash'
14 changes: 14 additions & 0 deletions packages/arraybuffer/src/isArrayBuffer.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import {
describe, expect, test,
} from 'vitest'

import { isArrayBuffer } from './isArrayBuffer.ts'

describe('isArrayBuffer', () => {
test('actual ArrayBuffer', () => {
expect(isArrayBuffer(new ArrayBuffer(0))).toBe(true)
})
test('UInt8Array.buffer', () => {
expect(isArrayBuffer(new Uint8Array(0).buffer)).toBe(true)
})
})
14 changes: 14 additions & 0 deletions packages/arraybuffer/src/isArrayBuffer.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
export const isArrayBuffer = (value: unknown): value is ArrayBuffer => {
return value instanceof ArrayBuffer
}

export const isArrayBufferLike = (value: unknown): value is ArrayBufferLike => {
return (
value !== null
&& typeof value === 'object'
&& 'byteLength' in value
&& typeof (value as ArrayBufferLike).byteLength === 'number'
&& 'slice' in value
&& typeof (value as ArrayBufferLike).slice === 'function'
)
}
4 changes: 2 additions & 2 deletions packages/axios/src/AxiosJson.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@ export class AxiosJson extends Axios {
const json = JSON.stringify(data)
if (headers && data && json.length > (compressLength ?? 1024)) {
headers['Content-Encoding'] = 'gzip'
return gzip(JSON.stringify(data)).buffer
return gzip(json).buffer
}
return JSON.stringify(data)
return json
},
transformResponse: (data) => {
try {
Expand Down
52 changes: 52 additions & 0 deletions packages/axios/src/AxiosJsonUncompressed.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import type { Logger } from '@xylabs/logger'
import type { AxiosResponse, RawAxiosRequestConfig } from 'axios'
import { Axios, AxiosHeaders } from 'axios'

// eslint-disable-next-line @typescript-eslint/no-explicit-any
export type RawAxiosJsonRequestUncompressedConfig<D = any> = RawAxiosRequestConfig<D>

export class AxiosJsonUncompressed extends Axios {
static defaultLogger?: Logger

constructor(config?: RawAxiosJsonRequestUncompressedConfig) {
super(AxiosJsonUncompressed.axiosConfig(config))
}

static finalPath(response: AxiosResponse) {
if (response.request.path) {
// nodejs
return response.request.path.split('/').pop()
} else if (response.request.responseURL) {
// browser
return response.request.responseURL.split('/').pop()
} else {
this.defaultLogger?.warn('Failed to get final path from response')
}
}

private static axiosConfig({ headers, ...config }: RawAxiosJsonRequestUncompressedConfig = {}): RawAxiosJsonRequestUncompressedConfig {
return {
headers: this.buildHeaders(headers),
transformRequest: (data) => {
const json = JSON.stringify(data)
return JSON.stringify(json)
},
transformResponse: (data) => {
try {
return JSON.parse(data)
} catch {
return null
}
},
...config,
}
}

private static buildHeaders(headers: RawAxiosJsonRequestUncompressedConfig['headers']) {
const axiosHeaders = new AxiosHeaders()
axiosHeaders.set('Accept', 'application/json, text/plain, *.*')
axiosHeaders.set('Content-Type', 'application/json')
for (const [key, value] of Object.entries(headers ?? {})) axiosHeaders.set(key, value)
return axiosHeaders
}
}
3 changes: 3 additions & 0 deletions packages/axios/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import { AxiosJson } from './AxiosJson.ts'
import { AxiosJsonUncompressed } from './AxiosJsonUncompressed.ts'

export * from './AxiosJson.ts'
export * from './AxiosJsonUncompressed.ts'
export { gzip } from 'pako'

export const axios = new AxiosJson()
export const axiosUncompressed = new AxiosJsonUncompressed()
1 change: 1 addition & 0 deletions packages/lodash/src/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
// eslint-disable-next-line no-restricted-imports
export * from 'lodash-es'
6 changes: 6 additions & 0 deletions vitest.workspace.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
// eslint-disable-next-line import-x/no-internal-modules
import { defineWorkspace } from 'vitest/config'

export default defineWorkspace([
'./vitest.config.ts',
])
149 changes: 147 additions & 2 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3791,6 +3791,18 @@ __metadata:
languageName: node
linkType: hard

"@vitest/expect@npm:2.1.3":
version: 2.1.3
resolution: "@vitest/expect@npm:2.1.3"
dependencies:
"@vitest/spy": "npm:2.1.3"
"@vitest/utils": "npm:2.1.3"
chai: "npm:^5.1.1"
tinyrainbow: "npm:^1.2.0"
checksum: 10/94e61e01f14cfcd9ced0e7ac1bbdeee55ff4bf68f09d8f244fd7d73f97b106f35d10cba3fe7a0132464c312206f2eee9e83b16a8d761101b61da053890062858
languageName: node
linkType: hard

"@vitest/mocker@npm:2.1.2":
version: 2.1.2
resolution: "@vitest/mocker@npm:2.1.2"
Expand All @@ -3811,6 +3823,26 @@ __metadata:
languageName: node
linkType: hard

"@vitest/mocker@npm:2.1.3":
version: 2.1.3
resolution: "@vitest/mocker@npm:2.1.3"
dependencies:
"@vitest/spy": "npm:2.1.3"
estree-walker: "npm:^3.0.3"
magic-string: "npm:^0.30.11"
peerDependencies:
"@vitest/spy": 2.1.3
msw: ^2.3.5
vite: ^5.0.0
peerDependenciesMeta:
msw:
optional: true
vite:
optional: true
checksum: 10/84be8830d6e965109730257d7a84b3d7594db0998ae55decdbfc304857c1c7d29b49f1f5b23f2addcbce1bd7e8bb33832407737a9bb3f95cb3bf7bb312db4d9d
languageName: node
linkType: hard

"@vitest/pretty-format@npm:2.1.2, @vitest/pretty-format@npm:^2.1.2":
version: 2.1.2
resolution: "@vitest/pretty-format@npm:2.1.2"
Expand All @@ -3820,6 +3852,15 @@ __metadata:
languageName: node
linkType: hard

"@vitest/pretty-format@npm:2.1.3, @vitest/pretty-format@npm:^2.1.3":
version: 2.1.3
resolution: "@vitest/pretty-format@npm:2.1.3"
dependencies:
tinyrainbow: "npm:^1.2.0"
checksum: 10/d9382ee93f0f32e2ef8fe03bda818e5277f052a50ddb05b6a6cf0864b2ccb228484f12f130c05faf62dc2140292ffafc213f2941b0fa24058b3ee2943daa286c
languageName: node
linkType: hard

"@vitest/runner@npm:2.1.2":
version: 2.1.2
resolution: "@vitest/runner@npm:2.1.2"
Expand All @@ -3830,6 +3871,16 @@ __metadata:
languageName: node
linkType: hard

"@vitest/runner@npm:2.1.3":
version: 2.1.3
resolution: "@vitest/runner@npm:2.1.3"
dependencies:
"@vitest/utils": "npm:2.1.3"
pathe: "npm:^1.1.2"
checksum: 10/cdf9b82d388c1cc148753f4a8632dfcadf9c4a1c0e065fdcd485d5af824af62507fd7eab9efb21244009775c05773ccb59547043af522a5ab6d216433321066e
languageName: node
linkType: hard

"@vitest/snapshot@npm:2.1.2":
version: 2.1.2
resolution: "@vitest/snapshot@npm:2.1.2"
Expand All @@ -3841,6 +3892,17 @@ __metadata:
languageName: node
linkType: hard

"@vitest/snapshot@npm:2.1.3":
version: 2.1.3
resolution: "@vitest/snapshot@npm:2.1.3"
dependencies:
"@vitest/pretty-format": "npm:2.1.3"
magic-string: "npm:^0.30.11"
pathe: "npm:^1.1.2"
checksum: 10/2c0c4ad8abb758f2f76d1d6094f8928360437e09d0a59e0c6a85a544c892cc41a5324ebbc5657a66c8a3793e51cbf58e357c7f71e899f4e5c5eb76e8c9745abf
languageName: node
linkType: hard

"@vitest/spy@npm:2.1.2, @vitest/spy@npm:^2.1.0-beta.1":
version: 2.1.2
resolution: "@vitest/spy@npm:2.1.2"
Expand All @@ -3850,6 +3912,15 @@ __metadata:
languageName: node
linkType: hard

"@vitest/spy@npm:2.1.3":
version: 2.1.3
resolution: "@vitest/spy@npm:2.1.3"
dependencies:
tinyspy: "npm:^3.0.0"
checksum: 10/94d6f1bc34da5d0c973d9382c133b938e555fcf2d238edf0aaad3de1a98dd57ebf7c104ba229c6beec48122d2e6f55386d8d2cf96a5804dc95ac683a54754cc7
languageName: node
linkType: hard

"@vitest/utils@npm:2.1.2":
version: 2.1.2
resolution: "@vitest/utils@npm:2.1.2"
Expand All @@ -3861,6 +3932,17 @@ __metadata:
languageName: node
linkType: hard

"@vitest/utils@npm:2.1.3":
version: 2.1.3
resolution: "@vitest/utils@npm:2.1.3"
dependencies:
"@vitest/pretty-format": "npm:2.1.3"
loupe: "npm:^3.1.1"
tinyrainbow: "npm:^1.2.0"
checksum: 10/f064e6634cb84c925a17d8937df7441d150c3e24fa5bbd6304151d11dab6cdeb0cb3d5a95a9aacb8b416c87fb0d9aa8c6b9cc5e174191784231e8345948d6d18
languageName: node
linkType: hard

"@vue/compiler-core@npm:3.4.32":
version: 3.4.32
resolution: "@vue/compiler-core@npm:3.4.32"
Expand Down Expand Up @@ -4111,11 +4193,11 @@ __metadata:
dependencies:
"@scure/base": "npm:^1.1.9"
"@xylabs/assert": "workspace:^"
"@xylabs/lodash": "npm:^4.2.0"
"@xylabs/ts-scripts-yarn3": "npm:^4.2.0"
"@xylabs/tsconfig": "npm:^4.2.0"
"@xylabs/typeof": "workspace:^"
typescript: "npm:^5.6.3"
vitest: "npm:^2.1.3"
languageName: unknown
linkType: soft

Expand Down Expand Up @@ -4325,7 +4407,7 @@ __metadata:
languageName: unknown
linkType: soft

"@xylabs/lodash@npm:^4.2.0, @xylabs/lodash@workspace:packages/lodash":
"@xylabs/lodash@workspace:packages/lodash":
version: 0.0.0-use.local
resolution: "@xylabs/lodash@workspace:packages/lodash"
dependencies:
Expand Down Expand Up @@ -17757,6 +17839,20 @@ __metadata:
languageName: node
linkType: hard

"vite-node@npm:2.1.3":
version: 2.1.3
resolution: "vite-node@npm:2.1.3"
dependencies:
cac: "npm:^6.7.14"
debug: "npm:^4.3.6"
pathe: "npm:^1.1.2"
vite: "npm:^5.0.0"
bin:
vite-node: vite-node.mjs
checksum: 10/8ba6b145cbb02a492c7bb1f0490d02383000462f234ed61d24f650547163825c16f14e6908ee1eb661403bd0a7a3fb3cdbedf116cc015b1e5cdf7bb992872a01
languageName: node
linkType: hard

"vite@npm:^5.0.0":
version: 5.4.0
resolution: "vite@npm:5.4.0"
Expand Down Expand Up @@ -17849,6 +17945,55 @@ __metadata:
languageName: node
linkType: hard

"vitest@npm:^2.1.3":
version: 2.1.3
resolution: "vitest@npm:2.1.3"
dependencies:
"@vitest/expect": "npm:2.1.3"
"@vitest/mocker": "npm:2.1.3"
"@vitest/pretty-format": "npm:^2.1.3"
"@vitest/runner": "npm:2.1.3"
"@vitest/snapshot": "npm:2.1.3"
"@vitest/spy": "npm:2.1.3"
"@vitest/utils": "npm:2.1.3"
chai: "npm:^5.1.1"
debug: "npm:^4.3.6"
magic-string: "npm:^0.30.11"
pathe: "npm:^1.1.2"
std-env: "npm:^3.7.0"
tinybench: "npm:^2.9.0"
tinyexec: "npm:^0.3.0"
tinypool: "npm:^1.0.0"
tinyrainbow: "npm:^1.2.0"
vite: "npm:^5.0.0"
vite-node: "npm:2.1.3"
why-is-node-running: "npm:^2.3.0"
peerDependencies:
"@edge-runtime/vm": "*"
"@types/node": ^18.0.0 || >=20.0.0
"@vitest/browser": 2.1.3
"@vitest/ui": 2.1.3
happy-dom: "*"
jsdom: "*"
peerDependenciesMeta:
"@edge-runtime/vm":
optional: true
"@types/node":
optional: true
"@vitest/browser":
optional: true
"@vitest/ui":
optional: true
happy-dom:
optional: true
jsdom:
optional: true
bin:
vitest: vitest.mjs
checksum: 10/f6079a88583045b551e6526c08774aeac4a9cf85b132793a03f9470c013326abd7fce3985e3c2217dc0dac2fadeee3506e3dc51e215f10862b2fe9da9289af0f
languageName: node
linkType: hard

"vm-browserify@npm:^1.0.0":
version: 1.1.2
resolution: "vm-browserify@npm:1.1.2"
Expand Down

0 comments on commit dd98e57

Please sign in to comment.