@teleporthq/teleport-shared 0.44.0 → 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__/utils/email-sender.ts +123 -0
- package/__tests__/utils/table-access-page-reads.ts +183 -0
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/page-transition/view-transition-css.d.ts +4 -0
- package/dist/cjs/page-transition/view-transition-css.d.ts.map +1 -1
- package/dist/cjs/page-transition/view-transition-css.js +17 -10
- package/dist/cjs/page-transition/view-transition-css.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/utils/email-sender.d.ts +43 -0
- package/dist/cjs/utils/email-sender.d.ts.map +1 -0
- package/dist/cjs/utils/email-sender.js +36 -0
- package/dist/cjs/utils/email-sender.js.map +1 -0
- package/dist/cjs/utils/table-access.d.ts +32 -0
- package/dist/cjs/utils/table-access.d.ts.map +1 -1
- package/dist/cjs/utils/table-access.js +118 -2
- package/dist/cjs/utils/table-access.js.map +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/page-transition/view-transition-css.d.ts +4 -0
- package/dist/esm/page-transition/view-transition-css.d.ts.map +1 -1
- package/dist/esm/page-transition/view-transition-css.js +15 -9
- package/dist/esm/page-transition/view-transition-css.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/utils/email-sender.d.ts +43 -0
- package/dist/esm/utils/email-sender.d.ts.map +1 -0
- package/dist/esm/utils/email-sender.js +32 -0
- package/dist/esm/utils/email-sender.js.map +1 -0
- package/dist/esm/utils/table-access.d.ts +32 -0
- package/dist/esm/utils/table-access.d.ts.map +1 -1
- package/dist/esm/utils/table-access.js +115 -1
- package/dist/esm/utils/table-access.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +2 -0
- package/src/page-transition/view-transition-css.ts +27 -16
- package/src/utils/email-sender.ts +74 -0
- package/src/utils/table-access.ts +148 -1
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import {
|
|
2
|
+
EmailSenderInput,
|
|
3
|
+
EmailSenderParts,
|
|
4
|
+
generateEmailSenderHelperCode,
|
|
5
|
+
} from '../../src/utils/email-sender'
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* The one rule every generated email path names its sender with. Executed, not
|
|
9
|
+
* grepped: the helper ships as source text whose regexes are written with
|
|
10
|
+
* doubled backslashes inside a template literal, so only running it proves
|
|
11
|
+
* them.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const emailSender = new Function(`${generateEmailSenderHelperCode()}\nreturn __emailSender;`)() as (
|
|
15
|
+
sender: EmailSenderInput
|
|
16
|
+
) => EmailSenderParts
|
|
17
|
+
|
|
18
|
+
const FROM = 'shop@lumen.test'
|
|
19
|
+
|
|
20
|
+
const ROWS: Array<[string, EmailSenderInput, EmailSenderParts]> = [
|
|
21
|
+
[
|
|
22
|
+
'a plain name',
|
|
23
|
+
{ from: FROM, name: 'Lumen Pottery' },
|
|
24
|
+
{ email: FROM, name: 'Lumen Pottery', header: 'Lumen Pottery <shop@lumen.test>' },
|
|
25
|
+
],
|
|
26
|
+
['no name', { from: FROM }, { email: FROM, name: '', header: FROM }],
|
|
27
|
+
['a blank name', { from: FROM, name: ' ' }, { email: FROM, name: '', header: FROM }],
|
|
28
|
+
[
|
|
29
|
+
'a name with a comma and a quote',
|
|
30
|
+
{ from: FROM, name: 'Smith, Jones & "Co"' },
|
|
31
|
+
{
|
|
32
|
+
email: FROM,
|
|
33
|
+
name: 'Smith, Jones & "Co"',
|
|
34
|
+
header: '"Smith, Jones & \\"Co\\"" <shop@lumen.test>',
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
[
|
|
38
|
+
'a name with a backslash',
|
|
39
|
+
{ from: FROM, name: 'Back\\slash' },
|
|
40
|
+
{ email: FROM, name: 'Back\\slash', header: '"Back\\\\slash" <shop@lumen.test>' },
|
|
41
|
+
],
|
|
42
|
+
[
|
|
43
|
+
'a name ending in a full stop',
|
|
44
|
+
{ from: FROM, name: 'Lumen Pottery Ltd.' },
|
|
45
|
+
{ email: FROM, name: 'Lumen Pottery Ltd.', header: '"Lumen Pottery Ltd." <shop@lumen.test>' },
|
|
46
|
+
],
|
|
47
|
+
[
|
|
48
|
+
'a from that already names its sender keeps that name',
|
|
49
|
+
{ from: 'Lumen Pottery <shop@lumen.test>', name: 'Another Name' },
|
|
50
|
+
{ email: FROM, name: 'Lumen Pottery', header: 'Lumen Pottery <shop@lumen.test>' },
|
|
51
|
+
],
|
|
52
|
+
[
|
|
53
|
+
'an already quoted from is left as it is',
|
|
54
|
+
{ from: '"Smith, Jones" <shop@lumen.test>' },
|
|
55
|
+
{ email: FROM, name: 'Smith, Jones', header: '"Smith, Jones" <shop@lumen.test>' },
|
|
56
|
+
],
|
|
57
|
+
[
|
|
58
|
+
'a from whose own name needs quotes gets them',
|
|
59
|
+
{ from: 'Smith, Jones <shop@lumen.test>' },
|
|
60
|
+
{ email: FROM, name: 'Smith, Jones', header: '"Smith, Jones" <shop@lumen.test>' },
|
|
61
|
+
],
|
|
62
|
+
[
|
|
63
|
+
'a bracketed address with no name of its own takes the stored name',
|
|
64
|
+
{ from: '<shop@lumen.test>', name: 'Lumen Pottery' },
|
|
65
|
+
{ email: FROM, name: 'Lumen Pottery', header: 'Lumen Pottery <shop@lumen.test>' },
|
|
66
|
+
],
|
|
67
|
+
[
|
|
68
|
+
'a line break in the name becomes a space',
|
|
69
|
+
{ from: FROM, name: 'Lumen\r\nBcc: someone@else.test' },
|
|
70
|
+
{
|
|
71
|
+
email: FROM,
|
|
72
|
+
name: 'Lumen Bcc: someone@else.test',
|
|
73
|
+
header: '"Lumen Bcc: someone@else.test" <shop@lumen.test>',
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
[
|
|
77
|
+
'a name typed with its own quotes is not quoted twice',
|
|
78
|
+
{ from: FROM, name: '"Lumen Pottery"' },
|
|
79
|
+
{ email: FROM, name: 'Lumen Pottery', header: 'Lumen Pottery <shop@lumen.test>' },
|
|
80
|
+
],
|
|
81
|
+
[
|
|
82
|
+
'a non-ASCII name needs no quotes',
|
|
83
|
+
{ from: FROM, name: 'Café Lumière' },
|
|
84
|
+
{ email: FROM, name: 'Café Lumière', header: 'Café Lumière <shop@lumen.test>' },
|
|
85
|
+
],
|
|
86
|
+
[
|
|
87
|
+
'surrounding whitespace is trimmed',
|
|
88
|
+
{ from: ' shop@lumen.test ', name: ' Lumen ' },
|
|
89
|
+
{ email: FROM, name: 'Lumen', header: 'Lumen <shop@lumen.test>' },
|
|
90
|
+
],
|
|
91
|
+
[
|
|
92
|
+
'an address it cannot read is never wrapped',
|
|
93
|
+
{ from: 'shop@lumen.test>', name: 'Lumen' },
|
|
94
|
+
{ email: 'shop@lumen.test>', name: '', header: 'shop@lumen.test>' },
|
|
95
|
+
],
|
|
96
|
+
[
|
|
97
|
+
'a name that is not text is ignored',
|
|
98
|
+
{ from: FROM, name: { first: 'Lumen' } },
|
|
99
|
+
{ email: FROM, name: '', header: FROM },
|
|
100
|
+
],
|
|
101
|
+
['no address', { name: 'Lumen' }, { email: '', name: '', header: '' }],
|
|
102
|
+
]
|
|
103
|
+
|
|
104
|
+
describe('__emailSender', () => {
|
|
105
|
+
it.each(ROWS)('%s', (_label, input, expected) => {
|
|
106
|
+
expect(emailSender(input)).toEqual(expected)
|
|
107
|
+
})
|
|
108
|
+
|
|
109
|
+
it('quotes a name holding any RFC 5322 special, escaping only " and \\', () => {
|
|
110
|
+
for (const special of ['(', ')', '<', '>', '[', ']', ':', ';', '@', '\\', ',', '.', '"']) {
|
|
111
|
+
const escaped = special === '"' || special === '\\' ? '\\' + special : special
|
|
112
|
+
expect(emailSender({ from: FROM, name: `A${special}B` }).header).toBe(
|
|
113
|
+
`"A${escaped}B" <shop@lumen.test>`
|
|
114
|
+
)
|
|
115
|
+
}
|
|
116
|
+
})
|
|
117
|
+
|
|
118
|
+
// Appended to node handlers whose minified entry point is found by arity.
|
|
119
|
+
it('declares exactly one parameter, and no two-parameter function', () => {
|
|
120
|
+
expect(emailSender.length).toBe(1)
|
|
121
|
+
expect(generateEmailSenderHelperCode()).not.toMatch(/function\s*[\w$]*\s*\([^)]*,/)
|
|
122
|
+
})
|
|
123
|
+
})
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/* tslint:disable:function-constructor */
|
|
2
|
+
import type { UIDLAuthentication } from '@teleporthq/teleport-types'
|
|
3
|
+
import {
|
|
4
|
+
generateTableAccessHelperCode,
|
|
5
|
+
pageDataReadsNoRowOf,
|
|
6
|
+
pageReadsAsStore,
|
|
7
|
+
} from '../../src/utils/table-access'
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* A page's own data — what its getStaticProps / getServerSideProps read to
|
|
11
|
+
* render it — reaches whoever opens the page, and anyone who asks
|
|
12
|
+
* `/_next/data` for it. So it is read as a visitor is served the store's
|
|
13
|
+
* tables, except on an admin page nobody but the store's trusted readers may
|
|
14
|
+
* open.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const authWith = (
|
|
18
|
+
pageProtection: UIDLAuthentication['pageProtection'],
|
|
19
|
+
folderProtection: UIDLAuthentication['folderProtection'] = {}
|
|
20
|
+
): UIDLAuthentication => ({
|
|
21
|
+
enabled: true,
|
|
22
|
+
dataSourceId: 'ds-1',
|
|
23
|
+
dataSourceType: 'teleport',
|
|
24
|
+
passwordAuthEnabled: true,
|
|
25
|
+
providers: [],
|
|
26
|
+
roles: ['admin', 'staff', 'user'],
|
|
27
|
+
tables: {},
|
|
28
|
+
pageProtection,
|
|
29
|
+
folderProtection,
|
|
30
|
+
authPages: {},
|
|
31
|
+
callbackBaseUrl: '/api/auth/callback',
|
|
32
|
+
envKeys: {},
|
|
33
|
+
customUserProperties: [],
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
const page = (route: string, allowedRoles: string[], extra: Record<string, unknown> = {}) => ({
|
|
37
|
+
requiresAuth: true,
|
|
38
|
+
allowedRoles,
|
|
39
|
+
pageName: route.split('/').pop() || 'home',
|
|
40
|
+
route,
|
|
41
|
+
...extra,
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
// The store template's shape: an admin panel folder admitting admins, a staff
|
|
45
|
+
// screen, members-only pages and a row-owned order page.
|
|
46
|
+
const STORE_AUTH = authWith(
|
|
47
|
+
{
|
|
48
|
+
'p-users': page('/admin/users', ['admin']),
|
|
49
|
+
'p-orders-update': page('/admin/orders/update', ['admin'], {
|
|
50
|
+
routePattern: '/admin/orders/update/[id]',
|
|
51
|
+
}),
|
|
52
|
+
'p-dashboard': page('/admin/dashboard', ['admin', 'staff']),
|
|
53
|
+
'p-profile': page('/profile', [], { routePattern: '/profile/[id]' }),
|
|
54
|
+
'p-order': page('/orders', [], {
|
|
55
|
+
routePattern: '/orders/[order_number]',
|
|
56
|
+
rowOwnerColumn: 'user_id',
|
|
57
|
+
}),
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
'f-admin': {
|
|
61
|
+
requiresAuth: true,
|
|
62
|
+
allowedRoles: ['admin'],
|
|
63
|
+
folderName: 'admin-panel',
|
|
64
|
+
parentId: 'pages',
|
|
65
|
+
children: { 'p-users': 'page', 'p-orders-update': 'page', 'p-dashboard': 'page' },
|
|
66
|
+
},
|
|
67
|
+
} as never
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
describe('pageReadsAsStore', () => {
|
|
71
|
+
it('reads an admin page only trusted readers open as the store', () => {
|
|
72
|
+
expect(pageReadsAsStore({ pageId: 'p-users' }, STORE_AUTH)).toBe(true)
|
|
73
|
+
expect(pageReadsAsStore({ pageId: 'p-orders-update' }, STORE_AUTH)).toBe(true)
|
|
74
|
+
// An admin page without protection of its own falls under /admin.
|
|
75
|
+
expect(pageReadsAsStore({ route: '/admin/new-report' }, STORE_AUTH)).toBe(true)
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
it('reads every other page as a visitor', () => {
|
|
79
|
+
// A staff screen: staff are not the store's trusted readers.
|
|
80
|
+
expect(pageReadsAsStore({ pageId: 'p-dashboard' }, STORE_AUTH)).toBe(false)
|
|
81
|
+
// Members-only, and row-owned: whoever signs in gets the page data.
|
|
82
|
+
expect(pageReadsAsStore({ pageId: 'p-profile' }, STORE_AUTH)).toBe(false)
|
|
83
|
+
expect(pageReadsAsStore({ pageId: 'p-order' }, STORE_AUTH)).toBe(false)
|
|
84
|
+
// Public pages.
|
|
85
|
+
expect(pageReadsAsStore({ route: '/' }, STORE_AUTH)).toBe(false)
|
|
86
|
+
expect(pageReadsAsStore({ route: '/products' }, STORE_AUTH)).toBe(false)
|
|
87
|
+
expect(pageReadsAsStore({ route: '/administration' }, STORE_AUTH)).toBe(false)
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
it('reads an admin page as a visitor when nothing gates it, or nobody is a trusted reader', () => {
|
|
91
|
+
expect(pageReadsAsStore({ route: '/admin/users' }, undefined)).toBe(false)
|
|
92
|
+
expect(pageReadsAsStore({ route: '/admin/users' }, authWith({}))).toBe(false)
|
|
93
|
+
// Signed-in members of any role may open it: none of them is trusted.
|
|
94
|
+
const anyMember = authWith({ 'p-users': page('/admin/users', []) })
|
|
95
|
+
expect(pageReadsAsStore({ pageId: 'p-users' }, anyMember)).toBe(false)
|
|
96
|
+
// A page left public beside a protected panel answers to its own entry.
|
|
97
|
+
const publicReport = authWith(
|
|
98
|
+
{
|
|
99
|
+
'p-users': page('/admin/users', ['admin']),
|
|
100
|
+
'p-report': { ...page('/admin/report', []), requiresAuth: false },
|
|
101
|
+
},
|
|
102
|
+
STORE_AUTH.folderProtection
|
|
103
|
+
)
|
|
104
|
+
expect(pageReadsAsStore({ pageId: 'p-report' }, publicReport)).toBe(false)
|
|
105
|
+
})
|
|
106
|
+
})
|
|
107
|
+
|
|
108
|
+
describe('pageDataReadsNoRowOf', () => {
|
|
109
|
+
it('names the protected and the feed tables, however spelled', () => {
|
|
110
|
+
expect(pageDataReadsNoRowOf('public.teleport_orders')).toBe(true)
|
|
111
|
+
expect(pageDataReadsNoRowOf('"teleport_gift_cards"')).toBe(true)
|
|
112
|
+
expect(pageDataReadsNoRowOf('teleport_products')).toBe(false)
|
|
113
|
+
expect(pageDataReadsNoRowOf('teleport_blog_posts')).toBe(false)
|
|
114
|
+
})
|
|
115
|
+
|
|
116
|
+
it('leaves out the members: a page reads their public profiles', () => {
|
|
117
|
+
expect(pageDataReadsNoRowOf('users')).toBe(false)
|
|
118
|
+
expect(pageDataReadsNoRowOf('public."users"')).toBe(false)
|
|
119
|
+
})
|
|
120
|
+
})
|
|
121
|
+
|
|
122
|
+
describe('the emitted guard, reading a page for a visitor', () => {
|
|
123
|
+
const bootGuard = () => {
|
|
124
|
+
const sessionReads: unknown[] = []
|
|
125
|
+
const guardRead = new Function(
|
|
126
|
+
'process',
|
|
127
|
+
'__tqSessionToken',
|
|
128
|
+
`${generateTableAccessHelperCode({ trustedReaderRoles: ['admin'] })}
|
|
129
|
+
return __taGuardRead`
|
|
130
|
+
)(
|
|
131
|
+
{ env: { NEXTAUTH_SECRET: 'server-secret' } },
|
|
132
|
+
async (req: { headers?: { cookie?: string } }) => {
|
|
133
|
+
sessionReads.push(req)
|
|
134
|
+
// A browser's session cookie, here simply the role it signs in.
|
|
135
|
+
const role = req?.headers?.cookie
|
|
136
|
+
return role ? { sub: 'u1', role } : null
|
|
137
|
+
}
|
|
138
|
+
) as (req: unknown, tableName: string, rawQuery: string | null) => Promise<unknown>
|
|
139
|
+
return { guardRead, sessionReads }
|
|
140
|
+
}
|
|
141
|
+
const pageRead = { query: {}, method: 'GET', headers: {}, __tqVisitorView: true }
|
|
142
|
+
|
|
143
|
+
it("runs the page's own statement, which a browser may not send", async () => {
|
|
144
|
+
const { guardRead } = bootGuard()
|
|
145
|
+
const statement = 'SELECT * FROM category_tiles'
|
|
146
|
+
expect(await guardRead(pageRead, 'category_tiles', statement)).toBeNull()
|
|
147
|
+
expect(await guardRead({ headers: {} }, 'category_tiles', statement)).toMatchObject({
|
|
148
|
+
status: 403,
|
|
149
|
+
})
|
|
150
|
+
})
|
|
151
|
+
|
|
152
|
+
it("lets it read the members' public profiles, through the structured read only", async () => {
|
|
153
|
+
const { guardRead, sessionReads } = bootGuard()
|
|
154
|
+
expect(await guardRead(pageRead, 'users', null)).toBeNull()
|
|
155
|
+
expect(await guardRead(pageRead, 'public.users', null)).toBeNull()
|
|
156
|
+
// A statement cannot be projected onto the public profile.
|
|
157
|
+
expect(await guardRead(pageRead, 'users', 'SELECT email FROM users')).toEqual({
|
|
158
|
+
status: 401,
|
|
159
|
+
message: 'Unauthenticated',
|
|
160
|
+
})
|
|
161
|
+
expect(sessionReads).toEqual([])
|
|
162
|
+
// A browser still reads the table only as a trusted role.
|
|
163
|
+
expect(await guardRead({ headers: {} }, 'users', null)).toMatchObject({ status: 401 })
|
|
164
|
+
expect(await guardRead({ headers: { cookie: 'user' } }, 'users', null)).toMatchObject({
|
|
165
|
+
status: 403,
|
|
166
|
+
})
|
|
167
|
+
expect(await guardRead({ headers: { cookie: 'admin' } }, 'users', null)).toBeNull()
|
|
168
|
+
})
|
|
169
|
+
|
|
170
|
+
it('refuses it every other protected table, as nobody signed in', async () => {
|
|
171
|
+
const { guardRead, sessionReads } = bootGuard()
|
|
172
|
+
expect(await guardRead(pageRead, 'teleport_orders', null)).toEqual({
|
|
173
|
+
status: 401,
|
|
174
|
+
message: 'Unauthenticated',
|
|
175
|
+
})
|
|
176
|
+
expect(
|
|
177
|
+
await guardRead(pageRead, 'teleport_products', 'SELECT * FROM teleport_products, users')
|
|
178
|
+
).toEqual({ status: 401, message: 'Unauthenticated' })
|
|
179
|
+
expect(sessionReads).toEqual([])
|
|
180
|
+
// The store's own server code reads them.
|
|
181
|
+
expect(await guardRead({ __tqServerCall: true }, 'teleport_orders', null)).toBeNull()
|
|
182
|
+
})
|
|
183
|
+
})
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -25,6 +25,7 @@ import * as SessionCookieResolver from './utils/session-cookie-resolver';
|
|
|
25
25
|
import * as SubscriptionAccess from './utils/subscription-access';
|
|
26
26
|
import * as FontPreconnect from './utils/font-preconnect';
|
|
27
27
|
import * as EmailDate from './utils/email-date';
|
|
28
|
+
import * as EmailSender from './utils/email-sender';
|
|
28
29
|
import * as RichTextEmbeds from './utils/rich-text-embeds';
|
|
29
30
|
import * as RichTextEmbedsCodegen from './utils/rich-text-embeds-codegen';
|
|
30
31
|
import * as RichTextContent from './utils/rich-text-content';
|
|
@@ -38,5 +39,5 @@ import * as PageTransition from './page-transition';
|
|
|
38
39
|
import * as StateBindings from './state-bindings';
|
|
39
40
|
import * as WebPush from './utils/web-push';
|
|
40
41
|
import * as InlineScriptErrorGuard from './utils/inline-script-error-guard';
|
|
41
|
-
export { Constants, StringUtils, UIDLUtils, GenericUtils, LocalImports, JSIdentifiers, ASTScope, ASTStatementOrder, ASTEffectCleanup, RoutePaths, LayoutTopology, HtmlContentModel, StyleDeclarations, StorefrontTax, ProductDiscounts, ProductRatings, RegionalPricing, DiscountEngine, ProductOptions, CartLinePricing, CartCurrency, TableAccess, ContentTables, SessionCookieResolver, SubscriptionAccess, FontPreconnect, EmailDate, RichTextEmbeds, RichTextEmbedsCodegen, RichTextContent, RichTextContentCodegen, DataCache, PageRevalidate, PageArrival, ScrollSceneRuntime, MotionRuntime, PageTransition, StateBindings, WebPush, InlineScriptErrorGuard, };
|
|
42
|
+
export { Constants, StringUtils, UIDLUtils, GenericUtils, LocalImports, JSIdentifiers, ASTScope, ASTStatementOrder, ASTEffectCleanup, RoutePaths, LayoutTopology, HtmlContentModel, StyleDeclarations, StorefrontTax, ProductDiscounts, ProductRatings, RegionalPricing, DiscountEngine, ProductOptions, CartLinePricing, CartCurrency, TableAccess, ContentTables, SessionCookieResolver, SubscriptionAccess, FontPreconnect, EmailDate, EmailSender, RichTextEmbeds, RichTextEmbedsCodegen, RichTextContent, RichTextContentCodegen, DataCache, PageRevalidate, PageArrival, ScrollSceneRuntime, MotionRuntime, PageTransition, StateBindings, WebPush, InlineScriptErrorGuard, };
|
|
42
43
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,WAAW,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAA;AAC/C,OAAO,KAAK,YAAY,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,aAAa,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAC7C,OAAO,KAAK,iBAAiB,MAAM,6BAA6B,CAAA;AAChE,OAAO,KAAK,gBAAgB,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,cAAc,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,gBAAgB,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,iBAAiB,MAAM,4BAA4B,CAAA;AAC/D,OAAO,KAAK,aAAa,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,gBAAgB,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,cAAc,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,eAAe,MAAM,0BAA0B,CAAA;AAC3D,OAAO,KAAK,cAAc,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,cAAc,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,eAAe,MAAM,2BAA2B,CAAA;AAC5D,OAAO,KAAK,YAAY,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,WAAW,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,aAAa,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,qBAAqB,MAAM,iCAAiC,CAAA;AACxE,OAAO,KAAK,kBAAkB,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,cAAc,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,cAAc,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,qBAAqB,MAAM,kCAAkC,CAAA;AACzE,OAAO,KAAK,eAAe,MAAM,2BAA2B,CAAA;AAC5D,OAAO,KAAK,sBAAsB,MAAM,mCAAmC,CAAA;AAC3E,OAAO,KAAK,SAAS,MAAM,SAAS,CAAA;AACpC,OAAO,KAAK,cAAc,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAA;AAC7C,OAAO,KAAK,kBAAkB,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,cAAc,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,sBAAsB,MAAM,mCAAmC,CAAA;AAE3E,OAAO,EACL,SAAS,EACT,WAAW,EACX,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EACf,YAAY,EACZ,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,SAAS,EACT,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACtB,SAAS,EACT,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,aAAa,EACb,OAAO,EACP,sBAAsB,GACvB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.InlineScriptErrorGuard = exports.WebPush = exports.StateBindings = exports.PageTransition = exports.MotionRuntime = exports.ScrollSceneRuntime = exports.PageArrival = exports.PageRevalidate = exports.DataCache = exports.RichTextContentCodegen = exports.RichTextContent = exports.RichTextEmbedsCodegen = exports.RichTextEmbeds = exports.EmailDate = exports.FontPreconnect = exports.SubscriptionAccess = exports.SessionCookieResolver = exports.ContentTables = exports.TableAccess = exports.CartCurrency = exports.CartLinePricing = exports.ProductOptions = exports.DiscountEngine = exports.RegionalPricing = exports.ProductRatings = exports.ProductDiscounts = exports.StorefrontTax = exports.StyleDeclarations = exports.HtmlContentModel = exports.LayoutTopology = exports.RoutePaths = exports.ASTEffectCleanup = exports.ASTStatementOrder = exports.ASTScope = exports.JSIdentifiers = exports.LocalImports = exports.GenericUtils = exports.UIDLUtils = exports.StringUtils = exports.Constants = void 0;
|
|
26
|
+
exports.InlineScriptErrorGuard = exports.WebPush = exports.StateBindings = exports.PageTransition = exports.MotionRuntime = exports.ScrollSceneRuntime = exports.PageArrival = exports.PageRevalidate = exports.DataCache = exports.RichTextContentCodegen = exports.RichTextContent = exports.RichTextEmbedsCodegen = exports.RichTextEmbeds = exports.EmailSender = exports.EmailDate = exports.FontPreconnect = exports.SubscriptionAccess = exports.SessionCookieResolver = exports.ContentTables = exports.TableAccess = exports.CartCurrency = exports.CartLinePricing = exports.ProductOptions = exports.DiscountEngine = exports.RegionalPricing = exports.ProductRatings = exports.ProductDiscounts = exports.StorefrontTax = exports.StyleDeclarations = exports.HtmlContentModel = exports.LayoutTopology = exports.RoutePaths = exports.ASTEffectCleanup = exports.ASTStatementOrder = exports.ASTScope = exports.JSIdentifiers = exports.LocalImports = exports.GenericUtils = exports.UIDLUtils = exports.StringUtils = exports.Constants = void 0;
|
|
27
27
|
var Constants = __importStar(require("./constants"));
|
|
28
28
|
exports.Constants = Constants;
|
|
29
29
|
var StringUtils = __importStar(require("./utils/string-utils"));
|
|
@@ -78,6 +78,8 @@ var FontPreconnect = __importStar(require("./utils/font-preconnect"));
|
|
|
78
78
|
exports.FontPreconnect = FontPreconnect;
|
|
79
79
|
var EmailDate = __importStar(require("./utils/email-date"));
|
|
80
80
|
exports.EmailDate = EmailDate;
|
|
81
|
+
var EmailSender = __importStar(require("./utils/email-sender"));
|
|
82
|
+
exports.EmailSender = EmailSender;
|
|
81
83
|
var RichTextEmbeds = __importStar(require("./utils/rich-text-embeds"));
|
|
82
84
|
exports.RichTextEmbeds = RichTextEmbeds;
|
|
83
85
|
var RichTextEmbedsCodegen = __importStar(require("./utils/rich-text-embeds-codegen"));
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAwC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAwC;AA2CtC,8BAAS;AA1CX,gEAAmD;AA2CjD,kCAAW;AA1Cb,4DAA+C;AA2C7C,8BAAS;AA1CX,4DAA+C;AA2C7C,oCAAY;AA1Cd,kEAAqD;AA2CnD,oCAAY;AA1Cd,oEAAuD;AA2CrD,sCAAa;AA1Cf,0DAA6C;AA2C3C,4BAAQ;AA1CV,6EAAgE;AA2C9D,8CAAiB;AA1CnB,2EAA8D;AA2C5D,4CAAgB;AA1ClB,8DAAiD;AA2C/C,gCAAU;AA1CZ,sEAAyD;AA2CvD,wCAAc;AA1ChB,2EAA8D;AA2C5D,4CAAgB;AA1ClB,4EAA+D;AA2C7D,8CAAiB;AA1CnB,oEAAuD;AA2CrD,sCAAa;AA1Cf,0EAA6D;AA2C3D,4CAAgB;AA1ClB,sEAAyD;AA2CvD,wCAAc;AA1ChB,wEAA2D;AA2CzD,0CAAe;AA1CjB,sEAAyD;AA2CvD,wCAAc;AA1ChB,sEAAyD;AA2CvD,wCAAc;AA1ChB,yEAA4D;AA2C1D,0CAAe;AA1CjB,kEAAqD;AA2CnD,oCAAY;AA1Cd,gEAAmD;AA2CjD,kCAAW;AA1Cb,oEAAuD;AA2CrD,sCAAa;AA1Cf,qFAAwE;AA2CtE,sDAAqB;AA1CvB,8EAAiE;AA2C/D,gDAAkB;AA1CpB,sEAAyD;AA2CvD,wCAAc;AA1ChB,4DAA+C;AA2C7C,8BAAS;AA1CX,gEAAmD;AA2CjD,kCAAW;AA1Cb,uEAA0D;AA2CxD,wCAAc;AA1ChB,sFAAyE;AA2CvE,sDAAqB;AA1CvB,yEAA4D;AA2C1D,0CAAe;AA1CjB,wFAA2E;AA2CzE,wDAAsB;AA1CxB,iDAAoC;AA2ClC,8BAAS;AA1CX,gEAAmD;AA2CjD,wCAAc;AA1ChB,0DAA6C;AA2C3C,kCAAW;AA1Cb,iEAAoD;AA2ClD,gDAAkB;AA1CpB,8DAAiD;AA2C/C,sCAAa;AA1Cf,gEAAmD;AA2CjD,wCAAc;AA1ChB,8DAAiD;AA2C/C,sCAAa;AA1Cf,wDAA2C;AA2CzC,0BAAO;AA1CT,wFAA2E;AA2CzE,wDAAsB"}
|
|
@@ -2,6 +2,8 @@ import * as PageTransition from './variants';
|
|
|
2
2
|
export declare const BACK_ATTR = "data-tq-nav";
|
|
3
3
|
export declare const ORIGIN_X = "--tq-origin-x";
|
|
4
4
|
export declare const ORIGIN_Y = "--tq-origin-y";
|
|
5
|
+
/** A dissolve (Fade, Crossfade): the arriving page fades in over the leaving one, which holds. */
|
|
6
|
+
export declare const pageTransitionDissolves: (preset: string) => boolean;
|
|
5
7
|
/** The name of the one image that flies from the leaving page into the arriving page. */
|
|
6
8
|
export declare const MORPH_NAME = "tq-morph";
|
|
7
9
|
export interface ViewTransitionPlan {
|
|
@@ -14,6 +16,8 @@ export interface ViewTransitionPlan {
|
|
|
14
16
|
flies: boolean;
|
|
15
17
|
/** The arriving page is revealed over the leaving one, which holds (Circle, the Wipes). */
|
|
16
18
|
revealsOver: boolean;
|
|
19
|
+
/** The arriving page comes in over the leaving one, which holds: a reveal, or a dissolve (Fade, Crossfade). */
|
|
20
|
+
arrivesOver: boolean;
|
|
17
21
|
}
|
|
18
22
|
export declare const viewTransitionPlan: (config: PageTransition.PageTransitionConfig, target?: {
|
|
19
23
|
crossDocument: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-transition-css.d.ts","sourceRoot":"","sources":["../../../src/page-transition/view-transition-css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"view-transition-css.d.ts","sourceRoot":"","sources":["../../../src/page-transition/view-transition-css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,YAAY,CAAA;AAqC5C,eAAO,MAAM,SAAS,gBAAgB,CAAA;AACtC,eAAO,MAAM,QAAQ,kBAAkB,CAAA;AACvC,eAAO,MAAM,QAAQ,kBAAkB,CAAA;AA+CvC,kGAAkG;AAClG,eAAO,MAAM,uBAAuB,WAAY,MAAM,KAAG,OACZ,CAAA;AAoC7C,yFAAyF;AACzF,eAAO,MAAM,UAAU,aAAa,CAAA;AAEpC,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,0GAA0G;IAC1G,cAAc,EAAE,OAAO,CAAA;IACvB,gGAAgG;IAChG,WAAW,EAAE,OAAO,CAAA;IACpB,oGAAoG;IACpG,KAAK,EAAE,OAAO,CAAA;IACd,2FAA2F;IAC3F,WAAW,EAAE,OAAO,CAAA;IACpB,+GAA+G;IAC/G,WAAW,EAAE,OAAO,CAAA;CACrB;AAED,eAAO,MAAM,kBAAkB,WACrB,eAAe,oBAAoB,WACnC;IAAE,aAAa,EAAE,OAAO,CAAA;CAAE,KACjC,kBAAkB,GAAG,IAuGvB,CAAA"}
|
|
@@ -43,7 +43,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
43
43
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
44
44
|
};
|
|
45
45
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
-
exports.viewTransitionPlan = exports.MORPH_NAME = exports.ORIGIN_Y = exports.ORIGIN_X = exports.BACK_ATTR = void 0;
|
|
46
|
+
exports.viewTransitionPlan = exports.MORPH_NAME = exports.pageTransitionDissolves = exports.ORIGIN_Y = exports.ORIGIN_X = exports.BACK_ATTR = void 0;
|
|
47
47
|
var PageTransition = __importStar(require("./variants"));
|
|
48
48
|
exports.BACK_ATTR = 'data-tq-nav';
|
|
49
49
|
exports.ORIGIN_X = '--tq-origin-x';
|
|
@@ -87,6 +87,11 @@ var COVER_CLIPS = {
|
|
|
87
87
|
curtain: { covered: 'inset(0 50% 0 50%)', opening: 'inset(0 50% 0 50%)' },
|
|
88
88
|
};
|
|
89
89
|
var OPEN = 'inset(0 0 0 0)';
|
|
90
|
+
/** A dissolve (Fade, Crossfade): the arriving page fades in over the leaving one, which holds. */
|
|
91
|
+
var pageTransitionDissolves = function (preset) {
|
|
92
|
+
return preset === 'fade' || preset === 'crossfade';
|
|
93
|
+
};
|
|
94
|
+
exports.pageTransitionDissolves = pageTransitionDissolves;
|
|
90
95
|
var animationsFor = function (preset, context, options, custom) {
|
|
91
96
|
var cover = COVER_CLIPS[preset];
|
|
92
97
|
if (cover) {
|
|
@@ -141,27 +146,28 @@ var viewTransitionPlan = function (config, target) {
|
|
|
141
146
|
? animationsFor(preset, { reverse: true, originX: '50%', originY: '50%' }, options, custom)
|
|
142
147
|
: null;
|
|
143
148
|
var timing = "".concat(duration, "s cubic-bezier(").concat(curve.join(', '), ")");
|
|
144
|
-
// A reveal
|
|
145
|
-
// animates, from the start, and the leaving picture just stays.
|
|
149
|
+
// A reveal or a dissolve brings the arriving page in over the leaving one:
|
|
150
|
+
// only the arrival animates, from the start, and the leaving picture just stays.
|
|
146
151
|
var revealsOver = !COVER_CLIPS[preset] && forward.arrive[1].clipPath !== undefined;
|
|
147
|
-
var
|
|
152
|
+
var arrivesOver = revealsOver || (0, exports.pageTransitionDissolves)(preset);
|
|
153
|
+
var arriveTiming = arrivesOver ? "".concat(timing, " both") : "".concat(timing, " ").concat(duration, "s both");
|
|
148
154
|
var rules = __spreadArray(__spreadArray(__spreadArray(__spreadArray([], (target.crossDocument ? ['@view-transition {\n navigation: auto;\n}'] : []), true), [
|
|
149
155
|
'::view-transition-old(root),\n::view-transition-new(root) {\n mix-blend-mode: normal;\n}',
|
|
150
|
-
|
|
156
|
+
arrivesOver
|
|
151
157
|
? '::view-transition-old(root) {\n animation: none;\n}'
|
|
152
158
|
: "::view-transition-old(root) {\n animation: tq-page-leave ".concat(timing, " both;\n}"),
|
|
153
159
|
"::view-transition-new(root) {\n animation: tq-page-arrive ".concat(arriveTiming, ";\n}")
|
|
154
|
-
], false), (
|
|
160
|
+
], false), (arrivesOver ? [] : [keyframes('tq-page-leave', forward.leave[0], forward.leave[1])]), true), [
|
|
155
161
|
keyframes('tq-page-arrive', forward.arrive[0], forward.arrive[1]),
|
|
156
162
|
], false);
|
|
157
163
|
if (COVER_CLIPS[preset]) {
|
|
158
164
|
rules.push("::view-transition-group(root) {\n background: ".concat(PageTransition.pageTransitionCoverColor(options.color), ";\n}"));
|
|
159
165
|
}
|
|
160
166
|
if (back) {
|
|
161
|
-
if (!
|
|
167
|
+
if (!arrivesOver) {
|
|
162
168
|
rules.push("html[".concat(exports.BACK_ATTR, "=\"back\"]::view-transition-old(root) {\n animation-name: tq-page-leave-back;\n}"));
|
|
163
169
|
}
|
|
164
|
-
rules.push.apply(rules, __spreadArray(__spreadArray(["html[".concat(exports.BACK_ATTR, "=\"back\"]::view-transition-new(root) {\n animation-name: tq-page-arrive-back;\n}")], (
|
|
170
|
+
rules.push.apply(rules, __spreadArray(__spreadArray(["html[".concat(exports.BACK_ATTR, "=\"back\"]::view-transition-new(root) {\n animation-name: tq-page-arrive-back;\n}")], (arrivesOver ? [] : [keyframes('tq-page-leave-back', back.leave[0], back.leave[1])]), false), [keyframes('tq-page-arrive-back', back.arrive[0], back.arrive[1])], false));
|
|
165
171
|
}
|
|
166
172
|
// The flying image spans both halves (the leaving page's and the arriving
|
|
167
173
|
// page's — one half when the arrival plays over the leaving page), and a
|
|
@@ -170,8 +176,8 @@ var viewTransitionPlan = function (config, target) {
|
|
|
170
176
|
// with its page instead of lingering over the next one.
|
|
171
177
|
var flies = config.flyingPictures !== false;
|
|
172
178
|
if (flies) {
|
|
173
|
-
var flight =
|
|
174
|
-
rules.push("::view-transition-group(".concat(exports.MORPH_NAME, ") {\n animation-duration: ").concat(flight, "s;\n animation-timing-function: cubic-bezier(").concat(curve.join(', '), ");\n}"), "::view-transition-old(".concat(exports.MORPH_NAME, "),\n::view-transition-new(").concat(exports.MORPH_NAME, ") {\n height: 100%;\n object-fit: cover;\n overflow: clip;\n animation-duration: ").concat(flight, "s;\n}"),
|
|
179
|
+
var flight = arrivesOver ? duration : duration * 2;
|
|
180
|
+
rules.push("::view-transition-group(".concat(exports.MORPH_NAME, ") {\n animation-duration: ").concat(flight, "s;\n animation-timing-function: cubic-bezier(").concat(curve.join(', '), ");\n}"), "::view-transition-old(".concat(exports.MORPH_NAME, "),\n::view-transition-new(").concat(exports.MORPH_NAME, ") {\n height: 100%;\n object-fit: cover;\n overflow: clip;\n animation-duration: ").concat(flight, "s;\n}"), arrivesOver
|
|
175
181
|
? "::view-transition-old(".concat(exports.MORPH_NAME, "):only-child {\n animation: tq-morph-away ").concat(timing, " both;\n}")
|
|
176
182
|
: "::view-transition-old(".concat(exports.MORPH_NAME, "):only-child {\n animation: tq-page-leave ").concat(timing, " both, tq-morph-away ").concat(timing, " both;\n}"), "::view-transition-new(".concat(exports.MORPH_NAME, "):only-child {\n animation: tq-page-arrive ").concat(arriveTiming, ", tq-morph-in ").concat(arriveTiming, ";\n}"), '@keyframes tq-morph-away {\n to { opacity: 0; }\n}', '@keyframes tq-morph-in {\n from { opacity: 0; }\n}');
|
|
177
183
|
}
|
|
@@ -182,6 +188,7 @@ var viewTransitionPlan = function (config, target) {
|
|
|
182
188
|
needsOrigin: needsOrigin,
|
|
183
189
|
flies: flies,
|
|
184
190
|
revealsOver: revealsOver,
|
|
191
|
+
arrivesOver: arrivesOver,
|
|
185
192
|
};
|
|
186
193
|
};
|
|
187
194
|
exports.viewTransitionPlan = viewTransitionPlan;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-transition-css.js","sourceRoot":"","sources":["../../../src/page-transition/view-transition-css.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAA4C;
|
|
1
|
+
{"version":3,"file":"view-transition-css.js","sourceRoot":"","sources":["../../../src/page-transition/view-transition-css.ts"],"names":[],"mappings":"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"}
|