@20syldev/api 4.2.0 → 4.3.0

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.
Files changed (40) hide show
  1. package/README.md +3 -3
  2. package/dist/app.js +4 -0
  3. package/dist/app.js.map +1 -1
  4. package/dist/config/versions.js +9 -0
  5. package/dist/config/versions.js.map +1 -1
  6. package/dist/constants.js +2 -0
  7. package/dist/constants.js.map +1 -1
  8. package/dist/modules/v4/placeholder.js +107 -46
  9. package/dist/modules/v4/placeholder.js.map +1 -1
  10. package/dist/modules/v4.js +6 -0
  11. package/dist/modules/v4.js.map +1 -1
  12. package/dist/routes/delete.js +4 -5
  13. package/dist/routes/delete.js.map +1 -1
  14. package/dist/routes/get.js +144 -0
  15. package/dist/routes/get.js.map +1 -1
  16. package/dist/routes/index.js +2 -2
  17. package/dist/routes/index.js.map +1 -1
  18. package/dist/routes/patch.js +2 -3
  19. package/dist/routes/patch.js.map +1 -1
  20. package/package.json +1 -1
  21. package/src/app.ts +4 -0
  22. package/src/config/versions.ts +6 -0
  23. package/src/middleware/cors.ts +1 -1
  24. package/src/modules/v4/chat.ts +24 -1
  25. package/src/modules/v4/geo.ts +53 -0
  26. package/src/modules/v4/palette.ts +103 -0
  27. package/src/modules/v4/placeholder.ts +192 -0
  28. package/src/modules/v4/tic_tac_toe.ts +33 -1
  29. package/src/modules/v4.ts +3 -0
  30. package/src/routes/delete.ts +71 -0
  31. package/src/routes/get.ts +76 -0
  32. package/src/routes/patch.ts +44 -0
  33. package/tests/integration/api.test.ts +62 -18
  34. package/tests/unit/captcha.test.ts +23 -0
  35. package/tests/unit/chat.test.ts +50 -0
  36. package/tests/unit/geo.test.ts +45 -0
  37. package/tests/unit/palette.test.ts +53 -0
  38. package/tests/unit/placeholder.test.ts +57 -0
  39. package/tests/unit/qrcode.test.ts +14 -0
  40. package/tests/unit/tic_tac_toe.test.ts +52 -0
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/routes/get.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/routes/get.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { Router } from 'express';
2
2
  import { versions } from '../config/versions.js';
3
3
  import { ipLimits } from '../storage/index.js';
4
4
  import { logger } from '../middleware/logger.js';
5
- import { DOCS_URL, START_TIME } from '../constants.js';
5
+ import { APP_VERSION, DOCS_URL, START_TIME } from '../constants.js';
6
6
  const router = Router();
