@teleporthq/teleport-plugin-next-data-source 0.43.75 → 0.44.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__tests__/_helpers/first-page-runtime.ts +184 -0
- package/__tests__/_helpers/pagination-widget-fixture.ts +154 -5
- package/__tests__/booking-item-transform.test.ts +120 -0
- package/__tests__/browser-row-policy.test.ts +210 -4
- package/__tests__/data-source-request-locale.test.ts +4 -3
- package/__tests__/fetchers.test.ts +7 -3
- package/__tests__/fixed-list-sort.test.ts +1 -1
- package/__tests__/infinite-scroll.test.ts +363 -9
- package/__tests__/list-sort-order.test.ts +61 -0
- package/__tests__/null-filter-where.test.ts +132 -0
- package/__tests__/page-data-visitor-read.test.ts +196 -0
- package/__tests__/pg-date-parser.test.ts +73 -0
- package/__tests__/plain-list-sort.test.ts +2 -2
- package/__tests__/plain-list-starting-sort.test.ts +323 -0
- package/__tests__/product-price-sort.ts +11 -6
- package/__tests__/range-control.test.ts +159 -0
- package/__tests__/refetch-loading-state.test.ts +158 -2
- package/__tests__/search-input-marker.test.ts +86 -0
- package/__tests__/search-url-sync.test.ts +34 -8
- package/__tests__/starting-sort-first-page.test.ts +285 -0
- package/__tests__/table-read-route-protected-tables.test.ts +33 -3
- package/dist/cjs/cache/ast.d.ts +2 -0
- package/dist/cjs/cache/ast.d.ts.map +1 -1
- package/dist/cjs/cache/ast.js +5 -2
- package/dist/cjs/cache/ast.js.map +1 -1
- package/dist/cjs/count-effect.d.ts +7 -1
- package/dist/cjs/count-effect.d.ts.map +1 -1
- package/dist/cjs/count-effect.js +15 -5
- package/dist/cjs/count-effect.js.map +1 -1
- package/dist/cjs/data-source-fetchers.d.ts.map +1 -1
- package/dist/cjs/data-source-fetchers.js +10 -2
- package/dist/cjs/data-source-fetchers.js.map +1 -1
- package/dist/cjs/fetchers/pg-client-import.d.ts +12 -0
- package/dist/cjs/fetchers/pg-client-import.d.ts.map +1 -0
- package/dist/cjs/fetchers/pg-client-import.js +15 -0
- package/dist/cjs/fetchers/pg-client-import.js.map +1 -0
- package/dist/cjs/fetchers/postgresql.d.ts.map +1 -1
- package/dist/cjs/fetchers/postgresql.js +3 -1
- package/dist/cjs/fetchers/postgresql.js.map +1 -1
- package/dist/cjs/fetchers/raw-query.d.ts.map +1 -1
- package/dist/cjs/fetchers/raw-query.js +2 -1
- package/dist/cjs/fetchers/raw-query.js.map +1 -1
- package/dist/cjs/fetchers/teleport.d.ts.map +1 -1
- package/dist/cjs/fetchers/teleport.js +4 -2
- package/dist/cjs/fetchers/teleport.js.map +1 -1
- package/dist/cjs/fetchers/utils/browser-row-policy.d.ts.map +1 -1
- package/dist/cjs/fetchers/utils/browser-row-policy.js +5 -1
- package/dist/cjs/fetchers/utils/browser-row-policy.js.map +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +14 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/infinite-scroll.d.ts +89 -4
- package/dist/cjs/infinite-scroll.d.ts.map +1 -1
- package/dist/cjs/infinite-scroll.js +243 -33
- package/dist/cjs/infinite-scroll.js.map +1 -1
- package/dist/cjs/list-sort-order.d.ts +14 -0
- package/dist/cjs/list-sort-order.d.ts.map +1 -0
- package/dist/cjs/list-sort-order.js +36 -0
- package/dist/cjs/list-sort-order.js.map +1 -0
- package/dist/cjs/loading-state.d.ts +23 -2
- package/dist/cjs/loading-state.d.ts.map +1 -1
- package/dist/cjs/loading-state.js +50 -15
- package/dist/cjs/loading-state.js.map +1 -1
- package/dist/cjs/pagination-controls.d.ts +22 -3
- package/dist/cjs/pagination-controls.d.ts.map +1 -1
- package/dist/cjs/pagination-controls.js +29 -3
- package/dist/cjs/pagination-controls.js.map +1 -1
- package/dist/cjs/pagination-plugin.d.ts.map +1 -1
- package/dist/cjs/pagination-plugin.js +336 -164
- package/dist/cjs/pagination-plugin.js.map +1 -1
- package/dist/cjs/range-control.d.ts +45 -0
- package/dist/cjs/range-control.d.ts.map +1 -0
- package/dist/cjs/range-control.js +165 -0
- package/dist/cjs/range-control.js.map +1 -0
- package/dist/cjs/row-order.d.ts +3 -2
- package/dist/cjs/row-order.d.ts.map +1 -1
- package/dist/cjs/row-order.js +5 -4
- package/dist/cjs/row-order.js.map +1 -1
- package/dist/cjs/search-input.d.ts +42 -0
- package/dist/cjs/search-input.d.ts.map +1 -0
- package/dist/cjs/search-input.js +158 -0
- package/dist/cjs/search-input.js.map +1 -0
- package/dist/cjs/sort-utils.d.ts +53 -1
- package/dist/cjs/sort-utils.d.ts.map +1 -1
- package/dist/cjs/sort-utils.js +105 -13
- package/dist/cjs/sort-utils.js.map +1 -1
- package/dist/cjs/transformations/booking-item.d.ts +24 -0
- package/dist/cjs/transformations/booking-item.d.ts.map +1 -0
- package/dist/cjs/transformations/booking-item.js +27 -0
- package/dist/cjs/transformations/booking-item.js.map +1 -0
- package/dist/cjs/transformations/index.d.ts +4 -2
- package/dist/cjs/transformations/index.d.ts.map +1 -1
- package/dist/cjs/transformations/index.js +14 -5
- package/dist/cjs/transformations/index.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/utils.d.ts +3 -2
- package/dist/cjs/utils.d.ts.map +1 -1
- package/dist/cjs/utils.js +48 -18
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/cache/ast.d.ts +2 -0
- package/dist/esm/cache/ast.d.ts.map +1 -1
- package/dist/esm/cache/ast.js +3 -1
- package/dist/esm/cache/ast.js.map +1 -1
- package/dist/esm/count-effect.d.ts +7 -1
- package/dist/esm/count-effect.d.ts.map +1 -1
- package/dist/esm/count-effect.js +15 -5
- package/dist/esm/count-effect.js.map +1 -1
- package/dist/esm/data-source-fetchers.d.ts.map +1 -1
- package/dist/esm/data-source-fetchers.js +10 -2
- package/dist/esm/data-source-fetchers.js.map +1 -1
- package/dist/esm/fetchers/pg-client-import.d.ts +12 -0
- package/dist/esm/fetchers/pg-client-import.d.ts.map +1 -0
- package/dist/esm/fetchers/pg-client-import.js +12 -0
- package/dist/esm/fetchers/pg-client-import.js.map +1 -0
- package/dist/esm/fetchers/postgresql.d.ts.map +1 -1
- package/dist/esm/fetchers/postgresql.js +3 -1
- package/dist/esm/fetchers/postgresql.js.map +1 -1
- package/dist/esm/fetchers/raw-query.d.ts.map +1 -1
- package/dist/esm/fetchers/raw-query.js +2 -1
- package/dist/esm/fetchers/raw-query.js.map +1 -1
- package/dist/esm/fetchers/teleport.d.ts.map +1 -1
- package/dist/esm/fetchers/teleport.js +4 -2
- package/dist/esm/fetchers/teleport.js.map +1 -1
- package/dist/esm/fetchers/utils/browser-row-policy.d.ts.map +1 -1
- package/dist/esm/fetchers/utils/browser-row-policy.js +6 -2
- package/dist/esm/fetchers/utils/browser-row-policy.js.map +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +14 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/infinite-scroll.d.ts +89 -4
- package/dist/esm/infinite-scroll.d.ts.map +1 -1
- package/dist/esm/infinite-scroll.js +237 -32
- package/dist/esm/infinite-scroll.js.map +1 -1
- package/dist/esm/list-sort-order.d.ts +14 -0
- package/dist/esm/list-sort-order.d.ts.map +1 -0
- package/dist/esm/list-sort-order.js +32 -0
- package/dist/esm/list-sort-order.js.map +1 -0
- package/dist/esm/loading-state.d.ts +23 -2
- package/dist/esm/loading-state.d.ts.map +1 -1
- package/dist/esm/loading-state.js +50 -15
- package/dist/esm/loading-state.js.map +1 -1
- package/dist/esm/pagination-controls.d.ts +22 -3
- package/dist/esm/pagination-controls.d.ts.map +1 -1
- package/dist/esm/pagination-controls.js +28 -2
- package/dist/esm/pagination-controls.js.map +1 -1
- package/dist/esm/pagination-plugin.d.ts.map +1 -1
- package/dist/esm/pagination-plugin.js +340 -168
- package/dist/esm/pagination-plugin.js.map +1 -1
- package/dist/esm/range-control.d.ts +45 -0
- package/dist/esm/range-control.d.ts.map +1 -0
- package/dist/esm/range-control.js +137 -0
- package/dist/esm/range-control.js.map +1 -0
- package/dist/esm/row-order.d.ts +3 -2
- package/dist/esm/row-order.d.ts.map +1 -1
- package/dist/esm/row-order.js +5 -4
- package/dist/esm/row-order.js.map +1 -1
- package/dist/esm/search-input.d.ts +42 -0
- package/dist/esm/search-input.d.ts.map +1 -0
- package/dist/esm/search-input.js +129 -0
- package/dist/esm/search-input.js.map +1 -0
- package/dist/esm/sort-utils.d.ts +53 -1
- package/dist/esm/sort-utils.d.ts.map +1 -1
- package/dist/esm/sort-utils.js +100 -12
- package/dist/esm/sort-utils.js.map +1 -1
- package/dist/esm/transformations/booking-item.d.ts +24 -0
- package/dist/esm/transformations/booking-item.d.ts.map +1 -0
- package/dist/esm/transformations/booking-item.js +23 -0
- package/dist/esm/transformations/booking-item.js.map +1 -0
- package/dist/esm/transformations/index.d.ts +4 -2
- package/dist/esm/transformations/index.d.ts.map +1 -1
- package/dist/esm/transformations/index.js +14 -5
- package/dist/esm/transformations/index.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/utils.d.ts +3 -2
- package/dist/esm/utils.d.ts.map +1 -1
- package/dist/esm/utils.js +49 -19
- package/dist/esm/utils.js.map +1 -1
- package/package.json +5 -5
- package/src/cache/ast.ts +4 -1
- package/src/count-effect.ts +31 -8
- package/src/data-source-fetchers.ts +33 -14
- package/src/fetchers/pg-client-import.ts +16 -0
- package/src/fetchers/postgresql.ts +15 -9
- package/src/fetchers/raw-query.ts +2 -1
- package/src/fetchers/teleport.ts +19 -10
- package/src/fetchers/utils/browser-row-policy.ts +79 -5
- package/src/index.ts +8 -2
- package/src/infinite-scroll.ts +420 -81
- package/src/list-sort-order.ts +34 -0
- package/src/loading-state.ts +85 -13
- package/src/pagination-controls.ts +26 -3
- package/src/pagination-plugin.ts +532 -218
- package/src/range-control.ts +207 -0
- package/src/row-order.ts +5 -4
- package/src/search-input.ts +190 -0
- package/src/sort-utils.ts +164 -21
- package/src/transformations/booking-item.ts +71 -0
- package/src/transformations/index.ts +25 -2
- package/src/utils.ts +55 -18
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
import * as types from '@babel/types'
|
|
2
|
+
import generator from '@babel/generator'
|
|
3
|
+
import { ComponentStructure, UIDLStateDefinition } from '@teleporthq/teleport-types'
|
|
4
|
+
import { createNextArrayMapperPaginationPlugin } from '../src/pagination-plugin'
|
|
5
|
+
import { extractDynamicSort, readSortStateDefaults } from '../src/sort-utils'
|
|
6
|
+
import {
|
|
7
|
+
bootProductsRoute,
|
|
8
|
+
browserParams,
|
|
9
|
+
buildTimeArguments,
|
|
10
|
+
orderBy,
|
|
11
|
+
rowWindow,
|
|
12
|
+
} from './_helpers/first-page-runtime'
|
|
13
|
+
import {
|
|
14
|
+
makeGetStaticPropsChunk,
|
|
15
|
+
makeUidlNode,
|
|
16
|
+
makeWidgetComponentChunk,
|
|
17
|
+
type RepeaterOptions,
|
|
18
|
+
} from './_helpers/pagination-widget-fixture'
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The store's products listing sorts by the dropdown a visitor picks from —
|
|
22
|
+
* `sortBy.split("-")[0]`, a page state starting at "name-asc". The build did
|
|
23
|
+
* not know where that sort starts, so it fetched the listing's first page
|
|
24
|
+
* unsorted and the list dropped it: the server HTML carried loading skeletons
|
|
25
|
+
* in every pagination mode. The build now fetches page 1 by the sort a visitor
|
|
26
|
+
* starts with, and the list shows those rows while the sort is still there.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
// tslint:disable:no-any
|
|
30
|
+
|
|
31
|
+
const STORE_SORT = {
|
|
32
|
+
sort: { type: 'expr', content: `sortBy.split("-")[0] || ''` },
|
|
33
|
+
sortDirection: { type: 'expr', content: `sortBy.split("-")[1] || ''` },
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// The sort dropdown's state, as the store template declares it.
|
|
37
|
+
const SORT_DROPDOWN: Record<string, UIDLStateDefinition> = {
|
|
38
|
+
sortBy: { type: 'string', defaultValue: 'name-asc', urlSearchParamBinding: { key: 'sortBy' } },
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const STARTING_SORTS = `(sortBy => JSON.stringify([{ field: sortBy.split("-")?.[0] || '', order: sortBy.split("-")?.[1] || '' }]))("name-asc")`
|
|
42
|
+
|
|
43
|
+
const collapse = (code: string): string => code.replace(/\s+/g, ' ')
|
|
44
|
+
|
|
45
|
+
const runPagePlugin = async (
|
|
46
|
+
repeater: RepeaterOptions,
|
|
47
|
+
// `null`: the page declares no state, so the build cannot know the sort.
|
|
48
|
+
stateDefinitions: Record<string, UIDLStateDefinition> | null = SORT_DROPDOWN
|
|
49
|
+
) => {
|
|
50
|
+
const chunk = makeWidgetComponentChunk({ controls: ['previous', 'next', 'load-more'] })
|
|
51
|
+
const staticPropsChunk = makeGetStaticPropsChunk()
|
|
52
|
+
const structure: ComponentStructure = {
|
|
53
|
+
uidl: {
|
|
54
|
+
name: 'ProductsList',
|
|
55
|
+
node: makeUidlNode({ ...STORE_SORT, ...repeater }),
|
|
56
|
+
...(stateDefinitions ? { stateDefinitions } : {}),
|
|
57
|
+
},
|
|
58
|
+
chunks: [chunk, staticPropsChunk],
|
|
59
|
+
dependencies: {},
|
|
60
|
+
options: { dataSources: {}, extractedResources: {} },
|
|
61
|
+
} as never
|
|
62
|
+
await createNextArrayMapperPaginationPlugin()(structure)
|
|
63
|
+
return {
|
|
64
|
+
component: collapse(generator(chunk.content as types.Node).code),
|
|
65
|
+
staticProps: collapse(generator(staticPropsChunk.content as types.Node).code),
|
|
66
|
+
chunk,
|
|
67
|
+
staticPropsChunk,
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const categoryFilter = {
|
|
72
|
+
type: 'condition',
|
|
73
|
+
source: 'category',
|
|
74
|
+
destination: { type: 'dynamic', content: { referenceType: 'state', id: 'selectedCategory' } },
|
|
75
|
+
operand: '=',
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
describe('readSortStateDefaults', () => {
|
|
79
|
+
const sortOf = (sort: string, direction?: string) =>
|
|
80
|
+
extractDynamicSort(
|
|
81
|
+
{ type: 'expr', content: sort },
|
|
82
|
+
direction ? { type: 'expr', content: direction } : undefined
|
|
83
|
+
)!
|
|
84
|
+
|
|
85
|
+
it('reads the dropdown state the store sort starts at', () => {
|
|
86
|
+
const sort = sortOf(STORE_SORT.sort.content, STORE_SORT.sortDirection.content)
|
|
87
|
+
expect(readSortStateDefaults(sort, SORT_DROPDOWN)).toEqual([
|
|
88
|
+
{ binding: 'sortBy', value: 'name-asc' },
|
|
89
|
+
])
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
it('reads a column state and a direction state, as the admin tables bind them', () => {
|
|
93
|
+
const sort = sortOf(`usersSortColumn || ''`, `usersSortDirection || ''`)
|
|
94
|
+
expect(
|
|
95
|
+
readSortStateDefaults(sort, {
|
|
96
|
+
usersSortColumn: { type: 'string', defaultValue: 'created_at' },
|
|
97
|
+
usersSortDirection: { type: 'string', defaultValue: 'desc' },
|
|
98
|
+
})
|
|
99
|
+
).toEqual([
|
|
100
|
+
{ binding: 'usersSortColumn', value: 'created_at' },
|
|
101
|
+
{ binding: 'usersSortDirection', value: 'desc' },
|
|
102
|
+
])
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
it('cannot know a sort that reads anything but a state starting at a fixed value', () => {
|
|
106
|
+
const states: Record<string, UIDLStateDefinition> = {
|
|
107
|
+
...SORT_DROPDOWN,
|
|
108
|
+
seeded: {
|
|
109
|
+
type: 'string',
|
|
110
|
+
defaultValue: 'name',
|
|
111
|
+
dataSourceBinding: { dataSourceId: 'ds1' } as never,
|
|
112
|
+
},
|
|
113
|
+
picked: { type: 'array', defaultValue: ['name'] },
|
|
114
|
+
}
|
|
115
|
+
// A prop, the browser, an undeclared name, a state seeded from data, a
|
|
116
|
+
// state that is not a single value.
|
|
117
|
+
expect(readSortStateDefaults(sortOf('props.sortColumn'), states)).toBeUndefined()
|
|
118
|
+
expect(readSortStateDefaults(sortOf('window.sortColumn || sortBy'), states)).toBeUndefined()
|
|
119
|
+
expect(readSortStateDefaults(sortOf('sortColumn'), states)).toBeUndefined()
|
|
120
|
+
expect(readSortStateDefaults(sortOf('seeded'), states)).toBeUndefined()
|
|
121
|
+
expect(readSortStateDefaults(sortOf('picked[0]'), states)).toBeUndefined()
|
|
122
|
+
expect(readSortStateDefaults(sortOf(STORE_SORT.sort.content), undefined)).toBeUndefined()
|
|
123
|
+
})
|
|
124
|
+
|
|
125
|
+
it('takes a sort that reads nothing as never moving', () => {
|
|
126
|
+
expect(readSortStateDefaults(sortOf(`('name')`, `('desc')`), SORT_DROPDOWN)).toEqual([])
|
|
127
|
+
})
|
|
128
|
+
})
|
|
129
|
+
|
|
130
|
+
describe('a list sorted by a dropdown, on a page', () => {
|
|
131
|
+
it('fetches its first page at build time by the sort a visitor starts with', async () => {
|
|
132
|
+
const { staticProps } = await runPagePlugin({ searchEnabled: true })
|
|
133
|
+
|
|
134
|
+
// The browser's own sort expression, with the dropdown at its default —
|
|
135
|
+
// not a copy of what the default means.
|
|
136
|
+
expect(staticProps).toContain(
|
|
137
|
+
`postgresqlProductsDs1.fetchData({ page: 1, perPage: 20, queryColumns: JSON.stringify(["name"]), sorts: ${STARTING_SORTS} }, { as: "visitor" })`
|
|
138
|
+
)
|
|
139
|
+
})
|
|
140
|
+
|
|
141
|
+
it('shows those rows on page 1 while the sort, the search and the filter are untouched', async () => {
|
|
142
|
+
const { component } = await runPagePlugin({ searchEnabled: true, filters: [categoryFilter] })
|
|
143
|
+
|
|
144
|
+
expect(component).toContain(
|
|
145
|
+
'initialData={ds_0_state.page === 1 && !ds_0_state.debouncedQuery && sortBy === "name-asc" && !selectedCategory ? props?.items_ds_0 : undefined}'
|
|
146
|
+
)
|
|
147
|
+
})
|
|
148
|
+
|
|
149
|
+
it('does the same for a list without search', async () => {
|
|
150
|
+
const { component, staticProps } = await runPagePlugin({})
|
|
151
|
+
|
|
152
|
+
expect(staticProps).toContain(`sorts: ${STARTING_SORTS}`)
|
|
153
|
+
expect(component).toContain(
|
|
154
|
+
'initialData={ds_0_page === 1 && sortBy === "name-asc" ? props?.items_ds_0 : undefined}'
|
|
155
|
+
)
|
|
156
|
+
})
|
|
157
|
+
|
|
158
|
+
it('and for a search list that does not page', async () => {
|
|
159
|
+
const { component, staticProps } = await runPagePlugin({
|
|
160
|
+
paginated: false,
|
|
161
|
+
searchEnabled: true,
|
|
162
|
+
})
|
|
163
|
+
|
|
164
|
+
expect(staticProps).toContain(`sorts: ${STARTING_SORTS}`)
|
|
165
|
+
expect(component).toContain(
|
|
166
|
+
'initialData={!ds_0_debouncedQuery && sortBy === "name-asc" ? props?.items_ds_0 : undefined}'
|
|
167
|
+
)
|
|
168
|
+
})
|
|
169
|
+
|
|
170
|
+
it('starts an infinite-scroll list from them, frozen, while the sort is untouched', async () => {
|
|
171
|
+
const { component, staticProps } = await runPagePlugin({ infiniteScroll: true })
|
|
172
|
+
|
|
173
|
+
expect(staticProps).toContain(`sorts: ${STARTING_SORTS}`)
|
|
174
|
+
expect(component).toContain('initialData={ds_0_firstPage}')
|
|
175
|
+
expect(component).toContain(
|
|
176
|
+
'const ds_0_firstPage = useMemo(() => sortBy === "name-asc" && props?.items_ds_0?.length > 0 ? props?.items_ds_0 : undefined, [])'
|
|
177
|
+
)
|
|
178
|
+
// Filed as page 1 under the signature fetchData computes from the same
|
|
179
|
+
// params, so page 2 appends to them.
|
|
180
|
+
expect(component).toContain('const sig = JSON.stringify({ ...ds_0_params, page: 0 })')
|
|
181
|
+
})
|
|
182
|
+
|
|
183
|
+
it('declares the frozen first page below the sort state it reads', async () => {
|
|
184
|
+
// The dropdown's state as the component plugin declares it, at the top of
|
|
185
|
+
// the body; the first page reads it while rendering.
|
|
186
|
+
const chunk = makeWidgetComponentChunk({ controls: ['load-more'] })
|
|
187
|
+
const body = (
|
|
188
|
+
(chunk.content as types.VariableDeclaration).declarations[0]
|
|
189
|
+
.init as types.ArrowFunctionExpression
|
|
190
|
+
).body as types.BlockStatement
|
|
191
|
+
body.body.unshift(
|
|
192
|
+
types.variableDeclaration('const', [
|
|
193
|
+
types.variableDeclarator(
|
|
194
|
+
types.arrayPattern([types.identifier('sortBy'), types.identifier('setSortBy')]),
|
|
195
|
+
types.callExpression(types.identifier('useState'), [types.stringLiteral('name-asc')])
|
|
196
|
+
),
|
|
197
|
+
])
|
|
198
|
+
)
|
|
199
|
+
const structure: ComponentStructure = {
|
|
200
|
+
uidl: {
|
|
201
|
+
name: 'ProductsList',
|
|
202
|
+
node: makeUidlNode({ ...STORE_SORT, infiniteScroll: true }),
|
|
203
|
+
stateDefinitions: SORT_DROPDOWN,
|
|
204
|
+
},
|
|
205
|
+
chunks: [chunk, makeGetStaticPropsChunk()],
|
|
206
|
+
dependencies: {},
|
|
207
|
+
options: { dataSources: {}, extractedResources: {} },
|
|
208
|
+
} as never
|
|
209
|
+
await createNextArrayMapperPaginationPlugin()(structure)
|
|
210
|
+
const code = collapse(generator(chunk.content as types.Node).code)
|
|
211
|
+
|
|
212
|
+
expect(code.indexOf('const [sortBy, setSortBy] = useState("name-asc")')).toBeGreaterThan(-1)
|
|
213
|
+
expect(code.indexOf('const [sortBy, setSortBy]')).toBeLessThan(
|
|
214
|
+
code.indexOf('const ds_0_firstPage =')
|
|
215
|
+
)
|
|
216
|
+
})
|
|
217
|
+
|
|
218
|
+
it('starts a Load more list from them too, per query', async () => {
|
|
219
|
+
const { component } = await runPagePlugin({
|
|
220
|
+
infiniteScroll: true,
|
|
221
|
+
infiniteScrollLoadMore: true,
|
|
222
|
+
searchEnabled: true,
|
|
223
|
+
})
|
|
224
|
+
|
|
225
|
+
expect(component).toContain(
|
|
226
|
+
'const ds_0_firstPage = useMemo(() => !ds_0_state.debouncedQuery && sortBy === "name-asc" && props?.items_ds_0?.length > 0 ? props?.items_ds_0 : undefined, [ds_0_state.debouncedQuery])'
|
|
227
|
+
)
|
|
228
|
+
expect(component).toContain('initialData={ds_0_firstPage}')
|
|
229
|
+
})
|
|
230
|
+
|
|
231
|
+
it('keeps fetching page 1 in the browser when the build cannot know the starting sort', async () => {
|
|
232
|
+
for (const repeater of [{ searchEnabled: true }, { infiniteScroll: true }]) {
|
|
233
|
+
const { component, staticProps } = await runPagePlugin(repeater, null)
|
|
234
|
+
expect(component).not.toContain('initialData')
|
|
235
|
+
expect(staticProps).not.toContain('sorts:')
|
|
236
|
+
}
|
|
237
|
+
})
|
|
238
|
+
})
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Executed: what the build fetches and what the browser asks for next must be
|
|
242
|
+
* one ordering of one row set, page after page.
|
|
243
|
+
*/
|
|
244
|
+
describe('the first page and the next, run', () => {
|
|
245
|
+
const buildTimeParams = (staticPropsChunk: any): Record<string, unknown> =>
|
|
246
|
+
buildTimeArguments(staticPropsChunk)[0]
|
|
247
|
+
|
|
248
|
+
it('sends the build and the browser one sort string while the dropdown is untouched', async () => {
|
|
249
|
+
const { staticPropsChunk, chunk } = await runPagePlugin({ searchEnabled: true })
|
|
250
|
+
const atBuild = buildTimeParams(staticPropsChunk)
|
|
251
|
+
const inBrowser = browserParams(chunk, {
|
|
252
|
+
ds_0_state: { page: 2, debouncedQuery: '' },
|
|
253
|
+
sortBy: 'name-asc',
|
|
254
|
+
})
|
|
255
|
+
|
|
256
|
+
expect(atBuild.sorts).toBe('[{"field":"name","order":"asc"}]')
|
|
257
|
+
expect(inBrowser.sorts).toBe(atBuild.sorts)
|
|
258
|
+
// Any other pick is another query, fetched fresh.
|
|
259
|
+
expect(
|
|
260
|
+
browserParams(chunk, { ds_0_state: { page: 1, debouncedQuery: '' }, sortBy: 'price-desc' })
|
|
261
|
+
.sorts
|
|
262
|
+
).toBe('[{"field":"price","order":"desc"}]')
|
|
263
|
+
})
|
|
264
|
+
|
|
265
|
+
it('orders page 1 at build time exactly as the browser orders page 2', async () => {
|
|
266
|
+
const { staticPropsChunk, chunk } = await runPagePlugin({ searchEnabled: true })
|
|
267
|
+
const route = bootProductsRoute()
|
|
268
|
+
|
|
269
|
+
const firstPage = await route.atBuild(buildTimeArguments(staticPropsChunk))
|
|
270
|
+
const secondPage = await route.inBrowser(
|
|
271
|
+
browserParams(chunk, { ds_0_state: { page: 2, debouncedQuery: '' }, sortBy: 'name-asc' })
|
|
272
|
+
)
|
|
273
|
+
|
|
274
|
+
// The same columns, rows without a value last, the row's id breaking ties.
|
|
275
|
+
expect(orderBy(firstPage)).toBe(' ORDER BY name ASC NULLS LAST, "id" ASC LIMIT')
|
|
276
|
+
expect(orderBy(secondPage)).toBe(orderBy(firstPage))
|
|
277
|
+
// Page 2 starts where page 1 ends.
|
|
278
|
+
expect(rowWindow(firstPage)).toBe(' LIMIT 20 OFFSET 0')
|
|
279
|
+
expect(rowWindow(secondPage)).toBe(' LIMIT 20 OFFSET 20')
|
|
280
|
+
// Over the same rows: the products a visitor is served, never a draft the
|
|
281
|
+
// build could read as the store.
|
|
282
|
+
expect(firstPage).toContain("WHERE (LOWER(TRIM(status)) = 'active')")
|
|
283
|
+
expect(firstPage.replace(/ OFFSET \d+$/, '')).toBe(secondPage.replace(/ OFFSET \d+$/, ''))
|
|
284
|
+
})
|
|
285
|
+
})
|
|
@@ -62,7 +62,10 @@ function bootTableRoute(
|
|
|
62
62
|
})
|
|
63
63
|
// The route is an ES module; run it as a script with the same bindings.
|
|
64
64
|
const code = esm
|
|
65
|
-
.replace(
|
|
65
|
+
.replace(
|
|
66
|
+
"import { Client, types as pgTypes } from 'pg'",
|
|
67
|
+
"const { Client, types: pgTypes } = require('pg')"
|
|
68
|
+
)
|
|
66
69
|
.replace(/^export default async function handler/m, 'async function handler')
|
|
67
70
|
.replace(/^export \{[^}]*\}\s*$/m, '')
|
|
68
71
|
.replace(/^export default \{[^}]*\}\s*$/m, '')
|
|
@@ -436,7 +439,7 @@ describe('buildProductTransformOptions — the roles reach the emitted module',
|
|
|
436
439
|
})
|
|
437
440
|
|
|
438
441
|
describe('resolveTrustedReaderRoles', () => {
|
|
439
|
-
it(
|
|
442
|
+
it("reads the roles off the admin folder, never off one admin page's own roles", () => {
|
|
440
443
|
const roles = TableAccess.resolveTrustedReaderRoles({
|
|
441
444
|
enabled: true,
|
|
442
445
|
dataSourceId: 'ds-1',
|
|
@@ -487,7 +490,34 @@ describe('resolveTrustedReaderRoles', () => {
|
|
|
487
490
|
envKeys: {},
|
|
488
491
|
customUserProperties: [],
|
|
489
492
|
})
|
|
490
|
-
|
|
493
|
+
// `staff` opens `/admin/orders` only: a page's role is no reader of every
|
|
494
|
+
// protected table (an admin page may also admit staff).
|
|
495
|
+
expect(roles).toEqual(['admin'])
|
|
491
496
|
expect(TableAccess.resolveTrustedReaderRoles(undefined)).toEqual([])
|
|
492
497
|
})
|
|
498
|
+
|
|
499
|
+
it('refuses staff admitted to some admin pages the accounts table on its read route', async () => {
|
|
500
|
+
const staffPagesAuth: UIDLAuthentication = {
|
|
501
|
+
...ADMIN_PANEL_AUTH,
|
|
502
|
+
roles: ['admin', 'staff', 'user'],
|
|
503
|
+
pageProtection: {
|
|
504
|
+
dashboard: {
|
|
505
|
+
requiresAuth: true,
|
|
506
|
+
allowedRoles: ['admin', 'staff'],
|
|
507
|
+
pageName: 'dashboard',
|
|
508
|
+
route: '/admin/dashboard',
|
|
509
|
+
},
|
|
510
|
+
tasks: {
|
|
511
|
+
requiresAuth: true,
|
|
512
|
+
allowedRoles: ['admin', 'staff'],
|
|
513
|
+
pageName: 'tasks',
|
|
514
|
+
route: '/admin/tasks',
|
|
515
|
+
},
|
|
516
|
+
},
|
|
517
|
+
}
|
|
518
|
+
const options = buildProductTransformOptions({ authentication: staffPagesAuth })
|
|
519
|
+
const users = bootTableRoute('users', options.trustedReaderRoles || [])
|
|
520
|
+
expect((await users({ handler: 'handler', session: { role: 'staff' } })).status).toBe(403)
|
|
521
|
+
expect((await users({ handler: 'handler', session: { role: 'admin' } })).status).toBe(200)
|
|
522
|
+
})
|
|
493
523
|
})
|
package/dist/cjs/cache/ast.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ import { ResolvedDataSourceCache } from './types';
|
|
|
4
4
|
/** Identifiers the emitted page imports from `utils/tq-cache/client`. */
|
|
5
5
|
export declare const CACHE_CLIENT_IMPORTS: string[];
|
|
6
6
|
export declare const cachedValueVarFor: (index: number) => string;
|
|
7
|
+
/** The component const a provider's hoisted `params` live in. */
|
|
8
|
+
export declare const paramsVarFor: (index: number) => string;
|
|
7
9
|
/**
|
|
8
10
|
* Registers the client runtime's named imports on the page.
|
|
9
11
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../../src/cache/ast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAE3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAEjD,yEAAyE;AACzE,eAAO,MAAM,oBAAoB,UAOhC,CAAA;AAMD,eAAO,MAAM,iBAAiB,UAAW,MAAM,KAAG,MAA8B,CAAA;AAEhF;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,iBACvB,OAAO,MAAM,EAAE,cAAc,CAAC,cAChC,MAAM,EAAE,GAAG,SAAS,KAC/B,IAYF,CAAA;AAyCD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,UACvB,uBAAuB,KAC7B,MAAM,uBAkCR,CAAA;AAED,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,iBACjB,MAAM,UAAU,SACvB,uBAAuB,KAC7B,MAAM,cAIL,CAAA;AAEJ;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,SAChC,MAAM,cAAc,KACzB;IAAE,SAAS,EAAE,MAAM,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAcxD,CAAA;AAkBD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,6BAA6B,WAAY;IACpD,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,UAAU,CAAA;IAC5B,KAAK,EAAE,uBAAuB,CAAA;CAC/B;kBACe,MAAM,SAAS,EAAE;sBACb,MAAM;sBACN,MAAM;CAkCzB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,WAAY,MAAM,EAAE,KAAG,MAAM,SAgBhE,CAAA"}
|
|
1
|
+
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../../src/cache/ast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAE3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAEjD,yEAAyE;AACzE,eAAO,MAAM,oBAAoB,UAOhC,CAAA;AAMD,eAAO,MAAM,iBAAiB,UAAW,MAAM,KAAG,MAA8B,CAAA;AAEhF,iEAAiE;AACjE,eAAO,MAAM,YAAY,UAAW,MAAM,KAAG,MAA8B,CAAA;AAE3E;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,iBACvB,OAAO,MAAM,EAAE,cAAc,CAAC,cAChC,MAAM,EAAE,GAAG,SAAS,KAC/B,IAYF,CAAA;AAyCD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,UACvB,uBAAuB,KAC7B,MAAM,uBAkCR,CAAA;AAED,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,iBACjB,MAAM,UAAU,SACvB,uBAAuB,KAC7B,MAAM,cAIL,CAAA;AAEJ;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,SAChC,MAAM,cAAc,KACzB;IAAE,SAAS,EAAE,MAAM,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAcxD,CAAA;AAkBD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,6BAA6B,WAAY;IACpD,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,UAAU,CAAA;IAC5B,KAAK,EAAE,uBAAuB,CAAA;CAC/B;kBACe,MAAM,SAAS,EAAE;sBACb,MAAM;sBACN,MAAM;CAkCzB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,WAAY,MAAM,EAAE,KAAG,MAAM,SAgBhE,CAAA"}
|
package/dist/cjs/cache/ast.js
CHANGED
|
@@ -32,7 +32,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
32
32
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
33
33
|
};
|
|
34
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
exports.buildCacheHydrationEffect = exports.buildCachedParamsDeclarations = exports.findCachedFetchNetworkChain = exports.buildCachedFetchBody = exports.buildCacheStoreThen = exports.registerCacheClientImports = exports.cachedValueVarFor = exports.CACHE_CLIENT_IMPORTS = void 0;
|
|
35
|
+
exports.buildCacheHydrationEffect = exports.buildCachedParamsDeclarations = exports.findCachedFetchNetworkChain = exports.buildCachedFetchBody = exports.buildCacheStoreThen = exports.registerCacheClientImports = exports.paramsVarFor = exports.cachedValueVarFor = exports.CACHE_CLIENT_IMPORTS = void 0;
|
|
36
36
|
var types = __importStar(require("@babel/types"));
|
|
37
37
|
var teleport_shared_1 = require("@teleporthq/teleport-shared");
|
|
38
38
|
/** Identifiers the emitted page imports from `utils/tq-cache/client`. */
|
|
@@ -49,6 +49,9 @@ var KEY_VAR = '__tqKey';
|
|
|
49
49
|
var HIT_VAR = '__tqHit';
|
|
50
50
|
var cachedValueVarFor = function (index) { return "ds_".concat(index, "_cached"); };
|
|
51
51
|
exports.cachedValueVarFor = cachedValueVarFor;
|
|
52
|
+
/** The component const a provider's hoisted `params` live in. */
|
|
53
|
+
var paramsVarFor = function (index) { return "ds_".concat(index, "_params"); };
|
|
54
|
+
exports.paramsVarFor = paramsVarFor;
|
|
52
55
|
/**
|
|
53
56
|
* Registers the client runtime's named imports on the page.
|
|
54
57
|
*
|
|
@@ -180,7 +183,7 @@ var callChainStartsWithFetch = function (expression) {
|
|
|
180
183
|
* — the memo only keeps the peek from re-running on unrelated renders.
|
|
181
184
|
*/
|
|
182
185
|
var buildCachedParamsDeclarations = function (params) {
|
|
183
|
-
var paramsIdentifier =
|
|
186
|
+
var paramsIdentifier = (0, exports.paramsVarFor)(params.index);
|
|
184
187
|
var cachedIdentifier = (0, exports.cachedValueVarFor)(params.index);
|
|
185
188
|
return {
|
|
186
189
|
paramsIdentifier: paramsIdentifier,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../../src/cache/ast.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../../src/cache/ast.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,12 @@ interface CountEffectOptions {
|
|
|
19
19
|
perPage: number;
|
|
20
20
|
/** Name of the `setDs_N_maxPages` setter. */
|
|
21
21
|
setMaxPagesVar: string;
|
|
22
|
+
/**
|
|
23
|
+
* Name of the `setDs_N_total` setter, declared only when the component draws
|
|
24
|
+
* a `range` control ("Showing 1–8 of 12"): the page count alone cannot say
|
|
25
|
+
* how many rows there are.
|
|
26
|
+
*/
|
|
27
|
+
setTotalVar?: string;
|
|
22
28
|
/**
|
|
23
29
|
* Params sent to the count endpoint: the search query (when the list has
|
|
24
30
|
* one), `queryColumns`, and the filter array. Built by the caller because
|
|
@@ -38,7 +44,7 @@ interface CountEffectOptions {
|
|
|
38
44
|
}
|
|
39
45
|
/** `const ds_N_countSeq = useRef(0)` */
|
|
40
46
|
export declare const buildCountSeqDeclaration: (countSeqRefVar: string) => types.Statement;
|
|
41
|
-
export declare const buildCountFetchStatement: (options: Pick<CountEffectOptions, 'fileName' | 'perPage' | 'setMaxPagesVar' | 'urlParams' | 'countSeqRefVar'>) => types.Statement;
|
|
47
|
+
export declare const buildCountFetchStatement: (options: Pick<CountEffectOptions, 'fileName' | 'perPage' | 'setMaxPagesVar' | 'setTotalVar' | 'urlParams' | 'countSeqRefVar'>) => types.Statement;
|
|
42
48
|
/**
|
|
43
49
|
* The whole `useEffect(...)` wrapper.
|
|
44
50
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"count-effect.d.ts","sourceRoot":"","sources":["../../src/count-effect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC;;;;;;;;;;;;GAYG;AAEH,UAAU,kBAAkB;IAC1B,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAA;IAChB,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAA;IACf,6CAA6C;IAC7C,cAAc,EAAE,MAAM,CAAA;IACtB;;;;OAIG;IACH,SAAS,EAAE,KAAK,CAAC,cAAc,EAAE,CAAA;IACjC,iDAAiD;IACjD,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,CAAA;IACxB;;;;;;OAMG;IACH,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,wCAAwC;AACxC,eAAO,MAAM,wBAAwB,mBAAoB,MAAM,KAAG,MAAM,SAMpE,CAAA;
|
|
1
|
+
{"version":3,"file":"count-effect.d.ts","sourceRoot":"","sources":["../../src/count-effect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC;;;;;;;;;;;;GAYG;AAEH,UAAU,kBAAkB;IAC1B,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAA;IAChB,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAA;IACf,6CAA6C;IAC7C,cAAc,EAAE,MAAM,CAAA;IACtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,SAAS,EAAE,KAAK,CAAC,cAAc,EAAE,CAAA;IACjC,iDAAiD;IACjD,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,CAAA;IACxB;;;;;;OAMG;IACH,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,wCAAwC;AACxC,eAAO,MAAM,wBAAwB,mBAAoB,MAAM,KAAG,MAAM,SAMpE,CAAA;AA4EJ,eAAO,MAAM,wBAAwB,YAC1B,KACP,kBAAkB,EAClB,UAAU,GAAG,SAAS,GAAG,gBAAgB,GAAG,aAAa,GAAG,WAAW,GAAG,gBAAgB,CAC3F,KACA,MAAM,SAqDN,CAAA;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,YAAa,kBAAkB,KAAG,MAAM,mBAYvE,CAAA"}
|
package/dist/cjs/count-effect.js
CHANGED
|
@@ -61,6 +61,20 @@ var buildCountSeqCapture = function (countSeqRefVar) {
|
|
|
61
61
|
var buildStaleCountGuard = function (countSeqRefVar) {
|
|
62
62
|
return types.ifStatement(types.binaryExpression('!==', types.identifier(COUNT_SEQ_LOCAL), refCurrent(countSeqRefVar)), types.returnStatement());
|
|
63
63
|
};
|
|
64
|
+
/** `setDs_N_maxPages(...)` and, for a component with a range control, `setDs_N_total(data.count)`. */
|
|
65
|
+
var buildCountSetters = function (options) {
|
|
66
|
+
var setters = [
|
|
67
|
+
types.expressionStatement(types.callExpression(types.identifier(options.setMaxPagesVar), [
|
|
68
|
+
buildMaxPagesExpression(options.perPage),
|
|
69
|
+
])),
|
|
70
|
+
];
|
|
71
|
+
if (options.setTotalVar) {
|
|
72
|
+
setters.push(types.expressionStatement(types.callExpression(types.identifier(options.setTotalVar), [
|
|
73
|
+
types.memberExpression(types.identifier('data'), types.identifier('count')),
|
|
74
|
+
])));
|
|
75
|
+
}
|
|
76
|
+
return setters;
|
|
77
|
+
};
|
|
64
78
|
var buildCountFetchStatement = function (options) {
|
|
65
79
|
return types.expressionStatement(types.callExpression(types.memberExpression(types.callExpression(types.memberExpression(types.callExpression(types.identifier('fetch'), [
|
|
66
80
|
types.templateLiteral([
|
|
@@ -79,11 +93,7 @@ var buildCountFetchStatement = function (options) {
|
|
|
79
93
|
]), types.identifier('then')), [
|
|
80
94
|
types.arrowFunctionExpression([types.identifier('data')], types.blockStatement([
|
|
81
95
|
buildStaleCountGuard(options.countSeqRefVar),
|
|
82
|
-
types.ifStatement(types.logicalExpression('&&', types.identifier('data'), types.binaryExpression('in', types.stringLiteral('count'), types.identifier('data'))), types.blockStatement(
|
|
83
|
-
types.expressionStatement(types.callExpression(types.identifier(options.setMaxPagesVar), [
|
|
84
|
-
buildMaxPagesExpression(options.perPage),
|
|
85
|
-
])),
|
|
86
|
-
])),
|
|
96
|
+
types.ifStatement(types.logicalExpression('&&', types.identifier('data'), types.binaryExpression('in', types.stringLiteral('count'), types.identifier('data'))), types.blockStatement(buildCountSetters(options))),
|
|
87
97
|
])),
|
|
88
98
|
]));
|
|
89
99
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"count-effect.js","sourceRoot":"","sources":["../../src/count-effect.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAqC;
|
|
1
|
+
{"version":3,"file":"count-effect.js","sourceRoot":"","sources":["../../src/count-effect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-source-fetchers.d.ts","sourceRoot":"","sources":["../../src/data-source-fetchers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3E,OAAO,EA6BL,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,YAAY,CAAA;AAGnB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE/D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"data-source-fetchers.d.ts","sourceRoot":"","sources":["../../src/data-source-fetchers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3E,OAAO,EA6BL,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,YAAY,CAAA;AAGnB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE/D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAA;AAajE,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,CAAA;AAE/D,UAAU,6BAA6B;IACrC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,eAAO,MAAM,kCAAkC,WAAY,OAAO,MAAM,EAAE,OAAO,CAAC,KAAG,OAEpF,CAAA;AAED,eAAO,MAAM,yBAAyB,SAC9B,cAAc,WACX,OAAO,MAAM,EAAE,OAAO,CAAC,KAC/B,6BA4BF,CAAA;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,cAAc,EAC1B,SAAS,EAAE,MAAM,EACjB,gBAAgB,GAAE,sBAA2B,GAC5C,MAAM,CAsKR;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,cAAc,EAC1B,SAAS,EAAE,MAAM,EACjB,UAAU,GAAE,OAAe,EAC3B,gBAAgB,GAAE,sBAA2B,EAC7C,YAAY,CAAC,EAAE,4BAA4B,GAC1C,MAAM,CAiMR"}
|
|
@@ -17,6 +17,14 @@ var validation_1 = require("./validation");
|
|
|
17
17
|
var count_fetchers_1 = require("./count-fetchers");
|
|
18
18
|
var teleport_shared_1 = require("@teleporthq/teleport-shared");
|
|
19
19
|
var browser_row_policy_1 = require("./fetchers/utils/browser-row-policy");
|
|
20
|
+
/** `public."users"` → `users`: the table a spelling names. */
|
|
21
|
+
var bareTableName = function (tableName) {
|
|
22
|
+
return (String(tableName || '')
|
|
23
|
+
.trim()
|
|
24
|
+
.toLowerCase()
|
|
25
|
+
.split('.')
|
|
26
|
+
.pop() || '').replace(/"/g, '');
|
|
27
|
+
};
|
|
20
28
|
var isSupabaseConnectionStringFallback = function (config) {
|
|
21
29
|
return !!(config === null || config === void 0 ? void 0 : config.connectionString) && !(config === null || config === void 0 ? void 0 : config.supabaseUrl);
|
|
22
30
|
};
|
|
@@ -251,7 +259,7 @@ function generateDataSourceFetcherWithCore(dataSource, tableName, isApiRoute, tr
|
|
|
251
259
|
sMaxAge: cacheOptions.sMaxAge || 0,
|
|
252
260
|
swr: cacheOptions.staleWhileRevalidate || 0,
|
|
253
261
|
}), "\n\n").concat(splitsCacheByView
|
|
254
|
-
? "// The store's own server code and its administrators may be served rows a\n// visitor is not (see __brpSharesPublicView), so they read and fill a cache of\n// their own \u2014 one never marked for a shared (CDN) cache either.\nconst __tqViewDependent = ".concat(JSON.stringify((0, browser_row_policy_1.isViewDependentTable)(tableName, __spreadArray(__spreadArray([], teleport_shared_1.TableAccess.PROTECTED_TABLES, true), Object.keys(teleport_shared_1.TableAccess.PUBLIC_FEED_TABLES), true))), "\nfunction __tqCacheByView(fn, opts) {\n const publicView = tqWithCache(fn, opts)\n const trustedView = tqWithCache(fn, Object.assign({}, opts, {\n scope: opts.scope + ':trusted',\n versionScope: opts.versionScope || opts.scope,\n sMaxAge: 0,\n swr: 0,\n }))\n return async function (req, res) {\n return (await __brpSharesPublicView(req, __tqViewDependent)) ? publicView(req, res) : trustedView(req, res)\n }\n}\n\nconst cachedHandler = __tqCacheByView(handler, __tqDataCache)\nconst cachedGetCount = __tqCacheByView(getCount, __tqCountCache)")
|
|
262
|
+
? "// The store's own server code and its administrators may be served rows a\n// visitor is not (see __brpSharesPublicView), so they read and fill a cache of\n// their own \u2014 one never marked for a shared (CDN) cache either.\nconst __tqViewDependent = ".concat(JSON.stringify((0, browser_row_policy_1.isViewDependentTable)(tableName, __spreadArray(__spreadArray([], teleport_shared_1.TableAccess.PROTECTED_TABLES, true), Object.keys(teleport_shared_1.TableAccess.PUBLIC_FEED_TABLES), true))), "\n// The members' public profiles a page reads (see __BRP_PUBLIC_PROFILE) are never\n// a visitor's answer \u2014 a browser is served no row of the table \u2014 so they are\n// read fresh, never kept where a browser's request could be answered from.\nconst __tqProfileTable = ").concat(JSON.stringify(teleport_shared_1.TableAccess.AUTH_CREDENTIAL_TABLES.indexOf(bareTableName(tableName)) !== -1), "\nfunction __tqCacheByView(fn, opts) {\n const publicView = tqWithCache(fn, opts)\n const trustedView = tqWithCache(fn, Object.assign({}, opts, {\n scope: opts.scope + ':trusted',\n versionScope: opts.versionScope || opts.scope,\n sMaxAge: 0,\n swr: 0,\n }))\n return async function (req, res) {\n if (__tqProfileTable && __taIsVisitorView(req)) return fn(req, res)\n return (await __brpSharesPublicView(req, __tqViewDependent)) ? publicView(req, res) : trustedView(req, res)\n }\n}\n\nconst cachedHandler = __tqCacheByView(handler, __tqDataCache)\nconst cachedGetCount = __tqCacheByView(getCount, __tqCountCache)")
|
|
255
263
|
: "const cachedHandler = tqWithCache(handler, __tqDataCache)\nconst cachedGetCount = tqWithCache(getCount, __tqCountCache)", "\n")
|
|
256
264
|
: '';
|
|
257
265
|
var handlerExport = cacheOptions ? 'cachedHandler' : 'handler';
|
|
@@ -269,7 +277,7 @@ function generateDataSourceFetcherWithCore(dataSource, tableName, isApiRoute, tr
|
|
|
269
277
|
: isApiRoute
|
|
270
278
|
? "export default ".concat(handlerExport)
|
|
271
279
|
: "export { fetchData, fetchCount, ".concat(handlerExport, " as handler, ").concat(countExport, " as getCount }\nexport default { fetchData, fetchCount, handler: ").concat(handlerExport, ", getCount: ").concat(countExport, " }");
|
|
272
|
-
return "".concat(__spreadArray(__spreadArray([], allImports, true), [cachePreamble], false).filter(Boolean).join('\n'), "\n\
|
|
280
|
+
return "".concat(__spreadArray(__spreadArray([], allImports, true), [cachePreamble], false).filter(Boolean).join('\n'), "\n\n// Who a call from this process reads for. The store's own server code \u2014 a\n// workflow, pricing, checkout \u2014 reads every row: its request carries a marker\n// the guards trust, which no HTTP request can. A page renders what a visitor\n// may see, so its data is read `{ as: 'visitor' }`: the route answers it as it\n// answers an anonymous visitor's browser \u2014 the row policy, the refused tables,\n// the hidden columns \u2014 through the statement the page itself wrote.\nfunction __tqServerRequest(params, options) {\n if (options && options.as === 'visitor') {\n return { query: params, method: 'GET', headers: {}, __tqVisitorView: true }\n }\n return { query: params, method: 'GET', __tqServerCall: true }\n}\n\nasync function fetchData(params = {}, options = {}) {\n const req = __tqServerRequest(params, options)\n \n let result = null\n let statusCode = 200\n \n const res = {\n status: (code) => {\n statusCode = code\n return res\n },\n json: (data) => {\n result = data\n return res\n },\n }\n \n await ").concat(handlerExport, "(req, res)\n \n if (statusCode !== 200 || !result || !result.success) {\n throw new Error(result?.error || 'Failed to fetch data')\n }\n \n return result.data\n}\n\nasync function fetchCount(params = {}, options = {}) {\n const req = __tqServerRequest(params, options)\n \n let result = null\n let statusCode = 200\n \n const res = {\n status: (code) => {\n statusCode = code\n return res\n },\n json: (data) => {\n result = data\n return res\n },\n }\n \n await ").concat(countExport, "(req, res)\n \n if (statusCode !== 200 || !result || !result.success) {\n throw new Error(result?.error || 'Failed to get count')\n }\n \n return result.count\n}\n\n").concat(countFetcherWithoutImports, "\n\n").concat(handlerWithoutImports, "\n").concat(cacheWiring, "\n").concat(exports, "\n");
|
|
273
281
|
}
|
|
274
282
|
exports.generateDataSourceFetcherWithCore = generateDataSourceFetcherWithCore;
|
|
275
283
|
//# sourceMappingURL=data-source-fetchers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-source-fetchers.js","sourceRoot":"","sources":["../../src/data-source-fetchers.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,uCA+BmB;
|
|
1
|
+
{"version":3,"file":"data-source-fetchers.js","sourceRoot":"","sources":["../../src/data-source-fetchers.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,uCA+BmB;AAkBV,wGApBP,kCAAuB,OAoBO;AAAE,4GAnBhC,sCAA2B,OAmBgC;AAjB7D,2CAAqD;AACrD,mDAAuD;AAEvD,+DAAoE;AAEpE,0EAA0E;AAE1E,8DAA8D;AAC9D,IAAM,aAAa,GAAG,UAAC,SAAiB;IACtC,OAAA,CACE,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;SACpB,IAAI,EAAE;SACN,WAAW,EAAE;SACb,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,EAAE,IAAI,EAAE,CACf,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AANnB,CAMmB,CAAA;AASd,IAAM,kCAAkC,GAAG,UAAC,MAA+B;IAChF,OAAO,CAAC,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,CAAA,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,CAAA,CAAA;AAC3D,CAAC,CAAA;AAFY,QAAA,kCAAkC,sCAE9C;AAEM,IAAM,yBAAyB,GAAG,UACvC,IAAoB,EACpB,MAAgC;IAEhC,yDAAyD;IACzD,IAAI,IAAI,KAAK,UAAU,IAAI,MAAM,IAAI,IAAA,0CAAkC,EAAC,MAAM,CAAC,EAAE;QAC/E,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAA;KACpD;IAED,IAAM,aAAa,GAA0D;QAC3E,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE;QAC/D,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE;QACxD,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE;QACvD,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE;QAC1D,iBAAiB,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE;QAC/D,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE;QAC1D,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE;QACzD,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE;QACtD,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE;QACtD,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,gBAAgB,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE;QACnE,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,oBAAoB,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE;QACxE,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE;QAC7D,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,uBAAuB,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE;QACzE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,gBAAgB,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE;QAC/D,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE;QACpD,eAAe,EAAE,EAAE,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE;QACpE,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE;QACpD,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE;KACvD,CAAA;IAED,OAAO,aAAa,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC,CAAA;AA/BY,QAAA,yBAAyB,6BA+BrC;AAED,SAAgB,yBAAyB,CACvC,UAA0B,EAC1B,SAAiB,EACjB,gBAA6C;IAA7C,iCAAA,EAAA,qBAA6C;IAE7C,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QACjD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;KAC3E;IAEO,IAAA,IAAI,GAAa,UAAU,KAAvB,EAAE,MAAM,GAAK,UAAU,OAAf,CAAe;IAEnC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QACrC,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;KAC9E;IAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QACzC,MAAM,IAAI,KAAK,CAAC,sDAA+C,IAAI,CAAE,CAAC,CAAA;KACvE;IAED,IAAI;QACF,QAAQ,IAAI,EAAE;YACZ,KAAK,YAAY,CAAC;YAClB,KAAK,aAAa,CAAC,CAAC;gBAClB,IAAM,UAAU,GAAG,IAAA,mCAAsB,EAAC,MAAM,CAAC,CAAA;gBACjD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;oBACvB,MAAM,IAAI,KAAK,CAAC,2DAAoD,UAAU,CAAC,KAAK,CAAE,CAAC,CAAA;iBACxF;gBACD,OAAO,IAAA,oCAAyB,EAAC,MAAM,EAAE,SAAS,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAA;aACzF;YAED,KAAK,OAAO,CAAC;YACb,KAAK,MAAM,CAAC,CAAC;gBACX,IAAM,UAAU,GAAG,IAAA,mCAAsB,EAAC,MAAM,CAAC,CAAA;gBACjD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;oBACvB,MAAM,IAAI,KAAK,CAAC,+CAAwC,UAAU,CAAC,KAAK,CAAE,CAAC,CAAA;iBAC5E;gBACD,OAAO,IAAA,+BAAoB,EAAC,MAAM,EAAE,SAAS,CAAC,CAAA;aAC/C;YAED,KAAK,SAAS,CAAC,CAAC;gBACd,IAAM,UAAU,GAAG,IAAA,mCAAsB,EAAC,MAAM,CAAC,CAAA;gBACjD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;oBACvB,MAAM,IAAI,KAAK,CAAC,4CAAqC,UAAU,CAAC,KAAK,CAAE,CAAC,CAAA;iBACzE;gBACD,OAAO,IAAA,iCAAsB,EAAC,MAAM,EAAE,SAAS,CAAC,CAAA;aACjD;YAED,KAAK,iBAAiB,CAAC,CAAC;gBACtB,IAAM,UAAU,GAAG,IAAA,mCAAsB,EAAC,MAAM,CAAC,CAAA;gBACjD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;oBACvB,MAAM,IAAI,KAAK,CAAC,oDAA6C,UAAU,CAAC,KAAK,CAAE,CAAC,CAAA;iBACjF;gBACD,OAAO,IAAA,kCAAuB,EAAC,MAAM,EAAE,SAAS,CAAC,CAAA;aAClD;YAED,KAAK,SAAS,CAAC,CAAC;gBACd,IAAM,UAAU,GAAG,IAAA,gCAAqB,EAAC,MAAM,CAAC,CAAA;gBAChD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;oBACvB,MAAM,IAAI,KAAK,CAAC,4CAAqC,UAAU,CAAC,KAAK,CAAE,CAAC,CAAA;iBACzE;gBACD,OAAO,IAAA,iCAAsB,EAAC,MAAM,EAAE,SAAS,CAAC,CAAA;aACjD;YAED,KAAK,OAAO,CAAC,CAAC;gBACZ,IAAM,UAAU,GAAG,IAAA,8BAAmB,EAAC,MAAM,CAAC,CAAA;gBAC9C,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;oBACvB,MAAM,IAAI,KAAK,CAAC,0CAAmC,UAAU,CAAC,KAAK,CAAE,CAAC,CAAA;iBACvE;gBACD,OAAO,IAAA,+BAAoB,EAAC,MAAM,CAAC,CAAA;aACpC;YAED,KAAK,WAAW,CAAC,CAAC;gBAChB,IAAM,UAAU,GAAG,IAAA,kCAAuB,EAAC,MAAM,CAAC,CAAA;gBAClD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;oBACvB,MAAM,IAAI,KAAK,CAAC,8CAAuC,UAAU,CAAC,KAAK,CAAE,CAAC,CAAA;iBAC3E;gBACD,OAAO,IAAA,mCAAwB,EAAC,MAAM,EAAE,SAAS,CAAC,CAAA;aACnD;YAED,KAAK,YAAY,CAAC,CAAC;gBACjB,IAAM,UAAU,GAAG,IAAA,mCAAwB,EAAC,MAAM,CAAC,CAAA;gBACnD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;oBACvB,MAAM,IAAI,KAAK,CAAC,+CAAwC,UAAU,CAAC,KAAK,CAAE,CAAC,CAAA;iBAC5E;gBACD,OAAO,IAAA,oCAAyB,EAAC,MAAM,EAAE,SAAS,CAAC,CAAA;aACpD;YAED,KAAK,UAAU,CAAC,CAAC;gBACf,IAAM,UAAU,GAAG,IAAA,iCAAsB,EAAC,MAAM,CAAC,CAAA;gBACjD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;oBACvB,MAAM,IAAI,KAAK,CAAC,6CAAsC,UAAU,CAAC,KAAK,CAAE,CAAC,CAAA;iBAC1E;gBACD,OAAO,IAAA,kCAAuB,EAAC,MAAM,EAAE,SAAS,CAAC,CAAA;aAClD;YAED,KAAK,UAAU,CAAC,CAAC;gBACf,uFAAuF;gBACvF,IAAI,IAAA,0CAAkC,EAAC,MAAM,CAAC,EAAE;oBAC9C,IAAM,YAAY,GAAG,IAAA,mCAAsB,EAAC,MAAM,CAAC,CAAA;oBACnD,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;wBACzB,MAAM,IAAI,KAAK,CACb,mEAA4D,YAAY,CAAC,KAAK,CAAE,CACjF,CAAA;qBACF;oBACD,OAAO,IAAA,oCAAyB,EAAC,MAAM,EAAE,SAAS,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAA;iBACzF;gBAED,IAAM,UAAU,GAAG,IAAA,iCAAsB,EAAC,MAAM,CAAC,CAAA;gBACjD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;oBACvB,MAAM,IAAI,KAAK,CAAC,6CAAsC,UAAU,CAAC,KAAK,CAAE,CAAC,CAAA;iBAC1E;gBACD,OAAO,IAAA,kCAAuB,EAAC,MAAM,EAAE,SAAS,CAAC,CAAA;aAClD;YAED,KAAK,OAAO,CAAC,CAAC;gBACZ,IAAM,UAAU,GAAG,IAAA,8BAAmB,EAAC,MAAM,CAAC,CAAA;gBAC9C,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;oBACvB,MAAM,IAAI,KAAK,CAAC,0CAAmC,UAAU,CAAC,KAAK,CAAE,CAAC,CAAA;iBACvE;gBACD,OAAO,IAAA,+BAAoB,EAAC,MAAM,EAAE,SAAS,CAAC,CAAA;aAC/C;YAED,KAAK,UAAU,CAAC,CAAC;gBACf,IAAM,UAAU,GAAG,IAAA,gCAAqB,EAAC,MAAM,CAAC,CAAA;gBAChD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;oBACvB,MAAM,IAAI,KAAK,CAAC,6CAAsC,UAAU,CAAC,KAAK,CAAE,CAAC,CAAA;iBAC1E;gBACD,OAAO,IAAA,iCAAsB,EAAC,MAAM,CAAC,CAAA;aACtC;YAED,KAAK,YAAY,CAAC,CAAC;gBACjB,IAAM,UAAU,GAAG,IAAA,mCAAwB,EAAC,MAAM,CAAC,CAAA;gBACnD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;oBACvB,MAAM,IAAI,KAAK,CAAC,+CAAwC,UAAU,CAAC,KAAK,CAAE,CAAC,CAAA;iBAC5E;gBACD,OAAO,IAAA,oCAAyB,EAAC,MAAM,CAAC,CAAA;aACzC;YAED,KAAK,UAAU,CAAC,CAAC;gBACf,IAAM,UAAU,GAAG,IAAA,4BAAiB,EAAC,MAAM,CAAC,CAAA;gBAC5C,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;oBACvB,MAAM,IAAI,KAAK,CAAC,wCAAiC,UAAU,CAAC,KAAK,CAAE,CAAC,CAAA;iBACrE;gBACD,OAAO,IAAA,iCAAsB,EAAC,MAAM,CAAC,CAAA;aACtC;YAED,KAAK,eAAe,CAAC,CAAC;gBACpB,IAAM,UAAU,GAAG,IAAA,qCAA0B,EAAC,MAAM,CAAC,CAAA;gBACrD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;oBACvB,MAAM,IAAI,KAAK,CAAC,kDAA2C,UAAU,CAAC,KAAK,CAAE,CAAC,CAAA;iBAC/E;gBACD,OAAO,IAAA,sCAA2B,EAAC,MAAM,CAAC,CAAA;aAC3C;YAED,KAAK,UAAU,CAAC,CAAC;gBACf,IAAM,UAAU,GAAG,IAAA,iCAAsB,EAAC,MAAM,CAAC,CAAA;gBACjD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;oBACvB,MAAM,IAAI,KAAK,CAAC,6CAAsC,UAAU,CAAC,KAAK,CAAE,CAAC,CAAA;iBAC1E;gBACD,OAAO,IAAA,kCAAuB,EAAC,MAAM,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAA;aACpE;YAED;gBACE,MAAM,IAAI,KAAK,CAAC,wCAAiC,IAAI,CAAE,CAAC,CAAA;SAC3D;KACF;IAAC,OAAO,KAAK,EAAE;QACd,6BAA6B;QAC7B,IAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAA;QAC7E,MAAM,IAAI,KAAK,CAAC,yCAAkC,IAAI,eAAK,YAAY,CAAE,CAAC,CAAA;KAC3E;AACH,CAAC;AA1KD,8DA0KC;AAED;;;GAGG;AACH,SAAgB,iCAAiC,CAC/C,UAA0B,EAC1B,SAAiB,EACjB,UAA2B,EAC3B,gBAA6C,EAC7C,YAA2C;IAF3C,2BAAA,EAAA,kBAA2B;IAC3B,iCAAA,EAAA,qBAA6C;IAG7C,IAAM,UAAU,GAAG,yBAAyB,CAAC,UAAU,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAA;IAErF,uDAAuD;IACvD,0FAA0F;IAC1F,qEAAqE;IAErE,0EAA0E;IAC1E,IAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CACpC,uCAAuC,EACvC,wBAAwB,CACzB,CAAA;IAED,+DAA+D;IAC/D,IAAM,WAAW,GAAG,kBAAkB,CAAA;IACtC,IAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;IACpD,IAAM,qBAAqB,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAEzE,sDAAsD;IACtD,IAAM,gBAAgB,GAAG,IAAA,qCAAoB,EAAC,UAAU,EAAE,SAAS,CAAC,CAAA;IACpE,IAAM,YAAY,GAAG,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;IAC9D,IAAM,0BAA0B,GAAG,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAEnF,kCAAkC;IAClC,IAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,iCAAK,OAAO,SAAK,YAAY,QAAE,CAAC,CAAA;IAErE,6EAA6E;IAC7E,yEAAyE;IACzE,2EAA2E;IAC3E,2EAA2E;IAC3E,2BAA2B;IAC3B,EAAE;IACF,qEAAqE;IACrE,0EAA0E;IAC1E,8BAA8B;IAC9B,IAAM,aAAa,GAAG,YAAY;QAChC,CAAC,CAAC,uCAAgC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,qBAAkB;QACjF,CAAC,CAAC,EAAE,CAAA;IACN,6EAA6E;IAC7E,4DAA4D;IAC5D,IAAM,iBAAiB,GAAG,WAAW,CAAC,OAAO,CAAC,iCAAiC,CAAC,KAAK,CAAC,CAAC,CAAA;IAEvF,IAAM,WAAW,GAAG,YAAY;QAC9B,CAAC,CAAC,kCACkB,IAAI,CAAC,SAAS,CAAC;YAC/B,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,GAAG,EAAE,YAAY,CAAC,UAAU;YAC5B,OAAO,EAAE,YAAY,CAAC,OAAO,IAAI,CAAC;YAClC,GAAG,EAAE,YAAY,CAAC,oBAAoB,IAAI,CAAC;SAC5C,CAAC,sCACiB,IAAI,CAAC,SAAS,CAAC;YAChC,KAAK,EAAE,2BAAS,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC;YAClD,wEAAwE;YACxE,wEAAwE;YACxE,qEAAqE;YACrE,mDAAmD;YACnD,YAAY,EAAE,YAAY,CAAC,KAAK;YAChC,GAAG,EAAE,YAAY,CAAC,UAAU;YAC5B,OAAO,EAAE,YAAY,CAAC,OAAO,IAAI,CAAC;YAClC,GAAG,EAAE,YAAY,CAAC,oBAAoB,IAAI,CAAC;SAC5C,CAAC,iBAGN,iBAAiB;YACf,CAAC,CAAC,wQAGsB,IAAI,CAAC,SAAS,CAClC,IAAA,yCAAoB,EAAC,SAAS,kCACzB,6BAAW,CAAC,gBAAgB,SAC5B,MAAM,CAAC,IAAI,CAAC,6BAAW,CAAC,kBAAkB,CAAC,QAC9C,CACH,iSAIoB,IAAI,CAAC,SAAS,CACjC,6BAAW,CAAC,sBAAsB,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAC5E,ioBAgB0D;YAC7D,CAAC,CAAC,yHACuD,OAE5D;QACG,CAAC,CAAC,EAAE,CAAA;IAEN,IAAM,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAA;IAChE,IAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAA;IAEhE,mDAAmD;IACnD,6DAA6D;IAC7D,EAAE;IACF,8EAA8E;IAC9E,wEAAwE;IACxE,4EAA4E;IAC5E,IAAM,OAAO,GAAG,CAAC,YAAY;QAC3B,CAAC,CAAC,UAAU;YACV,CAAC,CAAC,wBAAwB;YAC1B,CAAC,CAAC,kHACoD;QACxD,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,yBAAkB,aAAa,CAAE;YACnC,CAAC,CAAC,0CAAmC,aAAa,0BAAgB,WAAW,8EAC9B,aAAa,yBAAe,WAAW,OAAI,CAAA;IAE5F,OAAO,UAAG,gCAAI,UAAU,UAAE,aAAa,UAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,mkCAgC3D,aAAa,6gBA0Bb,WAAW,0LASnB,0BAA0B,iBAE1B,qBAAqB,eACrB,WAAW,eACX,OAAO,OACR,CAAA;AACD,CAAC;AAvMD,8EAuMC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `pg` import of a generated Postgres fetcher.
|
|
3
|
+
*
|
|
4
|
+
* A Postgres DATE is a calendar day, not an instant. node-pg reads it as
|
|
5
|
+
* midnight in the server's time zone, so a server east of UTC sends
|
|
6
|
+
* `2026-10-09` as `2026-10-08T21:00:00.000Z`: a list shows the day before, and
|
|
7
|
+
* a form that loads the row saves that day back. The day is kept as its own
|
|
8
|
+
* text (`YYYY-MM-DD`), which every reader of the value already understands.
|
|
9
|
+
* A stand-in driver without `types` leaves the parsers alone.
|
|
10
|
+
*/
|
|
11
|
+
export declare const PG_CLIENT_IMPORT = "import { Client, types as pgTypes } from 'pg'\n\n// A DATE stays the day it names, whatever the server's time zone.\nif (pgTypes && typeof pgTypes.setTypeParser === 'function') {\n pgTypes.setTypeParser(1082, (value) => value)\n}";
|
|
12
|
+
//# sourceMappingURL=pg-client-import.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pg-client-import.d.ts","sourceRoot":"","sources":["../../../src/fetchers/pg-client-import.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,2OAK3B,CAAA"}
|