@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.
Files changed (161) hide show
  1. package/CHANGELOG.md +125 -0
  2. package/LICENSE +202 -0
  3. package/NOTICE +15 -0
  4. package/README.md +219 -0
  5. package/SECURITY.md +99 -0
  6. package/dist/auth/embedded.d.ts +2 -0
  7. package/dist/auth/embedded.d.ts.map +1 -0
  8. package/dist/auth/embedded.js +17 -0
  9. package/dist/auth/embedded.js.map +1 -0
  10. package/dist/auth/index.d.ts +2 -0
  11. package/dist/auth/index.d.ts.map +1 -0
  12. package/dist/auth/index.js +2 -0
  13. package/dist/auth/index.js.map +1 -0
  14. package/dist/bin.d.ts +3 -0
  15. package/dist/bin.d.ts.map +1 -0
  16. package/dist/bin.js +120 -0
  17. package/dist/bin.js.map +1 -0
  18. package/dist/index.d.ts +11 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +8 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/sandbox/deno.d.ts +13 -0
  23. package/dist/sandbox/deno.d.ts.map +1 -0
  24. package/dist/sandbox/deno.js +203 -0
  25. package/dist/sandbox/deno.js.map +1 -0
  26. package/dist/sandbox/index.d.ts +20 -0
  27. package/dist/sandbox/index.d.ts.map +1 -0
  28. package/dist/sandbox/index.js +46 -0
  29. package/dist/sandbox/index.js.map +1 -0
  30. package/dist/sandbox/isolate.d.ts +7 -0
  31. package/dist/sandbox/isolate.d.ts.map +1 -0
  32. package/dist/sandbox/isolate.js +100 -0
  33. package/dist/sandbox/isolate.js.map +1 -0
  34. package/dist/sandbox/policy.d.ts +7 -0
  35. package/dist/sandbox/policy.d.ts.map +1 -0
  36. package/dist/sandbox/policy.js +70 -0
  37. package/dist/sandbox/policy.js.map +1 -0
  38. package/dist/sandbox/types.d.ts +41 -0
  39. package/dist/sandbox/types.d.ts.map +1 -0
  40. package/dist/sandbox/types.js +2 -0
  41. package/dist/sandbox/types.js.map +1 -0
  42. package/dist/sdk/bindings.d.ts +10 -0
  43. package/dist/sdk/bindings.d.ts.map +1 -0
  44. package/dist/sdk/bindings.js +15 -0
  45. package/dist/sdk/bindings.js.map +1 -0
  46. package/dist/sdk/ecfr-client.d.ts +61 -0
  47. package/dist/sdk/ecfr-client.d.ts.map +1 -0
  48. package/dist/sdk/ecfr-client.js +45 -0
  49. package/dist/sdk/ecfr-client.js.map +1 -0
  50. package/dist/sdk/fr-client.d.ts +81 -0
  51. package/dist/sdk/fr-client.d.ts.map +1 -0
  52. package/dist/sdk/fr-client.js +77 -0
  53. package/dist/sdk/fr-client.js.map +1 -0
  54. package/dist/sdk/regs-client.d.ts +34 -0
  55. package/dist/sdk/regs-client.d.ts.map +1 -0
  56. package/dist/sdk/regs-client.js +44 -0
  57. package/dist/sdk/regs-client.js.map +1 -0
  58. package/dist/sdk/runtime.d.ts +21 -0
  59. package/dist/sdk/runtime.d.ts.map +1 -0
  60. package/dist/sdk/runtime.js +31 -0
  61. package/dist/sdk/runtime.js.map +1 -0
  62. package/dist/sdk/sources/corpus-loader.d.ts +6 -0
  63. package/dist/sdk/sources/corpus-loader.d.ts.map +1 -0
  64. package/dist/sdk/sources/corpus-loader.js +9 -0
  65. package/dist/sdk/sources/corpus-loader.js.map +1 -0
  66. package/dist/sdk/sources/ecfr.d.ts +3 -0
  67. package/dist/sdk/sources/ecfr.d.ts.map +1 -0
  68. package/dist/sdk/sources/ecfr.js +12 -0
  69. package/dist/sdk/sources/ecfr.js.map +1 -0
  70. package/dist/sdk/sources/fr.d.ts +3 -0
  71. package/dist/sdk/sources/fr.d.ts.map +1 -0
  72. package/dist/sdk/sources/fr.js +12 -0
  73. package/dist/sdk/sources/fr.js.map +1 -0
  74. package/dist/sdk/sources/index.d.ts +7 -0
  75. package/dist/sdk/sources/index.d.ts.map +1 -0
  76. package/dist/sdk/sources/index.js +25 -0
  77. package/dist/sdk/sources/index.js.map +1 -0
  78. package/dist/sdk/sources/regs.d.ts +3 -0
  79. package/dist/sdk/sources/regs.d.ts.map +1 -0
  80. package/dist/sdk/sources/regs.js +24 -0
  81. package/dist/sdk/sources/regs.js.map +1 -0
  82. package/dist/sdk/sources/source.d.ts +32 -0
  83. package/dist/sdk/sources/source.d.ts.map +1 -0
  84. package/dist/sdk/sources/source.js +2 -0
  85. package/dist/sdk/sources/source.js.map +1 -0
  86. package/dist/search/bm25.d.ts +25 -0
  87. package/dist/search/bm25.d.ts.map +1 -0
  88. package/dist/search/bm25.js +67 -0
  89. package/dist/search/bm25.js.map +1 -0
  90. package/dist/search/corpus.d.ts +24 -0
  91. package/dist/search/corpus.d.ts.map +1 -0
  92. package/dist/search/corpus.js +23 -0
  93. package/dist/search/corpus.js.map +1 -0
  94. package/dist/server/authz.d.ts +18 -0
  95. package/dist/server/authz.d.ts.map +1 -0
  96. package/dist/server/authz.js +42 -0
  97. package/dist/server/authz.js.map +1 -0
  98. package/dist/server/http.d.ts +21 -0
  99. package/dist/server/http.d.ts.map +1 -0
  100. package/dist/server/http.js +159 -0
  101. package/dist/server/http.js.map +1 -0
  102. package/dist/server/ipRateLimiter.d.ts +11 -0
  103. package/dist/server/ipRateLimiter.d.ts.map +1 -0
  104. package/dist/server/ipRateLimiter.js +27 -0
  105. package/dist/server/ipRateLimiter.js.map +1 -0
  106. package/dist/server/mcpServer.d.ts +15 -0
  107. package/dist/server/mcpServer.d.ts.map +1 -0
  108. package/dist/server/mcpServer.js +67 -0
  109. package/dist/server/mcpServer.js.map +1 -0
  110. package/dist/server/stdio.d.ts +3 -0
  111. package/dist/server/stdio.d.ts.map +1 -0
  112. package/dist/server/stdio.js +16 -0
  113. package/dist/server/stdio.js.map +1 -0
  114. package/dist/server/toolCatalog.d.ts +20 -0
  115. package/dist/server/toolCatalog.d.ts.map +1 -0
  116. package/dist/server/toolCatalog.js +29 -0
  117. package/dist/server/toolCatalog.js.map +1 -0
  118. package/dist/server/wellKnown.d.ts +16 -0
  119. package/dist/server/wellKnown.d.ts.map +1 -0
  120. package/dist/server/wellKnown.js +17 -0
  121. package/dist/server/wellKnown.js.map +1 -0
  122. package/dist/server/zodToJsonSchema.d.ts +7 -0
  123. package/dist/server/zodToJsonSchema.d.ts.map +1 -0
  124. package/dist/server/zodToJsonSchema.js +44 -0
  125. package/dist/server/zodToJsonSchema.js.map +1 -0
  126. package/dist/supervisor/index.d.ts +19 -0
  127. package/dist/supervisor/index.d.ts.map +1 -0
  128. package/dist/supervisor/index.js +22 -0
  129. package/dist/supervisor/index.js.map +1 -0
  130. package/dist/tools/describeSchema.d.ts +35 -0
  131. package/dist/tools/describeSchema.d.ts.map +1 -0
  132. package/dist/tools/describeSchema.js +14 -0
  133. package/dist/tools/describeSchema.js.map +1 -0
  134. package/dist/tools/execute.d.ts +33 -0
  135. package/dist/tools/execute.d.ts.map +1 -0
  136. package/dist/tools/execute.js +28 -0
  137. package/dist/tools/execute.js.map +1 -0
  138. package/dist/tools/searchApi.d.ts +27 -0
  139. package/dist/tools/searchApi.d.ts.map +1 -0
  140. package/dist/tools/searchApi.js +14 -0
  141. package/dist/tools/searchApi.js.map +1 -0
  142. package/dist/util/httpClient.d.ts +46 -0
  143. package/dist/util/httpClient.d.ts.map +1 -0
  144. package/dist/util/httpClient.js +139 -0
  145. package/dist/util/httpClient.js.map +1 -0
  146. package/dist/util/logger.d.ts +7 -0
  147. package/dist/util/logger.d.ts.map +1 -0
  148. package/dist/util/logger.js +19 -0
  149. package/dist/util/logger.js.map +1 -0
  150. package/dist/util/quotas.d.ts +13 -0
  151. package/dist/util/quotas.d.ts.map +1 -0
  152. package/dist/util/quotas.js +29 -0
  153. package/dist/util/quotas.js.map +1 -0
  154. package/dist/util/tokenBucket.d.ts +11 -0
  155. package/dist/util/tokenBucket.d.ts.map +1 -0
  156. package/dist/util/tokenBucket.js +30 -0
  157. package/dist/util/tokenBucket.js.map +1 -0
  158. package/package.json +95 -0
  159. package/schema/ecfr.json +148 -0
  160. package/schema/fr.json +194 -0
  161. package/schema/regs.json +67 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isolate.js","sourceRoot":"","sources":["../../src/sandbox/isolate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAYxC,KAAK,UAAU,OAAO;IACpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,aAAa,CAAoE,CAAC;IAC3G,MAAM,SAAS,GAAG,CAAC,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;IAC3G,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACvG,OAAO,SAAiC,CAAC;AAC3C,CAAC;AAED,MAAM,OAAO,aAAa;IACxB,IAAI,GAAG,SAAkB,CAAC;IAE1B,KAAK,CAAC,SAAS;QACb,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC;YAC5B,+DAA+D;YAC/D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;YACjD,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAoB,EAAE,GAAc;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,EAAE;gBACR,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACjE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;aACjC,CAAC;QACJ,CAAC;QAED,+DAA+D;QAC/D,MAAM,GAAG,GAAG,MAAM,OAAO,EAAS,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC;QACtE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;QAC5B,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAE3C,MAAM,IAAI,GAAa,EAAE,CAAC;QAE1B,qBAAqB;QACrB,MAAM,OAAO,CAAC,WAAW,CACvB;;;uGAGiG,EACjG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAC3C,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CACnC,CAAC;QAEF,iFAAiF;QACjF,8DAA8D;QAC9D,MAAM,OAAO,GAAG,KAAK,EAAE,OAAe,EAAE,IAAc,EAAE,IAAe,EAAE,EAAE;YACzE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,OAAO,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QACjD,CAAC,CAAC;QAEF,4EAA4E;QAC5E,wFAAwF;QACxF,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,OAAO,CAAC,WAAW,CACvB;;;;;;;;;;;;;;;;4BAgBsB,YAAY,+CAA+C,EACjF,CAAC,OAAO,CAAC,EACT,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CACnC,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,kBAAkB,IAAI,CAAC,IAAI,SAAS,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,IAAI,CAAC,SAAS,IAAI,MAAM;gBACjC,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;YACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC7E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,GAAiC,CAAC;YAC5C,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,IAAI;gBACJ,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE;gBACrF,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;aACjC,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ export declare const BANNED_GLOBALS: Set<string>;
2
+ export interface PolicyResult {
3
+ ok: boolean;
4
+ errors: string[];
5
+ }
6
+ export declare function preflight(code: string): PolicyResult;
7
+ //# sourceMappingURL=policy.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -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