7
7
  router.get('/', (req, res) => {
8
8
  const base = `${req.protocol}://${req.get('host')}`;
@@ -23,7 +23,7 @@ router.get('/health', (_req, res) => {
23
23
  res.jsonResponse({
24
24
  status: 'ok',
25
25
  uptime: Math.floor((Date.now() - START_TIME) / 1000),
26
- version: '4.1.0',
26
+ version: APP_VERSION,
27
27
  node: process.version,
28
28
  memory: {
29
29
  rss: `${(mem.rss / 1024 / 1024).toFixed(1)} MB`,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA+B,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;AAExB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IAC5C,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;QACjF,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IAChB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,GAAG,CAAC,YAAY,CAAC;QACb,aAAa,EAAE,QAAQ;QACvB,MAAM,EAAE,GAAG,IAAI,SAAS;QACxB,MAAM,EAAE,GAAG,IAAI,SAAS;QACxB,IAAI,EAAE,GAAG,IAAI,OAAO;QACpB,QAAQ,EAAE,KAAK;KAClB,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAElC,GAAG,CAAC,YAAY,CAAC;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC;QACpD,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,OAAO,CAAC,OAAO;QACrB,MAAM,EAAE;YACJ,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;YAC/C,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;YAC1D,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;SAC/D;QACD,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM;QACzC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM;KAChC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;IACjD,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAG,CAAC;IAC5C,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAG,CAAC;IAC5C,MAAM,IAAI,GAAI,GAAG,CAAC,MAAiC,CAAC,IAAI,CAAC;IACzD,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,10 @@
1
1
  import { Router } from 'express';
2
2
  import { ticTacToeStorage } from '../storage/index.js';
3
3
  import { error } from '../utils/response.js';
4
- import { supportsRest } from '../utils/version.js';
5
4
  const router = Router();
6
- // Play a tic-tac-toe move (REST: PATCH /tic-tac-toe/:game)
5
+ // Play a tic-tac-toe move
7
6
  router.patch('/:version/tic-tac-toe/:game', (req, res) => {
8
- if (!supportsRest(req)) {
7
+ if (req.version !== 'v4') {
9
8
  error(res, 405, 'PATCH is only supported in v4+.', `${req.version}/tic-tac-toe`);
10
9
  return;
11
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../src/routes/patch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA+B,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;AAExB,2DAA2D;AAC3D,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IACxE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,iCAAiC,EAAE,GAAG,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC;QACjF,OAAO;IACX,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAc,CAAC;IACvC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAI,GAAG,CAAC,IAA+B,IAAI,EAAE,CAAC;IAE/E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,kDAAkD,CAAC,CAAC;QACpE,OAAO;IACX,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,4CAA4C,CAAC,CAAC;QAC9D,OAAO;IACX,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,mDAAmD,CAAC,CAAC;QACrE,OAAO;IACX,CAAC;IAED,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE;YAC1C,QAAQ;YACR,IAAI;YACJ,OAAO;YACP,IAAI;YACJ,OAAO,EAAE,gBAAgB;SAC5B,CAAC,CAAC;QACH,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,KAAK,CAAC,GAAG,EAAE,GAAG,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../src/routes/patch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA+B,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;AAExB,0BAA0B;AAC1B,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IACxE,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,iCAAiC,EAAE,GAAG,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC;QACjF,OAAO;IACX,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAc,CAAC;IACvC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAI,GAAG,CAAC,IAA+B,IAAI,EAAE,CAAC;IAE/E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,kDAAkD,CAAC,CAAC;QACpE,OAAO;IACX,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,4CAA4C,CAAC,CAAC;QAC9D,OAAO;IACX,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,mDAAmD,CAAC,CAAC;QACrE,OAAO;IACX,CAAC;IAED,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE;YAC1C,QAAQ;YACR,IAAI;YACJ,OAAO;YACP,IAAI;YACJ,OAAO,EAAE,gBAAgB;SAC5B,CAAC,CAAC;QACH,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,KAAK,CAAC,GAAG,EAAE,GAAG,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.2.0",
2
+ "version": "4.3.0",
3
3
  "name": "@20syldev/api",
4
4
  "description": "Node.js API with multiple features. Check the documentation at https://docs.sylvain.sh",
5
5
  "main": "dist/app.js",
package/src/app.ts CHANGED
@@ -9,6 +9,8 @@ import { versionCheckMiddleware, endpointCheckMiddleware } from './middleware/ve
9
9
  import indexRoutes from './routes/index.js';
10
10
  import getRoutes from './routes/get.js';
11
11
  import postRoutes from './routes/post.js';
12
+ import patchRoutes from './routes/patch.js';
13
+ import deleteRoutes from './routes/delete.js';
12
14
 
13
15
  const app = express();
14
16
 
@@ -37,6 +39,8 @@ app.use('/:version/:endpoint', endpointCheckMiddleware);
37
39
  // Versioned routes
38
40
  app.use(getRoutes);
39
41
  app.use(postRoutes);
42
+ app.use(patchRoutes);
43
+ app.use(deleteRoutes);
40
44
 
41
45
  // Start server
42
46
  if (process.env.NODE_ENV !== 'test') {
@@ -80,6 +80,12 @@ const v4 = {
80
80
  get: merge(v3.get, [
81
81
  { name: 'dice', path: '/dice?roll={NdX+M}' },
82
82
  { name: 'encode', path: '/encode?method={method}&text={text}(&shift={shift})' },
83
+ { name: 'geo', path: '/geo?lat1={lat}&lon1={lon}&lat2={lat}&lon2={lon}' },
84
+ { name: 'palette', path: '/palette?color={#hex}&type={type}' },
85
+ {
86
+ name: 'placeholder',
87
+ path: '/placeholder?type={image|skeleton}&width={w}&height={h}(&bg={hex}&color={hex}&text={text}&rows={n}&avatar={bool})',
88
+ },
83
89
  { name: 'statistics', path: '/statistics?values={n1,n2,n3,...}' },
84
90
  { name: 'text', path: '/text?method={method}(&value={value}&type={type}&count={count}&lang={lang})' },
85
91
  { name: 'validate', path: '/validate?type={type}&value={value}' },
@@ -8,7 +8,7 @@ const __dirname = dirname(__filename);
8
8
 
9
9
  export function setupCors(app: Express): void {
10
10
  app.set('trust proxy', 1);
11
- app.use(cors({ methods: ['GET', 'POST'] }));
11
+ app.use(cors({ methods: ['GET', 'POST', 'PATCH', 'DELETE', 'OPTIONS'] }));
12
12
  app.use(express.urlencoded({ extended: true }));
13
13
  app.use(express.json());
14
14
 
@@ -34,8 +34,10 @@ export default function chat(action: string, params: ChatParams): ChatMessage[]
34
34
  return getPrivateChat(params, privateChats);
35
35
  } else if (action === 'fetch') {
36
36
  return fetchMessages(messages);
37
+ } else if (action === 'clear') {
38
+ return clearPrivateChat(params, privateChats, sessions, u);
37
39
  } else {
38
- throw new Error('Invalid action. Use "message", "private", or "fetch"');
40
+ throw new Error('Invalid action. Use "message", "private", "fetch", or "clear"');
39
41
  }
40
42
  }
41
43
 
@@ -97,3 +99,24 @@ function fetchMessages(messages: ChatMessage[]): ChatMessage[] {
97
99
  if (messages.length > 0) return messages;
98
100
  throw new Error('No messages stored.');
99
101
  }
102
+
103
+ function clearPrivateChat(
104
+ params: ChatParams,
105
+ privateChats: Record<string, ChatMessage[]>,
106
+ sessions: Record<string, { user: string; last: number }>,
107
+ u: string,
108
+ ): { message: string } {
109
+ const { token, session } = params;
110
+
111
+ if (!token) throw new Error('Please provide a valid token');
112
+ if (!session) throw new Error('Please provide a valid session ID');
113
+ if (sessions[u] && sessions[u].user !== session) {
114
+ throw new Error('Session ID mismatch');
115
+ }
116
+ if (!privateChats[token]) throw new Error('Invalid or expired token.');
117
+
118
+ delete privateChats[token];
119
+ delete sessions[u];
120
+
121
+ return { message: 'Private chat cleared successfully' };
122
+ }
@@ -0,0 +1,53 @@
1
+ export interface GeoResult {
2
+ distance: { km: number; miles: number; nauticalMiles: number };
3
+ bearing: { degrees: number; cardinal: string };
4
+ from: { lat: number; lon: number };
5
+ to: { lat: number; lon: number };
6
+ }
7
+
8
+ const EARTH_RADIUS_KM = 6371;
9
+ const CARDINALS = ['N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW'];
10
+
11
+ function toRad(deg: number): number {
12
+ return (deg * Math.PI) / 180;
13
+ }
14
+
15
+ function toDeg(rad: number): number {
16
+ return (rad * 180) / Math.PI;
17
+ }
18
+
19
+ function parseCoord(value: string, name: string, min: number, max: number): number {
20
+ const n = Number(value);
21
+ if (isNaN(n)) throw new Error(`${name} must be a number`);
22
+ if (n < min || n > max) throw new Error(`${name} must be between ${min} and ${max}`);
23
+ return n;
24
+ }
25
+
26
+ export default function geo(lat1: string, lon1: string, lat2: string, lon2: string): GeoResult {
27
+ const a = parseCoord(lat1, 'lat1', -90, 90);
28
+ const b = parseCoord(lon1, 'lon1', -180, 180);
29
+ const c = parseCoord(lat2, 'lat2', -90, 90);
30
+ const d = parseCoord(lon2, 'lon2', -180, 180);
31
+
32
+ const dLat = toRad(c - a);
33
+ const dLon = toRad(d - b);
34
+ const sa = Math.sin(dLat / 2) ** 2 + Math.cos(toRad(a)) * Math.cos(toRad(c)) * Math.sin(dLon / 2) ** 2;
35
+ const distance = 2 * EARTH_RADIUS_KM * Math.asin(Math.sqrt(sa));
36
+
37
+ const y = Math.sin(toRad(d - b)) * Math.cos(toRad(c));
38
+ const x =
39
+ Math.cos(toRad(a)) * Math.sin(toRad(c)) - Math.sin(toRad(a)) * Math.cos(toRad(c)) * Math.cos(toRad(d - b));
40
+ const bearing = (toDeg(Math.atan2(y, x)) + 360) % 360;
41
+ const cardinal = CARDINALS[Math.round(bearing / 22.5) % 16]!;
42
+
43
+ return {
44
+ distance: {
45
+ km: +distance.toFixed(3),
46
+ miles: +(distance * 0.621371).toFixed(3),
47
+ nauticalMiles: +(distance * 0.539957).toFixed(3),
48
+ },
49
+ bearing: { degrees: +bearing.toFixed(2), cardinal },
50
+ from: { lat: a, lon: b },
51
+ to: { lat: c, lon: d },
52
+ };
53
+ }
@@ -0,0 +1,103 @@
1
+ export interface PaletteColor {
2
+ hex: string;
3
+ rgb: string;
4
+ hsl: string;
5
+ }
6
+
7
+ export interface PaletteResult {
8
+ base: PaletteColor;
9
+ type: string;
10
+ colors: PaletteColor[];
11
+ }
12
+
13
+ function hexToRgb(hex: string): [number, number, number] {
14
+ const clean = hex.replace('#', '');
15
+ if (!/^[0-9a-fA-F]{6}$/.test(clean)) throw new Error('Invalid HEX color (use #RRGGBB)');
16
+ return [parseInt(clean.slice(0, 2), 16), parseInt(clean.slice(2, 4), 16), parseInt(clean.slice(4, 6), 16)];
17
+ }
18
+
19
+ function rgbToHsl(r: number, g: number, b: number): [number, number, number] {
20
+ const r1 = r / 255,
21
+ g1 = g / 255,
22
+ b1 = b / 255;
23
+ const max = Math.max(r1, g1, b1),
24
+ min = Math.min(r1, g1, b1);
25
+ const l = (max + min) / 2;
26
+
27
+ if (max === min) return [0, 0, l];
28
+
29
+ const d = max - min;
30
+ const s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
31
+ let h = 0;
32
+ if (max === r1) h = (g1 - b1) / d + (g1 < b1 ? 6 : 0);
33
+ else if (max === g1) h = (b1 - r1) / d + 2;
34
+ else h = (r1 - g1) / d + 4;
35
+
36
+ return [(h * 60 + 360) % 360, s, l];
37
+ }
38
+
39
+ function hslToRgb(h: number, s: number, l: number): [number, number, number] {
40
+ const c = (1 - Math.abs(2 * l - 1)) * s;
41
+ const x = c * (1 - Math.abs(((h / 60) % 2) - 1));
42
+ const m = l - c / 2;
43
+ let r1 = 0,
44
+ g1 = 0,
45
+ b1 = 0;
46
+ if (h < 60) [r1, g1, b1] = [c, x, 0];
47
+ else if (h < 120) [r1, g1, b1] = [x, c, 0];
48
+ else if (h < 180) [r1, g1, b1] = [0, c, x];
49
+ else if (h < 240) [r1, g1, b1] = [0, x, c];
50
+ else if (h < 300) [r1, g1, b1] = [x, 0, c];
51
+ else [r1, g1, b1] = [c, 0, x];
52
+ return [Math.round((r1 + m) * 255), Math.round((g1 + m) * 255), Math.round((b1 + m) * 255)];
53
+ }
54
+
55
+ function format(r: number, g: number, b: number): PaletteColor {
56
+ const [h, s, l] = rgbToHsl(r, g, b);
57
+ return {
58
+ hex: `#${[r, g, b].map((x) => x.toString(16).padStart(2, '0')).join('')}`,
59
+ rgb: `rgb(${r}, ${g}, ${b})`,
60
+ hsl: `hsl(${h.toFixed(1)}, ${(s * 100).toFixed(1)}%, ${(l * 100).toFixed(1)}%)`,
61
+ };
62
+ }
63
+
64
+ function fromHueShifts(base: [number, number, number], shifts: number[]): PaletteColor[] {
65
+ const [h, s, l] = base;
66
+ return shifts.map((shift) => {
67
+ const newH = (h + shift + 360) % 360;
68
+ const [r, g, b] = hslToRgb(newH, s, l);
69
+ return format(r, g, b);
70
+ });
71
+ }
72
+
73
+ export default function palette(color: string, type: string): PaletteResult {
74
+ if (!color) throw new Error('A base color is required');
75
+ if (!type) throw new Error('A palette type is required');
76
+
77
+ const [r, g, b] = hexToRgb(color);
78
+ const base = format(r, g, b);
79
+ const hsl = rgbToHsl(r, g, b);
80
+
81
+ let colors: PaletteColor[];
82
+ switch (type) {
83
+ case 'complementary':
84
+ colors = fromHueShifts(hsl, [0, 180]);
85
+ break;
86
+ case 'triadic':
87
+ colors = fromHueShifts(hsl, [0, 120, 240]);
88
+ break;
89
+ case 'analogous':
90
+ colors = fromHueShifts(hsl, [-60, -30, 0, 30, 60]);
91
+ break;
92
+ case 'tetradic':
93
+ colors = fromHueShifts(hsl, [0, 90, 180, 270]);
94
+ break;
95
+ case 'split-complementary':
96
+ colors = fromHueShifts(hsl, [0, 150, 210]);
97
+ break;
98
+ default:
99
+ throw new Error('Type must be one of: complementary, triadic, analogous, tetradic, split-complementary');
100
+ }
101
+
102
+ return { base, type, colors };
103
+ }
@@ -0,0 +1,192 @@
1
+ type AvatarShape = 'circle' | 'rounded' | 'square';
2
+ type AnimateMode = 'shimmer' | 'pulse' | 'none';
3
+
4
+ export interface PlaceholderOptions {
5
+ width: number;
6
+ height: number;
7
+ bg?: string;
8
+ color?: string;
9
+ text?: string;
10
+ rows?: number;
11
+ avatar?: AvatarShape;
12
+ lines?: number;
13
+ animate?: AnimateMode;
14
+ speed?: number;
15
+ radius?: number;
16
+ }
17
+
18
+ function parseSize(value: string | undefined, name: string, def: number): number {
19
+ if (value === undefined) return def;
20
+ const n = Number(value);
21
+ if (isNaN(n)) throw new Error(`${name} must be a number`);
22
+ if (n < 1 || n > 4000) throw new Error(`${name} must be between 1 and 4000`);
23
+ return Math.floor(n);
24
+ }
25
+
26
+ function normalizeColor(value: string | undefined, def: string): string {
27
+ if (!value) return def;
28
+ const clean = value.startsWith('#') ? value : `#${value}`;
29
+ if (!/^#([0-9a-fA-F]{3}){1,2}$/.test(clean)) throw new Error('Invalid color (use hex like #ff6600)');
30
+ return clean;
31
+ }
32
+
33
+ function escapeXml(str: string): string {
34
+ return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
35
+ }
36
+
37
+ function generateImage(opts: PlaceholderOptions): string {
38
+ const { width, height } = opts;
39
+ const bg = normalizeColor(opts.bg, '#cccccc');
40
+ const color = normalizeColor(opts.color, '#333333');
41
+ const text = escapeXml(opts.text ?? `${width}\u00d7${height}`);
42
+ const fontSize = Math.max(12, Math.min(width, height) / 8);
43
+
44
+ return `<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}" viewBox="0 0 ${width} ${height}">
45
+ <rect width="${width}" height="${height}" fill="${bg}" rx="4" />
46
+ <text x="50%" y="50%" dominant-baseline="central" text-anchor="middle" font-family="system-ui,-apple-system,sans-serif" font-weight="600" font-size="${fontSize}" fill="${color}">${text}</text>
47
+ </svg>`;
48
+ }
49
+
50
+ function avatarShape(shape: AvatarShape, x: number, y: number, size: number): string {
51
+ const r = size / 2;
52
+ switch (shape) {
53
+ case 'circle':
54
+ return `<circle cx="${x + r}" cy="${y + r}" r="${r}" />`;
55
+ case 'rounded':
56
+ return `<rect x="${x}" y="${y}" width="${size}" height="${size}" rx="${Math.round(size * 0.25)}" />`;
57
+ case 'square':
58
+ return `<rect x="${x}" y="${y}" width="${size}" height="${size}" rx="2" />`;
59
+ }
60
+ }
61
+
62
+ function animationDefs(mode: AnimateMode, bg: string, highlight: string, speed: number): string {
63
+ if (mode === 'none') return '';
64
+
65
+ if (mode === 'pulse') {
66
+ return `<style>
67
+ @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
68
+ .sk { animation: pulse ${speed}s cubic-bezier(0.4, 0, 0.6, 1) infinite; }
69
+ </style>`;
70
+ }
71
+
72
+ return `<linearGradient id="g">
73
+ <stop offset="0.1" stop-color="${bg}" />
74
+ <stop offset="0.5" stop-color="${highlight}" />
75
+ <stop offset="0.9" stop-color="${bg}" />
76
+ <animateTransform attributeName="gradientTransform" type="translate" values="-2 0; 2 0" dur="${speed}s" repeatCount="indefinite" />
77
+ </linearGradient>`;
78
+ }
79
+
80
+ function generateSkeleton(opts: PlaceholderOptions): string {
81
+ const { width, height } = opts;
82
+ const bg = normalizeColor(opts.bg, '#e5e5e5');
83
+ const highlight = normalizeColor(opts.color, '#f5f5f5');
84
+ const rows = Math.max(0, Math.min(20, opts.rows ?? 3));
85
+ const avatar = opts.avatar;
86
+ const animate = opts.animate ?? 'shimmer';
87
+ const speed = opts.speed ?? 1.5;
88
+ const rx = opts.radius ?? 4;
89
+
90
+ const pad = Math.round(width * 0.06);
91
+ const gap = Math.round(Math.max(6, Math.min(14, height * 0.04)));
92
+ const lineH = Math.round(Math.max(8, Math.min(16, ((height - pad * 2) / (rows + (avatar ? 4 : 0))) * 0.65)));
93
+
94
+ const shapes: string[] = [];
95
+ let y = pad;
96
+
97
+ if (avatar) {
98
+ const size = Math.round(Math.min(width * 0.14, height * 0.24, 48));
99
+ shapes.push(avatarShape(avatar, pad, y, size));
100
+
101
+ const lx = pad + size + gap;
102
+ const lw = width - lx - pad;
103
+ const count = Math.max(0, Math.min(2, opts.lines ?? 2));
104
+
105
+ if (count === 2) {
106
+ const nameY = Math.max(pad, Math.round(y + size / 2 - (lineH * 2 + gap) / 2));
107
+ shapes.push(`<rect x="${lx}" y="${nameY}" width="${lw * 0.55}" height="${lineH}" rx="${rx}" />`);
108
+ shapes.push(
109
+ `<rect x="${lx}" y="${nameY + lineH + gap}" width="${lw * 0.35}" height="${lineH}" rx="${rx}" />`,
110
+ );
111
+ } else if (count === 1) {
112
+ const nameY = Math.max(pad, Math.round(y + size / 2 - lineH / 2));
113
+ shapes.push(`<rect x="${lx}" y="${nameY}" width="${lw * 0.55}" height="${lineH}" rx="${rx}" />`);
114
+ }
115
+
116
+ y += size + gap * 2;
117
+ }
118
+
119
+ for (let i = 0; i < rows; i++) {
120
+ const ratio = i === rows - 1 && rows > 1 ? 0.55 : i % 2 === 0 ? 0.92 : 0.78;
121
+ const w = Math.round((width - pad * 2) * ratio);
122
+ shapes.push(`<rect x="${pad}" y="${y}" width="${w}" height="${lineH}" rx="${rx}" />`);
123
+ y += lineH + gap;
124
+ }
125
+
126
+ const defs = animationDefs(animate, bg, highlight, speed);
127
+ const fill = animate === 'shimmer' ? 'url(#g)' : bg;
128
+ const cls = animate === 'pulse' ? ' class="sk"' : '';
129
+
130
+ return `<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}" viewBox="0 0 ${width} ${height}">
131
+ <defs>
132
+ <clipPath id="c">
133
+ ${shapes.join('\n ')}
134
+ </clipPath>
135
+ ${defs}
136
+ </defs>
137
+ <rect width="${width}" height="${height}" clip-path="url(#c)" fill="${fill}"${cls} />
138
+ </svg>`;
139
+ }
140
+
141
+ export interface PlaceholderResult {
142
+ type: string;
143
+ contentType: string;
144
+ body: string;
145
+ }
146
+
147
+ const AVATAR_SHAPES = new Set(['circle', 'rounded', 'square']);
148
+ const ANIMATE_MODES = new Set(['shimmer', 'pulse', 'none']);
149
+
150
+ function parseAvatar(value: string | undefined): AvatarShape | undefined {
151
+ if (!value) return undefined;
152
+ if (value === 'true' || value === '1') return 'circle';
153
+ if (AVATAR_SHAPES.has(value)) return value as AvatarShape;
154
+ throw new Error('avatar must be one of: circle, rounded, square');
155
+ }
156
+
157
+ function parseAnimate(value: string | undefined): AnimateMode {
158
+ if (!value) return 'shimmer';
159
+ if (ANIMATE_MODES.has(value)) return value as AnimateMode;
160
+ throw new Error('animate must be one of: shimmer, pulse, none');
161
+ }
162
+
163
+ export default function placeholder(type: string, query: Record<string, string | undefined>): PlaceholderResult {
164
+ const speed = query.speed ? parseFloat(query.speed) : 1.5;
165
+ if (isNaN(speed) || speed < 0.1 || speed > 10) throw new Error('speed must be between 0.1 and 10');
166
+
167
+ const radius = query.radius ? parseInt(query.radius, 10) : 4;
168
+ if (isNaN(radius) || radius < 0 || radius > 50) throw new Error('radius must be between 0 and 50');
169
+
170
+ const opts: PlaceholderOptions = {
171
+ width: parseSize(query.width, 'width', 800),
172
+ height: parseSize(query.height, 'height', 600),
173
+ bg: query.bg,
174
+ color: query.color,
175
+ text: query.text,
176
+ rows: query.rows ? parseInt(query.rows, 10) : undefined,
177
+ avatar: parseAvatar(query.avatar),
178
+ lines: query.lines ? parseInt(query.lines, 10) : 2,
179
+ animate: parseAnimate(query.animate),
180
+ speed,
181
+ radius,
182
+ };
183
+
184
+ switch (type) {
185
+ case 'image':
186
+ return { type, contentType: 'image/svg+xml', body: generateImage(opts) };
187
+ case 'skeleton':
188
+ return { type, contentType: 'image/svg+xml', body: generateSkeleton(opts) };
189
+ default:
190
+ throw new Error('Type must be one of: image, skeleton');
191
+ }
192
+ }
@@ -44,11 +44,43 @@ export default function tic_tac_toe(action: string, params: TicTacToeParams): Re
44
44
  return playMove(params, games, sessions, u, now);
45
45
  } else if (action === 'fetch') {
46
46
  return fetchGame(params, games, u);
47
+ } else if (action === 'forfeit') {
48
+ return forfeitGame(params, games, sessions);
47
49
  } else {
48
- throw new Error('Invalid action. Use "play", "fetch", or "list"');
50
+ throw new Error('Invalid action. Use "play", "fetch", "list", or "forfeit"');
49
51
  }
50
52
  }
51
53
 
54
+ function forfeitGame(
55
+ params: TicTacToeParams,
56
+ games: Record<string, TicTacToeGame>,
57
+ sessions: Record<string, { user: string; last: number }>,
58
+ ): Record<string, unknown> {
59
+ const { game, session } = params;
60
+
61
+ if (!game) throw new Error('Please provide a valid game ID');
62
+ if (!session) throw new Error('Please provide a valid session ID');
63
+ if (!games[game]) throw new Error('Game not found');
64
+
65
+ const u = params.username!.toLowerCase();
66
+ if (sessions[u] && sessions[u].user !== session) {
67
+ throw new Error('Session ID mismatch');
68
+ }
69
+
70
+ const players = games[game]!.players;
71
+ if (!players.includes(u)) throw new Error('You are not a player in this game');
72
+
73
+ const winner = players.find((p) => p !== u) ?? null;
74
+ delete games[game];
75
+ delete sessions[u];
76
+
77
+ return {
78
+ message: `${params.username} forfeited the game.${winner ? ` ${winner} wins.` : ''}`,
79
+ winner,
80
+ loser: params.username,
81
+ };
82
+ }
83
+
52
84
  function playMove(
53
85
  params: TicTacToeParams,
54
86
  games: Record<string, TicTacToeGame>,
package/src/modules/v4.ts CHANGED
@@ -6,10 +6,13 @@ export { default as convert } from './v4/convert.js';
6
6
  export { default as dice } from './v4/dice.js';
7
7
  export { default as domain } from './v4/domain.js';
8
8
  export * as encode from './v4/encode.js';
9
+ export { default as geo } from './v4/geo.js';
9
10
  export { default as hash } from './v4/hash.js';
10
11
  export { default as hyperplanning } from './v4/hyperplanning.js';
11
12
  export { default as levenshtein } from './v4/levenshtein.js';
13
+ export { default as palette } from './v4/palette.js';
12
14
  export { default as personal } from './v4/personal.js';
15
+ export { default as placeholder } from './v4/placeholder.js';
13
16
  export { default as qrcode } from './v4/qrcode.js';
14
17
  export { default as statistics } from './v4/statistics.js';
15
18
  export * as text from './v4/text.js';