@the-situation/indexer 0.9.3 → 0.11.1
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 +5 -1
- package/dist/api/app.d.ts +42 -0
- package/dist/api/app.d.ts.map +1 -1
- package/dist/api/app.js +3 -2
- package/dist/api/app.js.map +1 -1
- package/dist/api/middleware/admin-auth.d.ts.map +1 -1
- package/dist/api/middleware/admin-auth.js +6 -4
- package/dist/api/middleware/admin-auth.js.map +1 -1
- package/dist/api/middleware/error-handler.d.ts.map +1 -1
- package/dist/api/middleware/error-handler.js +0 -1
- package/dist/api/middleware/error-handler.js.map +1 -1
- package/dist/api/routes/admin.d.ts +2 -0
- package/dist/api/routes/admin.d.ts.map +1 -1
- package/dist/api/routes/admin.js +27 -6
- package/dist/api/routes/admin.js.map +1 -1
- package/dist/api/routes/index.d.ts +4 -3
- package/dist/api/routes/index.d.ts.map +1 -1
- package/dist/api/routes/index.js +4 -3
- package/dist/api/routes/index.js.map +1 -1
- package/dist/api/routes/market-events.d.ts.map +1 -1
- package/dist/api/routes/market-events.js +12 -8
- package/dist/api/routes/market-events.js.map +1 -1
- package/dist/api/routes/market-traders.d.ts.map +1 -1
- package/dist/api/routes/market-traders.js +1 -1
- package/dist/api/routes/market-traders.js.map +1 -1
- package/dist/api/routes/markets.d.ts.map +1 -1
- package/dist/api/routes/markets.js +18 -9
- package/dist/api/routes/markets.js.map +1 -1
- package/dist/api/routes/multinoulli-snapshots.d.ts +78 -0
- package/dist/api/routes/multinoulli-snapshots.d.ts.map +1 -0
- package/dist/api/routes/multinoulli-snapshots.js +33 -0
- package/dist/api/routes/multinoulli-snapshots.js.map +1 -0
- package/dist/api/routes/rankings.d.ts.map +1 -1
- package/dist/api/routes/rankings.js +2 -1
- package/dist/api/routes/rankings.js.map +1 -1
- package/dist/api/routes/trader-events.d.ts +1 -1
- package/dist/api/routes/trader-events.d.ts.map +1 -1
- package/dist/api/routes/trader-events.js +9 -6
- package/dist/api/routes/trader-events.js.map +1 -1
- package/dist/api/routes/ws.d.ts.map +1 -1
- package/dist/api/routes/ws.js +4 -3
- package/dist/api/routes/ws.js.map +1 -1
- package/dist/client/IndexerClient.d.ts +2 -1
- package/dist/client/IndexerClient.d.ts.map +1 -1
- package/dist/client/IndexerClient.js.map +1 -1
- package/dist/client/IndexerClientLive.d.ts.map +1 -1
- package/dist/client/IndexerClientLive.js +24 -9
- package/dist/client/IndexerClientLive.js.map +1 -1
- package/dist/client/convenience.d.ts +3 -2
- package/dist/client/convenience.d.ts.map +1 -1
- package/dist/client/convenience.js +1 -0
- package/dist/client/convenience.js.map +1 -1
- package/dist/client/index.d.ts +5 -5
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +4 -4
- package/dist/client/index.js.map +1 -1
- package/dist/client/trader-stats.d.ts +2 -2
- package/dist/client/trader-stats.d.ts.map +1 -1
- package/dist/client/trader-stats.js +1 -1
- package/dist/client/trader-stats.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -4
- package/dist/config.js.map +1 -1
- package/dist/db/repositories/event.d.ts +3 -2
- package/dist/db/repositories/event.d.ts.map +1 -1
- package/dist/db/repositories/event.js +17 -15
- package/dist/db/repositories/event.js.map +1 -1
- package/dist/db/repositories/index.d.ts +3 -3
- package/dist/db/repositories/index.d.ts.map +1 -1
- package/dist/db/repositories/index.js +3 -3
- package/dist/db/repositories/index.js.map +1 -1
- package/dist/db/repositories/market-state.d.ts.map +1 -1
- package/dist/db/repositories/market-state.js +1 -3
- package/dist/db/repositories/market-state.js.map +1 -1
- package/dist/db/repositories/market.d.ts +1 -1
- package/dist/db/repositories/market.d.ts.map +1 -1
- package/dist/db/repositories/market.js +22 -24
- package/dist/db/repositories/market.js.map +1 -1
- package/dist/db/repositories/multinoulli-snapshots.d.ts +44 -0
- package/dist/db/repositories/multinoulli-snapshots.d.ts.map +1 -0
- package/dist/db/repositories/multinoulli-snapshots.js +54 -0
- package/dist/db/repositories/multinoulli-snapshots.js.map +1 -0
- package/dist/db/repositories/position.d.ts +2 -1
- package/dist/db/repositories/position.d.ts.map +1 -1
- package/dist/db/repositories/position.js +6 -0
- package/dist/db/repositories/position.js.map +1 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +127 -1
- package/dist/db/schema.js.map +1 -1
- package/dist/etl/decoder.d.ts +1 -1
- package/dist/etl/decoder.d.ts.map +1 -1
- package/dist/etl/decoder.js +233 -63
- package/dist/etl/decoder.js.map +1 -1
- package/dist/etl/event-indexer.d.ts +1 -1
- package/dist/etl/event-indexer.d.ts.map +1 -1
- package/dist/etl/event-indexer.js +36 -11
- package/dist/etl/event-indexer.js.map +1 -1
- package/dist/etl/position-refresher.d.ts +2 -2
- package/dist/etl/position-refresher.d.ts.map +1 -1
- package/dist/etl/position-refresher.js +15 -8
- package/dist/etl/position-refresher.js.map +1 -1
- package/dist/etl/scheduler.d.ts +2 -2
- package/dist/etl/scheduler.d.ts.map +1 -1
- package/dist/etl/scheduler.js +19 -23
- package/dist/etl/scheduler.js.map +1 -1
- package/dist/etl/state-refresher.d.ts +2 -2
- package/dist/etl/state-refresher.d.ts.map +1 -1
- package/dist/etl/state-refresher.js +17 -5
- package/dist/etl/state-refresher.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -189
- package/dist/index.js.map +1 -1
- package/dist/layers/ChainReaderLive.d.ts +2 -0
- package/dist/layers/ChainReaderLive.d.ts.map +1 -1
- package/dist/layers/ChainReaderLive.js +222 -65
- package/dist/layers/ChainReaderLive.js.map +1 -1
- package/dist/layers/DatabaseLive.d.ts +1 -1
- package/dist/layers/DatabaseLive.d.ts.map +1 -1
- package/dist/layers/DatabaseLive.js +3 -1
- package/dist/layers/DatabaseLive.js.map +1 -1
- package/dist/layers/EventBusLive.d.ts.map +1 -1
- package/dist/layers/EventBusLive.js +2 -2
- package/dist/layers/EventBusLive.js.map +1 -1
- package/dist/layers/VoyagerClientLive.d.ts.map +1 -1
- package/dist/layers/VoyagerClientLive.js +10 -6
- package/dist/layers/VoyagerClientLive.js.map +1 -1
- package/dist/layers/index.d.ts +2 -2
- package/dist/layers/index.d.ts.map +1 -1
- package/dist/layers/index.js +2 -2
- package/dist/layers/index.js.map +1 -1
- package/dist/services/ChainReader.d.ts +3 -3
- package/dist/services/ChainReader.d.ts.map +1 -1
- package/dist/services/ChainReader.js.map +1 -1
- package/dist/services/Database.d.ts +4 -2
- package/dist/services/Database.d.ts.map +1 -1
- package/dist/services/Database.js.map +1 -1
- package/dist/services/EventBus.d.ts.map +1 -1
- package/dist/services/EventBus.js.map +1 -1
- package/dist/services/VoyagerRateLimit.d.ts.map +1 -1
- package/dist/services/VoyagerRateLimit.js +5 -6
- package/dist/services/VoyagerRateLimit.js.map +1 -1
- package/dist/services/index.d.ts +4 -4
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +2 -2
- package/dist/services/index.js.map +1 -1
- package/dist/types/api.d.ts +11 -0
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/event.d.ts +16 -1
- package/dist/types/event.d.ts.map +1 -1
- package/dist/types/index.d.ts +4 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/market.d.ts +1 -1
- package/dist/types/market.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.js","sourceRoot":"","sources":["../../../src/db/repositories/event.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"event.js","sourceRoot":"","sources":["../../../src/db/repositories/event.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { CursorRepository } from './cursor';
|
|
2
2
|
export { EventRepository } from './event';
|
|
3
|
+
export { MarketRepository } from './market';
|
|
3
4
|
export { MarketStateRepository, type UpsertMarketStateInput } from './market-state';
|
|
4
|
-
export { MultinoulliMarketStateRepository, type UpsertMultinoulliMarketStateInput } from './multinoulli-market-state';
|
|
5
|
+
export { MultinoulliMarketStateRepository, type UpsertMultinoulliMarketStateInput, } from './multinoulli-market-state';
|
|
5
6
|
export { PositionRepository } from './position';
|
|
6
|
-
export { CursorRepository } from './cursor';
|
|
7
7
|
export { RankingRepository } from './ranking';
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACpF,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACpF,OAAO,EACL,gCAAgC,EAChC,KAAK,iCAAiC,GACvC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { CursorRepository } from './cursor';
|
|
2
2
|
export { EventRepository } from './event';
|
|
3
|
+
export { MarketRepository } from './market';
|
|
3
4
|
export { MarketStateRepository } from './market-state';
|
|
4
|
-
export { MultinoulliMarketStateRepository } from './multinoulli-market-state';
|
|
5
|
+
export { MultinoulliMarketStateRepository, } from './multinoulli-market-state';
|
|
5
6
|
export { PositionRepository } from './position';
|
|
6
|
-
export { CursorRepository } from './cursor';
|
|
7
7
|
export { RankingRepository } from './ranking';
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/repositories/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/repositories/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAA+B,MAAM,gBAAgB,CAAC;AACpF,OAAO,EACL,gCAAgC,GAEjC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"market-state.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/market-state.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC,MAAM,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI;IAwC3C,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAQ1D,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"market-state.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/market-state.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC,MAAM,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI;IAwC3C,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAQ1D,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;CAQ5C"}
|
|
@@ -32,9 +32,7 @@ export class MarketStateRepository {
|
|
|
32
32
|
.get(marketAddress) ?? null);
|
|
33
33
|
}
|
|
34
34
|
findAllAsMap() {
|
|
35
|
-
const rows = this.db
|
|
36
|
-
.query('SELECT * FROM market_state')
|
|
37
|
-
.all();
|
|
35
|
+
const rows = this.db.query('SELECT * FROM market_state').all();
|
|
38
36
|
const map = new Map();
|
|
39
37
|
for (const row of rows) {
|
|
40
38
|
map.set(row.market_address, row);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"market-state.js","sourceRoot":"","sources":["../../../src/db/repositories/market-state.ts"],"names":[],"mappings":"AAsBA,MAAM,OAAO,qBAAqB;IACH;IAA7B,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAE7C,MAAM,CAAC,KAA6B;QAClC,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;;;;;;;;;;;;;;;;;;oCAkB4B,CAC7B;aACA,GAAG,CACF,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC5B,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACvB,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACxB,KAAK,CAAC,gBAAgB,EACtB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,YAAY,CACnB,CAAC;IACN,CAAC;IAED,YAAY,CAAC,aAAqB;QAChC,OAAO,CACJ,IAAI,CAAC,EAAE;aACL,KAAK,CAAC,qDAAqD,CAAC;aAC5D,GAAG,CAAC,aAAa,CAA2B,IAAI,IAAI,CACxD,CAAC;IACJ,CAAC;IAED,YAAY;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE
|
|
1
|
+
{"version":3,"file":"market-state.js","sourceRoot":"","sources":["../../../src/db/repositories/market-state.ts"],"names":[],"mappings":"AAsBA,MAAM,OAAO,qBAAqB;IACH;IAA7B,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAE7C,MAAM,CAAC,KAA6B;QAClC,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;;;;;;;;;;;;;;;;;;oCAkB4B,CAC7B;aACA,GAAG,CACF,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC5B,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACvB,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACxB,KAAK,CAAC,gBAAgB,EACtB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,YAAY,CACnB,CAAC;IACN,CAAC;IAED,YAAY,CAAC,aAAqB;QAChC,OAAO,CACJ,IAAI,CAAC,EAAE;aACL,KAAK,CAAC,qDAAqD,CAAC;aAC5D,GAAG,CAAC,aAAa,CAA2B,IAAI,IAAI,CACxD,CAAC;IACJ,CAAC;IAED,YAAY;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,GAAG,EAAsB,CAAC;QACnF,MAAM,GAAG,GAAG,IAAI,GAAG,EAA0B,CAAC;QAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Market registry CRUD.
|
|
3
3
|
*/
|
|
4
4
|
import type { Database } from 'bun:sqlite';
|
|
5
|
-
import type {
|
|
5
|
+
import type { CreateMarketInput, MarketRow, UpdateMarketInput } from '../../types';
|
|
6
6
|
export declare class MarketRepository {
|
|
7
7
|
private readonly db;
|
|
8
8
|
constructor(db: Database);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"market.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/market.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"market.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/market.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEnF,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC,OAAO,CAAC,UAAU,UAAQ,GAAG,SAAS,EAAE;IAOxC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAOhD,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS;IA6B3C,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,SAAS,GAAG,IAAI;IAmEnE,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOpC,KAAK,IAAI,MAAM;CAMhB"}
|
|
@@ -10,9 +10,8 @@ export class MarketRepository {
|
|
|
10
10
|
return this.db.query(sql).all();
|
|
11
11
|
}
|
|
12
12
|
findByAddress(address) {
|
|
13
|
-
return (this.db
|
|
14
|
-
|
|
15
|
-
.get(address) ?? null);
|
|
13
|
+
return (this.db.query('SELECT * FROM markets WHERE address = ?').get(address) ??
|
|
14
|
+
null);
|
|
16
15
|
}
|
|
17
16
|
create(input) {
|
|
18
17
|
const topics = JSON.stringify(input.topics ?? []);
|
|
@@ -26,38 +25,37 @@ export class MarketRepository {
|
|
|
26
25
|
.run(input.address.toLowerCase(), input.title, input.description ?? '', input.category ?? '', topics, input.market_type ?? 'normal', input.x_axis_label ?? null, input.x_axis_unit ?? null, outcomeLabels, rowLabels, colLabels, input.resolution_source ?? null);
|
|
27
26
|
return this.findByAddress(input.address.toLowerCase());
|
|
28
27
|
}
|
|
28
|
+
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: explicit merge logic keeps update semantics deterministic.
|
|
29
29
|
update(address, input) {
|
|
30
30
|
const existing = this.findByAddress(address);
|
|
31
|
-
if (!existing)
|
|
31
|
+
if (!existing) {
|
|
32
32
|
return null;
|
|
33
|
+
}
|
|
33
34
|
const title = input.title ?? existing.title;
|
|
34
35
|
const description = input.description ?? existing.description;
|
|
35
36
|
const category = input.category ?? existing.category;
|
|
36
|
-
const topics = input.topics !== undefined
|
|
37
|
-
|
|
38
|
-
: existing.topics;
|
|
39
|
-
const isActive = input.is_active !== undefined
|
|
40
|
-
? input.is_active
|
|
41
|
-
? 1
|
|
42
|
-
: 0
|
|
43
|
-
: existing.is_active;
|
|
37
|
+
const topics = input.topics !== undefined ? JSON.stringify(input.topics) : existing.topics;
|
|
38
|
+
const isActive = input.is_active !== undefined ? (input.is_active ? 1 : 0) : existing.is_active;
|
|
44
39
|
const marketType = input.market_type ?? existing.market_type;
|
|
45
40
|
// New metadata fields: undefined = keep existing, null = clear, value = set
|
|
46
|
-
const xAxisLabel = input.x_axis_label === undefined ? existing.x_axis_label
|
|
47
|
-
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
41
|
+
const xAxisLabel = input.x_axis_label === undefined ? existing.x_axis_label : input.x_axis_label;
|
|
42
|
+
const xAxisUnit = input.x_axis_unit === undefined ? existing.x_axis_unit : input.x_axis_unit;
|
|
43
|
+
const outcomeLabels = input.outcome_labels === undefined
|
|
44
|
+
? existing.outcome_labels
|
|
45
|
+
: input.outcome_labels === null
|
|
46
|
+
? null
|
|
52
47
|
: JSON.stringify(input.outcome_labels);
|
|
53
|
-
const rowLabels = input.row_labels === undefined
|
|
54
|
-
|
|
48
|
+
const rowLabels = input.row_labels === undefined
|
|
49
|
+
? existing.row_labels
|
|
50
|
+
: input.row_labels === null
|
|
51
|
+
? null
|
|
55
52
|
: JSON.stringify(input.row_labels);
|
|
56
|
-
const colLabels = input.col_labels === undefined
|
|
57
|
-
|
|
53
|
+
const colLabels = input.col_labels === undefined
|
|
54
|
+
? existing.col_labels
|
|
55
|
+
: input.col_labels === null
|
|
56
|
+
? null
|
|
58
57
|
: JSON.stringify(input.col_labels);
|
|
59
|
-
const resolutionSource = input.resolution_source === undefined ? existing.resolution_source
|
|
60
|
-
: input.resolution_source;
|
|
58
|
+
const resolutionSource = input.resolution_source === undefined ? existing.resolution_source : input.resolution_source;
|
|
61
59
|
this.db
|
|
62
60
|
.query(`UPDATE markets
|
|
63
61
|
SET title = ?, description = ?, category = ?, topics = ?,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"market.js","sourceRoot":"","sources":["../../../src/db/repositories/market.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"market.js","sourceRoot":"","sources":["../../../src/db/repositories/market.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multinoulli state snapshots — historical probability vectors for time series.
|
|
3
|
+
*
|
|
4
|
+
* A new row is inserted each time the state refresher detects a probability
|
|
5
|
+
* change (via probs_hash), giving the frontend a time series of probability
|
|
6
|
+
* vectors without needing per-event RPC calls.
|
|
7
|
+
*/
|
|
8
|
+
import type { Database } from 'bun:sqlite';
|
|
9
|
+
export interface MultinoulliSnapshotRow {
|
|
10
|
+
readonly id: number;
|
|
11
|
+
readonly market_address: string;
|
|
12
|
+
readonly timestamp: number;
|
|
13
|
+
readonly probs_json: string;
|
|
14
|
+
readonly probs_hash: string;
|
|
15
|
+
readonly outcome_count: number;
|
|
16
|
+
readonly matrix_rows: number;
|
|
17
|
+
readonly matrix_cols: number;
|
|
18
|
+
}
|
|
19
|
+
export interface InsertSnapshotInput {
|
|
20
|
+
readonly market_address: string;
|
|
21
|
+
readonly probs_json: string;
|
|
22
|
+
readonly probs_hash: string;
|
|
23
|
+
readonly outcome_count: number;
|
|
24
|
+
readonly matrix_rows: number;
|
|
25
|
+
readonly matrix_cols: number;
|
|
26
|
+
}
|
|
27
|
+
export declare class MultinoulliSnapshotsRepository {
|
|
28
|
+
private readonly db;
|
|
29
|
+
constructor(db: Database);
|
|
30
|
+
/**
|
|
31
|
+
* Insert a snapshot only if the probs have changed since the last one.
|
|
32
|
+
* Uses probs_hash to deduplicate — if the hash matches the latest
|
|
33
|
+
* snapshot for this market, the insert is skipped.
|
|
34
|
+
*/
|
|
35
|
+
insertIfChanged(input: InsertSnapshotInput): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Get all snapshots for a market, ordered by timestamp ascending.
|
|
38
|
+
* Optionally limited to the most recent N snapshots.
|
|
39
|
+
*/
|
|
40
|
+
findByMarket(marketAddress: string, limit?: number): MultinoulliSnapshotRow[];
|
|
41
|
+
/** Count snapshots for a market */
|
|
42
|
+
countByMarket(marketAddress: string): number;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=multinoulli-snapshots.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multinoulli-snapshots.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/multinoulli-snapshots.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,8BAA8B;IAC7B,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC;;;;OAIG;IACH,eAAe,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO;IA+BpD;;;OAGG;IACH,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,sBAAsB,EAAE;IAiB7E,mCAAmC;IACnC,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;CAM7C"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export class MultinoulliSnapshotsRepository {
|
|
2
|
+
db;
|
|
3
|
+
constructor(db) {
|
|
4
|
+
this.db = db;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Insert a snapshot only if the probs have changed since the last one.
|
|
8
|
+
* Uses probs_hash to deduplicate — if the hash matches the latest
|
|
9
|
+
* snapshot for this market, the insert is skipped.
|
|
10
|
+
*/
|
|
11
|
+
insertIfChanged(input) {
|
|
12
|
+
const latest = this.db
|
|
13
|
+
.query(`SELECT probs_hash FROM multinoulli_state_snapshots
|
|
14
|
+
WHERE market_address = ?
|
|
15
|
+
ORDER BY timestamp DESC LIMIT 1`)
|
|
16
|
+
.get(input.market_address);
|
|
17
|
+
if (latest?.probs_hash === input.probs_hash) {
|
|
18
|
+
return false; // No change — skip
|
|
19
|
+
}
|
|
20
|
+
this.db
|
|
21
|
+
.query(`INSERT INTO multinoulli_state_snapshots
|
|
22
|
+
(market_address, probs_json, probs_hash, outcome_count, matrix_rows, matrix_cols)
|
|
23
|
+
VALUES (?, ?, ?, ?, ?, ?)`)
|
|
24
|
+
.run(input.market_address, input.probs_json, input.probs_hash, input.outcome_count, input.matrix_rows, input.matrix_cols);
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get all snapshots for a market, ordered by timestamp ascending.
|
|
29
|
+
* Optionally limited to the most recent N snapshots.
|
|
30
|
+
*/
|
|
31
|
+
findByMarket(marketAddress, limit) {
|
|
32
|
+
const sql = limit
|
|
33
|
+
? `SELECT * FROM (
|
|
34
|
+
SELECT * FROM multinoulli_state_snapshots
|
|
35
|
+
WHERE market_address = ?
|
|
36
|
+
ORDER BY timestamp DESC
|
|
37
|
+
LIMIT ?
|
|
38
|
+
) sub ORDER BY timestamp ASC`
|
|
39
|
+
: `SELECT * FROM multinoulli_state_snapshots
|
|
40
|
+
WHERE market_address = ?
|
|
41
|
+
ORDER BY timestamp ASC`;
|
|
42
|
+
return limit
|
|
43
|
+
? this.db.query(sql).all(marketAddress, limit)
|
|
44
|
+
: this.db.query(sql).all(marketAddress);
|
|
45
|
+
}
|
|
46
|
+
/** Count snapshots for a market */
|
|
47
|
+
countByMarket(marketAddress) {
|
|
48
|
+
const row = this.db
|
|
49
|
+
.query('SELECT COUNT(*) as count FROM multinoulli_state_snapshots WHERE market_address = ?')
|
|
50
|
+
.get(marketAddress);
|
|
51
|
+
return row.count;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=multinoulli-snapshots.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multinoulli-snapshots.js","sourceRoot":"","sources":["../../../src/db/repositories/multinoulli-snapshots.ts"],"names":[],"mappings":"AA6BA,MAAM,OAAO,8BAA8B;IACZ;IAA7B,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAE7C;;;;OAIG;IACH,eAAe,CAAC,KAA0B;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,KAAK,CACJ;;yCAEiC,CAClC;aACA,GAAG,CAAC,KAAK,CAAC,cAAc,CAAkC,CAAC;QAE9D,IAAI,MAAM,EAAE,UAAU,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC,CAAC,mBAAmB;QACnC,CAAC;QAED,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;;mCAE2B,CAC5B;aACA,GAAG,CACF,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,WAAW,CAClB,CAAC;QAEJ,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,aAAqB,EAAE,KAAc;QAChD,MAAM,GAAG,GAAG,KAAK;YACf,CAAC,CAAC;;;;;sCAK8B;YAChC,CAAC,CAAC;;gCAEwB,CAAC;QAE7B,OAAO,KAAK;YACV,CAAC,CAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAA8B;YAC5E,CAAC,CAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,CAA8B,CAAC;IAC1E,CAAC;IAED,mCAAmC;IACnC,aAAa,CAAC,aAAqB;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,KAAK,CAAC,oFAAoF,CAAC;aAC3F,GAAG,CAAC,aAAa,CAAsB,CAAC;QAC3C,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Trader position upsert + queries.
|
|
3
3
|
*/
|
|
4
4
|
import type { Database } from 'bun:sqlite';
|
|
5
|
-
import type {
|
|
5
|
+
import type { UpsertPositionInput, UserPositionRow } from '../../types';
|
|
6
6
|
export declare class PositionRepository {
|
|
7
7
|
private readonly db;
|
|
8
8
|
constructor(db: Database);
|
|
@@ -11,5 +11,6 @@ export declare class PositionRepository {
|
|
|
11
11
|
findByMarket(marketAddress: string): UserPositionRow[];
|
|
12
12
|
findByTrader(trader: string): UserPositionRow[];
|
|
13
13
|
findAll(): UserPositionRow[];
|
|
14
|
+
deleteByMarket(marketAddress: string): number;
|
|
14
15
|
}
|
|
15
16
|
//# sourceMappingURL=position.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/position.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/position.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAExE,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IA4CxC,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IASzD,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,eAAe,EAAE;IAUtD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE;IAU/C,OAAO,IAAI,eAAe,EAAE;IAM5B,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;CAM9C"}
|
|
@@ -53,5 +53,11 @@ export class PositionRepository {
|
|
|
53
53
|
.query('SELECT * FROM user_positions ORDER BY market_address, trader')
|
|
54
54
|
.all();
|
|
55
55
|
}
|
|
56
|
+
deleteByMarket(marketAddress) {
|
|
57
|
+
const result = this.db
|
|
58
|
+
.query('DELETE FROM user_positions WHERE market_address = ?')
|
|
59
|
+
.run(marketAddress);
|
|
60
|
+
return result.changes;
|
|
61
|
+
}
|
|
56
62
|
}
|
|
57
63
|
//# sourceMappingURL=position.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"position.js","sourceRoot":"","sources":["../../../src/db/repositories/position.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,kBAAkB;IACA;IAA7B,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAE7C,MAAM,CAAC,KAA0B;QAC/B,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;;;;;;;;;;;;;;;;;;;;oCAoB4B,CAC7B;aACA,GAAG,CACF,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1B,KAAK,CAAC,iBAAiB,IAAI,IAAI,EAC/B,KAAK,CAAC,IAAI,IAAI,IAAI,EAClB,KAAK,CAAC,KAAK,IAAI,IAAI,EACnB,KAAK,CAAC,QAAQ,IAAI,IAAI,EACtB,KAAK,CAAC,gBAAgB,IAAI,SAAS,EACnC,KAAK,CAAC,cAAc,IAAI,IAAI,EAC5B,KAAK,CAAC,WAAW,IAAI,CAAC,EACtB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACrB,KAAK,CAAC,aAAa,IAAI,QAAQ,EAC/B,KAAK,CAAC,aAAa,IAAI,IAAI,EAC3B,KAAK,CAAC,mBAAmB,IAAI,IAAI,EACjC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CACpC,CAAC;IACN,CAAC;IAED,YAAY,CAAC,aAAqB,EAAE,MAAc;QAChD,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;uBACe,CAChB;aACA,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,YAAY,CAAC,aAAqB;QAChC,OAAO,IAAI,CAAC,EAAE;aACX,KAAK,CACJ;;yBAEiB,CAClB;aACA,GAAG,CAAC,aAAa,CAAsB,CAAC;IAC7C,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,EAAE;aACX,KAAK,CACJ;;iCAEyB,CAC1B;aACA,GAAG,CAAC,MAAM,CAAsB,CAAC;IACtC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,EAAE;aACX,KAAK,CAAC,8DAA8D,CAAC;aACrE,GAAG,EAAuB,CAAC;IAChC,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"position.js","sourceRoot":"","sources":["../../../src/db/repositories/position.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,kBAAkB;IACA;IAA7B,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAE7C,MAAM,CAAC,KAA0B;QAC/B,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;;;;;;;;;;;;;;;;;;;;oCAoB4B,CAC7B;aACA,GAAG,CACF,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1B,KAAK,CAAC,iBAAiB,IAAI,IAAI,EAC/B,KAAK,CAAC,IAAI,IAAI,IAAI,EAClB,KAAK,CAAC,KAAK,IAAI,IAAI,EACnB,KAAK,CAAC,QAAQ,IAAI,IAAI,EACtB,KAAK,CAAC,gBAAgB,IAAI,SAAS,EACnC,KAAK,CAAC,cAAc,IAAI,IAAI,EAC5B,KAAK,CAAC,WAAW,IAAI,CAAC,EACtB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACrB,KAAK,CAAC,aAAa,IAAI,QAAQ,EAC/B,KAAK,CAAC,aAAa,IAAI,IAAI,EAC3B,KAAK,CAAC,mBAAmB,IAAI,IAAI,EACjC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CACpC,CAAC;IACN,CAAC;IAED,YAAY,CAAC,aAAqB,EAAE,MAAc;QAChD,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;uBACe,CAChB;aACA,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,YAAY,CAAC,aAAqB;QAChC,OAAO,IAAI,CAAC,EAAE;aACX,KAAK,CACJ;;yBAEiB,CAClB;aACA,GAAG,CAAC,aAAa,CAAsB,CAAC;IAC7C,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,EAAE;aACX,KAAK,CACJ;;iCAEyB,CAC1B;aACA,GAAG,CAAC,MAAM,CAAsB,CAAC;IACtC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,EAAE;aACX,KAAK,CAAC,8DAA8D,CAAC;aACrE,GAAG,EAAuB,CAAC;IAChC,CAAC;IAED,cAAc,CAAC,aAAqB;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,KAAK,CAAC,qDAAqD,CAAC;aAC5D,GAAG,CAAC,aAAa,CAAC,CAAC;QACtB,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;CACF"}
|
package/dist/db/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAqR3C,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CA6BnD"}
|
package/dist/db/schema.js
CHANGED
|
@@ -56,7 +56,8 @@ CREATE TABLE IF NOT EXISTS multinoulli_market_state (
|
|
|
56
56
|
CREATE TABLE IF NOT EXISTS market_events (
|
|
57
57
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
58
58
|
market_address TEXT NOT NULL REFERENCES markets(address),
|
|
59
|
-
|
|
59
|
+
event_uid TEXT NOT NULL UNIQUE,
|
|
60
|
+
tx_hash TEXT NOT NULL,
|
|
60
61
|
block_number INTEGER NOT NULL,
|
|
61
62
|
timestamp INTEGER NOT NULL,
|
|
62
63
|
event_type TEXT NOT NULL,
|
|
@@ -74,6 +75,9 @@ CREATE TABLE IF NOT EXISTS market_events (
|
|
|
74
75
|
is_position_sell INTEGER,
|
|
75
76
|
settlement_outcome_index INTEGER,
|
|
76
77
|
settlement_outcomes_json TEXT,
|
|
78
|
+
settlement_value REAL,
|
|
79
|
+
settlement_x1 REAL,
|
|
80
|
+
settlement_x2 REAL,
|
|
77
81
|
created_at INTEGER NOT NULL DEFAULT (unixepoch())
|
|
78
82
|
);
|
|
79
83
|
|
|
@@ -83,6 +87,9 @@ CREATE INDEX IF NOT EXISTS idx_events_market_block
|
|
|
83
87
|
CREATE INDEX IF NOT EXISTS idx_events_trader
|
|
84
88
|
ON market_events(trader) WHERE trader IS NOT NULL;
|
|
85
89
|
|
|
90
|
+
CREATE INDEX IF NOT EXISTS idx_events_trader_ts
|
|
91
|
+
ON market_events(trader, timestamp DESC) WHERE trader IS NOT NULL;
|
|
92
|
+
|
|
86
93
|
CREATE INDEX IF NOT EXISTS idx_events_market_ts
|
|
87
94
|
ON market_events(market_address, timestamp);
|
|
88
95
|
|
|
@@ -112,6 +119,20 @@ CREATE INDEX IF NOT EXISTS idx_positions_trader
|
|
|
112
119
|
CREATE INDEX IF NOT EXISTS idx_markets_active
|
|
113
120
|
ON markets(is_active) WHERE is_active = 1;
|
|
114
121
|
|
|
122
|
+
CREATE TABLE IF NOT EXISTS multinoulli_state_snapshots (
|
|
123
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
124
|
+
market_address TEXT NOT NULL REFERENCES markets(address),
|
|
125
|
+
timestamp INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
126
|
+
probs_json TEXT NOT NULL,
|
|
127
|
+
probs_hash TEXT NOT NULL,
|
|
128
|
+
outcome_count INTEGER NOT NULL,
|
|
129
|
+
matrix_rows INTEGER DEFAULT 0,
|
|
130
|
+
matrix_cols INTEGER DEFAULT 0
|
|
131
|
+
);
|
|
132
|
+
|
|
133
|
+
CREATE INDEX IF NOT EXISTS idx_multinoulli_snapshots_market_ts
|
|
134
|
+
ON multinoulli_state_snapshots(market_address, timestamp);
|
|
135
|
+
|
|
115
136
|
CREATE TABLE IF NOT EXISTS indexer_cursors (
|
|
116
137
|
market_address TEXT PRIMARY KEY REFERENCES markets(address),
|
|
117
138
|
last_block_number INTEGER NOT NULL DEFAULT 0,
|
|
@@ -131,15 +152,118 @@ function safeAddColumn(db, table, column, definition) {
|
|
|
131
152
|
// Column already exists — ignore
|
|
132
153
|
}
|
|
133
154
|
}
|
|
155
|
+
function tableColumns(db, table) {
|
|
156
|
+
const rows = db.query(`PRAGMA table_info(${table})`).all();
|
|
157
|
+
return new Set(rows.map((r) => r.name));
|
|
158
|
+
}
|
|
159
|
+
function hasUniqueSingleColumnIndex(db, table, column) {
|
|
160
|
+
const indexes = db.query(`PRAGMA index_list(${table})`).all();
|
|
161
|
+
for (const idx of indexes) {
|
|
162
|
+
if (idx.unique !== 1) {
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
const cols = db.query(`PRAGMA index_info(${idx.name})`).all();
|
|
166
|
+
if (cols.length === 1 && cols[0]?.name === column) {
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
function migrateMarketEventsTable(db) {
|
|
173
|
+
const columns = tableColumns(db, 'market_events');
|
|
174
|
+
const hasEventUid = columns.has('event_uid');
|
|
175
|
+
const hasLegacyUniqueTxHash = hasUniqueSingleColumnIndex(db, 'market_events', 'tx_hash');
|
|
176
|
+
if (hasEventUid && !hasLegacyUniqueTxHash) {
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
const hasSettlementValue = columns.has('settlement_value');
|
|
180
|
+
const hasSettlementX1 = columns.has('settlement_x1');
|
|
181
|
+
const hasSettlementX2 = columns.has('settlement_x2');
|
|
182
|
+
const eventUidExpr = hasEventUid
|
|
183
|
+
? "COALESCE(event_uid, tx_hash || ':' || CAST(id AS TEXT))"
|
|
184
|
+
: "tx_hash || ':' || CAST(id AS TEXT)";
|
|
185
|
+
const settlementValueExpr = hasSettlementValue ? 'settlement_value' : 'NULL';
|
|
186
|
+
const settlementX1Expr = hasSettlementX1 ? 'settlement_x1' : 'NULL';
|
|
187
|
+
const settlementX2Expr = hasSettlementX2 ? 'settlement_x2' : 'NULL';
|
|
188
|
+
db.exec('PRAGMA foreign_keys = OFF');
|
|
189
|
+
db.exec('BEGIN');
|
|
190
|
+
try {
|
|
191
|
+
db.exec(`
|
|
192
|
+
CREATE TABLE IF NOT EXISTS market_events_v2 (
|
|
193
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
194
|
+
market_address TEXT NOT NULL REFERENCES markets(address),
|
|
195
|
+
event_uid TEXT NOT NULL UNIQUE,
|
|
196
|
+
tx_hash TEXT NOT NULL,
|
|
197
|
+
block_number INTEGER NOT NULL,
|
|
198
|
+
timestamp INTEGER NOT NULL,
|
|
199
|
+
event_type TEXT NOT NULL,
|
|
200
|
+
trader TEXT,
|
|
201
|
+
mean REAL NOT NULL,
|
|
202
|
+
std_dev REAL NOT NULL,
|
|
203
|
+
lower_bound REAL NOT NULL,
|
|
204
|
+
upper_bound REAL NOT NULL,
|
|
205
|
+
old_mean REAL,
|
|
206
|
+
old_std_dev REAL,
|
|
207
|
+
collateral_posted TEXT,
|
|
208
|
+
raw_data TEXT,
|
|
209
|
+
outcome_count INTEGER,
|
|
210
|
+
min_outcome_index INTEGER,
|
|
211
|
+
is_position_sell INTEGER,
|
|
212
|
+
settlement_outcome_index INTEGER,
|
|
213
|
+
settlement_outcomes_json TEXT,
|
|
214
|
+
settlement_value REAL,
|
|
215
|
+
settlement_x1 REAL,
|
|
216
|
+
settlement_x2 REAL,
|
|
217
|
+
created_at INTEGER NOT NULL DEFAULT (unixepoch())
|
|
218
|
+
);
|
|
219
|
+
`);
|
|
220
|
+
db.exec(`
|
|
221
|
+
INSERT INTO market_events_v2 (
|
|
222
|
+
id, market_address, event_uid, tx_hash, block_number, timestamp, event_type,
|
|
223
|
+
trader, mean, std_dev, lower_bound, upper_bound,
|
|
224
|
+
old_mean, old_std_dev, collateral_posted, raw_data,
|
|
225
|
+
outcome_count, min_outcome_index, is_position_sell,
|
|
226
|
+
settlement_outcome_index, settlement_outcomes_json,
|
|
227
|
+
settlement_value, settlement_x1, settlement_x2, created_at
|
|
228
|
+
)
|
|
229
|
+
SELECT
|
|
230
|
+
id, market_address, ${eventUidExpr}, tx_hash, block_number, timestamp, event_type,
|
|
231
|
+
trader, mean, std_dev, lower_bound, upper_bound,
|
|
232
|
+
old_mean, old_std_dev, collateral_posted, raw_data,
|
|
233
|
+
outcome_count, min_outcome_index, is_position_sell,
|
|
234
|
+
settlement_outcome_index, settlement_outcomes_json,
|
|
235
|
+
${settlementValueExpr}, ${settlementX1Expr}, ${settlementX2Expr}, created_at
|
|
236
|
+
FROM market_events;
|
|
237
|
+
`);
|
|
238
|
+
db.exec('DROP TABLE market_events');
|
|
239
|
+
db.exec('ALTER TABLE market_events_v2 RENAME TO market_events');
|
|
240
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_events_market_block ON market_events(market_address, block_number)');
|
|
241
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_events_trader ON market_events(trader) WHERE trader IS NOT NULL');
|
|
242
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_events_trader_ts ON market_events(trader, timestamp DESC) WHERE trader IS NOT NULL');
|
|
243
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_events_market_ts ON market_events(market_address, timestamp)');
|
|
244
|
+
db.exec('COMMIT');
|
|
245
|
+
}
|
|
246
|
+
catch (error) {
|
|
247
|
+
db.exec('ROLLBACK');
|
|
248
|
+
throw error;
|
|
249
|
+
}
|
|
250
|
+
finally {
|
|
251
|
+
db.exec('PRAGMA foreign_keys = ON');
|
|
252
|
+
}
|
|
253
|
+
}
|
|
134
254
|
export function initializeSchema(db) {
|
|
135
255
|
db.exec(SCHEMA_DDL);
|
|
136
256
|
// Migrations for existing databases
|
|
137
257
|
safeAddColumn(db, 'markets', 'market_type', "TEXT NOT NULL DEFAULT 'normal'");
|
|
258
|
+
safeAddColumn(db, 'market_events', 'event_uid', 'TEXT');
|
|
138
259
|
safeAddColumn(db, 'market_events', 'outcome_count', 'INTEGER');
|
|
139
260
|
safeAddColumn(db, 'market_events', 'min_outcome_index', 'INTEGER');
|
|
140
261
|
safeAddColumn(db, 'market_events', 'is_position_sell', 'INTEGER');
|
|
141
262
|
safeAddColumn(db, 'market_events', 'settlement_outcome_index', 'INTEGER');
|
|
142
263
|
safeAddColumn(db, 'market_events', 'settlement_outcomes_json', 'TEXT');
|
|
264
|
+
safeAddColumn(db, 'market_events', 'settlement_value', 'REAL');
|
|
265
|
+
safeAddColumn(db, 'market_events', 'settlement_x1', 'REAL');
|
|
266
|
+
safeAddColumn(db, 'market_events', 'settlement_x2', 'REAL');
|
|
143
267
|
safeAddColumn(db, 'user_positions', 'position_type', "TEXT DEFAULT 'normal'");
|
|
144
268
|
safeAddColumn(db, 'user_positions', 'outcome_count', 'INTEGER');
|
|
145
269
|
safeAddColumn(db, 'user_positions', 'original_probs_json', 'TEXT');
|
|
@@ -151,5 +275,7 @@ export function initializeSchema(db) {
|
|
|
151
275
|
safeAddColumn(db, 'markets', 'row_labels', 'TEXT DEFAULT NULL');
|
|
152
276
|
safeAddColumn(db, 'markets', 'col_labels', 'TEXT DEFAULT NULL');
|
|
153
277
|
safeAddColumn(db, 'markets', 'resolution_source', 'TEXT DEFAULT NULL');
|
|
278
|
+
// Rebuild event table when upgrading from legacy tx_hash-unique schema.
|
|
279
|
+
migrateMarketEventsTable(db);
|
|
154
280
|
}
|
|
155
281
|
//# sourceMappingURL=schema.js.map
|
package/dist/db/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,GAAG
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/etl/decoder.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* Current: MarketInitialized / TradeExecuted (SQ128x128 4-limb encoding)
|
|
7
7
|
* Multinoulli: TradeExecuted (compact), MarketSettled, MarketSettledMulti
|
|
8
8
|
*/
|
|
9
|
-
import type {
|
|
9
|
+
import type { DecodedEvent, MarketType, VoyagerEvent } from '../types';
|
|
10
10
|
export declare function decodeEvent(event: VoyagerEvent, marketType?: MarketType): DecodedEvent | null;
|
|
11
11
|
export declare function decodeEvents(events: readonly VoyagerEvent[], marketType?: MarketType): DecodedEvent[];
|
|
12
12
|
//# sourceMappingURL=decoder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/etl/decoder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EACV,YAAY,EAKZ,
|
|
1
|
+
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/etl/decoder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EACV,YAAY,EAKZ,UAAU,EACV,YAAY,EACb,MAAM,UAAU,CAAC;AAkDlB,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CA2B7F;AAoCD,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,YAAY,EAAE,EAC/B,UAAU,CAAC,EAAE,UAAU,GACtB,YAAY,EAAE,CAYhB"}
|