@blen/fedreg-mcp-server 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +125 -0
- package/LICENSE +202 -0
- package/NOTICE +15 -0
- package/README.md +219 -0
- package/SECURITY.md +99 -0
- package/dist/auth/embedded.d.ts +2 -0
- package/dist/auth/embedded.d.ts.map +1 -0
- package/dist/auth/embedded.js +17 -0
- package/dist/auth/embedded.js.map +1 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +2 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +120 -0
- package/dist/bin.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/sandbox/deno.d.ts +13 -0
- package/dist/sandbox/deno.d.ts.map +1 -0
- package/dist/sandbox/deno.js +203 -0
- package/dist/sandbox/deno.js.map +1 -0
- package/dist/sandbox/index.d.ts +20 -0
- package/dist/sandbox/index.d.ts.map +1 -0
- package/dist/sandbox/index.js +46 -0
- package/dist/sandbox/index.js.map +1 -0
- package/dist/sandbox/isolate.d.ts +7 -0
- package/dist/sandbox/isolate.d.ts.map +1 -0
- package/dist/sandbox/isolate.js +100 -0
- package/dist/sandbox/isolate.js.map +1 -0
- package/dist/sandbox/policy.d.ts +7 -0
- package/dist/sandbox/policy.d.ts.map +1 -0
- package/dist/sandbox/policy.js +70 -0
- package/dist/sandbox/policy.js.map +1 -0
- package/dist/sandbox/types.d.ts +41 -0
- package/dist/sandbox/types.d.ts.map +1 -0
- package/dist/sandbox/types.js +2 -0
- package/dist/sandbox/types.js.map +1 -0
- package/dist/sdk/bindings.d.ts +10 -0
- package/dist/sdk/bindings.d.ts.map +1 -0
- package/dist/sdk/bindings.js +15 -0
- package/dist/sdk/bindings.js.map +1 -0
- package/dist/sdk/ecfr-client.d.ts +61 -0
- package/dist/sdk/ecfr-client.d.ts.map +1 -0
- package/dist/sdk/ecfr-client.js +45 -0
- package/dist/sdk/ecfr-client.js.map +1 -0
- package/dist/sdk/fr-client.d.ts +81 -0
- package/dist/sdk/fr-client.d.ts.map +1 -0
- package/dist/sdk/fr-client.js +77 -0
- package/dist/sdk/fr-client.js.map +1 -0
- package/dist/sdk/regs-client.d.ts +34 -0
- package/dist/sdk/regs-client.d.ts.map +1 -0
- package/dist/sdk/regs-client.js +44 -0
- package/dist/sdk/regs-client.js.map +1 -0
- package/dist/sdk/runtime.d.ts +21 -0
- package/dist/sdk/runtime.d.ts.map +1 -0
- package/dist/sdk/runtime.js +31 -0
- package/dist/sdk/runtime.js.map +1 -0
- package/dist/sdk/sources/corpus-loader.d.ts +6 -0
- package/dist/sdk/sources/corpus-loader.d.ts.map +1 -0
- package/dist/sdk/sources/corpus-loader.js +9 -0
- package/dist/sdk/sources/corpus-loader.js.map +1 -0
- package/dist/sdk/sources/ecfr.d.ts +3 -0
- package/dist/sdk/sources/ecfr.d.ts.map +1 -0
- package/dist/sdk/sources/ecfr.js +12 -0
- package/dist/sdk/sources/ecfr.js.map +1 -0
- package/dist/sdk/sources/fr.d.ts +3 -0
- package/dist/sdk/sources/fr.d.ts.map +1 -0
- package/dist/sdk/sources/fr.js +12 -0
- package/dist/sdk/sources/fr.js.map +1 -0
- package/dist/sdk/sources/index.d.ts +7 -0
- package/dist/sdk/sources/index.d.ts.map +1 -0
- package/dist/sdk/sources/index.js +25 -0
- package/dist/sdk/sources/index.js.map +1 -0
- package/dist/sdk/sources/regs.d.ts +3 -0
- package/dist/sdk/sources/regs.d.ts.map +1 -0
- package/dist/sdk/sources/regs.js +24 -0
- package/dist/sdk/sources/regs.js.map +1 -0
- package/dist/sdk/sources/source.d.ts +32 -0
- package/dist/sdk/sources/source.d.ts.map +1 -0
- package/dist/sdk/sources/source.js +2 -0
- package/dist/sdk/sources/source.js.map +1 -0
- package/dist/search/bm25.d.ts +25 -0
- package/dist/search/bm25.d.ts.map +1 -0
- package/dist/search/bm25.js +67 -0
- package/dist/search/bm25.js.map +1 -0
- package/dist/search/corpus.d.ts +24 -0
- package/dist/search/corpus.d.ts.map +1 -0
- package/dist/search/corpus.js +23 -0
- package/dist/search/corpus.js.map +1 -0
- package/dist/server/authz.d.ts +18 -0
- package/dist/server/authz.d.ts.map +1 -0
- package/dist/server/authz.js +42 -0
- package/dist/server/authz.js.map +1 -0
- package/dist/server/http.d.ts +21 -0
- package/dist/server/http.d.ts.map +1 -0
- package/dist/server/http.js +159 -0
- package/dist/server/http.js.map +1 -0
- package/dist/server/ipRateLimiter.d.ts +11 -0
- package/dist/server/ipRateLimiter.d.ts.map +1 -0
- package/dist/server/ipRateLimiter.js +27 -0
- package/dist/server/ipRateLimiter.js.map +1 -0
- package/dist/server/mcpServer.d.ts +15 -0
- package/dist/server/mcpServer.d.ts.map +1 -0
- package/dist/server/mcpServer.js +67 -0
- package/dist/server/mcpServer.js.map +1 -0
- package/dist/server/stdio.d.ts +3 -0
- package/dist/server/stdio.d.ts.map +1 -0
- package/dist/server/stdio.js +16 -0
- package/dist/server/stdio.js.map +1 -0
- package/dist/server/toolCatalog.d.ts +20 -0
- package/dist/server/toolCatalog.d.ts.map +1 -0
- package/dist/server/toolCatalog.js +29 -0
- package/dist/server/toolCatalog.js.map +1 -0
- package/dist/server/wellKnown.d.ts +16 -0
- package/dist/server/wellKnown.d.ts.map +1 -0
- package/dist/server/wellKnown.js +17 -0
- package/dist/server/wellKnown.js.map +1 -0
- package/dist/server/zodToJsonSchema.d.ts +7 -0
- package/dist/server/zodToJsonSchema.d.ts.map +1 -0
- package/dist/server/zodToJsonSchema.js +44 -0
- package/dist/server/zodToJsonSchema.js.map +1 -0
- package/dist/supervisor/index.d.ts +19 -0
- package/dist/supervisor/index.d.ts.map +1 -0
- package/dist/supervisor/index.js +22 -0
- package/dist/supervisor/index.js.map +1 -0
- package/dist/tools/describeSchema.d.ts +35 -0
- package/dist/tools/describeSchema.d.ts.map +1 -0
- package/dist/tools/describeSchema.js +14 -0
- package/dist/tools/describeSchema.js.map +1 -0
- package/dist/tools/execute.d.ts +33 -0
- package/dist/tools/execute.d.ts.map +1 -0
- package/dist/tools/execute.js +28 -0
- package/dist/tools/execute.js.map +1 -0
- package/dist/tools/searchApi.d.ts +27 -0
- package/dist/tools/searchApi.d.ts.map +1 -0
- package/dist/tools/searchApi.js +14 -0
- package/dist/tools/searchApi.js.map +1 -0
- package/dist/util/httpClient.d.ts +46 -0
- package/dist/util/httpClient.d.ts.map +1 -0
- package/dist/util/httpClient.js +139 -0
- package/dist/util/httpClient.js.map +1 -0
- package/dist/util/logger.d.ts +7 -0
- package/dist/util/logger.d.ts.map +1 -0
- package/dist/util/logger.js +19 -0
- package/dist/util/logger.js.map +1 -0
- package/dist/util/quotas.d.ts +13 -0
- package/dist/util/quotas.d.ts.map +1 -0
- package/dist/util/quotas.js +29 -0
- package/dist/util/quotas.js.map +1 -0
- package/dist/util/tokenBucket.d.ts +11 -0
- package/dist/util/tokenBucket.d.ts.map +1 -0
- package/dist/util/tokenBucket.js +30 -0
- package/dist/util/tokenBucket.js.map +1 -0
- package/package.json +95 -0
- package/schema/ecfr.json +148 -0
- package/schema/fr.json +194 -0
- package/schema/regs.json +67 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isolate.js","sourceRoot":"","sources":["../../src/sandbox/isolate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/sandbox/policy.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc,aAKzB,CAAC;AAMH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAyDpD"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { parse } from 'acorn';
|
|
2
|
+
import { simple } from 'acorn-walk';
|
|
3
|
+
export const BANNED_GLOBALS = new Set([
|
|
4
|
+
'process', 'require', 'global', 'globalThis', 'Buffer', 'Deno',
|
|
5
|
+
'__dirname', '__filename', 'module', 'exports', 'eval', 'Function',
|
|
6
|
+
'WebAssembly', 'XMLHttpRequest', 'fetch', 'WebSocket', 'Worker',
|
|
7
|
+
'SharedArrayBuffer',
|
|
8
|
+
]);
|
|
9
|
+
const BANNED_MEMBERS = new Set([
|
|
10
|
+
'constructor', '__proto__', 'prototype',
|
|
11
|
+
]);
|
|
12
|
+
export function preflight(code) {
|
|
13
|
+
const errors = [];
|
|
14
|
+
// User code is executed inside an async wrapper, so allow top-level await/return.
|
|
15
|
+
// Parse the user code directly in module mode first to catch imports; then re-parse
|
|
16
|
+
// wrapped to validate the rest of the AST.
|
|
17
|
+
let directAst = null;
|
|
18
|
+
try {
|
|
19
|
+
directAst = parse(code, { ecmaVersion: 2022, sourceType: 'module', allowAwaitOutsideFunction: true });
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
// ignore — wrapper parse will be authoritative
|
|
23
|
+
}
|
|
24
|
+
if (directAst) {
|
|
25
|
+
simple(directAst, {
|
|
26
|
+
ImportDeclaration() { errors.push('imports are not allowed'); },
|
|
27
|
+
ImportExpression() { errors.push('dynamic import() is not allowed'); },
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
const wrapped = `(async () => { ${code}\n })()`;
|
|
31
|
+
let ast;
|
|
32
|
+
try {
|
|
33
|
+
ast = parse(wrapped, { ecmaVersion: 2022, sourceType: 'module', allowAwaitOutsideFunction: true });
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
return { ok: false, errors: [...errors, `Parse error: ${err.message}`] };
|
|
37
|
+
}
|
|
38
|
+
simple(ast, {
|
|
39
|
+
ImportDeclaration() { errors.push('imports are not allowed'); },
|
|
40
|
+
ImportExpression() { errors.push('dynamic import() is not allowed'); },
|
|
41
|
+
CallExpression(node) {
|
|
42
|
+
const callee = node.callee;
|
|
43
|
+
if (callee?.type === 'Identifier' && (callee.name === 'eval' || callee.name === 'Function')) {
|
|
44
|
+
errors.push(`call to ${callee.name}() is not allowed`);
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
NewExpression(node) {
|
|
48
|
+
const callee = node.callee;
|
|
49
|
+
if (callee?.type === 'Identifier' && callee.name === 'Function') {
|
|
50
|
+
errors.push('new Function() is not allowed');
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
Identifier(node) {
|
|
54
|
+
if (BANNED_GLOBALS.has(node.name)) {
|
|
55
|
+
errors.push(`reference to '${node.name}' is not allowed`);
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
MemberExpression(node) {
|
|
59
|
+
if (!node.computed && node.property?.type === 'Identifier' && BANNED_MEMBERS.has(node.property.name)) {
|
|
60
|
+
errors.push(`access to .${node.property.name} is not allowed`);
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
MetaProperty(node) {
|
|
64
|
+
if (node.meta?.name === 'import')
|
|
65
|
+
errors.push('import.meta is not allowed');
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
return { ok: errors.length === 0, errors };
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/sandbox/policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export interface ExecuteOptions {
|
|
2
|
+
code: string;
|
|
3
|
+
timeoutMs?: number;
|
|
4
|
+
memoryMb?: number;
|
|
5
|
+
bindings?: string[];
|
|
6
|
+
}
|
|
7
|
+
export interface ExecuteResult {
|
|
8
|
+
ok: boolean;
|
|
9
|
+
value?: unknown;
|
|
10
|
+
logs: string[];
|
|
11
|
+
error?: {
|
|
12
|
+
name: string;
|
|
13
|
+
message: string;
|
|
14
|
+
stack?: string;
|
|
15
|
+
status?: number;
|
|
16
|
+
};
|
|
17
|
+
durationMs: number;
|
|
18
|
+
}
|
|
19
|
+
export type SandboxKind = 'isolate' | 'deno' | 'auto';
|
|
20
|
+
export interface SandboxRunner {
|
|
21
|
+
kind: 'isolate' | 'deno' | 'unavailable';
|
|
22
|
+
available(): Promise<boolean>;
|
|
23
|
+
execute(opts: ExecuteOptions, rpc: RpcBridge): Promise<ExecuteResult>;
|
|
24
|
+
}
|
|
25
|
+
export interface RpcCall {
|
|
26
|
+
binding: string;
|
|
27
|
+
path: string[];
|
|
28
|
+
args: unknown[];
|
|
29
|
+
}
|
|
30
|
+
export interface RpcBridge {
|
|
31
|
+
dispatch(call: RpcCall): Promise<{
|
|
32
|
+
ok: boolean;
|
|
33
|
+
value?: unknown;
|
|
34
|
+
error?: {
|
|
35
|
+
name: string;
|
|
36
|
+
message: string;
|
|
37
|
+
status?: number;
|
|
38
|
+
};
|
|
39
|
+
}>;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sandbox/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,aAAa,CAAC;IACzC,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACvE;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;CAChI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/sandbox/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type SourceConfig } from './sources/index.js';
|
|
2
|
+
import type { SourceMeta } from './sources/source.js';
|
|
3
|
+
export interface Sdk {
|
|
4
|
+
clients: Record<string, object>;
|
|
5
|
+
meta: SourceMeta[];
|
|
6
|
+
registeredNames: string[];
|
|
7
|
+
version: () => string;
|
|
8
|
+
}
|
|
9
|
+
export declare function buildSdk(cfg: SourceConfig): Sdk;
|
|
10
|
+
//# sourceMappingURL=bindings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../src/sdk/bindings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,MAAM,CAAC;CACvB;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,YAAY,GAAG,GAAG,CAU/C"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { getSources } from './sources/index.js';
|
|
2
|
+
export function buildSdk(cfg) {
|
|
3
|
+
const sources = getSources(cfg);
|
|
4
|
+
const clients = {};
|
|
5
|
+
for (const s of sources)
|
|
6
|
+
if (s.enabled)
|
|
7
|
+
clients[s.name] = s.client;
|
|
8
|
+
return {
|
|
9
|
+
clients,
|
|
10
|
+
meta: sources.map(({ name, label, enabled, disabledReason }) => ({ name, label, enabled, disabledReason })),
|
|
11
|
+
registeredNames: sources.map(s => s.name),
|
|
12
|
+
version: () => '2.0.0', // x-release-please-version
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=bindings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bindings.js","sourceRoot":"","sources":["../../src/sdk/bindings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAqB,MAAM,oBAAoB,CAAC;AAUnE,MAAM,UAAU,QAAQ,CAAC,GAAiB;IACxC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,IAAI,CAAC,CAAC,OAAO;YAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnE,OAAO;QACL,OAAO;QACP,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;QAC3G,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACzC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,2BAA2B;KACpD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { HttpClient } from '../util/httpClient.js';
|
|
2
|
+
export interface EcfrSearchParams {
|
|
3
|
+
query: string;
|
|
4
|
+
agency_slugs?: string[];
|
|
5
|
+
date?: string;
|
|
6
|
+
last_modified_after?: string;
|
|
7
|
+
last_modified_before?: string;
|
|
8
|
+
last_modified_on_or_after?: string;
|
|
9
|
+
last_modified_on_or_before?: string;
|
|
10
|
+
hierarchy?: {
|
|
11
|
+
title?: string;
|
|
12
|
+
subtitle?: string;
|
|
13
|
+
chapter?: string;
|
|
14
|
+
subchapter?: string;
|
|
15
|
+
part?: string;
|
|
16
|
+
subpart?: string;
|
|
17
|
+
section?: string;
|
|
18
|
+
appendix?: string;
|
|
19
|
+
};
|
|
20
|
+
per_page?: number;
|
|
21
|
+
page?: number;
|
|
22
|
+
order?: 'relevance' | 'hierarchy' | 'newest' | 'oldest';
|
|
23
|
+
}
|
|
24
|
+
export declare class EcfrClient {
|
|
25
|
+
private readonly http;
|
|
26
|
+
constructor(http: HttpClient);
|
|
27
|
+
admin: {
|
|
28
|
+
agencies: () => Promise<unknown>;
|
|
29
|
+
corrections: (query?: {
|
|
30
|
+
date?: string;
|
|
31
|
+
title?: number;
|
|
32
|
+
error_corrected_date?: string;
|
|
33
|
+
}) => Promise<unknown>;
|
|
34
|
+
corrections_for_title: (title: number, query?: {
|
|
35
|
+
date?: string;
|
|
36
|
+
}) => Promise<unknown>;
|
|
37
|
+
};
|
|
38
|
+
titles: {
|
|
39
|
+
list: () => Promise<unknown>;
|
|
40
|
+
};
|
|
41
|
+
structure: (date: string, title: number) => Promise<unknown>;
|
|
42
|
+
ancestry: (date: string, title: number, query?: Record<string, string | number>) => Promise<unknown>;
|
|
43
|
+
versions: (title: number, query?: {
|
|
44
|
+
issue_date?: {
|
|
45
|
+
on?: string;
|
|
46
|
+
lte?: string;
|
|
47
|
+
gte?: string;
|
|
48
|
+
};
|
|
49
|
+
identifier?: string;
|
|
50
|
+
}) => Promise<unknown>;
|
|
51
|
+
/** Returns XML as a string. Large for whole titles; prefer structure/ancestry first. */
|
|
52
|
+
full: (date: string, title: number, query?: Record<string, string | number>) => Promise<string>;
|
|
53
|
+
search: {
|
|
54
|
+
results: (params: EcfrSearchParams) => Promise<unknown>;
|
|
55
|
+
counts_daily: (params: Pick<EcfrSearchParams, "query" | "agency_slugs" | "hierarchy">) => Promise<unknown>;
|
|
56
|
+
counts_titles: (params: Pick<EcfrSearchParams, "query" | "agency_slugs" | "hierarchy">) => Promise<unknown>;
|
|
57
|
+
counts_hierarchy: (params: Pick<EcfrSearchParams, "query" | "agency_slugs" | "hierarchy">) => Promise<unknown>;
|
|
58
|
+
suggestions: (params: Pick<EcfrSearchParams, "query">) => Promise<unknown>;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=ecfr-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ecfr-client.d.ts","sourceRoot":"","sources":["../../src/sdk/ecfr-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,SAAS,CAAC,EAAE;QACV,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACzD;AAED,qBAAa,UAAU;IACT,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,KAAK;;8BAEmB;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,oBAAoB,CAAC,EAAE,MAAM,CAAA;SAAE;uCAEvD,MAAM,UAAU;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE;MAEhE;IAEF,MAAM;;MAEJ;IAEF,SAAS,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,sBAC0C;IAElF,QAAQ,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,EAAE,QAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,sBACQ;IAExF,QAAQ,GAAI,OAAO,MAAM,EAAE,QAAQ;QAAE,UAAU,CAAC,EAAE;YAAE,EAAE,CAAC,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,sBACd;IAEtG,wFAAwF;IACxF,IAAI,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,EAAE,QAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,qBAC8B;IAE1G,MAAM;0BACc,gBAAgB;+BAEX,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,cAAc,GAAG,WAAW,CAAC;gCAE7D,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,cAAc,GAAG,WAAW,CAAC;mCAE3D,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,cAAc,GAAG,WAAW,CAAC;8BAEnE,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC;MAErD;CACH"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export class EcfrClient {
|
|
2
|
+
http;
|
|
3
|
+
constructor(http) {
|
|
4
|
+
this.http = http;
|
|
5
|
+
}
|
|
6
|
+
admin = {
|
|
7
|
+
agencies: () => this.http.call({ path: '/admin/v1/agencies.json' }),
|
|
8
|
+
corrections: (query) => this.http.call({ path: '/admin/v1/corrections.json', query: flatten(query ?? {}) }),
|
|
9
|
+
corrections_for_title: (title, query) => this.http.call({ path: `/admin/v1/corrections/title/${title}.json`, query: flatten(query ?? {}) }),
|
|
10
|
+
};
|
|
11
|
+
titles = {
|
|
12
|
+
list: () => this.http.call({ path: '/versioner/v1/titles.json' }),
|
|
13
|
+
};
|
|
14
|
+
structure = (date, title) => this.http.call({ path: `/versioner/v1/structure/${date}/title-${title}.json` });
|
|
15
|
+
ancestry = (date, title, query) => this.http.call({ path: `/versioner/v1/ancestry/${date}/title-${title}.json`, query });
|
|
16
|
+
versions = (title, query) => this.http.call({ path: `/versioner/v1/versions/title-${title}.json`, query: flatten(query ?? {}) });
|
|
17
|
+
/** Returns XML as a string. Large for whole titles; prefer structure/ancestry first. */
|
|
18
|
+
full = (date, title, query) => this.http.call({ path: `/versioner/v1/full/${date}/title-${title}.xml`, query, accept: 'xml' });
|
|
19
|
+
search = {
|
|
20
|
+
results: (params) => this.http.call({ path: '/search/v1/results', query: flatten(params) }),
|
|
21
|
+
counts_daily: (params) => this.http.call({ path: '/search/v1/counts/daily', query: flatten(params) }),
|
|
22
|
+
counts_titles: (params) => this.http.call({ path: '/search/v1/counts/titles', query: flatten(params) }),
|
|
23
|
+
counts_hierarchy: (params) => this.http.call({ path: '/search/v1/counts/hierarchy', query: flatten(params) }),
|
|
24
|
+
suggestions: (params) => this.http.call({ path: '/search/v1/suggestions', query: flatten(params) }),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function flatten(input) {
|
|
28
|
+
const out = {};
|
|
29
|
+
function walk(obj, prefix) {
|
|
30
|
+
for (const [k, v] of Object.entries(obj)) {
|
|
31
|
+
if (v === undefined || v === null)
|
|
32
|
+
continue;
|
|
33
|
+
const key = prefix ? `${prefix}[${k}]` : k;
|
|
34
|
+
if (Array.isArray(v))
|
|
35
|
+
out[`${key}[]`] = v.map(String);
|
|
36
|
+
else if (typeof v === 'object')
|
|
37
|
+
walk(v, key);
|
|
38
|
+
else
|
|
39
|
+
out[key] = v;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
walk(input, '');
|
|
43
|
+
return out;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=ecfr-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ecfr-client.js","sourceRoot":"","sources":["../../src/sdk/ecfr-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { HttpClient } from '../util/httpClient.js';
|
|
2
|
+
export interface DocumentSearchConditions {
|
|
3
|
+
term?: string;
|
|
4
|
+
agencies?: string[];
|
|
5
|
+
publication_date?: {
|
|
6
|
+
is?: string;
|
|
7
|
+
gte?: string;
|
|
8
|
+
lte?: string;
|
|
9
|
+
year?: number;
|
|
10
|
+
};
|
|
11
|
+
effective_date?: {
|
|
12
|
+
is?: string;
|
|
13
|
+
gte?: string;
|
|
14
|
+
lte?: string;
|
|
15
|
+
year?: number;
|
|
16
|
+
};
|
|
17
|
+
type?: Array<'RULE' | 'PRORULE' | 'NOTICE' | 'PRESDOCU'>;
|
|
18
|
+
topics?: string[];
|
|
19
|
+
significant?: 0 | 1;
|
|
20
|
+
cfr?: {
|
|
21
|
+
title?: number;
|
|
22
|
+
part?: number;
|
|
23
|
+
};
|
|
24
|
+
docket_id?: string;
|
|
25
|
+
president?: string;
|
|
26
|
+
presidential_document_type?: string[];
|
|
27
|
+
}
|
|
28
|
+
export interface DocumentSearchParams {
|
|
29
|
+
conditions?: DocumentSearchConditions;
|
|
30
|
+
fields?: string[];
|
|
31
|
+
per_page?: number;
|
|
32
|
+
page?: number;
|
|
33
|
+
order?: 'relevance' | 'newest' | 'oldest' | 'executive_order_number';
|
|
34
|
+
}
|
|
35
|
+
export interface FacetsParams {
|
|
36
|
+
conditions?: DocumentSearchConditions;
|
|
37
|
+
facet: 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'yearly' | 'agency' | 'topic' | 'section' | 'subject' | 'type';
|
|
38
|
+
}
|
|
39
|
+
export interface PIDocumentSearchParams {
|
|
40
|
+
conditions?: {
|
|
41
|
+
available_on?: string;
|
|
42
|
+
agencies?: string[];
|
|
43
|
+
type?: string[];
|
|
44
|
+
special_filing?: 0 | 1;
|
|
45
|
+
docket_id?: string;
|
|
46
|
+
};
|
|
47
|
+
fields?: string[];
|
|
48
|
+
per_page?: number;
|
|
49
|
+
page?: number;
|
|
50
|
+
}
|
|
51
|
+
export declare class FederalRegisterClient {
|
|
52
|
+
private readonly http;
|
|
53
|
+
constructor(http: HttpClient);
|
|
54
|
+
documents: {
|
|
55
|
+
search: (params?: DocumentSearchParams) => Promise<unknown>;
|
|
56
|
+
get: (documentNumber: string, fields?: string[]) => Promise<unknown>;
|
|
57
|
+
getMany: (documentNumbers: string[], fields?: string[]) => Promise<unknown>;
|
|
58
|
+
facets: (params: FacetsParams) => Promise<unknown>;
|
|
59
|
+
};
|
|
60
|
+
publicInspection: {
|
|
61
|
+
current: (fields?: string[]) => Promise<unknown>;
|
|
62
|
+
search: (params?: PIDocumentSearchParams) => Promise<unknown>;
|
|
63
|
+
get: (documentNumber: string, fields?: string[]) => Promise<unknown>;
|
|
64
|
+
getMany: (documentNumbers: string[], fields?: string[]) => Promise<unknown>;
|
|
65
|
+
};
|
|
66
|
+
agencies: {
|
|
67
|
+
list: () => Promise<unknown>;
|
|
68
|
+
get: (slug: string) => Promise<unknown>;
|
|
69
|
+
};
|
|
70
|
+
issues: {
|
|
71
|
+
get: (publicationDate: string) => Promise<unknown>;
|
|
72
|
+
};
|
|
73
|
+
suggestedSearches: {
|
|
74
|
+
list: (sections?: string) => Promise<unknown>;
|
|
75
|
+
get: (section: string) => Promise<unknown>;
|
|
76
|
+
};
|
|
77
|
+
images: {
|
|
78
|
+
get: (identifier: string) => Promise<unknown>;
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=fr-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fr-client.d.ts","sourceRoot":"","sources":["../../src/sdk/fr-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,gBAAgB,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9E,cAAc,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5E,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC,CAAC;IACzD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACpB,GAAG,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,wBAAwB,CAAC;CACtE;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;CACtH;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE;QACX,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,SAAS;0BACU,oBAAoB;8BAGf,MAAM,WAAW,MAAM,EAAE;mCAMpB,MAAM,EAAE,WAAW,MAAM,EAAE;yBAMrC,YAAY;MAK7B;IAEF,gBAAgB;2BACK,MAAM,EAAE;0BAMV,sBAAsB;8BAGjB,MAAM,WAAW,MAAM,EAAE;mCAMpB,MAAM,EAAE,WAAW,MAAM,EAAE;MAKtD;IAEF,QAAQ;;oBAEM,MAAM;MAClB;IAEF,MAAM;+BACmB,MAAM;MAE7B;IAEF,iBAAiB;0BACG,MAAM;uBAET,MAAM;MAErB;IAEF,MAAM;0BACc,MAAM;MAExB;CACH"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
export class FederalRegisterClient {
|
|
2
|
+
http;
|
|
3
|
+
constructor(http) {
|
|
4
|
+
this.http = http;
|
|
5
|
+
}
|
|
6
|
+
documents = {
|
|
7
|
+
search: (params = {}) => this.http.call({ path: '/documents.json', query: flattenConditions(params) }),
|
|
8
|
+
get: (documentNumber, fields) => this.http.call({
|
|
9
|
+
path: `/documents/${encodeURIComponent(documentNumber)}.json`,
|
|
10
|
+
query: fields ? { 'fields[]': fields } : undefined,
|
|
11
|
+
}),
|
|
12
|
+
getMany: (documentNumbers, fields) => this.http.call({
|
|
13
|
+
path: `/documents/${documentNumbers.map(encodeURIComponent).join(',')}.json`,
|
|
14
|
+
query: fields ? { 'fields[]': fields } : undefined,
|
|
15
|
+
}),
|
|
16
|
+
facets: (params) => this.http.call({
|
|
17
|
+
path: `/documents/facets/${params.facet}`,
|
|
18
|
+
query: flattenConditions({ conditions: params.conditions }),
|
|
19
|
+
}),
|
|
20
|
+
};
|
|
21
|
+
publicInspection = {
|
|
22
|
+
current: (fields) => this.http.call({
|
|
23
|
+
path: '/public-inspection-documents/current.json',
|
|
24
|
+
query: fields ? { 'fields[]': fields } : undefined,
|
|
25
|
+
}),
|
|
26
|
+
search: (params = {}) => this.http.call({ path: '/public-inspection-documents.json', query: flattenConditions(params) }),
|
|
27
|
+
get: (documentNumber, fields) => this.http.call({
|
|
28
|
+
path: `/public-inspection-documents/${encodeURIComponent(documentNumber)}.json`,
|
|
29
|
+
query: fields ? { 'fields[]': fields } : undefined,
|
|
30
|
+
}),
|
|
31
|
+
getMany: (documentNumbers, fields) => this.http.call({
|
|
32
|
+
path: `/public-inspection-documents/${documentNumbers.map(encodeURIComponent).join(',')}.json`,
|
|
33
|
+
query: fields ? { 'fields[]': fields } : undefined,
|
|
34
|
+
}),
|
|
35
|
+
};
|
|
36
|
+
agencies = {
|
|
37
|
+
list: () => this.http.call({ path: '/agencies' }),
|
|
38
|
+
get: (slug) => this.http.call({ path: `/agencies/${encodeURIComponent(slug)}` }),
|
|
39
|
+
};
|
|
40
|
+
issues = {
|
|
41
|
+
get: (publicationDate) => this.http.call({ path: `/issues/${encodeURIComponent(publicationDate)}.json` }),
|
|
42
|
+
};
|
|
43
|
+
suggestedSearches = {
|
|
44
|
+
list: (sections) => this.http.call({ path: '/suggested_searches', query: sections ? { sections } : undefined }),
|
|
45
|
+
get: (section) => this.http.call({ path: `/suggested_searches/${encodeURIComponent(section)}` }),
|
|
46
|
+
};
|
|
47
|
+
images = {
|
|
48
|
+
get: (identifier) => this.http.call({ path: `/images/${encodeURIComponent(identifier)}` }),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function flattenConditions(input) {
|
|
52
|
+
const out = {};
|
|
53
|
+
function walk(obj, prefix) {
|
|
54
|
+
for (const [k, v] of Object.entries(obj)) {
|
|
55
|
+
if (v === undefined || v === null)
|
|
56
|
+
continue;
|
|
57
|
+
const key = prefix ? `${prefix}[${k}]` : k;
|
|
58
|
+
if (Array.isArray(v)) {
|
|
59
|
+
out[`${key}[]`] = v.map(String);
|
|
60
|
+
}
|
|
61
|
+
else if (typeof v === 'object') {
|
|
62
|
+
walk(v, key);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
out[key] = v;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
walk(input, '');
|
|
70
|
+
// fields[] convention
|
|
71
|
+
if ('fields' in out && Array.isArray(out.fields)) {
|
|
72
|
+
out['fields[]'] = out.fields;
|
|
73
|
+
delete out.fields;
|
|
74
|
+
}
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=fr-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fr-client.js","sourceRoot":"","sources":["../../src/sdk/fr-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { HttpClient } from '../util/httpClient.js';
|
|
2
|
+
export type RegsRange = {
|
|
3
|
+
ge?: string;
|
|
4
|
+
le?: string;
|
|
5
|
+
};
|
|
6
|
+
export interface RegsListParams {
|
|
7
|
+
filter?: Record<string, string | number | boolean | RegsRange | undefined>;
|
|
8
|
+
sort?: string;
|
|
9
|
+
page?: {
|
|
10
|
+
number?: number;
|
|
11
|
+
size?: number;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export interface RegsGetOptions {
|
|
15
|
+
include?: 'attachments';
|
|
16
|
+
}
|
|
17
|
+
export declare function toJsonApiQuery(params: RegsListParams): Record<string, string | number | boolean | undefined>;
|
|
18
|
+
export declare class RegulationsClient {
|
|
19
|
+
private readonly http;
|
|
20
|
+
constructor(http: HttpClient);
|
|
21
|
+
documents: {
|
|
22
|
+
search: (params?: RegsListParams) => Promise<unknown>;
|
|
23
|
+
get: (id: string, opts?: RegsGetOptions) => Promise<unknown>;
|
|
24
|
+
};
|
|
25
|
+
comments: {
|
|
26
|
+
search: (params?: RegsListParams) => Promise<unknown>;
|
|
27
|
+
get: (id: string, opts?: RegsGetOptions) => Promise<unknown>;
|
|
28
|
+
};
|
|
29
|
+
dockets: {
|
|
30
|
+
search: (params?: RegsListParams) => Promise<unknown>;
|
|
31
|
+
get: (id: string) => Promise<unknown>;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=regs-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regs-client.d.ts","sourceRoot":"","sources":["../../src/sdk/regs-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,MAAM,SAAS,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACrD,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AACD,MAAM,WAAW,cAAc;IAAG,OAAO,CAAC,EAAE,aAAa,CAAC;CAAE;AAE5D,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAiB5G;AAED,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,SAAS;0BACU,cAAc;kBACrB,MAAM,SAAS,cAAc;MAEvC;IAEF,QAAQ;0BACW,cAAc;kBACrB,MAAM,SAAS,cAAc;MAEvC;IAEF,OAAO;0BACY,cAAc;kBACrB,MAAM;MAChB;CACH"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export function toJsonApiQuery(params) {
|
|
2
|
+
const out = {};
|
|
3
|
+
if (params.filter) {
|
|
4
|
+
for (const [k, v] of Object.entries(params.filter)) {
|
|
5
|
+
if (v === undefined || v === null)
|
|
6
|
+
continue;
|
|
7
|
+
if (typeof v === 'object') {
|
|
8
|
+
if (v.ge !== undefined)
|
|
9
|
+
out[`filter[${k}][ge]`] = v.ge;
|
|
10
|
+
if (v.le !== undefined)
|
|
11
|
+
out[`filter[${k}][le]`] = v.le;
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
out[`filter[${k}]`] = v;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
if (params.sort)
|
|
19
|
+
out['sort'] = params.sort;
|
|
20
|
+
if (params.page?.number !== undefined)
|
|
21
|
+
out['page[number]'] = params.page.number;
|
|
22
|
+
if (params.page?.size !== undefined)
|
|
23
|
+
out['page[size]'] = params.page.size;
|
|
24
|
+
return out;
|
|
25
|
+
}
|
|
26
|
+
export class RegulationsClient {
|
|
27
|
+
http;
|
|
28
|
+
constructor(http) {
|
|
29
|
+
this.http = http;
|
|
30
|
+
}
|
|
31
|
+
documents = {
|
|
32
|
+
search: (params = {}) => this.http.call({ path: '/v4/documents', query: toJsonApiQuery(params) }),
|
|
33
|
+
get: (id, opts) => this.http.call({ path: `/v4/documents/${encodeURIComponent(id)}`, query: opts?.include ? { include: opts.include } : undefined }),
|
|
34
|
+
};
|
|
35
|
+
comments = {
|
|
36
|
+
search: (params = {}) => this.http.call({ path: '/v4/comments', query: toJsonApiQuery(params) }),
|
|
37
|
+
get: (id, opts) => this.http.call({ path: `/v4/comments/${encodeURIComponent(id)}`, query: opts?.include ? { include: opts.include } : undefined }),
|
|
38
|
+
};
|
|
39
|
+
dockets = {
|
|
40
|
+
search: (params = {}) => this.http.call({ path: '/v4/dockets', query: toJsonApiQuery(params) }),
|
|
41
|
+
get: (id) => this.http.call({ path: `/v4/dockets/${encodeURIComponent(id)}` }),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=regs-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regs-client.js","sourceRoot":"","sources":["../../src/sdk/regs-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { SourceMeta } from './sources/source.js';
|
|
2
|
+
export interface RpcRequest {
|
|
3
|
+
binding: string;
|
|
4
|
+
path: string[];
|
|
5
|
+
args: unknown[];
|
|
6
|
+
}
|
|
7
|
+
export interface RpcResponse {
|
|
8
|
+
ok: boolean;
|
|
9
|
+
value?: unknown;
|
|
10
|
+
error?: {
|
|
11
|
+
name: string;
|
|
12
|
+
message: string;
|
|
13
|
+
status?: number;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export interface DispatchRegistry {
|
|
17
|
+
clients: Record<string, object>;
|
|
18
|
+
meta: SourceMeta[];
|
|
19
|
+
}
|
|
20
|
+
export declare function dispatch(reg: DispatchRegistry, req: RpcRequest): Promise<RpcResponse>;
|
|
21
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/sdk/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5D;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,UAAU,EAAE,CAAC;CACpB;AAED,wBAAsB,QAAQ,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CA4B3F"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export async function dispatch(reg, req) {
|
|
2
|
+
const client = reg.clients[req.binding];
|
|
3
|
+
if (!client) {
|
|
4
|
+
const m = reg.meta.find(x => x.name === req.binding);
|
|
5
|
+
if (m && !m.enabled) {
|
|
6
|
+
return { ok: false, error: { name: 'SourceUnavailable', message: m.disabledReason ?? `${m.label} is unavailable` } };
|
|
7
|
+
}
|
|
8
|
+
return { ok: false, error: { name: 'TypeError', message: `Cannot resolve binding '${req.binding}'` } };
|
|
9
|
+
}
|
|
10
|
+
try {
|
|
11
|
+
let cur = client;
|
|
12
|
+
let parent = client;
|
|
13
|
+
for (const seg of req.path) {
|
|
14
|
+
if (cur === null || typeof cur !== 'object') {
|
|
15
|
+
return { ok: false, error: { name: 'TypeError', message: `Cannot resolve ${req.binding}.${req.path.join('.')}` } };
|
|
16
|
+
}
|
|
17
|
+
parent = cur;
|
|
18
|
+
cur = cur[seg];
|
|
19
|
+
}
|
|
20
|
+
if (typeof cur !== 'function') {
|
|
21
|
+
return { ok: false, error: { name: 'TypeError', message: `${req.binding}.${req.path.join('.')} is not a function` } };
|
|
22
|
+
}
|
|
23
|
+
const value = await cur.apply(parent, req.args);
|
|
24
|
+
return { ok: true, value };
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
const e = err;
|
|
28
|
+
return { ok: false, error: { name: e.name ?? 'Error', message: e.message ?? String(err), status: e.status } };
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=runtime.js.map
|