@zlooks.cn/baidu-submit-server 1.0.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.
Files changed (97) hide show
  1. package/dist/command/index.d.ts +3 -0
  2. package/dist/command/index.d.ts.map +1 -0
  3. package/dist/command/index.js +14 -0
  4. package/dist/command/index.js.map +1 -0
  5. package/dist/config/config-command.d.ts +20 -0
  6. package/dist/config/config-command.d.ts.map +1 -0
  7. package/dist/config/config-command.js +57 -0
  8. package/dist/config/config-command.js.map +1 -0
  9. package/dist/contracts.d.ts +502 -0
  10. package/dist/contracts.d.ts.map +1 -0
  11. package/dist/contracts.js +142 -0
  12. package/dist/contracts.js.map +1 -0
  13. package/dist/events/blog-subscriptions.d.ts +7 -0
  14. package/dist/events/blog-subscriptions.d.ts.map +1 -0
  15. package/dist/events/blog-subscriptions.js +49 -0
  16. package/dist/events/blog-subscriptions.js.map +1 -0
  17. package/dist/mcp/provider.d.ts +5 -0
  18. package/dist/mcp/provider.d.ts.map +1 -0
  19. package/dist/mcp/provider.js +162 -0
  20. package/dist/mcp/provider.js.map +1 -0
  21. package/dist/messages/status/read.msg.d.ts +47 -0
  22. package/dist/messages/status/read.msg.d.ts.map +1 -0
  23. package/dist/messages/status/read.msg.js +6 -0
  24. package/dist/messages/status/read.msg.js.map +1 -0
  25. package/dist/messages/submissions/read.msg.d.ts +42 -0
  26. package/dist/messages/submissions/read.msg.d.ts.map +1 -0
  27. package/dist/messages/submissions/read.msg.js +6 -0
  28. package/dist/messages/submissions/read.msg.js.map +1 -0
  29. package/dist/messages/submissions/retry.msg.d.ts +74 -0
  30. package/dist/messages/submissions/retry.msg.d.ts.map +1 -0
  31. package/dist/messages/submissions/retry.msg.js +6 -0
  32. package/dist/messages/submissions/retry.msg.js.map +1 -0
  33. package/dist/messages/submissions/search.msg.d.ts +52 -0
  34. package/dist/messages/submissions/search.msg.d.ts.map +1 -0
  35. package/dist/messages/submissions/search.msg.js +6 -0
  36. package/dist/messages/submissions/search.msg.js.map +1 -0
  37. package/dist/models/read-status.model.d.ts +33 -0
  38. package/dist/models/read-status.model.d.ts.map +1 -0
  39. package/dist/models/read-status.model.js +11 -0
  40. package/dist/models/read-status.model.js.map +1 -0
  41. package/dist/models/read-submission.model.d.ts +6 -0
  42. package/dist/models/read-submission.model.d.ts.map +1 -0
  43. package/dist/models/read-submission.model.js +13 -0
  44. package/dist/models/read-submission.model.js.map +1 -0
  45. package/dist/models/retry-submission.model.d.ts +7 -0
  46. package/dist/models/retry-submission.model.d.ts.map +1 -0
  47. package/dist/models/retry-submission.model.js +17 -0
  48. package/dist/models/retry-submission.model.js.map +1 -0
  49. package/dist/models/search-submissions.model.d.ts +31 -0
  50. package/dist/models/search-submissions.model.d.ts.map +1 -0
  51. package/dist/models/search-submissions.model.js +13 -0
  52. package/dist/models/search-submissions.model.js.map +1 -0
  53. package/dist/persistence/entities.d.ts +32 -0
  54. package/dist/persistence/entities.d.ts.map +1 -0
  55. package/dist/persistence/entities.js +49 -0
  56. package/dist/persistence/entities.js.map +1 -0
  57. package/dist/persistence/submission-store.d.ts +41 -0
  58. package/dist/persistence/submission-store.d.ts.map +1 -0
  59. package/dist/persistence/submission-store.js +266 -0
  60. package/dist/persistence/submission-store.js.map +1 -0
  61. package/dist/services/application.service.d.ts +8 -0
  62. package/dist/services/application.service.d.ts.map +1 -0
  63. package/dist/services/application.service.js +28 -0
  64. package/dist/services/application.service.js.map +1 -0
  65. package/dist/services/baidu-submit.boot.d.ts +3 -0
  66. package/dist/services/baidu-submit.boot.d.ts.map +1 -0
  67. package/dist/services/baidu-submit.boot.js +11 -0
  68. package/dist/services/baidu-submit.boot.js.map +1 -0
  69. package/dist/services/config.service.d.ts +20 -0
  70. package/dist/services/config.service.d.ts.map +1 -0
  71. package/dist/services/config.service.js +44 -0
  72. package/dist/services/config.service.js.map +1 -0
  73. package/dist/services/database.service.d.ts +3 -0
  74. package/dist/services/database.service.d.ts.map +1 -0
  75. package/dist/services/database.service.js +23 -0
  76. package/dist/services/database.service.js.map +1 -0
  77. package/dist/services/logger.service.d.ts +4 -0
  78. package/dist/services/logger.service.d.ts.map +1 -0
  79. package/dist/services/logger.service.js +8 -0
  80. package/dist/services/logger.service.js.map +1 -0
  81. package/dist/services/mcp-provider.service.d.ts +3 -0
  82. package/dist/services/mcp-provider.service.d.ts.map +1 -0
  83. package/dist/services/mcp-provider.service.js +23 -0
  84. package/dist/services/mcp-provider.service.js.map +1 -0
  85. package/dist/services/submission-runtime.service.d.ts +8 -0
  86. package/dist/services/submission-runtime.service.d.ts.map +1 -0
  87. package/dist/services/submission-runtime.service.js +33 -0
  88. package/dist/services/submission-runtime.service.js.map +1 -0
  89. package/dist/submission/baidu-submit-client.d.ts +29 -0
  90. package/dist/submission/baidu-submit-client.d.ts.map +1 -0
  91. package/dist/submission/baidu-submit-client.js +132 -0
  92. package/dist/submission/baidu-submit-client.js.map +1 -0
  93. package/dist/submission/submission-worker.d.ts +17 -0
  94. package/dist/submission/submission-worker.d.ts.map +1 -0
  95. package/dist/submission/submission-worker.js +75 -0
  96. package/dist/submission/submission-worker.js.map +1 -0
  97. package/package.json +61 -0
