Skip to content

Commit

Permalink
Run prettier
Browse files Browse the repository at this point in the history
  • Loading branch information
ptrckvzn committed Apr 25, 2023
1 parent 35bfc51 commit 3954089
Show file tree
Hide file tree
Showing 13 changed files with 160 additions and 136 deletions.
25 changes: 12 additions & 13 deletions lefthook.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,15 @@
# run: bundle audit
#

pre-commit:
parallel: true
commands:
eslint:
glob: "*.{js,ts,jsx,tsx}"
run: node_modules/.bin/eslint --ignore-path .gitignore --fix {staged_files}
typecheck:
glob: "*.{js,ts,jsx,tsx}"
run: node_modules/.bin/tsc
package:
glob: "**/package.json"
run: node_modules/.bin/sort-package-json

pre-commit:
parallel: true
commands:
eslint:
glob: '*.{js,ts,jsx,tsx}'
run: node_modules/.bin/eslint --ignore-path .gitignore --fix {staged_files}
typecheck:
glob: '*.{js,ts,jsx,tsx}'
run: node_modules/.bin/tsc
package:
glob: '**/package.json'
run: node_modules/.bin/sort-package-json
8 changes: 2 additions & 6 deletions src/deserialize.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@ function deserializeRelationships(
depth: number,
): Resource[] {
return resources
.map((resource) =>
deserializeRelationship(resource, store, depth),
)
.map((resource) => deserializeRelationship(resource, store, depth))
.filter((resource) => !!resource)
}

Expand All @@ -35,9 +33,7 @@ export function deserializeMany<Type extends { type: string; id: ID }>(
store: NormalizedStore,
depth = 0,
): Resource[] {
return result.map((resource) =>
deserializeOne(resource, store, depth),
)
return result.map((resource) => deserializeOne(resource, store, depth))
}

export function deserializeOne<Type extends { type: string; id: ID }>(
Expand Down
59 changes: 35 additions & 24 deletions src/helpers/blocks.ts
Original file line number Diff line number Diff line change
@@ -1,62 +1,73 @@
export interface DResource {
id: string;
type: string;
attributes?: Record<string, any>;
relationships?: Record<string, DResourceRelationship<DResource>>;
id: string
type: string
attributes?: Record<string, any>
relationships?: Record<string, DResourceRelationship<DResource>>
meta?: Record<string, any>
links?: Record<string, any>;
links?: Record<string, any>
}

export interface DResourceRelationship<T> {
data: undefined | T
meta?: Record<string, any>
links?: Record<string, any>;
links?: Record<string, any>
}

interface BlockDRelationship extends DResourceRelationship<BlockDResource[]> {
meta: {
editors: Record<string, string[]>;
};
editors: Record<string, string[]>
}
}

interface BlockDResource extends DResource {
type: 'blocks';
type: 'blocks'
attributes: {
blockType: string;
position: number;
content: Record<string, any>;
blockType: string
position: number
content: Record<string, any>
}
relationships: {
blocks: DResourceRelationship<BlockDResource>;
};
blocks: DResourceRelationship<BlockDResource>
}
}

