xtrawl 0.1.1 → 0.1.3
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/DOCUMENTATION.md +51 -0
- package/README.md +34 -6
- package/dist/auth/bootstrap.d.ts +1 -1
- package/dist/auth/bootstrap.d.ts.map +1 -1
- package/dist/auth/bootstrap.js +27 -14
- package/dist/auth/bootstrap.js.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +13 -12
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/parser.d.ts +2 -14
- package/dist/cli/parser.d.ts.map +1 -1
- package/dist/cli/parser.js +26 -30
- package/dist/cli/parser.js.map +1 -1
- package/dist/cli/types.d.ts +17 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +2 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/client/accounts.d.ts.map +1 -1
- package/dist/client/accounts.js +13 -6
- package/dist/client/accounts.js.map +1 -1
- package/dist/client/client.d.ts +16 -3
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +96 -38
- package/dist/client/client.js.map +1 -1
- package/dist/client/collectors.d.ts +2 -10
- package/dist/client/collectors.d.ts.map +1 -1
- package/dist/client/collectors.js +122 -57
- package/dist/client/collectors.js.map +1 -1
- package/dist/client/database.d.ts +6 -18
- package/dist/client/database.d.ts.map +1 -1
- package/dist/client/database.js +4 -21
- package/dist/client/database.js.map +1 -1
- package/dist/client/page-commit.d.ts +15 -0
- package/dist/client/page-commit.d.ts.map +1 -0
- package/dist/client/page-commit.js +19 -0
- package/dist/client/page-commit.js.map +1 -0
- package/dist/client/profiles.d.ts +1 -1
- package/dist/client/profiles.d.ts.map +1 -1
- package/dist/client/profiles.js +10 -3
- package/dist/client/profiles.js.map +1 -1
- package/dist/client/search.d.ts +5 -17
- package/dist/client/search.d.ts.map +1 -1
- package/dist/client/search.js +81 -26
- package/dist/client/search.js.map +1 -1
- package/dist/client/types.d.ts +40 -2
- package/dist/client/types.d.ts.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +5 -2
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/types.d.ts +5 -2
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/validation.d.ts +1 -1
- package/dist/config/validation.d.ts.map +1 -1
- package/dist/config/validation.js +27 -11
- package/dist/config/validation.js.map +1 -1
- package/dist/constants/accounts.d.ts +16 -0
- package/dist/constants/accounts.d.ts.map +1 -0
- package/dist/constants/accounts.js +16 -0
- package/dist/constants/accounts.js.map +1 -0
- package/dist/constants/cli.d.ts +10 -0
- package/dist/constants/cli.d.ts.map +1 -0
- package/dist/constants/cli.js +10 -0
- package/dist/constants/cli.js.map +1 -0
- package/dist/constants/collection.d.ts +9 -0
- package/dist/constants/collection.d.ts.map +1 -0
- package/dist/constants/collection.js +9 -0
- package/dist/constants/collection.js.map +1 -0
- package/dist/constants/config.d.ts +6 -0
- package/dist/constants/config.d.ts.map +1 -0
- package/dist/constants/config.js +6 -0
- package/dist/constants/config.js.map +1 -0
- package/dist/constants/errors.d.ts +9 -0
- package/dist/constants/errors.d.ts.map +1 -0
- package/dist/constants/errors.js +9 -0
- package/dist/constants/errors.js.map +1 -0
- package/dist/constants/output.d.ts +7 -0
- package/dist/constants/output.d.ts.map +1 -0
- package/dist/constants/output.js +7 -0
- package/dist/constants/output.js.map +1 -0
- package/dist/constants/pages.d.ts +5 -0
- package/dist/constants/pages.d.ts.map +1 -0
- package/dist/constants/pages.js +5 -0
- package/dist/constants/pages.js.map +1 -0
- package/dist/constants/requests.d.ts +18 -0
- package/dist/constants/requests.d.ts.map +1 -0
- package/dist/constants/requests.js +18 -0
- package/dist/constants/requests.js.map +1 -0
- package/dist/constants/runner.d.ts +8 -0
- package/dist/constants/runner.d.ts.map +1 -0
- package/dist/constants/runner.js +8 -0
- package/dist/constants/runner.js.map +1 -0
- package/dist/constants/runs.d.ts +8 -0
- package/dist/constants/runs.d.ts.map +1 -0
- package/dist/constants/runs.js +8 -0
- package/dist/constants/runs.js.map +1 -0
- package/dist/domain/accounts.d.ts +4 -2
- package/dist/domain/accounts.d.ts.map +1 -1
- package/dist/domain/collection.d.ts +27 -0
- package/dist/domain/collection.d.ts.map +1 -0
- package/dist/domain/collection.js +2 -0
- package/dist/domain/collection.js.map +1 -0
- package/dist/domain/diagnostics.d.ts +11 -0
- package/dist/domain/diagnostics.d.ts.map +1 -0
- package/dist/domain/diagnostics.js +2 -0
- package/dist/domain/diagnostics.js.map +1 -0
- package/dist/domain/errors.d.ts +2 -1
- package/dist/domain/errors.d.ts.map +1 -1
- package/dist/domain/errors.js +10 -9
- package/dist/domain/errors.js.map +1 -1
- package/dist/domain/http.d.ts +7 -1
- package/dist/domain/http.d.ts.map +1 -1
- package/dist/domain/manifest.d.ts +8 -0
- package/dist/domain/manifest.d.ts.map +1 -1
- package/dist/domain/output.d.ts +3 -0
- package/dist/domain/output.d.ts.map +1 -0
- package/dist/domain/output.js +2 -0
- package/dist/domain/output.js.map +1 -0
- package/dist/domain/pages.d.ts +20 -0
- package/dist/domain/pages.d.ts.map +1 -0
- package/dist/domain/pages.js +2 -0
- package/dist/domain/pages.js.map +1 -0
- package/dist/domain/pool.d.ts +22 -0
- package/dist/domain/pool.d.ts.map +1 -0
- package/dist/domain/pool.js +2 -0
- package/dist/domain/pool.js.map +1 -0
- package/dist/domain/records.d.ts +6 -1
- package/dist/domain/records.d.ts.map +1 -1
- package/dist/domain/requests.d.ts +19 -10
- package/dist/domain/requests.d.ts.map +1 -1
- package/dist/domain/runner.d.ts +30 -0
- package/dist/domain/runner.d.ts.map +1 -0
- package/dist/domain/runner.js +2 -0
- package/dist/domain/runner.js.map +1 -0
- package/dist/domain/runs.d.ts +12 -0
- package/dist/domain/runs.d.ts.map +1 -0
- package/dist/domain/runs.js +2 -0
- package/dist/domain/runs.js.map +1 -0
- package/dist/engine/api-engine.d.ts +7 -7
- package/dist/engine/api-engine.d.ts.map +1 -1
- package/dist/engine/api-engine.js +42 -19
- package/dist/engine/api-engine.js.map +1 -1
- package/dist/engine/extractors.d.ts +2 -8
- package/dist/engine/extractors.d.ts.map +1 -1
- package/dist/engine/extractors.js +30 -11
- package/dist/engine/extractors.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/manifest/destinations.d.ts +4 -0
- package/dist/manifest/destinations.d.ts.map +1 -0
- package/dist/manifest/destinations.js +47 -0
- package/dist/manifest/destinations.js.map +1 -0
- package/dist/manifest/model.d.ts +3 -2
- package/dist/manifest/model.d.ts.map +1 -1
- package/dist/manifest/model.js +6 -1
- package/dist/manifest/model.js.map +1 -1
- package/dist/manifest/provider.d.ts +10 -3
- package/dist/manifest/provider.d.ts.map +1 -1
- package/dist/manifest/provider.js +86 -34
- package/dist/manifest/provider.js.map +1 -1
- package/dist/manifest/scraper.d.ts +2 -6
- package/dist/manifest/scraper.d.ts.map +1 -1
- package/dist/manifest/scraper.js +46 -15
- package/dist/manifest/scraper.js.map +1 -1
- package/dist/output/csv-writer.d.ts.map +1 -1
- package/dist/output/csv-writer.js +32 -10
- package/dist/output/csv-writer.js.map +1 -1
- package/dist/output/json-writer.d.ts +1 -0
- package/dist/output/json-writer.d.ts.map +1 -1
- package/dist/output/json-writer.js +36 -11
- package/dist/output/json-writer.js.map +1 -1
- package/dist/output/lock.d.ts +2 -0
- package/dist/output/lock.d.ts.map +1 -0
- package/dist/output/lock.js +18 -0
- package/dist/output/lock.js.map +1 -0
- package/dist/output/writer.d.ts +2 -1
- package/dist/output/writer.d.ts.map +1 -1
- package/dist/output/writer.js +6 -3
- package/dist/output/writer.js.map +1 -1
- package/dist/pool/account-pool.d.ts +3 -12
- package/dist/pool/account-pool.d.ts.map +1 -1
- package/dist/pool/account-pool.js +54 -16
- package/dist/pool/account-pool.js.map +1 -1
- package/dist/pool/cooldown.d.ts +3 -7
- package/dist/pool/cooldown.d.ts.map +1 -1
- package/dist/pool/cooldown.js +10 -7
- package/dist/pool/cooldown.js.map +1 -1
- package/dist/pool/limiter.d.ts +3 -3
- package/dist/pool/limiter.d.ts.map +1 -1
- package/dist/pool/limiter.js +5 -6
- package/dist/pool/limiter.js.map +1 -1
- package/dist/query/builder.d.ts +1 -1
- package/dist/query/builder.d.ts.map +1 -1
- package/dist/query/builder.js +10 -4
- package/dist/query/builder.js.map +1 -1
- package/dist/query/collection-id.d.ts +3 -0
- package/dist/query/collection-id.d.ts.map +1 -0
- package/dist/query/collection-id.js +21 -0
- package/dist/query/collection-id.js.map +1 -0
- package/dist/query/normalize.d.ts +3 -32
- package/dist/query/normalize.d.ts.map +1 -1
- package/dist/query/normalize.js +10 -16
- package/dist/query/normalize.js.map +1 -1
- package/dist/query/targets.d.ts +2 -7
- package/dist/query/targets.d.ts.map +1 -1
- package/dist/query/targets.js.map +1 -1
- package/dist/query/types.d.ts +40 -0
- package/dist/query/types.d.ts.map +1 -0
- package/dist/query/types.js +2 -0
- package/dist/query/types.js.map +1 -0
- package/dist/runner/index.d.ts +3 -0
- package/dist/runner/index.d.ts.map +1 -1
- package/dist/runner/index.js.map +1 -1
- package/dist/runner/retry.d.ts +3 -6
- package/dist/runner/retry.d.ts.map +1 -1
- package/dist/runner/retry.js +5 -3
- package/dist/runner/retry.js.map +1 -1
- package/dist/runner/runner.d.ts +2 -14
- package/dist/runner/runner.d.ts.map +1 -1
- package/dist/runner/runner.js +11 -7
- package/dist/runner/runner.js.map +1 -1
- package/dist/runner/task-queue.d.ts +9 -11
- package/dist/runner/task-queue.d.ts.map +1 -1
- package/dist/runner/task-queue.js +79 -32
- package/dist/runner/task-queue.js.map +1 -1
- package/dist/storage/account-repository.d.ts +2 -15
- package/dist/storage/account-repository.d.ts.map +1 -1
- package/dist/storage/account-repository.js +65 -35
- package/dist/storage/account-repository.js.map +1 -1
- package/dist/storage/database.d.ts +3 -1
- package/dist/storage/database.d.ts.map +1 -1
- package/dist/storage/database.js +10 -4
- package/dist/storage/database.js.map +1 -1
- package/dist/storage/index.d.ts +3 -1
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +2 -0
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/progress-repository.d.ts +12 -0
- package/dist/storage/progress-repository.d.ts.map +1 -0
- package/dist/storage/progress-repository.js +76 -0
- package/dist/storage/progress-repository.js.map +1 -0
- package/dist/storage/run-repository.d.ts +4 -10
- package/dist/storage/run-repository.d.ts.map +1 -1
- package/dist/storage/run-repository.js +4 -2
- package/dist/storage/run-repository.js.map +1 -1
- package/dist/storage/schema.d.ts.map +1 -1
- package/dist/storage/schema.js +19 -0
- package/dist/storage/schema.js.map +1 -1
- package/dist/storage/types.d.ts +15 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +2 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/transport/body.d.ts +15 -0
- package/dist/transport/body.d.ts.map +1 -0
- package/dist/transport/body.js +61 -0
- package/dist/transport/body.js.map +1 -0
- package/dist/transport/dispatcher-pool.d.ts +13 -0
- package/dist/transport/dispatcher-pool.d.ts.map +1 -0
- package/dist/transport/dispatcher-pool.js +47 -0
- package/dist/transport/dispatcher-pool.js.map +1 -0
- package/dist/transport/graphql.d.ts +1 -1
- package/dist/transport/graphql.d.ts.map +1 -1
- package/dist/transport/graphql.js +36 -19
- package/dist/transport/graphql.js.map +1 -1
- package/dist/transport/session.d.ts +8 -11
- package/dist/transport/session.d.ts.map +1 -1
- package/dist/transport/session.js +71 -26
- package/dist/transport/session.js.map +1 -1
- package/dist/transport/transaction-id.d.ts +2 -7
- package/dist/transport/transaction-id.d.ts.map +1 -1
- package/dist/transport/transaction-id.js +20 -16
- package/dist/transport/transaction-id.js.map +1 -1
- package/dist/transport/types.d.ts +28 -0
- package/dist/transport/types.d.ts.map +1 -0
- package/dist/transport/types.js +2 -0
- package/dist/transport/types.js.map +1 -0
- package/dist/utils/abort.d.ts +6 -0
- package/dist/utils/abort.d.ts.map +1 -0
- package/dist/utils/abort.js +45 -0
- package/dist/utils/abort.js.map +1 -0
- package/dist/utils/redact.d.ts +5 -0
- package/dist/utils/redact.d.ts.map +1 -0
- package/dist/utils/redact.js +42 -0
- package/dist/utils/redact.js.map +1 -0
- package/docs/architecture/overview.md +8 -4
- package/docs/product/specification.md +18 -8
- package/docs/security/data-boundary.md +3 -0
- package/package.json +5 -4
|
@@ -1,20 +1,9 @@
|
|
|
1
1
|
import type { AccountLease, AccountRecord, AccountSummary, ProxySettings } from "../domain/accounts.js";
|
|
2
|
-
import type {
|
|
2
|
+
import type { AccountRepositoryOptions, ReleaseOptions } from "./types.js";
|
|
3
3
|
import type { AccountLeaseCompletion, AccountLeaseRequest, AccountStateStore } from "../domain/account-state.js";
|
|
4
4
|
import { StateDatabase } from "./database.js";
|
|
5
5
|
export { rowToAccount } from "./account-row.js";
|
|
6
|
-
export
|
|
7
|
-
readonly status?: AccountStatus;
|
|
8
|
-
readonly availableUntil?: number;
|
|
9
|
-
readonly lastErrorCode?: number;
|
|
10
|
-
readonly cooldownReason?: string;
|
|
11
|
-
readonly dailyRequests?: number;
|
|
12
|
-
}
|
|
13
|
-
export interface AccountRepositoryOptions {
|
|
14
|
-
readonly dailyRequestsLimit?: number;
|
|
15
|
-
readonly dailyTweetsLimit?: number;
|
|
16
|
-
readonly leaseTtlMs?: number;
|
|
17
|
-
}
|
|
6
|
+
export type { AccountRepositoryOptions, ReleaseOptions } from "./types.js";
|
|
18
7
|
export declare class AccountRepository implements AccountStateStore {
|
|
19
8
|
private readonly database;
|
|
20
9
|
readonly kind = "sqlite";
|
|
@@ -50,8 +39,6 @@ export declare class AccountRepository implements AccountStateStore {
|
|
|
50
39
|
readonly merged: number;
|
|
51
40
|
};
|
|
52
41
|
private insert;
|
|
53
|
-
private resetExpiredCooldowns;
|
|
54
|
-
private resetDailyCounters;
|
|
55
42
|
private isEligible;
|
|
56
43
|
}
|
|
57
44
|
//# sourceMappingURL=account-repository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-repository.d.ts","sourceRoot":"","sources":["../../src/storage/account-repository.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EAEd,aAAa,EACd,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"account-repository.d.ts","sourceRoot":"","sources":["../../src/storage/account-repository.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EAEd,aAAa,EACd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAY3E,qBAAa,iBAAkB,YAAW,iBAAiB;IAOvD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAN3B,SAAgB,IAAI,YAAY;IAChC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAGjB,QAAQ,EAAE,aAAa,EACxC,OAAO,GAAE,wBAA6B;IAOjC,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa;IAqC7C,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAK3D,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAK7D,IAAI,IAAI,aAAa,EAAE;IAIvB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIjC,UAAU,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,GAAG,IAAI;IAOpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO;IAUnE,OAAO,IAAI,cAAc;IA2BzB,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,SAAa,GAAG,OAAO;IAI3D,KAAK,CACV,OAAO,GAAE;QAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAO,GAC9E,YAAY,GAAG,SAAS;IAapB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,GAAG,SAAS;IA+CpE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAIvD,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO;IAO5D,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAI,EAAE,MAAM,SAAI,GAAG,OAAO;IAqB5D,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO;IAqB/D,aAAa,CAAC,UAAU,EAAE,sBAAsB,GAAG,OAAO;IA+B1D,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAWrE,cAAc,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,eAAe,UAAQ,GAAG,MAAM;IAoB9E,WAAW,CAAC,WAAW,UAAO,GAAG,MAAM;IAYvC,eAAe,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM;IAiBtD,6BAA6B,IAAI;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAyB7F,OAAO,CAAC,MAAM;IA2Bd,OAAO,CAAC,UAAU;CAcnB"}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { ACCOUNT_HEALTH, ACCOUNT_STATUS_CODE } from "../constants/accounts.js";
|
|
3
|
+
import { asInteger } from "../utils/guards.js";
|
|
2
4
|
import { StateDatabase } from "./database.js";
|
|
3
5
|
import { rowToAccount } from "./account-row.js";
|
|
4
6
|
export { rowToAccount } from "./account-row.js";
|
|
5
7
|
const DEFAULT_DAILY_REQUESTS_LIMIT = 30;
|
|
6
8
|
const DEFAULT_DAILY_TWEETS_LIMIT = 600;
|
|
7
9
|
const DEFAULT_LEASE_TTL_MS = 120_000;
|
|
10
|
+
const ELIGIBILITY_SQL = `status != ${ACCOUNT_STATUS_CODE.UNUSABLE}
|
|
11
|
+
AND (status != ${ACCOUNT_STATUS_CODE.COOLING_DOWN} OR available_until <= ?)
|
|
12
|
+
AND (lease_id IS NULL OR lease_expires_at IS NULL OR lease_expires_at <= ?)
|
|
13
|
+
AND (? = 0 OR (auth_token IS NOT NULL AND auth_token != '' AND csrf_token IS NOT NULL AND csrf_token != ''))
|
|
14
|
+
AND (last_reset_date IS NULL OR last_reset_date <> ? OR (daily_requests < ? AND daily_tweets < ?))`;
|
|
8
15
|
export class AccountRepository {
|
|
9
16
|
database;
|
|
10
17
|
kind = "sqlite";
|
|
@@ -26,7 +33,7 @@ export class AccountRepository {
|
|
|
26
33
|
? account.username
|
|
27
34
|
: existing.username;
|
|
28
35
|
const cookies = { ...existing.cookies, ...account.cookies };
|
|
29
|
-
this.database.run(`UPDATE accounts SET username=?, password=?, email=?, email_password=?, two_factor_secret=?, auth_token=?, csrf_token=?, cookies_json=?, bearer_token=?, proxy_json=?, status=?, available_until=?, daily_requests=?, daily_tweets=?, total_tweets=?, last_reset_date=?, last_used=?, last_error_code=?, cooldown_reason=? WHERE id=?`, username, account.password ?? existing.password ?? null, account.email ?? existing.email ?? null, account.emailPassword ?? existing.emailPassword ?? null, account.twoFactorSecret ?? existing.twoFactorSecret ?? null, account.authToken ?? existing.authToken ?? null, account.csrfToken ?? existing.csrfToken ?? null, JSON.stringify(cookies), account.bearerToken ?? existing.bearerToken ?? null, account.proxy ? JSON.stringify(account.proxy) : existing.proxy ? JSON.stringify(existing.proxy) : null, account.status ?? existing.status ??
|
|
36
|
+
this.database.run(`UPDATE accounts SET username=?, password=?, email=?, email_password=?, two_factor_secret=?, auth_token=?, csrf_token=?, cookies_json=?, bearer_token=?, proxy_json=?, status=?, available_until=?, daily_requests=?, daily_tweets=?, total_tweets=?, last_reset_date=?, last_used=?, last_error_code=?, cooldown_reason=? WHERE id=?`, username, account.password ?? existing.password ?? null, account.email ?? existing.email ?? null, account.emailPassword ?? existing.emailPassword ?? null, account.twoFactorSecret ?? existing.twoFactorSecret ?? null, account.authToken ?? existing.authToken ?? null, account.csrfToken ?? existing.csrfToken ?? null, JSON.stringify(cookies), account.bearerToken ?? existing.bearerToken ?? null, account.proxy ? JSON.stringify(account.proxy) : existing.proxy ? JSON.stringify(existing.proxy) : null, account.status ?? existing.status ?? ACCOUNT_STATUS_CODE.HEALTHY, account.availableUntil ?? existing.availableUntil ?? 0, account.dailyRequests ?? existing.dailyRequests ?? 0, account.dailyTweets ?? existing.dailyTweets ?? 0, account.totalTweets ?? existing.totalTweets ?? 0, account.lastResetDate ?? existing.lastResetDate ?? utcDate(), account.lastUsed ?? existing.lastUsed ?? 0, account.lastErrorCode ?? existing.lastErrorCode ?? null, account.cooldownReason ?? existing.cooldownReason ?? null, existing.id ?? null);
|
|
30
37
|
return this.findByUsername(username);
|
|
31
38
|
}
|
|
32
39
|
findByUsername(username) {
|
|
@@ -55,13 +62,21 @@ export class AccountRepository {
|
|
|
55
62
|
}
|
|
56
63
|
summary() {
|
|
57
64
|
const now = Date.now();
|
|
58
|
-
const
|
|
65
|
+
const today = utcDate(now);
|
|
66
|
+
const row = this.database.get(`SELECT
|
|
67
|
+
COUNT(*) AS total,
|
|
68
|
+
SUM(CASE WHEN status=0 THEN 1 ELSE 0 END) AS unusable,
|
|
69
|
+
SUM(CASE WHEN status=2 AND available_until>? THEN 1 ELSE 0 END) AS cooling,
|
|
70
|
+
SUM(CASE WHEN status!=0 AND (status!=2 OR available_until<=?)
|
|
71
|
+
AND (last_reset_date IS NULL OR last_reset_date<>? OR (daily_requests<? AND daily_tweets<?))
|
|
72
|
+
THEN 1 ELSE 0 END) AS eligible
|
|
73
|
+
FROM accounts`, now, now, today, this.dailyRequestsLimit, this.dailyTweetsLimit);
|
|
59
74
|
return {
|
|
60
75
|
dbPath: this.database.path,
|
|
61
|
-
total:
|
|
62
|
-
eligible:
|
|
63
|
-
unusable:
|
|
64
|
-
coolingDown:
|
|
76
|
+
total: Number(row?.total ?? 0),
|
|
77
|
+
eligible: Number(row?.eligible ?? 0),
|
|
78
|
+
unusable: Number(row?.unusable ?? 0),
|
|
79
|
+
coolingDown: Number(row?.cooling ?? 0),
|
|
65
80
|
};
|
|
66
81
|
}
|
|
67
82
|
eligible(account, now = Date.now()) {
|
|
@@ -81,16 +96,27 @@ export class AccountRepository {
|
|
|
81
96
|
}
|
|
82
97
|
acquireLease(request) {
|
|
83
98
|
return this.database.transaction(() => {
|
|
84
|
-
this.
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
if (!selected
|
|
99
|
+
const selected = this.database.get(`SELECT id, username FROM accounts
|
|
100
|
+
WHERE ${ELIGIBILITY_SQL}
|
|
101
|
+
ORDER BY last_used ASC, id ASC
|
|
102
|
+
LIMIT 1`, request.now, request.now, request.requireAuthMaterial ? 1 : 0, request.utcDate, request.dailyRequestsLimit, request.dailyTweetsLimit);
|
|
103
|
+
if (!selected)
|
|
89
104
|
return undefined;
|
|
90
|
-
const
|
|
105
|
+
const selectedId = asInteger(selected.id);
|
|
106
|
+
if (!selectedId)
|
|
107
|
+
return undefined;
|
|
108
|
+
const changed = this.database.run(`UPDATE accounts
|
|
109
|
+
SET lease_id=?, lease_expires_at=?, last_used=?,
|
|
110
|
+
daily_requests=CASE WHEN last_reset_date IS NULL OR last_reset_date<>? THEN 0 ELSE daily_requests END,
|
|
111
|
+
daily_tweets=CASE WHEN last_reset_date IS NULL OR last_reset_date<>? THEN 0 ELSE daily_tweets END,
|
|
112
|
+
last_reset_date=?,
|
|
113
|
+
status=CASE WHEN status=2 AND available_until<=? THEN 1 ELSE status END,
|
|
114
|
+
available_until=CASE WHEN status=2 AND available_until<=? THEN 0 ELSE available_until END,
|
|
115
|
+
cooldown_reason=CASE WHEN status=2 AND available_until<=? THEN NULL ELSE cooldown_reason END
|
|
116
|
+
WHERE id=? AND (lease_id IS NULL OR lease_expires_at IS NULL OR lease_expires_at<=?)`, request.leaseId, request.leaseExpiresAt, request.now, request.utcDate, request.utcDate, request.utcDate, request.now, request.now, request.now, selectedId, request.now).changes;
|
|
91
117
|
if (changed !== 1)
|
|
92
118
|
return undefined;
|
|
93
|
-
const current = this.findByUsername(selected.username);
|
|
119
|
+
const current = this.findByUsername(String(selected.username));
|
|
94
120
|
return current
|
|
95
121
|
? { ...current, leaseId: request.leaseId, leaseExpiresAt: request.leaseExpiresAt }
|
|
96
122
|
: undefined;
|
|
@@ -104,24 +130,34 @@ export class AccountRepository {
|
|
|
104
130
|
.changes === 1);
|
|
105
131
|
}
|
|
106
132
|
recordUsage(leaseId, pages = 1, tweets = 0) {
|
|
107
|
-
|
|
108
|
-
return (this.database.run(
|
|
133
|
+
const today = utcDate();
|
|
134
|
+
return (this.database.run(`UPDATE accounts SET
|
|
135
|
+
daily_requests=CASE WHEN last_reset_date IS NULL OR last_reset_date<>? THEN 0 ELSE daily_requests END+?,
|
|
136
|
+
daily_tweets=CASE WHEN last_reset_date IS NULL OR last_reset_date<>? THEN 0 ELSE daily_tweets END+?,
|
|
137
|
+
total_tweets=total_tweets+?, last_used=?, last_reset_date=?
|
|
138
|
+
WHERE lease_id=?`, today, pages, today, tweets, tweets, Date.now(), today, leaseId).changes === 1);
|
|
109
139
|
}
|
|
110
140
|
release(leaseId, options = {}) {
|
|
111
|
-
const status = options.status ===
|
|
112
|
-
|
|
141
|
+
const status = options.status === ACCOUNT_HEALTH.UNUSABLE
|
|
142
|
+
? ACCOUNT_STATUS_CODE.UNUSABLE
|
|
143
|
+
: options.status === ACCOUNT_HEALTH.COOLING_DOWN
|
|
144
|
+
? ACCOUNT_STATUS_CODE.COOLING_DOWN
|
|
145
|
+
: ACCOUNT_STATUS_CODE.HEALTHY;
|
|
146
|
+
const availableUntil = options.availableUntil ?? (status === ACCOUNT_STATUS_CODE.HEALTHY ? 0 : Date.now());
|
|
113
147
|
return (this.database.run("UPDATE accounts SET lease_id=NULL, lease_expires_at=NULL, status=?, available_until=?, last_error_code=?, cooldown_reason=? WHERE lease_id=?", status, availableUntil, options.lastErrorCode ?? null, options.cooldownReason ?? null, leaseId).changes === 1);
|
|
114
148
|
}
|
|
115
149
|
completeLease(completion) {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
150
|
+
const status = completion.status === ACCOUNT_HEALTH.UNUSABLE
|
|
151
|
+
? ACCOUNT_STATUS_CODE.UNUSABLE
|
|
152
|
+
: completion.status === ACCOUNT_HEALTH.COOLING_DOWN
|
|
153
|
+
? ACCOUNT_STATUS_CODE.COOLING_DOWN
|
|
154
|
+
: ACCOUNT_STATUS_CODE.HEALTHY;
|
|
155
|
+
return (this.database.run(`UPDATE accounts
|
|
156
|
+
SET lease_id=NULL, lease_expires_at=NULL, status=?, available_until=?,
|
|
157
|
+
daily_requests=CASE WHEN last_reset_date IS NULL OR last_reset_date<>? THEN 0 ELSE daily_requests END+?,
|
|
158
|
+
daily_tweets=CASE WHEN last_reset_date IS NULL OR last_reset_date<>? THEN 0 ELSE daily_tweets END+?,
|
|
159
|
+
total_tweets=total_tweets+?, last_used=?, last_error_code=?, cooldown_reason=?, last_reset_date=?
|
|
160
|
+
WHERE lease_id=?`, status, completion.availableUntil, completion.utcDate, Math.max(0, completion.pages), completion.utcDate, Math.max(0, completion.tweets), Math.max(0, completion.tweets), completion.now, completion.lastErrorCode ?? null, completion.cooldownReason ?? null, completion.utcDate, completion.leaseId).changes === 1);
|
|
125
161
|
}
|
|
126
162
|
markUnusable(username, code, reason) {
|
|
127
163
|
return (this.database.run("UPDATE accounts SET status=0, last_error_code=?, cooldown_reason=?, lease_id=NULL, lease_expires_at=NULL WHERE username=?", code, reason, username).changes === 1);
|
|
@@ -181,19 +217,13 @@ export class AccountRepository {
|
|
|
181
217
|
}
|
|
182
218
|
insert(account) {
|
|
183
219
|
this.database.run(`INSERT INTO accounts (username,password,email,email_password,two_factor_secret,auth_token,csrf_token,cookies_json,bearer_token,proxy_json,status,available_until,daily_requests,daily_tweets,total_tweets,last_reset_date,last_used,last_error_code,cooldown_reason)
|
|
184
|
-
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`, account.username, account.password ?? null, account.email ?? null, account.emailPassword ?? null, account.twoFactorSecret ?? null, account.authToken ?? null, account.csrfToken ?? null, JSON.stringify(account.cookies), account.bearerToken ?? null, account.proxy ? JSON.stringify(account.proxy) : null, account.status ??
|
|
220
|
+
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`, account.username, account.password ?? null, account.email ?? null, account.emailPassword ?? null, account.twoFactorSecret ?? null, account.authToken ?? null, account.csrfToken ?? null, JSON.stringify(account.cookies), account.bearerToken ?? null, account.proxy ? JSON.stringify(account.proxy) : null, account.status ?? ACCOUNT_STATUS_CODE.HEALTHY, account.availableUntil ?? 0, account.dailyRequests ?? 0, account.dailyTweets ?? 0, account.totalTweets ?? 0, account.lastResetDate ?? utcDate(), account.lastUsed ?? 0, account.lastErrorCode ?? null, account.cooldownReason ?? null);
|
|
185
221
|
return this.findByUsername(account.username);
|
|
186
222
|
}
|
|
187
|
-
resetExpiredCooldowns(now) {
|
|
188
|
-
this.database.run("UPDATE accounts SET status=1, available_until=0, cooldown_reason=NULL WHERE status=2 AND available_until<=?", now);
|
|
189
|
-
}
|
|
190
|
-
resetDailyCounters(today = utcDate()) {
|
|
191
|
-
this.database.run("UPDATE accounts SET daily_requests=0, daily_tweets=0, last_reset_date=? WHERE last_reset_date IS NULL OR last_reset_date<>?", today, today);
|
|
192
|
-
}
|
|
193
223
|
isEligible(row, now, ignoreLease, requireAuthMaterial = false, dailyRequestsLimit = this.dailyRequestsLimit, dailyTweetsLimit = this.dailyTweetsLimit) {
|
|
194
|
-
if (row.status ===
|
|
224
|
+
if (row.status === ACCOUNT_STATUS_CODE.UNUSABLE)
|
|
195
225
|
return false;
|
|
196
|
-
if (row.status ===
|
|
226
|
+
if (row.status === ACCOUNT_STATUS_CODE.COOLING_DOWN && (row.availableUntil ?? 0) > now)
|
|
197
227
|
return false;
|
|
198
228
|
if (!ignoreLease && row.leaseExpiresAt !== undefined && row.leaseExpiresAt > now)
|
|
199
229
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-repository.js","sourceRoot":"","sources":["../../src/storage/account-repository.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"account-repository.js","sourceRoot":"","sources":["../../src/storage/account-repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { type SQLInputValue, type StatementSync } from "node:sqlite";
|
|
2
|
-
|
|
2
|
+
import type { SqlRow } from "./types.js";
|
|
3
|
+
export type { SqlRow } from "./types.js";
|
|
3
4
|
export declare class StateDatabase {
|
|
4
5
|
readonly path: string;
|
|
5
6
|
private readonly database;
|
|
7
|
+
private readonly statements;
|
|
6
8
|
constructor(path: string);
|
|
7
9
|
exec(sql: string): void;
|
|
8
10
|
prepare(sql: string): StatementSync;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/storage/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/storage/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,qBAAa,aAAa;IACxB,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;gBAE5C,IAAI,EAAE,MAAM;IAMxB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa;IAQnC,GAAG,CACR,GAAG,EAAE,MAAM,EACX,GAAG,MAAM,EAAE,aAAa,EAAE,GACzB;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;IAKnE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,GAAG,SAAS;IAIhE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,EAAE;IAItD,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC;IAYpC,KAAK,IAAI,IAAI;CAGrB"}
|
package/dist/storage/database.js
CHANGED
|
@@ -2,6 +2,7 @@ import { DatabaseSync } from "node:sqlite";
|
|
|
2
2
|
export class StateDatabase {
|
|
3
3
|
path;
|
|
4
4
|
database;
|
|
5
|
+
statements = new Map();
|
|
5
6
|
constructor(path) {
|
|
6
7
|
this.path = path;
|
|
7
8
|
this.database = new DatabaseSync(path);
|
|
@@ -11,17 +12,22 @@ export class StateDatabase {
|
|
|
11
12
|
this.database.exec(sql);
|
|
12
13
|
}
|
|
13
14
|
prepare(sql) {
|
|
14
|
-
|
|
15
|
+
const cached = this.statements.get(sql);
|
|
16
|
+
if (cached)
|
|
17
|
+
return cached;
|
|
18
|
+
const statement = this.database.prepare(sql);
|
|
19
|
+
this.statements.set(sql, statement);
|
|
20
|
+
return statement;
|
|
15
21
|
}
|
|
16
22
|
run(sql, ...params) {
|
|
17
|
-
const result = this.
|
|
23
|
+
const result = this.prepare(sql).run(...params);
|
|
18
24
|
return { changes: Number(result.changes), lastInsertRowid: result.lastInsertRowid };
|
|
19
25
|
}
|
|
20
26
|
get(sql, ...params) {
|
|
21
|
-
return this.
|
|
27
|
+
return this.prepare(sql).get(...params);
|
|
22
28
|
}
|
|
23
29
|
all(sql, ...params) {
|
|
24
|
-
return this.
|
|
30
|
+
return this.prepare(sql).all(...params);
|
|
25
31
|
}
|
|
26
32
|
transaction(callback) {
|
|
27
33
|
this.database.exec("BEGIN IMMEDIATE;");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/storage/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA0C,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/storage/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA0C,MAAM,aAAa,CAAC;AAKnF,MAAM,OAAO,aAAa;IACR,IAAI,CAAS;IACZ,QAAQ,CAAe;IACvB,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE/D,YAAmB,IAAY;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IAC9E,CAAC;IAEM,IAAI,CAAC,GAAW;QACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAEM,OAAO,CAAC,GAAW;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,GAAG,CACR,GAAW,EACX,GAAG,MAAuB;QAE1B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QAChD,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC;IACtF,CAAC;IAEM,GAAG,CAAC,GAAW,EAAE,GAAG,MAAuB;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAuB,CAAC;IAChE,CAAC;IAEM,GAAG,CAAC,GAAW,EAAE,GAAG,MAAuB;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAa,CAAC;IACtD,CAAC;IAEM,WAAW,CAAI,QAAiB;QACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF"}
|
package/dist/storage/index.d.ts
CHANGED
|
@@ -2,14 +2,16 @@ import { StateDatabase } from "./database.js";
|
|
|
2
2
|
import { AccountRepository } from "./account-repository.js";
|
|
3
3
|
import { CheckpointRepository } from "./checkpoint-repository.js";
|
|
4
4
|
import { ManifestRepository } from "./manifest-repository.js";
|
|
5
|
+
import { ProgressRepository } from "./progress-repository.js";
|
|
5
6
|
import { RunRepository } from "./run-repository.js";
|
|
6
|
-
import type { AccountRepositoryOptions } from "./
|
|
7
|
+
import type { AccountRepositoryOptions } from "./types.js";
|
|
7
8
|
export interface StorageBundle {
|
|
8
9
|
readonly database: StateDatabase;
|
|
9
10
|
readonly accounts: AccountRepository;
|
|
10
11
|
readonly checkpoints: CheckpointRepository;
|
|
11
12
|
readonly manifests: ManifestRepository;
|
|
12
13
|
readonly runs: RunRepository;
|
|
14
|
+
readonly progress: ProgressRepository;
|
|
13
15
|
}
|
|
14
16
|
export declare function openStorage(path: string, options?: AccountRepositoryOptions): StorageBundle;
|
|
15
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;CACvC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,wBAA6B,GAAG,aAAa,CAW/F"}
|
package/dist/storage/index.js
CHANGED
|
@@ -3,6 +3,7 @@ import { StateDatabase } from "./database.js";
|
|
|
3
3
|
import { AccountRepository } from "./account-repository.js";
|
|
4
4
|
import { CheckpointRepository } from "./checkpoint-repository.js";
|
|
5
5
|
import { ManifestRepository } from "./manifest-repository.js";
|
|
6
|
+
import { ProgressRepository } from "./progress-repository.js";
|
|
6
7
|
import { RunRepository } from "./run-repository.js";
|
|
7
8
|
export function openStorage(path, options = {}) {
|
|
8
9
|
const database = new StateDatabase(path);
|
|
@@ -13,6 +14,7 @@ export function openStorage(path, options = {}) {
|
|
|
13
14
|
checkpoints: new CheckpointRepository(database),
|
|
14
15
|
manifests: new ManifestRepository(database),
|
|
15
16
|
runs: new RunRepository(database),
|
|
17
|
+
progress: new ProgressRepository(database),
|
|
16
18
|
};
|
|
17
19
|
}
|
|
18
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAYpD,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,UAAoC,EAAE;IAC9E,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;IACzC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC3B,OAAO;QACL,QAAQ;QACR,QAAQ,EAAE,IAAI,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC;QAClD,WAAW,EAAE,IAAI,oBAAoB,CAAC,QAAQ,CAAC;QAC/C,SAAS,EAAE,IAAI,kBAAkB,CAAC,QAAQ,CAAC;QAC3C,IAAI,EAAE,IAAI,aAAa,CAAC,QAAQ,CAAC;QACjC,QAAQ,EAAE,IAAI,kBAAkB,CAAC,QAAQ,CAAC;KAC3C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AcceptedRecord, PageCommit, TaskProgress } from "../domain/collection.js";
|
|
2
|
+
import type { StateDatabase } from "./database.js";
|
|
3
|
+
export type { AcceptedRecord, PageCommit, ProgressState, TaskProgress } from "../domain/collection.js";
|
|
4
|
+
export declare class ProgressRepository {
|
|
5
|
+
private readonly database;
|
|
6
|
+
constructor(database: StateDatabase);
|
|
7
|
+
commitPage(commit: PageCommit): void;
|
|
8
|
+
task(collectionId: string, taskId: string): TaskProgress | undefined;
|
|
9
|
+
accepted(collectionId: string): readonly AcceptedRecord[];
|
|
10
|
+
hasRecord(collectionId: string, recordId: string): boolean;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=progress-repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress-repository.d.ts","sourceRoot":"","sources":["../../src/storage/progress-repository.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAiB,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvG,qBAAa,kBAAkB;IACV,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,aAAa;IAEpD,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAyCpC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAiBpE,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,cAAc,EAAE;IAazD,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;CASlE"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { PROGRESS_STATE } from "../constants/collection.js";
|
|
2
|
+
import { COLLECTION_SCHEMA_VERSION } from "../query/collection-id.js";
|
|
3
|
+
export class ProgressRepository {
|
|
4
|
+
database;
|
|
5
|
+
constructor(database) {
|
|
6
|
+
this.database = database;
|
|
7
|
+
}
|
|
8
|
+
commitPage(commit) {
|
|
9
|
+
this.database.transaction(() => {
|
|
10
|
+
const now = new Date().toISOString();
|
|
11
|
+
for (const record of commit.records) {
|
|
12
|
+
this.database.run(`INSERT OR IGNORE INTO accepted_records(collection_id,record_id,task_id,payload_json,created_at)
|
|
13
|
+
VALUES(?,?,?,?,?)`, commit.collectionId, record.id, commit.taskId, JSON.stringify(record.payload), now);
|
|
14
|
+
}
|
|
15
|
+
const existing = this.task(commit.collectionId, commit.taskId);
|
|
16
|
+
const acceptedIds = [
|
|
17
|
+
...new Set([...(existing?.acceptedIds ?? []), ...commit.records.map((record) => record.id)]),
|
|
18
|
+
];
|
|
19
|
+
const storedCursor = commit.state === PROGRESS_STATE.CAPPED ? commit.inputCursor : commit.nextCursor;
|
|
20
|
+
this.database.run(`INSERT INTO collection_progress(
|
|
21
|
+
collection_id,task_id,schema_version,state,cursor,input_cursor,accepted_json,updated_at
|
|
22
|
+
) VALUES(?,?,?,?,?,?,?,?)
|
|
23
|
+
ON CONFLICT(collection_id,task_id) DO UPDATE SET
|
|
24
|
+
state=excluded.state,
|
|
25
|
+
cursor=excluded.cursor,
|
|
26
|
+
input_cursor=excluded.input_cursor,
|
|
27
|
+
accepted_json=excluded.accepted_json,
|
|
28
|
+
updated_at=excluded.updated_at`, commit.collectionId, commit.taskId, COLLECTION_SCHEMA_VERSION, commit.state, storedCursor ?? null, commit.inputCursor ?? null, JSON.stringify(acceptedIds), now);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
task(collectionId, taskId) {
|
|
32
|
+
const row = this.database.get("SELECT * FROM collection_progress WHERE collection_id=? AND task_id=?", collectionId, taskId);
|
|
33
|
+
if (!row)
|
|
34
|
+
return undefined;
|
|
35
|
+
return {
|
|
36
|
+
collectionId,
|
|
37
|
+
taskId,
|
|
38
|
+
state: String(row.state),
|
|
39
|
+
...(typeof row.cursor === "string" && row.cursor ? { cursor: row.cursor } : {}),
|
|
40
|
+
...(typeof row.input_cursor === "string" && row.input_cursor ? { inputCursor: row.input_cursor } : {}),
|
|
41
|
+
acceptedIds: parseStringArray(row.accepted_json),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
accepted(collectionId) {
|
|
45
|
+
return this.database
|
|
46
|
+
.all("SELECT record_id,task_id,payload_json FROM accepted_records WHERE collection_id=? ORDER BY created_at, record_id", collectionId)
|
|
47
|
+
.map((row) => ({
|
|
48
|
+
id: String(row.record_id),
|
|
49
|
+
taskId: String(row.task_id),
|
|
50
|
+
payload: parseJson(row.payload_json),
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
hasRecord(collectionId, recordId) {
|
|
54
|
+
return Boolean(this.database.get("SELECT 1 FROM accepted_records WHERE collection_id=? AND record_id=?", collectionId, recordId));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function parseStringArray(value) {
|
|
58
|
+
try {
|
|
59
|
+
const parsed = JSON.parse(String(value));
|
|
60
|
+
if (!Array.isArray(parsed))
|
|
61
|
+
return [];
|
|
62
|
+
return parsed.filter((item) => typeof item === "string");
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return [];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function parseJson(value) {
|
|
69
|
+
try {
|
|
70
|
+
return JSON.parse(String(value));
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return value;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=progress-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress-repository.js","sourceRoot":"","sources":["../../src/storage/progress-repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,12 @@
|
|
|
1
|
+
import { RUN_STATUS } from "../constants/runs.js";
|
|
2
|
+
import type { RunRecord, RunStatus } from "../domain/runs.js";
|
|
1
3
|
import type { StateDatabase } from "./database.js";
|
|
2
|
-
export
|
|
3
|
-
readonly id: string;
|
|
4
|
-
readonly operation: string;
|
|
5
|
-
readonly queryHash?: string;
|
|
6
|
-
readonly startedAt: string;
|
|
7
|
-
readonly finishedAt?: string;
|
|
8
|
-
readonly status: "running" | "complete" | "failed";
|
|
9
|
-
readonly error?: unknown;
|
|
10
|
-
}
|
|
4
|
+
export type { RunRecord, RunStatus } from "../domain/runs.js";
|
|
11
5
|
export declare class RunRepository {
|
|
12
6
|
private readonly database;
|
|
13
7
|
constructor(database: StateDatabase);
|
|
14
8
|
create(operation: string, queryHash?: string): RunRecord;
|
|
15
|
-
finalize(id: string, status:
|
|
9
|
+
finalize(id: string, status: Exclude<RunStatus, typeof RUN_STATUS.RUNNING>, error?: unknown): boolean;
|
|
16
10
|
list(limit?: number): RunRecord[];
|
|
17
11
|
last(): RunRecord | undefined;
|
|
18
12
|
summary(limit?: number): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-repository.d.ts","sourceRoot":"","sources":["../../src/storage/run-repository.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"run-repository.d.ts","sourceRoot":"","sources":["../../src/storage/run-repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9D,qBAAa,aAAa;IACL,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,aAAa;IAEpD,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS;IAmBxD,QAAQ,CACb,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,UAAU,CAAC,OAAO,CAAC,EACrD,KAAK,CAAC,EAAE,OAAO,GACd,OAAO;IAYH,IAAI,CAAC,KAAK,SAAK,GAAG,SAAS,EAAE;IAY7B,IAAI,IAAI,SAAS,GAAG,SAAS;IAI7B,OAAO,CAAC,KAAK,SAAM,GAAG;QAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;KAC9B;CAMF"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { RUN_STATUS } from "../constants/runs.js";
|
|
3
|
+
import { redactUnknown } from "../utils/redact.js";
|
|
2
4
|
export class RunRepository {
|
|
3
5
|
database;
|
|
4
6
|
constructor(database) {
|
|
@@ -10,13 +12,13 @@ export class RunRepository {
|
|
|
10
12
|
operation,
|
|
11
13
|
...(queryHash ? { queryHash } : {}),
|
|
12
14
|
startedAt: new Date().toISOString(),
|
|
13
|
-
status:
|
|
15
|
+
status: RUN_STATUS.RUNNING,
|
|
14
16
|
};
|
|
15
17
|
this.database.run("INSERT INTO runs(id,operation,query_hash,started_at,status) VALUES(?,?,?,?,?)", record.id, record.operation, record.queryHash ?? null, record.startedAt, record.status);
|
|
16
18
|
return record;
|
|
17
19
|
}
|
|
18
20
|
finalize(id, status, error) {
|
|
19
|
-
return (this.database.run("UPDATE runs SET finished_at=?, status=?, error_json=? WHERE id=?", new Date().toISOString(), status, error ? JSON.stringify(error) : null, id).changes === 1);
|
|
21
|
+
return (this.database.run("UPDATE runs SET finished_at=?, status=?, error_json=? WHERE id=?", new Date().toISOString(), status, error ? JSON.stringify(redactUnknown(error)) : null, id).changes === 1);
|
|
20
22
|
}
|
|
21
23
|
list(limit = 50) {
|
|
22
24
|
return this.database.all("SELECT * FROM runs ORDER BY started_at DESC LIMIT ?", limit).map((row) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-repository.js","sourceRoot":"","sources":["../../src/storage/run-repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"run-repository.js","sourceRoot":"","sources":["../../src/storage/run-repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/storage/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/storage/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAsE9D"}
|
package/dist/storage/schema.js
CHANGED
|
@@ -48,6 +48,25 @@ export function initializeSchema(database) {
|
|
|
48
48
|
fetched_at REAL NOT NULL,
|
|
49
49
|
expires_at REAL NOT NULL
|
|
50
50
|
);
|
|
51
|
+
CREATE TABLE IF NOT EXISTS collection_progress (
|
|
52
|
+
collection_id TEXT NOT NULL,
|
|
53
|
+
task_id TEXT NOT NULL,
|
|
54
|
+
schema_version INTEGER NOT NULL,
|
|
55
|
+
state TEXT NOT NULL,
|
|
56
|
+
cursor TEXT,
|
|
57
|
+
input_cursor TEXT,
|
|
58
|
+
accepted_json TEXT NOT NULL DEFAULT '[]',
|
|
59
|
+
updated_at TEXT NOT NULL,
|
|
60
|
+
PRIMARY KEY (collection_id, task_id)
|
|
61
|
+
);
|
|
62
|
+
CREATE TABLE IF NOT EXISTS accepted_records (
|
|
63
|
+
collection_id TEXT NOT NULL,
|
|
64
|
+
record_id TEXT NOT NULL,
|
|
65
|
+
task_id TEXT NOT NULL,
|
|
66
|
+
payload_json TEXT NOT NULL,
|
|
67
|
+
created_at TEXT NOT NULL,
|
|
68
|
+
PRIMARY KEY (collection_id, record_id)
|
|
69
|
+
);
|
|
51
70
|
`);
|
|
52
71
|
}
|
|
53
72
|
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/storage/schema.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAAC,QAAuB;IACtD,QAAQ,CAAC,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/storage/schema.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAAC,QAAuB;IACtD,QAAQ,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEb,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { AccountStatus } from "../domain/accounts.js";
|
|
2
|
+
export type SqlRow = Record<string, unknown>;
|
|
3
|
+
export interface ReleaseOptions {
|
|
4
|
+
readonly status?: AccountStatus;
|
|
5
|
+
readonly availableUntil?: number;
|
|
6
|
+
readonly lastErrorCode?: number;
|
|
7
|
+
readonly cooldownReason?: string;
|
|
8
|
+
readonly dailyRequests?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface AccountRepositoryOptions {
|
|
11
|
+
readonly dailyRequestsLimit?: number;
|
|
12
|
+
readonly dailyTweetsLimit?: number;
|
|
13
|
+
readonly leaseTtlMs?: number;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=types.d.ts.map
|