Skip to content

Commit c22eca9

Browse files
committed
wipset
1 parent 2938c7d commit c22eca9

File tree

9 files changed

+108
-39
lines changed

9 files changed

+108
-39
lines changed

CHANGELOG.md

+48
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,53 @@
11
## [1.2.5](https://github.com/ThinAirThings/uix/compare/v1.2.4...v1.2.5) (2024-05-23)
22

3+
## 3.0.13
4+
5+
### Patch Changes
6+
7+
- testing
8+
9+
## 3.0.12
10+
11+
### Patch Changes
12+
13+
- update useNodeKey
14+
15+
## 3.0.11
16+
17+
### Patch Changes
18+
19+
- made nodeKey optional to support things like mapped over skeleton loading
20+
21+
## 3.0.10
22+
23+
### Patch Changes
24+
25+
- update before pushing to prod
26+
27+
## 3.0.9
28+
29+
### Patch Changes
30+
31+
- try new driver creation
32+
33+
## 3.0.8
34+
35+
### Patch Changes
36+
37+
- add logs to neo4j driver creation
38+
39+
## 3.0.7
40+
41+
### Patch Changes
42+
43+
- add logs
44+
45+
## 3.0.6
46+
47+
### Patch Changes
48+
49+
- various stability changes
50+
351
## 3.0.5
452

