@randajan/koa-io-session 0.0.3 → 0.0.4
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/README.md +1 -1
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.cjs.map +2 -2
- package/dist/esm/index.mjs +1 -0
- package/dist/esm/index.mjs.map +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
package/dist/cjs/index.cjs
CHANGED
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.js", "../../src/SessionStore.js"],
|
|
4
|
-
"sourcesContent": ["import crypto from \"crypto\";\nimport session from \"koa-session\";\nimport { SessionStore } from \"./SessionStore\";\nimport { virtual } from \"@randajan/props\";\n\nconst uid = (len = 12) => crypto.randomBytes(len).toString(\"base64url\").slice(0, len);\n\nexport const attachSession = (app, io, opt = {}) => {\n if (!app.keys) { app.keys = Array(6).fill().map(() => uid(12)); }\n\n if (!opt.key) { opt.key = uid(12); }\n if (!opt.store) { opt.store = new SessionStore(); }\n\n const { key, store } = opt;\n\n const signed = (\"signed\" in opt) ? !!opt.signed : true;\n delete opt.signed;\n\n app.use(session(opt, app));\n app.use(async (ctx, next) => {\n ctx.session.active = true; //idk why but without this it doesnt work :)\n await next();\n });\n \n io.use(async (socket, next) => {\n \n if (!socket.handshake.headers.cookie) { return next(new Error('no cookie')); }\n \n const ctx = app.createContext(socket.request, socket.response);\n const sid = ctx.cookies.get(key, { signed });\n \n virtual(socket, \"sessionId\", _=>sid);\n virtual(socket, \"session\", _=>store.get(sid));\n \n await next();\n });\n};\n\n\n\nexport default attachSession;", "import { solid } from \"@randajan/props\";\r\n\r\n\r\nexport class SessionStore {\r\n constructor() {\r\n solid(this, \"_recs\", new Map());\r\n }\r\n\r\n get(sid) {\r\n const rec = this._recs.get(sid);\r\n if (!rec) { return; }\r\n if (Date.now() < rec.expiresAt) { return rec.session; }\r\n this.destroy(sid);\r\n }\r\n\r\n set(sid, session, maxAge) {\r\n const expiresAt = Date.now() + maxAge;\r\n this._recs.set(sid, { session, expiresAt, maxAge });\r\n }\r\n\r\n destroy(sid) {\r\n this._recs.delete(sid);\r\n }\r\n};"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAmB;AACnB,yBAAoB;;;ACDpB,mBAAsB;AAGf,IAAM,eAAN,MAAmB;AAAA,EACtB,cAAc;AACV,4BAAM,MAAM,SAAS,oBAAI,IAAI,CAAC;AAAA,EAClC;AAAA,EAEA,IAAI,KAAK;AACL,UAAM,MAAM,KAAK,MAAM,IAAI,GAAG;AAC9B,QAAI,CAAC,KAAK;AAAE;AAAA,IAAQ;AACpB,QAAI,KAAK,IAAI,IAAI,IAAI,WAAW;AAAE,aAAO,IAAI;AAAA,IAAS;AACtD,SAAK,QAAQ,GAAG;AAAA,EACpB;AAAA,EAEA,IAAI,KAAKA,UAAS,QAAQ;AACtB,UAAM,YAAY,KAAK,IAAI,IAAI;AAC/B,SAAK,MAAM,IAAI,KAAK,EAAE,SAAAA,UAAS,WAAW,OAAO,CAAC;AAAA,EACtD;AAAA,EAEA,QAAQ,KAAK;AACT,SAAK,MAAM,OAAO,GAAG;AAAA,EACzB;AACJ;;;ADpBA,IAAAC,gBAAwB;AAExB,IAAM,MAAM,CAAC,MAAM,OAAO,cAAAC,QAAO,YAAY,GAAG,EAAE,SAAS,WAAW,EAAE,MAAM,GAAG,GAAG;AAE7E,IAAM,gBAAgB,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM;AAChD,MAAI,CAAC,IAAI,MAAM;AAAE,QAAI,OAAO,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,MAAM,IAAI,EAAE,CAAC;AAAA,EAAG;AAEhE,MAAI,CAAC,IAAI,KAAK;AAAE,QAAI,MAAM,IAAI,EAAE;AAAA,EAAG;AACnC,MAAI,CAAC,IAAI,OAAO;AAAE,QAAI,QAAQ,IAAI,aAAa;AAAA,EAAG;AAElD,QAAM,EAAE,KAAK,MAAM,IAAI;AAEvB,QAAM,SAAU,YAAY,MAAO,CAAC,CAAC,IAAI,SAAS;AAClD,SAAO,IAAI;AAEX,MAAI,QAAI,mBAAAC,SAAQ,KAAK,GAAG,CAAC;AACzB,MAAI,IAAI,OAAO,KAAK,SAAS;AACzB,QAAI,QAAQ,SAAS;AACrB,UAAM,KAAK;AAAA,EACf,CAAC;AAED,KAAG,IAAI,OAAO,QAAQ,SAAS;AAE3B,QAAI,CAAC,OAAO,UAAU,QAAQ,QAAQ;AAAE,aAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAAA,IAAG;AAE7E,UAAM,MAAM,IAAI,cAAc,OAAO,SAAS,OAAO,QAAQ;AAC7D,UAAM,MAAM,IAAI,QAAQ,IAAI,KAAK,EAAE,OAAO,CAAC;AAE3C,+BAAQ,QAAQ,aAAa,OAAG,GAAG;AACnC,+BAAQ,QAAQ,WAAW,OAAG,MAAM,IAAI,GAAG,CAAC;AAE5C,UAAM,KAAK;AAAA,EACf,CAAC;
|
|
4
|
+
"sourcesContent": ["import crypto from \"crypto\";\nimport session from \"koa-session\";\nimport { SessionStore } from \"./SessionStore\";\nimport { virtual } from \"@randajan/props\";\n\nconst uid = (len = 12) => crypto.randomBytes(len).toString(\"base64url\").slice(0, len);\n\nexport const attachSession = (app, io, opt = {}) => {\n if (!app.keys) { app.keys = Array(6).fill().map(() => uid(12)); }\n\n if (!opt.key) { opt.key = uid(12); }\n if (!opt.store) { opt.store = new SessionStore(); }\n\n const { key, store } = opt;\n\n const signed = (\"signed\" in opt) ? !!opt.signed : true;\n delete opt.signed;\n\n app.use(session(opt, app));\n app.use(async (ctx, next) => {\n ctx.session.active = true; //idk why but without this it doesnt work :)\n await next();\n });\n \n io.use(async (socket, next) => {\n \n if (!socket.handshake.headers.cookie) { return next(new Error('no cookie')); }\n \n const ctx = app.createContext(socket.request, socket.response);\n const sid = ctx.cookies.get(key, { signed });\n \n virtual(socket, \"sessionId\", _=>sid);\n virtual(socket, \"session\", _=>store.get(sid));\n \n await next();\n });\n\n return opt.store;\n};\n\n\n\nexport default attachSession;", "import { solid } from \"@randajan/props\";\r\n\r\n\r\nexport class SessionStore {\r\n constructor() {\r\n solid(this, \"_recs\", new Map());\r\n }\r\n\r\n get(sid) {\r\n const rec = this._recs.get(sid);\r\n if (!rec) { return; }\r\n if (Date.now() < rec.expiresAt) { return rec.session; }\r\n this.destroy(sid);\r\n }\r\n\r\n set(sid, session, maxAge) {\r\n const expiresAt = Date.now() + maxAge;\r\n this._recs.set(sid, { session, expiresAt, maxAge });\r\n }\r\n\r\n destroy(sid) {\r\n this._recs.delete(sid);\r\n }\r\n};"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAmB;AACnB,yBAAoB;;;ACDpB,mBAAsB;AAGf,IAAM,eAAN,MAAmB;AAAA,EACtB,cAAc;AACV,4BAAM,MAAM,SAAS,oBAAI,IAAI,CAAC;AAAA,EAClC;AAAA,EAEA,IAAI,KAAK;AACL,UAAM,MAAM,KAAK,MAAM,IAAI,GAAG;AAC9B,QAAI,CAAC,KAAK;AAAE;AAAA,IAAQ;AACpB,QAAI,KAAK,IAAI,IAAI,IAAI,WAAW;AAAE,aAAO,IAAI;AAAA,IAAS;AACtD,SAAK,QAAQ,GAAG;AAAA,EACpB;AAAA,EAEA,IAAI,KAAKA,UAAS,QAAQ;AACtB,UAAM,YAAY,KAAK,IAAI,IAAI;AAC/B,SAAK,MAAM,IAAI,KAAK,EAAE,SAAAA,UAAS,WAAW,OAAO,CAAC;AAAA,EACtD;AAAA,EAEA,QAAQ,KAAK;AACT,SAAK,MAAM,OAAO,GAAG;AAAA,EACzB;AACJ;;;ADpBA,IAAAC,gBAAwB;AAExB,IAAM,MAAM,CAAC,MAAM,OAAO,cAAAC,QAAO,YAAY,GAAG,EAAE,SAAS,WAAW,EAAE,MAAM,GAAG,GAAG;AAE7E,IAAM,gBAAgB,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM;AAChD,MAAI,CAAC,IAAI,MAAM;AAAE,QAAI,OAAO,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,MAAM,IAAI,EAAE,CAAC;AAAA,EAAG;AAEhE,MAAI,CAAC,IAAI,KAAK;AAAE,QAAI,MAAM,IAAI,EAAE;AAAA,EAAG;AACnC,MAAI,CAAC,IAAI,OAAO;AAAE,QAAI,QAAQ,IAAI,aAAa;AAAA,EAAG;AAElD,QAAM,EAAE,KAAK,MAAM,IAAI;AAEvB,QAAM,SAAU,YAAY,MAAO,CAAC,CAAC,IAAI,SAAS;AAClD,SAAO,IAAI;AAEX,MAAI,QAAI,mBAAAC,SAAQ,KAAK,GAAG,CAAC;AACzB,MAAI,IAAI,OAAO,KAAK,SAAS;AACzB,QAAI,QAAQ,SAAS;AACrB,UAAM,KAAK;AAAA,EACf,CAAC;AAED,KAAG,IAAI,OAAO,QAAQ,SAAS;AAE3B,QAAI,CAAC,OAAO,UAAU,QAAQ,QAAQ;AAAE,aAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAAA,IAAG;AAE7E,UAAM,MAAM,IAAI,cAAc,OAAO,SAAS,OAAO,QAAQ;AAC7D,UAAM,MAAM,IAAI,QAAQ,IAAI,KAAK,EAAE,OAAO,CAAC;AAE3C,+BAAQ,QAAQ,aAAa,OAAG,GAAG;AACnC,+BAAQ,QAAQ,WAAW,OAAG,MAAM,IAAI,GAAG,CAAC;AAE5C,UAAM,KAAK;AAAA,EACf,CAAC;AAED,SAAO,IAAI;AACf;AAIA,IAAO,gBAAQ;",
|
|
6
6
|
"names": ["session", "import_props", "crypto", "session"]
|
|
7
7
|
}
|
package/dist/esm/index.mjs
CHANGED
package/dist/esm/index.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.js", "../../src/SessionStore.js"],
|
|
4
|
-
"sourcesContent": ["import crypto from \"crypto\";\nimport session from \"koa-session\";\nimport { SessionStore } from \"./SessionStore\";\nimport { virtual } from \"@randajan/props\";\n\nconst uid = (len = 12) => crypto.randomBytes(len).toString(\"base64url\").slice(0, len);\n\nexport const attachSession = (app, io, opt = {}) => {\n if (!app.keys) { app.keys = Array(6).fill().map(() => uid(12)); }\n\n if (!opt.key) { opt.key = uid(12); }\n if (!opt.store) { opt.store = new SessionStore(); }\n\n const { key, store } = opt;\n\n const signed = (\"signed\" in opt) ? !!opt.signed : true;\n delete opt.signed;\n\n app.use(session(opt, app));\n app.use(async (ctx, next) => {\n ctx.session.active = true; //idk why but without this it doesnt work :)\n await next();\n });\n \n io.use(async (socket, next) => {\n \n if (!socket.handshake.headers.cookie) { return next(new Error('no cookie')); }\n \n const ctx = app.createContext(socket.request, socket.response);\n const sid = ctx.cookies.get(key, { signed });\n \n virtual(socket, \"sessionId\", _=>sid);\n virtual(socket, \"session\", _=>store.get(sid));\n \n await next();\n });\n};\n\n\n\nexport default attachSession;", "import { solid } from \"@randajan/props\";\r\n\r\n\r\nexport class SessionStore {\r\n constructor() {\r\n solid(this, \"_recs\", new Map());\r\n }\r\n\r\n get(sid) {\r\n const rec = this._recs.get(sid);\r\n if (!rec) { return; }\r\n if (Date.now() < rec.expiresAt) { return rec.session; }\r\n this.destroy(sid);\r\n }\r\n\r\n set(sid, session, maxAge) {\r\n const expiresAt = Date.now() + maxAge;\r\n this._recs.set(sid, { session, expiresAt, maxAge });\r\n }\r\n\r\n destroy(sid) {\r\n this._recs.delete(sid);\r\n }\r\n};"],
|
|
5
|
-
"mappings": ";AAAA,OAAO,YAAY;AACnB,OAAO,aAAa;;;ACDpB,SAAS,aAAa;AAGf,IAAM,eAAN,MAAmB;AAAA,EACtB,cAAc;AACV,UAAM,MAAM,SAAS,oBAAI,IAAI,CAAC;AAAA,EAClC;AAAA,EAEA,IAAI,KAAK;AACL,UAAM,MAAM,KAAK,MAAM,IAAI,GAAG;AAC9B,QAAI,CAAC,KAAK;AAAE;AAAA,IAAQ;AACpB,QAAI,KAAK,IAAI,IAAI,IAAI,WAAW;AAAE,aAAO,IAAI;AAAA,IAAS;AACtD,SAAK,QAAQ,GAAG;AAAA,EACpB;AAAA,EAEA,IAAI,KAAKA,UAAS,QAAQ;AACtB,UAAM,YAAY,KAAK,IAAI,IAAI;AAC/B,SAAK,MAAM,IAAI,KAAK,EAAE,SAAAA,UAAS,WAAW,OAAO,CAAC;AAAA,EACtD;AAAA,EAEA,QAAQ,KAAK;AACT,SAAK,MAAM,OAAO,GAAG;AAAA,EACzB;AACJ;;;ADpBA,SAAS,eAAe;AAExB,IAAM,MAAM,CAAC,MAAM,OAAO,OAAO,YAAY,GAAG,EAAE,SAAS,WAAW,EAAE,MAAM,GAAG,GAAG;AAE7E,IAAM,gBAAgB,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM;AAChD,MAAI,CAAC,IAAI,MAAM;AAAE,QAAI,OAAO,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,MAAM,IAAI,EAAE,CAAC;AAAA,EAAG;AAEhE,MAAI,CAAC,IAAI,KAAK;AAAE,QAAI,MAAM,IAAI,EAAE;AAAA,EAAG;AACnC,MAAI,CAAC,IAAI,OAAO;AAAE,QAAI,QAAQ,IAAI,aAAa;AAAA,EAAG;AAElD,QAAM,EAAE,KAAK,MAAM,IAAI;AAEvB,QAAM,SAAU,YAAY,MAAO,CAAC,CAAC,IAAI,SAAS;AAClD,SAAO,IAAI;AAEX,MAAI,IAAI,QAAQ,KAAK,GAAG,CAAC;AACzB,MAAI,IAAI,OAAO,KAAK,SAAS;AACzB,QAAI,QAAQ,SAAS;AACrB,UAAM,KAAK;AAAA,EACf,CAAC;AAED,KAAG,IAAI,OAAO,QAAQ,SAAS;AAE3B,QAAI,CAAC,OAAO,UAAU,QAAQ,QAAQ;AAAE,aAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAAA,IAAG;AAE7E,UAAM,MAAM,IAAI,cAAc,OAAO,SAAS,OAAO,QAAQ;AAC7D,UAAM,MAAM,IAAI,QAAQ,IAAI,KAAK,EAAE,OAAO,CAAC;AAE3C,YAAQ,QAAQ,aAAa,OAAG,GAAG;AACnC,YAAQ,QAAQ,WAAW,OAAG,MAAM,IAAI,GAAG,CAAC;AAE5C,UAAM,KAAK;AAAA,EACf,CAAC;
|
|
4
|
+
"sourcesContent": ["import crypto from \"crypto\";\nimport session from \"koa-session\";\nimport { SessionStore } from \"./SessionStore\";\nimport { virtual } from \"@randajan/props\";\n\nconst uid = (len = 12) => crypto.randomBytes(len).toString(\"base64url\").slice(0, len);\n\nexport const attachSession = (app, io, opt = {}) => {\n if (!app.keys) { app.keys = Array(6).fill().map(() => uid(12)); }\n\n if (!opt.key) { opt.key = uid(12); }\n if (!opt.store) { opt.store = new SessionStore(); }\n\n const { key, store } = opt;\n\n const signed = (\"signed\" in opt) ? !!opt.signed : true;\n delete opt.signed;\n\n app.use(session(opt, app));\n app.use(async (ctx, next) => {\n ctx.session.active = true; //idk why but without this it doesnt work :)\n await next();\n });\n \n io.use(async (socket, next) => {\n \n if (!socket.handshake.headers.cookie) { return next(new Error('no cookie')); }\n \n const ctx = app.createContext(socket.request, socket.response);\n const sid = ctx.cookies.get(key, { signed });\n \n virtual(socket, \"sessionId\", _=>sid);\n virtual(socket, \"session\", _=>store.get(sid));\n \n await next();\n });\n\n return opt.store;\n};\n\n\n\nexport default attachSession;", "import { solid } from \"@randajan/props\";\r\n\r\n\r\nexport class SessionStore {\r\n constructor() {\r\n solid(this, \"_recs\", new Map());\r\n }\r\n\r\n get(sid) {\r\n const rec = this._recs.get(sid);\r\n if (!rec) { return; }\r\n if (Date.now() < rec.expiresAt) { return rec.session; }\r\n this.destroy(sid);\r\n }\r\n\r\n set(sid, session, maxAge) {\r\n const expiresAt = Date.now() + maxAge;\r\n this._recs.set(sid, { session, expiresAt, maxAge });\r\n }\r\n\r\n destroy(sid) {\r\n this._recs.delete(sid);\r\n }\r\n};"],
|
|
5
|
+
"mappings": ";AAAA,OAAO,YAAY;AACnB,OAAO,aAAa;;;ACDpB,SAAS,aAAa;AAGf,IAAM,eAAN,MAAmB;AAAA,EACtB,cAAc;AACV,UAAM,MAAM,SAAS,oBAAI,IAAI,CAAC;AAAA,EAClC;AAAA,EAEA,IAAI,KAAK;AACL,UAAM,MAAM,KAAK,MAAM,IAAI,GAAG;AAC9B,QAAI,CAAC,KAAK;AAAE;AAAA,IAAQ;AACpB,QAAI,KAAK,IAAI,IAAI,IAAI,WAAW;AAAE,aAAO,IAAI;AAAA,IAAS;AACtD,SAAK,QAAQ,GAAG;AAAA,EACpB;AAAA,EAEA,IAAI,KAAKA,UAAS,QAAQ;AACtB,UAAM,YAAY,KAAK,IAAI,IAAI;AAC/B,SAAK,MAAM,IAAI,KAAK,EAAE,SAAAA,UAAS,WAAW,OAAO,CAAC;AAAA,EACtD;AAAA,EAEA,QAAQ,KAAK;AACT,SAAK,MAAM,OAAO,GAAG;AAAA,EACzB;AACJ;;;ADpBA,SAAS,eAAe;AAExB,IAAM,MAAM,CAAC,MAAM,OAAO,OAAO,YAAY,GAAG,EAAE,SAAS,WAAW,EAAE,MAAM,GAAG,GAAG;AAE7E,IAAM,gBAAgB,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM;AAChD,MAAI,CAAC,IAAI,MAAM;AAAE,QAAI,OAAO,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,MAAM,IAAI,EAAE,CAAC;AAAA,EAAG;AAEhE,MAAI,CAAC,IAAI,KAAK;AAAE,QAAI,MAAM,IAAI,EAAE;AAAA,EAAG;AACnC,MAAI,CAAC,IAAI,OAAO;AAAE,QAAI,QAAQ,IAAI,aAAa;AAAA,EAAG;AAElD,QAAM,EAAE,KAAK,MAAM,IAAI;AAEvB,QAAM,SAAU,YAAY,MAAO,CAAC,CAAC,IAAI,SAAS;AAClD,SAAO,IAAI;AAEX,MAAI,IAAI,QAAQ,KAAK,GAAG,CAAC;AACzB,MAAI,IAAI,OAAO,KAAK,SAAS;AACzB,QAAI,QAAQ,SAAS;AACrB,UAAM,KAAK;AAAA,EACf,CAAC;AAED,KAAG,IAAI,OAAO,QAAQ,SAAS;AAE3B,QAAI,CAAC,OAAO,UAAU,QAAQ,QAAQ;AAAE,aAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAAA,IAAG;AAE7E,UAAM,MAAM,IAAI,cAAc,OAAO,SAAS,OAAO,QAAQ;AAC7D,UAAM,MAAM,IAAI,QAAQ,IAAI,KAAK,EAAE,OAAO,CAAC;AAE3C,YAAQ,QAAQ,aAAa,OAAG,GAAG;AACnC,YAAQ,QAAQ,WAAW,OAAG,MAAM,IAAI,GAAG,CAAC;AAE5C,UAAM,KAAK;AAAA,EACf,CAAC;AAED,SAAO,IAAI;AACf;AAIA,IAAO,gBAAQ;",
|
|
6
6
|
"names": ["session"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@randajan/koa-io-session",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"description": "Simple bridge between koa-session and socket.io. Shares a unified session across HTTP and WebSocket using a common session store.",
|
|
5
5
|
"repository": "randajan/koa-io-session",
|
|
6
6
|
"type": "module",
|