1 let logjson = (await import('@ndcode/logjson')).default
2 let XDate = require('xdate')
4 return async (env, session) => {
5 let data = await env.site.get_json('/_placeholder/data.json')
7 // placeholder data (name, email, address etc) is generated randomly)
8 // it is stored in session, so user shouldn't normally realize it's random,
9 // and updated every 24 hours (in case we generated an embarrassing one)
10 let placeholder = await session.get_json('placeholder')
11 if (placeholder === undefined || env.now >= placeholder.expires) {
12 let given_name = data.given_names[
13 Math.floor(Math.random() * data.given_names.length)
16 let family_name = data.family_names[
17 Math.floor(Math.random() * data.family_names.length)
22 [given_name, family_name] :
23 [family_name, given_name]
24 if (Math.random() < .5)
25 user = user.map(name => name.toLowerCase())
27 data.email_separators[
28 Math.floor(Math.random() * data.email_separators.length)
31 let email_domain = data.email_domains[
32 Math.floor(Math.random() * data.email_domains.length)
34 let email = `${user}@${email_domain}`
38 data.company_prefixes[
39 Math.floor(Math.random() * data.company_prefixes.length)
42 Math.floor(Math.random() * data.family_names.length)
46 ' & ' + data.family_names[
47 Math.floor(Math.random() * data.family_names.length)
50 let company_suffix = data.company_suffixes[
51 Math.floor(Math.random() * data.company_suffixes.length)
53 if (company_suffix.charAt(0) === '&')
54 company_prefix = company_prefix.replaceAll(' & ', ', ')
55 let company = `${company_prefix} ${company_suffix}`
57 let expires = new XDate(env.now)
61 given_names: given_name,
65 expires: expires.getTime()
67 session.set_json('placeholder', placeholder)