@@ -0,0 +1,132 @@
1
+ import { z } from 'zod';
2
+ import { submissionProviderMetricSchema } from '../contracts.js';
3
+ const BAIDU_SUBMIT_ENDPOINT = 'http://data.zz.baidu.com/urls';
4
+ const RESPONSE_LIMIT = 32_768;
5
+ const REQUEST_TIMEOUT_MS = 5_000;
6
+ const providerResponseSchema = z.object({
7
+ remain: submissionProviderMetricSchema,
8
+ success: submissionProviderMetricSchema,
9
+ not_same_site: z.array(z.string()).max(10_000).optional(),
10
+ not_valid: z.array(z.string()).max(10_000).optional(),
11
+ }).refine(({ success, not_same_site: wrongSite, not_valid: invalid }) => (success + (wrongSite?.length ?? 0) + (invalid?.length ?? 0) <= 1), 'One-URL submission returned impossible counts').readonly();
12
+ export class BaiduSubmitClient {
13
+ fetch;
14
+ constructor(fetch = globalThis.fetch) {
15
+ this.fetch = fetch;
16
+ }
17
+ async submit(input) {
18
+ input.signal.throwIfAborted();
19
+ const timeout = AbortSignal.timeout(REQUEST_TIMEOUT_MS);
20
+ const signal = AbortSignal.any([input.signal, timeout]);
21
+ try {
22
+ const endpoint = new URL(BAIDU_SUBMIT_ENDPOINT);
23
+ endpoint.searchParams.set('site', input.site);
24
+ endpoint.searchParams.set('token', input.token);
25
+ const response = await this.fetch(endpoint, {
26
+ method: 'POST',
27
+ headers: { 'content-type': 'text/plain; charset=utf-8' },
28
+ body: input.url,
29
+ redirect: 'error',
30
+ signal,
31
+ });
32
+ if (!response.ok) {
33
+ if (response.status >= 400 && response.status < 500) {
34
+ return {
35
+ outcome: 'rejected',
36
+ acceptedCount: 0,
37
+ remaining: null,
38
+ code: 'HTTP_REJECTED',
39
+ message: `Baidu rejected the request with HTTP ${response.status}`,
40
+ };
41
+ }
42
+ return {
43
+ outcome: 'unknown',
44
+ code: 'HTTP_ERROR',
45
+ message: `Baidu returned HTTP ${response.status}`,
46
+ };
47
+ }
48
+ const text = await readBoundedText(response);
49
+ if (text === null)
50
+ return invalidResponse();
51
+ let json;
52
+ try {
53
+ json = JSON.parse(text);
54
+ }
55
+ catch {
56
+ return invalidResponse();
57
+ }
58
+ const parsed = providerResponseSchema.safeParse(json);
59
+ if (!parsed.success)
60
+ return invalidResponse();
61
+ const wrongSite = parsed.data.not_same_site?.length ?? 0;
62
+ const invalid = parsed.data.not_valid?.length ?? 0;
63
+ if (wrongSite + invalid > 0) {
64
+ return {
65
+ outcome: 'rejected',
66
+ acceptedCount: parsed.data.success,
67
+ remaining: parsed.data.remain,
68
+ code: 'WRONG_SITE_OR_INVALID',
69
+ message: `${wrongSite} wrong-site URL(s), ${invalid} invalid URL(s)`,
70
+ };
71
+ }
72
+ if (parsed.data.success === 0) {
73
+ return {
74
+ outcome: 'rejected',
75
+ acceptedCount: 0,
76
+ remaining: parsed.data.remain,
77
+ code: 'NO_URL_ACCEPTED',
78
+ message: 'Baidu accepted no URL',
79
+ };
80
+ }
81
+ return {
82
+ outcome: 'accepted',
83
+ acceptedCount: parsed.data.success,
84
+ remaining: parsed.data.remain,
85
+ message: null,
86
+ };
87
+ }
88
+ catch {
89
+ input.signal.throwIfAborted();
90
+ return {
91
+ outcome: 'unknown',
92
+ code: 'TRANSPORT_ERROR',
93
+ message: 'Baidu submission result is unknown',
94
+ };
95
+ }
96
+ }
97
+ }
98
+ function invalidResponse() {
99
+ return {
100
+ outcome: 'unknown',
101
+ code: 'INVALID_RESPONSE',
102
+ message: 'Baidu returned an invalid response',
103
+ };
104
+ }
105
+ async function readBoundedText(response) {
106
+ const declaredLength = Number(response.headers.get('content-length'));
107
+ if (Number.isFinite(declaredLength) && declaredLength > RESPONSE_LIMIT)
108
+ return null;
109
+ if (!response.body)
110
+ return '';
111
+ const reader = response.body.getReader();
112
+ const decoder = new TextDecoder();
113
+ let bytes = 0;
114
+ let text = '';
115
+ try {
116
+ while (true) {
117
+ const chunk = await reader.read();
118
+ if (chunk.done)
119
+ return text + decoder.decode();
120
+ bytes += chunk.value.byteLength;
121
+ if (bytes > RESPONSE_LIMIT) {
122
+ await reader.cancel().catch(() => undefined);
123
+ return null;
124
+ }
125
+ text += decoder.decode(chunk.value, { stream: true });
126
+ }
127
+ }
128
+ finally {
129
+ reader.releaseLock();
130
+ }
131
+ }
132
+ //# sourceMappingURL=baidu-submit-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baidu-submit-client.js","sourceRoot":"","sources":["../../src/submission/baidu-submit-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Logger } from '@hile/logger';
2
+ import type { BaiduSubmitConfig } from '../contracts.js';
3
+ import type { SubmissionStore } from '../persistence/submission-store.js';
4
+ import type { BaiduSubmitClient } from './baidu-submit-client.js';
5
+ export declare class SubmissionWorker {
6
+ #private;
7
+ private readonly store;
8
+ private readonly client;
9
+ private readonly config;
10
+ private readonly workerId;
11
+ private readonly logger;
12
+ constructor(store: SubmissionStore, client: BaiduSubmitClient, config: () => BaiduSubmitConfig, workerId: string, logger: Logger);
13
+ start(): void;
14
+ close(): Promise<void>;
15
+ private run;
16
+ }
17
+ //# sourceMappingURL=submission-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submission-worker.d.ts","sourceRoot":"","sources":["../../src/submission/submission-worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAKlE,qBAAa,gBAAgB;;IAKzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,YACmB,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,MAAM,iBAAiB,EAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAC7B;IAEG,KAAK,IAAI,IAAI,CAEnB;IAEY,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAGlC;YAEa,GAAG;CA8DlB"}
@@ -0,0 +1,75 @@
1
+ const IDLE_DELAY_MS = 500;
2
+ const LEASE_MS = 30_000;
3
+ export class SubmissionWorker {
4
+ store;
5
+ client;
6
+ config;
7
+ workerId;
8
+ logger;
9
+ #controller = new AbortController();
10
+ #running;
11
+ constructor(store, client, config, workerId, logger) {
12
+ this.store = store;
13
+ this.client = client;
14
+ this.config = config;
15
+ this.workerId = workerId;
16
+ this.logger = logger;
17
+ }
18
+ start() {
19
+ this.#running ??= this.run();
20
+ }
21
+ async close() {
22
+ this.#controller.abort();
23
+ await this.#running;
24
+ }
25
+ async run() {
26
+ while (!this.#controller.signal.aborted) {
27
+ try {
28
+ await this.store.recoverExpired();
29
+ const record = await this.store.claimNext(this.workerId, LEASE_MS);
30
+ if (!record) {
31
+ await delay(IDLE_DELAY_MS, this.#controller.signal);
32
+ continue;
33
+ }
34
+ const config = this.config();
35
+ if (new URL(record.url).origin !== config.site) {
36
+ await this.store.completeRejected(record.id, record.leaseToken, 'SITE_CHANGED', 'Submission URL origin does not match the configured site', 0, null);
37
+ continue;
38
+ }
39
+ const result = await this.client.submit({
40
+ site: config.site,
41
+ token: config.token,
42
+ url: record.url,
43
+ signal: this.#controller.signal,
44
+ });
45
+ if (result.outcome === 'accepted') {
46
+ await this.store.completeAccepted(record.id, record.leaseToken, result.acceptedCount, result.remaining, result.message);
47
+ continue;
48
+ }
49
+ if (result.outcome === 'rejected') {
50
+ await this.store.completeRejected(record.id, record.leaseToken, result.code, result.message, result.acceptedCount, result.remaining);
51
+ continue;
52
+ }
53
+ await this.store.completeUnknown(record.id, record.leaseToken, result.code, result.message);
54
+ }
55
+ catch (error) {
56
+ if (this.#controller.signal.aborted)
57
+ return;
58
+ this.logger.error({ err: error, event: 'baidu-submit.worker.failed' }, 'Baidu submission worker iteration failed');
59
+ await delay(IDLE_DELAY_MS, this.#controller.signal);
60
+ }
61
+ }
62
+ }
63
+ }
64
+ function delay(milliseconds, signal) {
65
+ return new Promise((resolve) => {
66
+ if (signal.aborted)
67
+ return resolve();
68
+ const timer = setTimeout(resolve, milliseconds);
69
+ signal.addEventListener('abort', () => {
70
+ clearTimeout(timer);
71
+ resolve();
72
+ }, { once: true });
73
+ });
74
+ }
75
+ //# sourceMappingURL=submission-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submission-worker.js","sourceRoot":"","sources":["../../src/submission/submission-worker.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@zlooks.cn/baidu-submit-server",
3
+ "version": "1.0.1",
4
+ "private": false,
5
+ "type": "module",
6
+ "engines": {
7
+ "node": ">=24.0.0"
8
+ },
9
+ "bin": {
10
+ "zlooks-baidu-submit-server": "dist/command/index.js"
11
+ },
12
+ "files": [
13
+ "dist"
14
+ ],
15
+ "zlooks": {
16
+ "kind": "service",
17
+ "description": "百度链接自动提交服务",
18
+ "dependsOn": [
19
+ "@zlooks.cn/event-server"
20
+ ]
21
+ },
22
+ "scripts": {
23
+ "build": "pnpm run clean && tsc -p tsconfig.json && fix-esm-import-path --preserve-import-type ./dist",
24
+ "clean": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"",
25
+ "test": "vitest run",
26
+ "typecheck": "tsc -p tsconfig.json --noEmit",
27
+ "dev": "hile start --dev --env-file ~/.zlooks.cn/.env",
28
+ "start": "hile start --env-file ~/.zlooks.cn/.env"
29
+ },
30
+ "dependencies": {
31
+ "@hile/cli": "4.0.8",
32
+ "@hile/core": "4.0.2",
33
+ "@hile/logger": "4.0.2",
34
+ "@hile/mcp": "1.0.6",
35
+ "@hile/message-loader": "4.0.7",
36
+ "@hile/micro": "4.0.7",
37
+ "@hile/micro-contract": "1.0.1",
38
+ "@hile/model": "4.0.4",
39
+ "@hile/typeorm": "4.0.2",
40
+ "@inquirer/prompts": "8.7.0",
41
+ "@zlooks.cn/blog-shared": "1.0.3",
42
+ "@zlooks.cn/event-client": "1.0.3",
43
+ "@zlooks.cn/infrastructure": "1.0.0",
44
+ "@zlooks.cn/public-host-contract": "1.0.0",
45
+ "@zlooks.cn/registry-config": "1.0.1",
46
+ "@zlooks.cn/service-command": "1.0.2",
47
+ "detect-port": "2.1.0",
48
+ "pg": "8.23.0",
49
+ "typeorm": "1.1.0",
50
+ "zod": "4.4.3"
51
+ },
52
+ "devDependencies": {
53
+ "@hile/context": "4.0.3",
54
+ "@types/node": "26.2.0",
55
+ "fix-esm-import-path": "1.10.3",
56
+ "pg-mem": "3.0.14",
57
+ "typescript": "7.0.2",
58
+ "vitest": "4.1.11"
59
+ },
60
+ "gitHead": "93c1087350b97ab47fd9596c1e39da4ade741a49"
61
+ }