553
### Patch Changes

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@thinairthings/uix",
33
"author": "Dan Lannan",
4-
"version": "3.0.5",
4+
"version": "3.0.13",
55
"type": "module",
66
"types": "./dist/lib/index.d.ts",
77
"bin": {
@@ -17,7 +17,7 @@
1717
"test:basic": "dotenvx run -f .env.test -- pnpm build && dotenvx run -f .env.test -- vitest run basic --test-timeout=100000",
1818
"test:match": "pnpm build && dotenvx run -f .env.test -- vitest run match --test-timeout=100000",
1919
"uix": "dotenvx run -f .env.test -- node ./dist/cli/cli.js --config=./tests/uix/uix.config.ts",
20-
"wipset": "changeset && changeset version && changeset publish"
20+
"wipset": "changeset && changeset version && changeset publish && git add . && git commit -m 'wipset' && git push"
2121
},
2222
"exports": {
2323
".": {

src/fns/getNodeByIndexFactory.ts

-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ import { AnyNodeTypeMap, NodeShape } from "../types/NodeType"
44
import { Ok, UixErr, UixErrSubtype } from "../types/Result"
55

66

7-
8-
97
export const getNodeByIndexFactory = <
108
NodeTypeMap extends AnyNodeTypeMap,
119
>(

src/templates/hooks/useNodeKeyTemplate.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export const useNodeKey = <
2222
nodeKey,
2323
select
2424
}:{
25-
nodeKey: NodeKey<ConfiguredNodeTypeMap, NodeType>,
25+
nodeKey?: NodeKey<ConfiguredNodeTypeMap, NodeType>,
2626
select?: (data: NodeShape<ConfiguredNodeTypeMap[NodeType]>) => Data
2727
}) => {
2828
const queryOptions = NodeKeyQueryOptions({nodeKey, select})

src/templates/queryOptions/queryOptionsTemplate.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { stringLiteralType } from "../../utilities/stringLiteralType";
44

55
export const queryOptionsTemplate = () => /*ts*/`
66
'use client'
7-
import { queryOptions } from '@tanstack/react-query'
7+
import { queryOptions, skipToken } from '@tanstack/react-query'
88
import {
99
getUniqueChildNode,
1010
getChildNodeSet,
@@ -115,15 +115,15 @@ export const NodeKeyQueryOptions = <
115115
nodeKey,
116116
select
117117
}:{
118-
nodeKey: NodeKey<ConfiguredNodeTypeMap, NodeType>,
118+
nodeKey?: NodeKey<ConfiguredNodeTypeMap, NodeType>,
119119
select?: (data: NodeShape<ConfiguredNodeTypeMap[NodeType]>) => Data
120120
}) => queryOptions({
121-
queryKey: [nodeKey.nodeType, nodeKey.nodeId] as const,
122-
queryFn: async ({ queryKey: [nodeType, nodeId] }) => {
123-
const result = await getNodeByKey({nodeKey: { nodeType, nodeId }})
121+
queryKey: [nodeKey?.nodeType, nodeKey?.nodeId] as const,
122+
queryFn: nodeKey ? async () => {
123+
const result = await getNodeByKey({ nodeKey })
124124
if (result.error) throw new QueryError(result.error)
125125
return result.data
126-
},
126+
} : skipToken,
127127
select
128128
})
129129

src/templates/singleNodeTemplate.ts

+12-8
Original file line numberDiff line numberDiff line change
@@ -51,21 +51,25 @@ export const singleNodeTemplate = (
5151
}
5252
})
5353
${includeDeleteMutation ? /*ts*/`const deleteMutation = useMutation({
54-
mutationFn: async () => {
54+
mutationFn: async ({
55+
nodeKey
56+
}: {
57+
nodeKey: NodeKey<ConfiguredNodeTypeMap, NodeType>
58+
}) => {
5559
console.log("Running Mutation: ", 'deleteNode({ nodeType: ' + nodeKey.nodeType + 'nodeId: ' + nodeKey.nodeId)
56-
const { data: parentNodeKey } = await deleteNode({nodeKey: { nodeType: nodeKey.nodeType, nodeId: nodeKey.nodeId }})
57-
if (!parentNodeKey) throw new Error("Failed to delete node")
58-
return parentNodeKey
60+
const { data: parentNodeKeys } = await deleteNode({nodeKey: { nodeType: nodeKey.nodeType, nodeId: nodeKey.nodeId }})
61+
if (!parentNodeKeys) throw new Error("Failed to delete node")
62+
return {deletedNodeKey: nodeKey, parentNodeKeys}
5963
},
60-
onSuccess: (parentNodeKeys) => {
61-
queryClient.setQueryData([nodeKey.nodeType, nodeKey.nodeId], null)
64+
onSuccess: ({parentNodeKeys, deletedNodeKey}) => {
65+
queryClient.setQueryData([deletedNodeKey.nodeType, deletedNodeKey.nodeId], null)
6266
parentNodeKeys.forEach(({ parentNodeId, parentNodeType }) => {
6367
queryClient.invalidateQueries({
64-
queryKey: [parentNodeType, parentNodeId, nodeKey.nodeType]
68+
queryKey: [parentNodeType, parentNodeId, deletedNodeKey.nodeType]
6569
})
6670
})
6771
queryClient.invalidateQueries({
68-
queryKey: [nodeKey.nodeType]
72+
queryKey: [deletedNodeKey.nodeType]
6973
})
7074
}
7175
})

tests/uix/generated/queryOptions.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
'use client'
3-
import { queryOptions } from '@tanstack/react-query'
3+
import { queryOptions, skipToken } from '@tanstack/react-query'
44
import {
55
getUniqueChildNode,
66
getChildNodeSet,
@@ -111,15 +111,15 @@ export const NodeKeyQueryOptions = <
111111
nodeKey,
112112
select
113113
}:{
114-
nodeKey: NodeKey<ConfiguredNodeTypeMap, NodeType>,
114+
nodeKey?: NodeKey<ConfiguredNodeTypeMap, NodeType>,
115115
select?: (data: NodeShape<ConfiguredNodeTypeMap[NodeType]>) => Data
116116
}) => queryOptions({
117-
queryKey: [nodeKey.nodeType, nodeKey.nodeId] as const,
118-
queryFn: async ({ queryKey: [nodeType, nodeId] }) => {
119-
const result = await getNodeByKey({nodeKey: { nodeType, nodeId }})
117+
queryKey: [nodeKey?.nodeType, nodeKey?.nodeId] as const,
118+
queryFn: nodeKey ? async () => {
119+
const result = await getNodeByKey({ nodeKey })
120120
if (result.error) throw new QueryError(result.error)
121121
return result.data
122-
},
122+
} : skipToken,
123123
select
124124
})
125125

tests/uix/generated/useNodeKey.ts

+13-9
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export const useNodeKey = <
1919
nodeKey,
2020
select
2121
}:{
22-
nodeKey: NodeKey<ConfiguredNodeTypeMap, NodeType>,
22+
nodeKey?: NodeKey<ConfiguredNodeTypeMap, NodeType>,
2323
select?: (data: NodeShape<ConfiguredNodeTypeMap[NodeType]>) => Data
2424
}) => {
2525
const queryOptions = NodeKeyQueryOptions({nodeKey, select})
@@ -73,21 +73,25 @@ export const useNodeKey = <
7373
}
7474
})
7575
const deleteMutation = useMutation({
76-
mutationFn: async () => {
76+
mutationFn: async ({
77+
nodeKey
78+
}: {
79+
nodeKey: NodeKey<ConfiguredNodeTypeMap, NodeType>
80+
}) => {
7781
console.log("Running Mutation: ", 'deleteNode({ nodeType: ' + nodeKey.nodeType + 'nodeId: ' + nodeKey.nodeId)
78-
const { data: parentNodeKey } = await deleteNode({nodeKey: { nodeType: nodeKey.nodeType, nodeId: nodeKey.nodeId }})
79-
if (!parentNodeKey) throw new Error("Failed to delete node")
80-
return parentNodeKey
82+
const { data: parentNodeKeys } = await deleteNode({nodeKey: { nodeType: nodeKey.nodeType, nodeId: nodeKey.nodeId }})
83+
if (!parentNodeKeys) throw new Error("Failed to delete node")
84+
return {deletedNodeKey: nodeKey, parentNodeKeys}
8185
},
82-
onSuccess: (parentNodeKeys) => {
83-
queryClient.setQueryData([nodeKey.nodeType, nodeKey.nodeId], null)
86+
onSuccess: ({parentNodeKeys, deletedNodeKey}) => {
87+
queryClient.setQueryData([deletedNodeKey.nodeType, deletedNodeKey.nodeId], null)
8488
parentNodeKeys.forEach(({ parentNodeId, parentNodeType }) => {
8589
queryClient.invalidateQueries({
86-
queryKey: [parentNodeType, parentNodeId, nodeKey.nodeType]
90+
queryKey: [parentNodeType, parentNodeId, deletedNodeKey.nodeType]
8791
})
8892
})
8993
queryClient.invalidateQueries({
90-
queryKey: [nodeKey.nodeType]
94+
queryKey: [deletedNodeKey.nodeType]
9195
})
9296
}
9397
})

tests/uix/generated/useNodeSet.ts

+20-5
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,16 @@ export const useNodeSet = <
3131
const { data, error } = useQuery(queryOptions)
3232
const createNodeMutation = useMutation({
3333
mutationFn: async ({
34-
nodeId = uuid(),
35-
createdAt = new Date().getTime(),
36-
updatedAt = new Date().getTime(),
34+
nodeId,
35+
createdAt,
36+
updatedAt,
37+
nodeType,
3738
...initialState
3839
}: NodeShape<ConfiguredNodeTypeMap[ChildNodeType]>) => {
3940
return await createNode({
4041
parentNodeKeys: [parentNodeKey],
4142
childNodeType,
42-
initialState,
43+
initialState: initialState as NodeState<ConfiguredNodeTypeMap[ChildNodeType]>,
4344
providedNodeId: nodeId,
4445
})
4546
},
@@ -52,9 +53,23 @@ export const useNodeSet = <
5253
})
5354
return { previousData }
5455
},
56+
onError: (err, newData, context) => {
57+
queryClient.setQueryData(queryOptions.queryKey, context?.previousData)
58+
},
5559
onSuccess: () => queryClient.invalidateQueries({
5660
queryKey: [parentNodeKey.nodeType, parentNodeKey.nodeId, childNodeType]
5761
})
5862
})
59-
return { data, error, createNodeMutation }
63+
return {
64+
data, error, createNode: (...[initialState, handlers]: [
65+
NodeState<ConfiguredNodeTypeMap[ChildNodeType]>,
66+
Parameters<typeof createNodeMutation['mutate']>[1]?
67+
]) => createNodeMutation.mutateAsync({
68+
nodeId: uuid(),
69+
createdAt: new Date().getTime(),
70+
updatedAt: new Date().getTime(),
71+
nodeType: childNodeType,
72+
...initialState
73+
}, handlers)
74+
}
6075
}

0 commit comments

Comments
 (0)