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())
28 Math.floor(Math.random() * data.separators.length)
31 let domain_name = data.domain_names[
32 Math.floor(Math.random() * data.domain_names.length)
34 let email = `${user}@${domain_name}`
37 for (let i = 0; i < 6; ++i) {
38 let j = Math.floor(Math.random() * 36)
40 '0123456789abcdefghijklmnopqrstuvwxyz'.slice(j, j + 1)
43 captcha_text = captcha_text.join('')
45 let expires = new XDate(env.now)
49 given_names: given_name,
53 expires: expires.getTime()
55 session.set_json('placeholder', placeholder)