@timecell/api 0.1.0 → 0.1.2
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/routes/portfolio.d.ts.map +1 -1
- package/dist/routes/portfolio.js.map +1 -1
- package/dist/routes/position-sizing.d.ts +3 -0
- package/dist/routes/position-sizing.d.ts.map +1 -0
- package/dist/routes/position-sizing.js +7 -0
- package/dist/routes/position-sizing.js.map +1 -0
- package/dist/routes/temperature.d.ts +3 -0
- package/dist/routes/temperature.d.ts.map +1 -0
- package/dist/routes/temperature.js +18 -0
- package/dist/routes/temperature.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +40 -1
- package/dist/server.js.map +1 -1
- package/dist/web/assets/index-C-dwRA62.js +113 -0
- package/dist/web/assets/index-CAfGfEA4.css +1 -0
- package/dist/web/dist/assets/index-BY7xE2ch.css +1 -0
- package/dist/web/dist/assets/index-C-dwRA62.js +113 -0
- package/dist/web/dist/assets/index-CAfGfEA4.css +1 -0
- package/dist/web/dist/assets/index-DISMfP4S.js +113 -0
- package/dist/web/dist/assets/index-DhhFLqcu.js +113 -0
- package/dist/web/dist/assets/index-yH4zur2Y.css +1 -0
- package/dist/web/dist/index.html +14 -0
- package/dist/web/dist/logo.png +0 -0
- package/dist/web/dist/timecell.svg +4 -0
- package/dist/web/index.html +14 -0
- package/dist/web/timecell.svg +4 -0
- package/package.json +8 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portfolio.d.ts","sourceRoot":"","sources":["../../src/routes/portfolio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"portfolio.d.ts","sourceRoot":"","sources":["../../src/routes/portfolio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AA6B/C,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,iBAS7D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portfolio.js","sourceRoot":"","sources":["../../src/routes/portfolio.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAA2C,MAAM,kBAAkB,CAAC;AACjH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AAChD,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"portfolio.js","sourceRoot":"","sources":["../../src/routes/portfolio.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAA2C,MAAM,kBAAkB,CAAC;AACjH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AAChD,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;AAQ1D,KAAK,UAAU,aAAa;IAC3B,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,oBAAoB,EAAE,CAAC;IAC5E,CAAC;AACF,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAoB;IAChD,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAwB;IAC7D,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;QACpC,OAAO,aAAa,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAA2B,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACtE,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"position-sizing.d.ts","sourceRoot":"","sources":["../../src/routes/position-sizing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,eAAe,iBAIlE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { calculatePositionSizing } from "@timecell/engine";
|
|
2
|
+
export async function positionSizingRoutes(fastify) {
|
|
3
|
+
fastify.post("/position-sizing", async (request) => {
|
|
4
|
+
return calculatePositionSizing(request.body);
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=position-sizing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"position-sizing.js","sourceRoot":"","sources":["../../src/routes/position-sizing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAA4B,MAAM,kBAAkB,CAAC;AAErF,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAwB;IAClE,OAAO,CAAC,IAAI,CAAgC,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACjF,OAAO,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temperature.d.ts","sourceRoot":"","sources":["../../src/routes/temperature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAU/C,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,iBAS/D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { calculateTemperature } from "@timecell/engine";
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// Mock data — will be replaced with live MVRV/RHODL feeds in a future release.
|
|
4
|
+
// MVRV ~1.8 and RHODL ~1.6 are representative of mid-cycle neutral territory.
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
const MOCK_MVRV = 1.8;
|
|
7
|
+
const MOCK_RHODL = 1.6;
|
|
8
|
+
export async function temperatureRoutes(fastify) {
|
|
9
|
+
fastify.get("/temperature", async () => {
|
|
10
|
+
const result = calculateTemperature(MOCK_MVRV, MOCK_RHODL);
|
|
11
|
+
return {
|
|
12
|
+
...result,
|
|
13
|
+
dataSource: "mock",
|
|
14
|
+
note: "Live MVRV/RHODL feeds coming soon",
|
|
15
|
+
};
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=temperature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temperature.js","sourceRoot":"","sources":["../../src/routes/temperature.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,8EAA8E;AAC9E,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAwB;IAC/D,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC3D,OAAO;YACN,GAAG,MAAM;YACT,UAAU,EAAE,MAAM;YAClB,IAAI,EAAE,mCAAmC;SACzC,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AA0BA,wBAAsB,WAAW,mWAiChC"}
|
package/dist/server.js
CHANGED
|
@@ -1,17 +1,56 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { join, dirname } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
1
4
|
import Fastify from "fastify";
|
|
2
5
|
import cors from "@fastify/cors";
|
|
6
|
+
import fastifyStatic from "@fastify/static";
|
|
3
7
|
import { crashRoutes } from "./routes/crash.js";
|
|
4
8
|
import { portfolioRoutes } from "./routes/portfolio.js";
|
|
5
9
|
import { priceRoutes } from "./routes/price.js";
|
|
10
|
+
import { temperatureRoutes } from "./routes/temperature.js";
|
|
11
|
+
function findWebDist() {
|
|
12
|
+
const candidates = [
|
|
13
|
+
// Bundled inside API package (npm published)
|
|
14
|
+
join(dirname(fileURLToPath(import.meta.url)), "web"),
|
|
15
|
+
// Monorepo development (src/)
|
|
16
|
+
join(dirname(fileURLToPath(import.meta.url)), "../../web/dist"),
|
|
17
|
+
// Monorepo development (dist/)
|
|
18
|
+
join(dirname(fileURLToPath(import.meta.url)), "../web"),
|
|
19
|
+
];
|
|
20
|
+
for (const p of candidates) {
|
|
21
|
+
if (existsSync(join(p, "index.html")))
|
|
22
|
+
return p;
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
6
26
|
export async function buildServer() {
|
|
7
|
-
const fastify = Fastify({ logger:
|
|
27
|
+
const fastify = Fastify({ logger: false });
|
|
8
28
|
await fastify.register(cors, { origin: true });
|
|
9
29
|
// API routes
|
|
10
30
|
await fastify.register(crashRoutes, { prefix: "/api" });
|
|
11
31
|
await fastify.register(portfolioRoutes, { prefix: "/api" });
|
|
12
32
|
await fastify.register(priceRoutes, { prefix: "/api" });
|
|
33
|
+
await fastify.register(temperatureRoutes, { prefix: "/api" });
|
|
13
34
|
// Health check
|
|
14
35
|
fastify.get("/api/health", async () => ({ status: "ok", version: "0.1.0" }));
|
|
36
|
+
// Serve built web dashboard if available
|
|
37
|
+
const webDist = findWebDist();
|
|
38
|
+
if (webDist) {
|
|
39
|
+
await fastify.register(fastifyStatic, { root: webDist, prefix: "/" });
|
|
40
|
+
// SPA fallback: serve index.html for non-API routes
|
|
41
|
+
fastify.setNotFoundHandler(async (req, reply) => {
|
|
42
|
+
if (req.url.startsWith("/api")) {
|
|
43
|
+
return reply.status(404).send({ error: "Not Found", statusCode: 404 });
|
|
44
|
+
}
|
|
45
|
+
return reply.sendFile("index.html");
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
fastify.get("/", async () => ({
|
|
50
|
+
message: "TimeCell API is running. Build the web dashboard with: npm run build --workspace=@timecell/web",
|
|
51
|
+
health: "/api/health",
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
15
54
|
return fastify;
|
|
16
55
|
}
|
|
17
56
|
// Direct execution (dev mode)
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,eAAe,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|