@closerepo/radar-reset-client 1.0.0 → 1.1.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/dist/index.d.ts +8 -5
- package/dist/index.js +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import { RadarResetExportV1 } from "@closerepo/radar-reset-contracts";
|
|
1
|
+
import { RadarResetExportV1, RadarResetExportV2 } from "@closerepo/radar-reset-contracts";
|
|
2
2
|
//#region src/index.d.ts
|
|
3
3
|
type RadarResetClientFetch = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
|
|
4
|
-
|
|
5
|
-
declare function buildRadarResetExport(options: {
|
|
4
|
+
interface RadarResetExportBuildOptions {
|
|
6
5
|
readonly fetcher?: RadarResetClientFetch;
|
|
7
6
|
readonly origin: string;
|
|
8
|
-
}
|
|
7
|
+
}
|
|
8
|
+
/** Builds the V1 analysis-window export from the Radar Core public API. */
|
|
9
|
+
declare function buildRadarResetExport(options: RadarResetExportBuildOptions): Promise<RadarResetExportV1>;
|
|
10
|
+
/** Builds the V2 full-history export from one coherent Core snapshot. */
|
|
11
|
+
declare function buildRadarResetExportV2(options: RadarResetExportBuildOptions): Promise<RadarResetExportV2>;
|
|
9
12
|
//#endregion
|
|
10
|
-
export { RadarResetClientFetch, buildRadarResetExport };
|
|
13
|
+
export { RadarResetClientFetch, buildRadarResetExport, buildRadarResetExportV2 };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{compareRadarResetActionDetailsV2 as e,parseRadarBankedResetGrantV1 as t,parseRadarResetActionDetailV1 as n,parseRadarResetAnalysisV1 as r,parseRadarResetExportV1 as i,parseRadarResetExportV2 as a,radarResetPublicDataLimits as o}from"@closerepo/radar-reset-contracts";const s=o.exportUtf8Bytes,c=o.analysis.actions;function l(e){try{return t(e)}catch(e){throw Error(`radar_banked_reset_grant_contract_invalid`,{cause:e})}}function u(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`${t}_invalid`);return e}function d(e,t){if(!Array.isArray(e))throw Error(`${t}_invalid`);return e}function f(e,t){if(typeof e!=`string`||e.length===0)throw Error(`${t}_invalid`);return e}function p(e){let t=u(e,`core_api_envelope`);if(t.contractVersion!==1||!(`data`in t))throw Error(`core_api_envelope_invalid`);if(!(`page`in t))return{data:t.data};let n=u(t.page,`core_api_page`);if(n.nextCursor!==null&&typeof n.nextCursor!=`string`)throw Error(`core_api_page_invalid`);return{data:t.data,page:{nextCursor:n.nextCursor}}}function m(e){let t=u(e,`core_analysis_snapshot`);return Object.freeze({analysisSnapshotId:f(t.analysisSnapshotId,`core_analysis_snapshot_id`),sourceWatermark:f(t.sourceWatermark,`core_analysis_source_watermark`)})}function h(e){let t;try{t=new URL(e)}catch{throw Error(`core_api_origin_invalid`)}if(t.protocol!==`http:`&&t.protocol!==`https:`||t.username.length>0||t.password.length>0||t.pathname!==`/`||t.search.length>0||t.hash.length>0)throw Error(`core_api_origin_invalid`);return t.origin}async function g(e,t){let n=e.headers.get(`content-length`);if(n!==null&&Number(n)>s){try{await e.body?.cancel()}catch{}throw Error(`core_api_response_too_large`)}if(e.body===null)throw Error(`core_api_json_invalid`);let r=e.body.getReader(),i=[],a=0;try{for(;;){if(t.aborted)throw Error(`core_api_timeout`);let e=()=>void 0,n=()=>{r.cancel().catch(()=>void 0),e(Error(`core_api_timeout`))},o=new Promise((t,n)=>{e=n});t.addEventListener(`abort`,n,{once:!0}),t.aborted&&n();let c;try{c=await Promise.race([r.read(),o])}finally{t.removeEventListener(`abort`,n)}if(c.done)break;if(a+=c.value.byteLength,a>s){try{await r.cancel()}catch{}throw Error(`core_api_response_too_large`)}i.push(c.value)}}finally{r.releaseLock()}let o=new Uint8Array(a),c=0;for(let e of i)o.set(e,c),c+=e.byteLength;return JSON.parse(new TextDecoder(`utf-8`,{fatal:!0}).decode(o))}async function _(e,t){let n,r=AbortSignal.timeout(25e3);try{n=await e(t,{headers:{accept:`application/json`},method:`GET`,signal:r})}catch(e){throw r.aborted?Error(`core_api_timeout`,{cause:e}):Error(`core_api_network_unavailable`,{cause:e})}if(!n.ok)throw Error(`core_api_http_error:${n.status}`);let i;try{i=await g(n,r)}catch(e){throw e instanceof Error&&(e.message===`core_api_response_too_large`||e.message===`core_api_timeout`)?e:r.aborted?Error(`core_api_timeout`,{cause:e}):Error(`core_api_json_invalid`,{cause:e})}return p(i)}function v(e){let t=u(e,`core_analysis_snapshot`),n=u(t.result,`core_analysis_result`),i=d(n.actions,`core_analysis_actions`).map(e=>{let{countEligibility:t,...n}=u(e,`core_analysis_action`);return n});try{return r({contractVersion:t.analysisContractVersion,analyzerContractVersion:t.analyzerContractVersion,generatedAt:t.generatedAt,analysisWindow:t.analysisWindow,result:{...n,actions:i}})}catch(e){throw Error(`radar_reset_analysis_contract_invalid`,{cause:e})}}function y(e){let t=u(e,`core_action_detail`),r=d(t.reasons,`core_action_reasons`).map(e=>{let t=u(e,`core_action_reason`);return{category:t.category,summary:t.summary,basis:t.basis,evidence:d(t.evidence,`core_action_reason_evidence`).map(e=>{let t=u(e,`core_action_reason_evidence_item`);return{excerpt:t.excerpt,sourceUrl:t.sourceUrl}})}}),i=d(t.noticeTimeline,`core_action_notice_timeline`).map(e=>{let t=u(e,`core_action_notice`);return{phase:t.phase,authoredAt:t.authoredAt,contentCompleteness:t.contentCompleteness,sourceText:t.sourceText,sourceUrl:t.sourceUrl}});try{return n({contractVersion:1,resetActionId:t.resetActionId,firstAnnouncedAt:t.firstAnnouncedAt,effectiveAt:t.effectiveAt,resetEffects:t.resetEffects,actionScope:t.actionScope,noticeCount:t.noticeCount,reasons:r,noticeTimeline:i})}catch(e){throw Error(`radar_reset_action_contract_invalid`,{cause:e})}}async function b(e,t,n){let r=new Set,i=new Set,a=null,s=0;do{if(s+=1,s>c)throw Error(`core_action_page_limit_exceeded`);let l=new URL(`/api/v1/codex-reset-actions`,t);l.searchParams.set(`limit`,`100`),n.from!==void 0&&l.searchParams.set(`from`,n.from),n.to!==void 0&&l.searchParams.set(`to`,n.to),a!==null&&l.searchParams.set(`cursor`,a);let p=await _(e,l),m=d(p.data,`core_action_list`);for(let e of m){let t=u(e,`core_action_summary`),n=f(t.resetActionId,`core_action_id`);if(f(t.firstAnnouncedAt,`core_action_first_announced_at`),r.has(n))throw Error(`core_action_identity_duplicate`);if(r.size>=o.analysis.actions)throw Error(`core_action_list_limit_exceeded`);r.add(n)}if(p.page===void 0)throw Error(`core_action_page_missing`);if(a=p.page.nextCursor,m.length===0&&a!==null)throw Error(`core_action_empty_page_with_cursor`);if(a!==null){if(i.has(a))throw Error(`core_action_cursor_cycle`);i.add(a)}}while(a!==null);return r}function x(e){return new Date(Date.parse(e)+1).toISOString()}async function S(e,t,n){let r=Array(e.length),i=0,a=!1,o,s=async()=>{for(;!a&&i<e.length;){let t=i;i+=1;try{r[t]=await n(e[t])}catch(e){a||(a=!0,o=e)}}};if(await Promise.all(Array.from({length:Math.min(t,e.length)},()=>s())),a)throw o;return r}async function C(t,n){let r=h(t.origin),o=t.fetcher??globalThis.fetch,s=await _(o,new URL(`/api/v1/codex-reset-analysis/latest`,r)),c=m(s.data),u=v(s.data),f=await b(o,r,n===1?{from:u.analysisWindow.startAt}:{to:x(u.analysisWindow.throughFirstAnnouncedAt)});for(let e of u.result.actions)if(!f.has(e.resetActionId))throw Error(`core_analysis_action_not_in_public_projection:${e.resetActionId}`);let p=await S(n===1?u.result.actions.map(e=>e.resetActionId):[...f],4,async e=>y((await _(o,new URL(`/api/v1/codex-reset-actions/${encodeURIComponent(e)}`,r))).data));n===1?p.sort((e,t)=>e.firstAnnouncedAt.localeCompare(t.firstAnnouncedAt)||e.resetActionId.localeCompare(t.resetActionId)):p.sort(e);let g=d((await _(o,new URL(`/api/v1/codex-reset-grants`,r))).data,`core_banked_reset_grants`).map(l),C=m((await _(o,new URL(`/api/v1/codex-reset-analysis/latest`,r))).data);if(C.analysisSnapshotId!==c.analysisSnapshotId||C.sourceWatermark!==c.sourceWatermark)throw Error(`core_analysis_changed_during_export`);try{return n===1?i({contractVersion:1,generatedAt:u.generatedAt,analysis:u,actions:p,bankedResetGrants:g}):a({contractVersion:2,generatedAt:u.generatedAt,analysis:u,actions:p,bankedResetGrants:g})}catch(e){throw Error(`radar_reset_export_contract_invalid`,{cause:e})}}async function w(e){return await C(e,1)}async function T(e){return await C(e,2)}export{w as buildRadarResetExport,T as buildRadarResetExportV2};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@closerepo/radar-reset-client",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"repository": {
|
|
@@ -22,6 +22,6 @@
|
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@closerepo/radar-reset-contracts": "1.
|
|
25
|
+
"@closerepo/radar-reset-contracts": "1.1.0"
|
|
26
26
|
}
|
|
27
27
|
}
|