@teleporthq/teleport-plugin-next-data-source 0.43.74 → 0.44.0
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/pagination-widget-fixture.ts +95 -5
- package/__tests__/blog-adjacent-arranged.test.ts +176 -0
- package/__tests__/blog-post-contents.test.ts +212 -0
- package/__tests__/blog-post-page-enrichment.test.ts +28 -5
- package/__tests__/blog-post-picture-stand-in.test.ts +48 -0
- package/__tests__/blog-post-reading-time.test.ts +55 -0
- package/__tests__/booking-item-transform.test.ts +120 -0
- package/__tests__/browser-row-policy.test.ts +13 -3
- package/__tests__/content-preset-wiring.test.ts +108 -0
- package/__tests__/fetchers.test.ts +1 -1
- package/__tests__/fixed-list-sort.test.ts +183 -0
- package/__tests__/infinite-scroll.test.ts +154 -5
- package/__tests__/list-sort-order.test.ts +61 -0
- package/__tests__/null-filter-where.test.ts +132 -0
- package/__tests__/pagination-filter-groups.test.ts +186 -0
- package/__tests__/pg-date-parser.test.ts +73 -0
- package/__tests__/plain-list-sort.test.ts +215 -0
- package/__tests__/product-price-sort.ts +58 -25
- package/__tests__/range-control.test.ts +159 -0
- package/__tests__/rest-api-key-header.test.ts +18 -0
- package/__tests__/search-input-marker.test.ts +86 -0
- package/__tests__/search-url-sync.test.ts +61 -16
- package/__tests__/shared-resource-prefetch.test.ts +65 -0
- package/__tests__/table-read-route-protected-tables.test.ts +33 -3
- 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/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 +4 -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/rest-api.d.ts.map +1 -1
- package/dist/cjs/fetchers/rest-api.js +3 -1
- package/dist/cjs/fetchers/rest-api.js.map +1 -1
- package/dist/cjs/fetchers/teleport.d.ts.map +1 -1
- package/dist/cjs/fetchers/teleport.js +5 -2
- package/dist/cjs/fetchers/teleport.js.map +1 -1
- package/dist/cjs/fetchers/utils/browser-row-policy.d.ts +7 -6
- package/dist/cjs/fetchers/utils/browser-row-policy.d.ts.map +1 -1
- package/dist/cjs/fetchers/utils/browser-row-policy.js +7 -33
- package/dist/cjs/fetchers/utils/browser-row-policy.js.map +1 -1
- package/dist/cjs/filter-utils.d.ts +19 -7
- package/dist/cjs/filter-utils.d.ts.map +1 -1
- package/dist/cjs/filter-utils.js +49 -13
- package/dist/cjs/filter-utils.js.map +1 -1
- package/dist/cjs/infinite-scroll.d.ts +25 -2
- package/dist/cjs/infinite-scroll.d.ts.map +1 -1
- package/dist/cjs/infinite-scroll.js +144 -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/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 +267 -212
- package/dist/cjs/pagination-plugin.js.map +1 -1
- package/dist/cjs/product-price-sort.d.ts +0 -9
- package/dist/cjs/product-price-sort.d.ts.map +1 -1
- package/dist/cjs/product-price-sort.js +1 -13
- package/dist/cjs/product-price-sort.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 +20 -0
- package/dist/cjs/row-order.d.ts.map +1 -0
- package/dist/cjs/row-order.js +46 -0
- package/dist/cjs/row-order.js.map +1 -0
- 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 +10 -0
- package/dist/cjs/sort-utils.d.ts.map +1 -1
- package/dist/cjs/sort-utils.js +22 -1
- package/dist/cjs/sort-utils.js.map +1 -1
- package/dist/cjs/transformations/blog-adjacent-posts.d.ts +11 -1
- package/dist/cjs/transformations/blog-adjacent-posts.d.ts.map +1 -1
- package/dist/cjs/transformations/blog-adjacent-posts.js +14 -1
- package/dist/cjs/transformations/blog-adjacent-posts.js.map +1 -1
- package/dist/cjs/transformations/blog-comments.d.ts +1 -1
- package/dist/cjs/transformations/blog-comments.d.ts.map +1 -1
- package/dist/cjs/transformations/blog-comments.js +1 -1
- package/dist/cjs/transformations/blog-comments.js.map +1 -1
- package/dist/cjs/transformations/blog-post.d.ts +14 -0
- package/dist/cjs/transformations/blog-post.d.ts.map +1 -1
- package/dist/cjs/transformations/blog-post.js +4 -1
- package/dist/cjs/transformations/blog-post.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/heading-anchors.d.ts +32 -8
- package/dist/cjs/transformations/heading-anchors.d.ts.map +1 -1
- package/dist/cjs/transformations/heading-anchors.js +34 -10
- package/dist/cjs/transformations/heading-anchors.js.map +1 -1
- package/dist/cjs/transformations/index.d.ts +27 -13
- package/dist/cjs/transformations/index.d.ts.map +1 -1
- package/dist/cjs/transformations/index.js +73 -16
- package/dist/cjs/transformations/index.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/utils.d.ts.map +1 -1
- package/dist/cjs/utils.js +52 -3
- package/dist/cjs/utils.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/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 +5 -2
- 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/rest-api.d.ts.map +1 -1
- package/dist/esm/fetchers/rest-api.js +3 -1
- package/dist/esm/fetchers/rest-api.js.map +1 -1
- package/dist/esm/fetchers/teleport.d.ts.map +1 -1
- package/dist/esm/fetchers/teleport.js +6 -3
- package/dist/esm/fetchers/teleport.js.map +1 -1
- package/dist/esm/fetchers/utils/browser-row-policy.d.ts +7 -6
- package/dist/esm/fetchers/utils/browser-row-policy.d.ts.map +1 -1
- package/dist/esm/fetchers/utils/browser-row-policy.js +5 -31
- package/dist/esm/fetchers/utils/browser-row-policy.js.map +1 -1
- package/dist/esm/filter-utils.d.ts +19 -7
- package/dist/esm/filter-utils.d.ts.map +1 -1
- package/dist/esm/filter-utils.js +46 -12
- package/dist/esm/filter-utils.js.map +1 -1
- package/dist/esm/infinite-scroll.d.ts +25 -2
- package/dist/esm/infinite-scroll.d.ts.map +1 -1
- package/dist/esm/infinite-scroll.js +142 -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/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 +271 -216
- package/dist/esm/pagination-plugin.js.map +1 -1
- package/dist/esm/product-price-sort.d.ts +0 -9
- package/dist/esm/product-price-sort.d.ts.map +1 -1
- package/dist/esm/product-price-sort.js +0 -11
- package/dist/esm/product-price-sort.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 +20 -0
- package/dist/esm/row-order.d.ts.map +1 -0
- package/dist/esm/row-order.js +41 -0
- package/dist/esm/row-order.js.map +1 -0
- 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 +10 -0
- package/dist/esm/sort-utils.d.ts.map +1 -1
- package/dist/esm/sort-utils.js +20 -0
- package/dist/esm/sort-utils.js.map +1 -1
- package/dist/esm/transformations/blog-adjacent-posts.d.ts +11 -1
- package/dist/esm/transformations/blog-adjacent-posts.d.ts.map +1 -1
- package/dist/esm/transformations/blog-adjacent-posts.js +14 -1
- package/dist/esm/transformations/blog-adjacent-posts.js.map +1 -1
- package/dist/esm/transformations/blog-comments.d.ts +1 -1
- package/dist/esm/transformations/blog-comments.d.ts.map +1 -1
- package/dist/esm/transformations/blog-comments.js +1 -1
- package/dist/esm/transformations/blog-comments.js.map +1 -1
- package/dist/esm/transformations/blog-post.d.ts +14 -0
- package/dist/esm/transformations/blog-post.d.ts.map +1 -1
- package/dist/esm/transformations/blog-post.js +4 -1
- package/dist/esm/transformations/blog-post.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/heading-anchors.d.ts +32 -8
- package/dist/esm/transformations/heading-anchors.d.ts.map +1 -1
- package/dist/esm/transformations/heading-anchors.js +33 -9
- package/dist/esm/transformations/heading-anchors.js.map +1 -1
- package/dist/esm/transformations/index.d.ts +27 -13
- package/dist/esm/transformations/index.d.ts.map +1 -1
- package/dist/esm/transformations/index.js +72 -16
- package/dist/esm/transformations/index.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/utils.d.ts.map +1 -1
- package/dist/esm/utils.js +52 -3
- package/dist/esm/utils.js.map +1 -1
- package/package.json +5 -5
- package/src/count-effect.ts +31 -8
- package/src/fetchers/pg-client-import.ts +16 -0
- package/src/fetchers/postgresql.ts +25 -23
- package/src/fetchers/raw-query.ts +2 -1
- package/src/fetchers/rest-api.ts +3 -1
- package/src/fetchers/teleport.ts +22 -23
- package/src/fetchers/utils/browser-row-policy.ts +10 -20
- package/src/filter-utils.ts +102 -28
- package/src/infinite-scroll.ts +240 -79
- package/src/list-sort-order.ts +34 -0
- package/src/pagination-controls.ts +26 -3
- package/src/pagination-plugin.ts +370 -306
- package/src/product-price-sort.ts +0 -11
- package/src/range-control.ts +207 -0
- package/src/row-order.ts +55 -0
- package/src/search-input.ts +190 -0
- package/src/sort-utils.ts +25 -0
- package/src/transformations/blog-adjacent-posts.ts +89 -3
- package/src/transformations/blog-comments.ts +5 -5
- package/src/transformations/blog-post.ts +64 -13
- package/src/transformations/booking-item.ts +71 -0
- package/src/transformations/heading-anchors.ts +79 -16
- package/src/transformations/index.ts +104 -14
- package/src/utils.ts +74 -3
package/src/utils.ts
CHANGED
|
@@ -15,6 +15,7 @@ import { generateDataSourceFetcherWithCore } from './data-source-fetchers'
|
|
|
15
15
|
import type { EntityTransformOptions } from './transformations'
|
|
16
16
|
import { DATA_SOURCE_ISR_REVALIDATE_SECONDS } from './isr'
|
|
17
17
|
import { buildServerLocaleParam, hasLocaleParam, buildClientLocaleParam } from './request-locale'
|
|
18
|
+
import { readFixedSort } from './sort-utils'
|
|
18
19
|
|
|
19
20
|
const VALID_DATA_SOURCE_TYPES: DataSourceType[] = [
|
|
20
21
|
'rest-api',
|
|
@@ -1172,6 +1173,40 @@ const buildFilterObjectAST = (
|
|
|
1172
1173
|
}
|
|
1173
1174
|
|
|
1174
1175
|
// tslint:disable-next-line:no-any
|
|
1176
|
+
const isSortKeyed = (properties: types.ObjectProperty[]): boolean =>
|
|
1177
|
+
properties.some(
|
|
1178
|
+
(property) =>
|
|
1179
|
+
(property.key.type === 'StringLiteral' && property.key.value === 'sorts') ||
|
|
1180
|
+
(property.key.type === 'Identifier' && property.key.name === 'sorts')
|
|
1181
|
+
)
|
|
1182
|
+
|
|
1183
|
+
/** The fixed sort of the first list repeater inside a data-source node, if it has one. */
|
|
1184
|
+
// tslint:disable-next-line:no-any
|
|
1185
|
+
const findRepeaterFixedSort = (node: any): { field: string; order: 'asc' | 'desc' } | undefined => {
|
|
1186
|
+
// tslint:disable-next-line:no-any
|
|
1187
|
+
const visit = (current: any): { field: string; order: 'asc' | 'desc' } | null | undefined => {
|
|
1188
|
+
if (!current || typeof current !== 'object') {
|
|
1189
|
+
return undefined
|
|
1190
|
+
}
|
|
1191
|
+
if (current.type === 'cms-list-repeater') {
|
|
1192
|
+
return readFixedSort(current.content?.sort, current.content?.sortDirection) ?? null
|
|
1193
|
+
}
|
|
1194
|
+
const content = current.content
|
|
1195
|
+
const children = [
|
|
1196
|
+
...(Array.isArray(content?.children) ? content.children : []),
|
|
1197
|
+
...(content?.nodes && typeof content.nodes === 'object' ? Object.values(content.nodes) : []),
|
|
1198
|
+
]
|
|
1199
|
+
for (const child of children) {
|
|
1200
|
+
const found = visit(child)
|
|
1201
|
+
if (found !== undefined) {
|
|
1202
|
+
return found
|
|
1203
|
+
}
|
|
1204
|
+
}
|
|
1205
|
+
return undefined
|
|
1206
|
+
}
|
|
1207
|
+
return visit(node) ?? undefined
|
|
1208
|
+
}
|
|
1209
|
+
|
|
1175
1210
|
export const extractDataSourceIntoGetStaticProps = (
|
|
1176
1211
|
node: UIDLDataSourceItemNode | UIDLDataSourceListNode,
|
|
1177
1212
|
dataSources: Record<string, UIDLDataSource>,
|
|
@@ -1246,7 +1281,12 @@ export const extractDataSourceIntoGetStaticProps = (
|
|
|
1246
1281
|
}
|
|
1247
1282
|
// tslint:disable-next-line:no-any
|
|
1248
1283
|
const nodeResource = (node.content as any).resource
|
|
1249
|
-
const propKey = claimParamsPropKey(
|
|
1284
|
+
const propKey = claimParamsPropKey(
|
|
1285
|
+
componentChunk,
|
|
1286
|
+
resourcePropKey,
|
|
1287
|
+
nodeResource,
|
|
1288
|
+
findRepeaterFixedSort(node)
|
|
1289
|
+
)
|
|
1250
1290
|
|
|
1251
1291
|
// Find matching JSX nodes for this data source
|
|
1252
1292
|
// Strategy depends on whether we have a unique resource ID:
|
|
@@ -1692,6 +1732,35 @@ export const extractDataSourceIntoGetStaticProps = (
|
|
|
1692
1732
|
}
|
|
1693
1733
|
})
|
|
1694
1734
|
|
|
1735
|
+
// The sort the list's repeater fixed, when the resource names none — the
|
|
1736
|
+
// rows the page is pre-rendered with come in the order the list shows them
|
|
1737
|
+
// (the browser keeps them: the provider skips its first fetch).
|
|
1738
|
+
const repeaterSort = isSortKeyed(paramsProperties) ? undefined : findRepeaterFixedSort(node)
|
|
1739
|
+
if (repeaterSort) {
|
|
1740
|
+
paramsProperties.push(
|
|
1741
|
+
types.objectProperty(
|
|
1742
|
+
types.stringLiteral('sorts'),
|
|
1743
|
+
types.callExpression(
|
|
1744
|
+
types.memberExpression(types.identifier('JSON'), types.identifier('stringify')),
|
|
1745
|
+
[
|
|
1746
|
+
types.arrayExpression([
|
|
1747
|
+
types.objectExpression([
|
|
1748
|
+
types.objectProperty(
|
|
1749
|
+
types.identifier('field'),
|
|
1750
|
+
types.stringLiteral(repeaterSort.field)
|
|
1751
|
+
),
|
|
1752
|
+
types.objectProperty(
|
|
1753
|
+
types.identifier('order'),
|
|
1754
|
+
types.stringLiteral(repeaterSort.order)
|
|
1755
|
+
),
|
|
1756
|
+
]),
|
|
1757
|
+
]),
|
|
1758
|
+
]
|
|
1759
|
+
)
|
|
1760
|
+
)
|
|
1761
|
+
)
|
|
1762
|
+
}
|
|
1763
|
+
|
|
1695
1764
|
// getStaticProps runs once per language: the prefetch is for that language.
|
|
1696
1765
|
if (transformOptions.localization !== undefined) {
|
|
1697
1766
|
paramsProperties.push(buildServerLocaleParam())
|
|
@@ -1855,11 +1924,13 @@ interface ParallelFetchMeta {
|
|
|
1855
1924
|
const claimParamsPropKey = (
|
|
1856
1925
|
componentChunk: ChunkDefinition,
|
|
1857
1926
|
resourcePropKey: string,
|
|
1858
|
-
resource: { params?: Record<string, unknown> } | undefined
|
|
1927
|
+
resource: { params?: Record<string, unknown> } | undefined,
|
|
1928
|
+
// The list's own fixed sort rides on its prefetch too (see the params below).
|
|
1929
|
+
repeaterSort?: { field: string; order: string }
|
|
1859
1930
|
): string => {
|
|
1860
1931
|
const meta = componentChunk.meta as { dataSourcePropKeyParams?: Record<string, string> }
|
|
1861
1932
|
const claimed = meta.dataSourcePropKeyParams ?? (meta.dataSourcePropKeyParams = {})
|
|
1862
|
-
const signature = JSON.stringify(resource?.params ?? {})
|
|
1933
|
+
const signature = JSON.stringify([resource?.params ?? {}, repeaterSort ?? null])
|
|
1863
1934
|
|
|
1864
1935
|
let propKey = resourcePropKey
|
|
1865
1936
|
for (let suffix = 2; claimed[propKey] !== undefined && claimed[propKey] !== signature; suffix++) {
|