function e(editorName: string, relationship: BlockDRelationship): BlockDResource[] | null {
function e(
editorName: string,
relationship: BlockDRelationship,
): BlockDResource[] | null {
if (typeof relationship.data === 'undefined') {
return null
}

if (!Array.isArray(relationship.data) || !Array.isArray(relationship.meta.editors[editorName])) {
if (
!Array.isArray(relationship.data) ||
!Array.isArray(relationship.meta.editors[editorName])
) {
return null
}

const ids = relationship.meta.editors[editorName];
const ids = relationship.meta.editors[editorName]

const blocks: BlockDResource[] = ids.map(
(id: string) => {
const blocks: BlockDResource[] = ids
.map((id: string) => {
if (typeof relationship.data !== 'undefined') {
return relationship.data.find((block: BlockDResource) => block.id === id)
return relationship.data.find(
(block: BlockDResource) => block.id === id,
)
}
return undefined
}
).filter(n => n) as BlockDResource[]
})
.filter((n) => n) as BlockDResource[]

return blocks.sort((a: BlockDResource, b: BlockDResource) => a.attributes.position - b.attributes.position)
return blocks.sort(
(a: BlockDResource, b: BlockDResource) =>
a.attributes.position - b.attributes.position,
)
}

export function blocks(
resource: DResource,
editorName: string | null = null
editorName: string | null = null,
): Record<string, BlockDResource[] | null> {
if (!resource.relationships?.blocks) {
return {}
Expand Down
26 changes: 15 additions & 11 deletions src/helpers/files.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import {camelCaseKeys} from '@/utils/camel-case-keys'
import {DResource, DResourceRelationship} from './blocks'
import { camelCaseKeys } from '@/utils/camel-case-keys'
import { DResource, DResourceRelationship } from './blocks'

interface FileDResource extends DResource {
type: 'files';
type: 'files'
attributes: {
createdAt: string
updatedAt: string
Expand All @@ -20,13 +20,13 @@ interface FileDResource extends DResource {

interface FileDRelationship extends DResourceRelationship<FileDResource[]> {
meta: {
roles: Record<string, string[]>;
roles: Record<string, string[]>
}
}

export function files(
resource: DResource,
role: string | null = null
role: string | null = null,
): Record<string, FileDResource[]> {
if (!resource.relationships?.files) {
return {}
Expand All @@ -41,12 +41,16 @@ export function files(
}

for (const [key, value] of Object.entries(roles)) {
files[key] = value.map<FileDResource | null>((id) => {
if (typeof relationship.data === 'undefined' || !relationship.data) {
return null
}
return relationship.data.find((file: FileDResource) => file.id === id) as FileDResource
}).filter(n => n) as FileDResource[]
files[key] = value
.map<FileDResource | null>((id) => {
if (typeof relationship.data === 'undefined' || !relationship.data) {
return null
}
return relationship.data.find(
(file: FileDResource) => file.id === id,
) as FileDResource
})
.filter((n) => n) as FileDResource[]
}

return camelCaseKeys(files) as Record<string, FileDResource[]>
Expand Down
17 changes: 11 additions & 6 deletions src/helpers/media.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import {camelCaseKeys} from '@/utils/camel-case-keys'
import {DResource, DResourceRelationship} from './blocks'
import { camelCaseKeys } from '@/utils/camel-case-keys'
import { DResource, DResourceRelationship } from './blocks'

interface MediaDResource extends DResource {
type: 'media';
type: 'media'
attributes: {
createdAt: string
updatedAt: string
Expand Down Expand Up @@ -30,7 +30,7 @@ interface MediaDResource extends DResource {

interface MediaDRelationship extends DResourceRelationship<MediaDResource[]> {
meta: {
roles: Record<string, Record<string, string>[]>;
roles: Record<string, Record<string, string>[]>
}
}

Expand All @@ -52,12 +52,17 @@ export function media(
if (typeof relationship.data === 'undefined' || !relationship.data) {
break
}
crops[key] = relationship.data.find((media: MediaDResource) => media.id === value) as MediaDResource
crops[key] = relationship.data.find(
(media: MediaDResource) => media.id === value,
) as MediaDResource
}

return crops
})
}

return camelCaseKeys(images) as Record<string, Record<string, MediaDResource>[]>
return camelCaseKeys(images) as Record<
string,
Record<string, MediaDResource>[]
>
}
49 changes: 29 additions & 20 deletions src/helpers/related-items.ts
Original file line number Diff line number Diff line change
@@ -1,32 +1,34 @@
import {camelCaseKeys} from '@/utils/camel-case-keys'
import {DResource, DResourceRelationship} from './blocks'
import { camelCaseKeys } from '@/utils/camel-case-keys'
import { DResource, DResourceRelationship } from './blocks'

interface RelatedItemDResource extends DResource {
type: 'related-items';
type: 'related-items'
attributes: {
browserName: string
position: number
};
}
relationships: {
related: DResourceRelationship<DResource>
};
related: DResourceRelationship<DResource>
}
}

interface RelatedItemDRelationship extends DResourceRelationship<RelatedItemDResource[]> {
interface RelatedItemDRelationship
extends DResourceRelationship<RelatedItemDResource[]> {
meta: {
browsers: Record<string, string[]>;
browsers: Record<string, string[]>
}
}

export function browsers(
resource: DResource,
name: string | null = null
name: string | null = null,
): Record<string, DResource[]> {
if (!resource.relationships?.relatedItems) {
return {}
}

const relationship = resource.relationships.relatedItems as RelatedItemDRelationship
const relationship = resource.relationships
.relatedItems as RelatedItemDRelationship
const related: Record<string, RelatedItemDResource[]> = {}
let browsers = relationship.meta.browsers

Expand All @@ -35,20 +37,27 @@ export function browsers(
}

for (const [key, value] of Object.entries(browsers)) {
related[key] = value.map<RelatedItemDResource | null>((id) => {
if (typeof relationship.data === 'undefined' || !relationship.data) {
return null
}
return relationship.data.find((item: RelatedItemDResource) => item.id === id) as RelatedItemDResource
}).filter(n => n) as RelatedItemDResource[]
related[key] = value
.map<RelatedItemDResource | null>((id) => {
if (typeof relationship.data === 'undefined' || !relationship.data) {
return null
}
return relationship.data.find(
(item: RelatedItemDResource) => item.id === id,
) as RelatedItemDResource
})
.filter((n) => n) as RelatedItemDResource[]
}

const items: Record<string, DResource[]> = Object.keys(related).reduce((acc: Record<string, DResource[]>, name) => {
const items: Record<string, DResource[]> = Object.keys(related).reduce(
(acc: Record<string, DResource[]>, name) => {
acc[name] = related[name]
.map((item) => item.relationships.related.data)
.filter(n => n) as DResource[]
return acc;
}, {} as Record<string, DResource[]>)
.filter((n) => n) as DResource[]
return acc
},
{} as Record<string, DResource[]>,
)

return camelCaseKeys(items) as Record<string, DResource[]>
}
16 changes: 9 additions & 7 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
import { QueryBuilder } from '@/query-builder'
import {ID, JsonApiDataResponse, JsonApiResource, NormalizedErrorResponse, Resource} from '@/types'
import {
ID,
JsonApiDataResponse,
JsonApiResource,
NormalizedErrorResponse,
Resource,
} from '@/types'
import { normalize } from '@/normalize'
import { deserialize } from '@/deserialize'
import { blocks } from '@/helpers/blocks'
Expand Down Expand Up @@ -84,11 +90,7 @@ export const Twill = (options: TwillOptions) => {
return [] as Resource[]
}

return deserialize(
normalized.result,
normalized.resources,
0,
) as Resource[]
return deserialize(normalized.result, normalized.resources, 0) as Resource[]
}

return {
Expand All @@ -103,7 +105,7 @@ export const Twill = (options: TwillOptions) => {
getBlocks: blocks,
getMedia: media,
getFiles: files,
getBrowsers: browsers
getBrowsers: browsers,
},
transform,
}
Expand Down
Loading

0 comments on commit 3954089

Please sign in to comment.