@joystick.js/node-canary 0.0.0-canary.433 → 0.0.0-canary.435
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/dist/app/databases/postgresql/create_indexes.js +1 -1
- package/dist/app/databases/postgresql/create_tables.js +1 -1
- package/dist/app/databases/postgresql/handle_cleanup_sessions.js +1 -1
- package/dist/index.js +4 -4
- package/package.json +1 -1
- package/src/app/databases/postgresql/create_indexes.js +15 -15
- package/src/app/databases/postgresql/create_tables.js +33 -33
- package/src/app/databases/postgresql/handle_cleanup_sessions.js +1 -1
- package/src/index.js +4 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import t from"node-cron";import i from"../../../lib/types.js";import n from"./handle_cleanup_sessions.js";const u=async(r="",e="",_="",a=[])=>process.databases[r]?.query(`CREATE UNIQUE INDEX IF NOT EXISTS ${e} ON ${_}(${a.join(", ")})`),s=async(r="",e="",_="",a=[])=>process.databases[r]?.query(`CREATE INDEX IF NOT EXISTS ${e} ON ${_}(${a.join(", ")})`),o={sessions:async()=>{await s("_sessions","session_by_id","sessions",["session_id"]),await s("_sessions","session_created_at","sessions",["created_at"]),t.schedule("*/30 * * * * *",()=>{n()})},users:async()=>{await s("_users","user_by_email","users",["email_address"]),await s("_users","user_by_username","users",["username"]),await s("_users","user_by_user_id","users",["user_id"]),await s("user_session_by_token","users_sessions",["token"]),await s("_users","user_password_reset_token_by_token","users_password_reset_tokens",["token"]),await s("_users","user_password_reset_token_by_user_id_token","users_password_reset_tokens",["user_id","token"]),await s("_users","user_role","users_roles",["role"]),await s("_users","user_roles_by_user_id_role","users_roles",["user_id","role"]),await s("_users","role","roles",["role"]),await u("_users","user_roles","users_roles",["user_id","role"])}},d=async(r=[])=>{for(let e=0;e<r?.length;e+=1){const _=r[e];i.is_function(o[_])&&await o[_]()}};var y=d;export{y as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import a from"../../../lib/types.js";const e=(s="",
|
|
1
|
+
import a from"../../../lib/types.js";const e=(t="",s="",r=[])=>process.databases[t]?.query(`CREATE TABLE IF NOT EXISTS ${s} (${r.join(", ")})`),i={sessions:async()=>{await e("_sessions","sessions",["id bigserial primary key","session_id text","csrf text","created_at text"])},users:async()=>{await e("_users","users",["id bigserial primary key","user_id text","email_address text","password text","username text","language text"]),await e("_users","users_sessions",["id bigserial primary key","user_id text","token text","token_expires_at text"]),await e("_users","users_password_reset_tokens",["id bigserial primary key","user_id text","token text","requested_at text"]),await e("_users","users_verify_email_tokens",["id bigserial primary key","user_id text","token text"]),await e("_users","roles",["id bigserial primary key","role text"]),await e("_users","users_roles",["id bigserial primary key","user_id text","role text"])}},o=async(t=[])=>{for(let s=0;s<t?.length;s+=1){const r=t[s];a.is_function(i[r])&&await i[r]()}};var n=o;export{n as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const s=async()=>{await process.databases._sessions.query("DELETE FROM sessions where created_at::timestamp <= timezone('utc', now() - interval '1 hour')")};var e=s;export{e as default};
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
`,""):null,instance_token:await
|
|
3
|
-
`,""):null,current_version:await
|
|
4
|
-
`,""):null},P=
|
|
1
|
+
import i from"fs";import t from"./app/accounts/index.js";import n from"./action/index.js";import a from"./lib/escape_html.js";import p from"./app/fixture/index.js";import m from"./app/databases/sql.js";import c from"./app/api/validate_input.js";import _ from"./app/websockets/index.js";import l from"./app/index.js";import f from"./lib/generate_id.js";import u from"./lib/get_origin.js";import d from"./app/settings/load.js";import o from"./lib/node_path_polyfills.js";import e from"./lib/path_exists.js";import x from"./app/email/send.js";const{readFile:r}=i.promises,w={...t,deleteUser:t.delete_user,recoverPassword:t.recover_password,resetPassword:t.reset_password,sendEmailVerification:t.send_email_verification,setPassword:t.set_password,verifyEmail:t.verify_email},h=n,N=o.__dirname,v={send:x},g=a,O=o.__filename,k=p,y=u(),b={continent:await e("/root/push/continent.txt")?(await r("/root/push/continent.txt","utf-8"))?.replace(`
|
|
2
|
+
`,""):null,instance_token:await e("/root/push/instance_token.txt")?(await r("/root/push/instance_token.txt","utf-8"))?.replace(`
|
|
3
|
+
`,""):null,current_version:await e("/root/push/versions/current")?(await r("/root/push/versions/current","utf-8"))?.replace(`
|
|
4
|
+
`,""):null},P=d(),j=m,q=c,E=_,s={app:l,accounts:w,action:h,email:v,emitters:{},escape_html:g,fixture:k,id:f,origin:y,push:b,settings:P,sql:j,validate_input:q,websockets:E,...o};global.joystick=s;var Q=s;export{N as __dirname,O as __filename,w as accounts,h as action,Q as default,v as email,g as escape_html,k as fixture,y as origin,b as push,P as settings,j as sql,q as validate_input,E as websockets};
|
package/package.json
CHANGED
|
@@ -2,12 +2,12 @@ import cron from 'node-cron';
|
|
|
2
2
|
import types from "../../../lib/types.js";
|
|
3
3
|
import handle_cleanup_sessions from "./handle_cleanup_sessions.js";
|
|
4
4
|
|
|
5
|
-
const create_unique_index = async (index_name = '', table_name = '', table_columns = []) => {
|
|
6
|
-
return process.databases
|
|
5
|
+
const create_unique_index = async (target_database = '', index_name = '', table_name = '', table_columns = []) => {
|
|
6
|
+
return process.databases[target_database]?.query(`CREATE UNIQUE INDEX IF NOT EXISTS ${index_name} ON ${table_name}(${table_columns.join(', ')})`);
|
|
7
7
|
};
|
|
8
8
|
|
|
9
|
-
const create_index = async (index_name = '', table_name = '', table_columns = []) => {
|
|
10
|
-
return process.databases
|
|
9
|
+
const create_index = async (target_database = '', index_name = '', table_name = '', table_columns = []) => {
|
|
10
|
+
return process.databases[target_database]?.query(`CREATE INDEX IF NOT EXISTS ${index_name} ON ${table_name}(${table_columns.join(', ')})`);
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
const indexes = {
|
|
@@ -15,8 +15,8 @@ const indexes = {
|
|
|
15
15
|
// app/databases/queries/<provider>/queues.js initialize_database function
|
|
16
16
|
// to account for developer customization options.
|
|
17
17
|
sessions: async () => {
|
|
18
|
-
await create_index('session_by_id', 'sessions', ['session_id']);
|
|
19
|
-
await create_index('session_created_at', 'sessions', ['created_at']);
|
|
18
|
+
await create_index('_sessions', 'session_by_id', 'sessions', ['session_id']);
|
|
19
|
+
await create_index('_sessions', 'session_created_at', 'sessions', ['created_at']);
|
|
20
20
|
|
|
21
21
|
// NOTE: Simulate a TTL index using cron to wipe out sessions older than 1 hour.
|
|
22
22
|
cron.schedule('*/30 * * * * *', () => {
|
|
@@ -25,24 +25,24 @@ const indexes = {
|
|
|
25
25
|
},
|
|
26
26
|
users: async () => {
|
|
27
27
|
// users
|
|
28
|
-
await create_index('user_by_email', 'users', ['email_address']);
|
|
29
|
-
await create_index('user_by_username', 'users', ['username']);
|
|
30
|
-
await create_index('user_by_user_id', 'users', ['user_id']);
|
|
28
|
+
await create_index('_users', 'user_by_email', 'users', ['email_address']);
|
|
29
|
+
await create_index('_users', 'user_by_username', 'users', ['username']);
|
|
30
|
+
await create_index('_users', 'user_by_user_id', 'users', ['user_id']);
|
|
31
31
|
|
|
32
32
|
// users_sessions
|
|
33
33
|
await create_index('user_session_by_token', 'users_sessions', ['token']);
|
|
34
34
|
|
|
35
35
|
// users_password_reset_tokens
|
|
36
|
-
await create_index('user_password_reset_token_by_token', 'users_password_reset_tokens', ['token']);
|
|
37
|
-
await create_index('user_password_reset_token_by_user_id_token', 'users_password_reset_tokens', ['user_id', 'token']);
|
|
36
|
+
await create_index('_users', 'user_password_reset_token_by_token', 'users_password_reset_tokens', ['token']);
|
|
37
|
+
await create_index('_users', 'user_password_reset_token_by_user_id_token', 'users_password_reset_tokens', ['user_id', 'token']);
|
|
38
38
|
|
|
39
39
|
// users_roles
|
|
40
|
-
await create_index('user_role', 'users_roles', ['role']);
|
|
41
|
-
await create_index('user_roles_by_user_id_role', 'users_roles', ['user_id', 'role']);
|
|
40
|
+
await create_index('_users', 'user_role', 'users_roles', ['role']);
|
|
41
|
+
await create_index('_users', 'user_roles_by_user_id_role', 'users_roles', ['user_id', 'role']);
|
|
42
42
|
|
|
43
43
|
// roles
|
|
44
|
-
await create_index('role', 'roles', ['role']);
|
|
45
|
-
await create_unique_index('user_roles', 'users_roles', ['user_id', 'role']);
|
|
44
|
+
await create_index('_users', 'role', 'roles', ['role']);
|
|
45
|
+
await create_unique_index('_users', 'user_roles', 'users_roles', ['user_id', 'role']);
|
|
46
46
|
},
|
|
47
47
|
};
|
|
48
48
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import types from "../../../lib/types.js";
|
|
2
2
|
|
|
3
|
-
const create_table = (table_name = '', table_columns = []) => {
|
|
4
|
-
return process.databases
|
|
3
|
+
const create_table = (target_database = '', table_name = '', table_columns = []) => {
|
|
4
|
+
return process.databases[target_database]?.query(
|
|
5
5
|
`CREATE TABLE IF NOT EXISTS ${table_name} (${table_columns.join(", ")})`
|
|
6
6
|
);
|
|
7
7
|
};
|
|
@@ -11,49 +11,49 @@ const tables = {
|
|
|
11
11
|
// app/databases/queries/<provider>/queues.js initialize_database function
|
|
12
12
|
// to account for dynamic table names.
|
|
13
13
|
sessions: async () => {
|
|
14
|
-
await create_table(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
await create_table('_sessions', 'sessions', [
|
|
15
|
+
'id bigserial primary key',
|
|
16
|
+
'session_id text',
|
|
17
|
+
'csrf text',
|
|
18
|
+
'created_at text'
|
|
19
19
|
]);
|
|
20
20
|
},
|
|
21
21
|
users: async () => {
|
|
22
|
-
await create_table(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
await create_table('_users', 'users', [
|
|
23
|
+
'id bigserial primary key',
|
|
24
|
+
'user_id text',
|
|
25
|
+
'email_address text',
|
|
26
|
+
'password text',
|
|
27
|
+
'username text',
|
|
28
|
+
'language text',
|
|
29
29
|
]);
|
|
30
30
|
|
|
31
|
-
await create_table(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
await create_table('_users', 'users_sessions', [
|
|
32
|
+
'id bigserial primary key',
|
|
33
|
+
'user_id text',
|
|
34
|
+
'token text',
|
|
35
|
+
'token_expires_at text',
|
|
36
36
|
]);
|
|
37
37
|
|
|
38
|
-
await create_table(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
await create_table('_users', 'users_password_reset_tokens', [
|
|
39
|
+
'id bigserial primary key',
|
|
40
|
+
'user_id text',
|
|
41
|
+
'token text',
|
|
42
|
+
'requested_at text',
|
|
43
43
|
]);
|
|
44
44
|
|
|
45
|
-
await create_table(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
await create_table('_users', 'users_verify_email_tokens', [
|
|
46
|
+
'id bigserial primary key',
|
|
47
|
+
'user_id text',
|
|
48
|
+
'token text',
|
|
49
49
|
]);
|
|
50
50
|
|
|
51
|
-
await create_table(
|
|
51
|
+
await create_table('_users', 'roles', ['id bigserial primary key', 'role text']);
|
|
52
52
|
|
|
53
|
-
await create_table(
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
await create_table('_users', 'users_roles', [
|
|
54
|
+
'id bigserial primary key',
|
|
55
|
+
'user_id text',
|
|
56
|
+
'role text',
|
|
57
57
|
]);
|
|
58
58
|
},
|
|
59
59
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const handle_cleanup_sessions = async () => {
|
|
2
|
-
await
|
|
2
|
+
await process.databases._sessions.query(`DELETE FROM sessions where created_at::timestamp <= timezone('utc', now() - interval '1 hour')`);
|
|
3
3
|
};
|
|
4
4
|
|
|
5
5
|
export default handle_cleanup_sessions;
|
package/src/index.js
CHANGED
|
@@ -30,12 +30,16 @@ export const accounts = {
|
|
|
30
30
|
|
|
31
31
|
export const action = _action;
|
|
32
32
|
|
|
33
|
+
export const __dirname = node_path_polyfills.__dirname;
|
|
34
|
+
|
|
33
35
|
export const email = {
|
|
34
36
|
send: send_email,
|
|
35
37
|
};
|
|
36
38
|
|
|
37
39
|
export const escape_html = _escape_html;
|
|
38
40
|
|
|
41
|
+
export const __filename = node_path_polyfills.__filename;
|
|
42
|
+
|
|
39
43
|
export const fixture = _fixture;
|
|
40
44
|
|
|
41
45
|
export const origin = get_origin();
|