@metriport/fhir-sdk 0.30.0-alpha.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.
- package/LICENSE +21 -0
- package/README.md +564 -0
- package/dist/__tests__/careplan.test.d.ts +2 -0
- package/dist/__tests__/careplan.test.d.ts.map +1 -0
- package/dist/__tests__/careplan.test.js +544 -0
- package/dist/__tests__/careplan.test.js.map +1 -0
- package/dist/__tests__/clinical-dates.test.d.ts +2 -0
- package/dist/__tests__/clinical-dates.test.d.ts.map +1 -0
- package/dist/__tests__/clinical-dates.test.js +341 -0
- package/dist/__tests__/clinical-dates.test.js.map +1 -0
- package/dist/__tests__/coding-utilities.test.d.ts +2 -0
- package/dist/__tests__/coding-utilities.test.d.ts.map +1 -0
- package/dist/__tests__/coding-utilities.test.js +482 -0
- package/dist/__tests__/coding-utilities.test.js.map +1 -0
- package/dist/__tests__/date-range-performance.test.d.ts +2 -0
- package/dist/__tests__/date-range-performance.test.d.ts.map +1 -0
- package/dist/__tests__/date-range-performance.test.js +218 -0
- package/dist/__tests__/date-range-performance.test.js.map +1 -0
- package/dist/__tests__/date-range-search.test.d.ts +2 -0
- package/dist/__tests__/date-range-search.test.d.ts.map +1 -0
- package/dist/__tests__/date-range-search.test.js +215 -0
- package/dist/__tests__/date-range-search.test.js.map +1 -0
- package/dist/__tests__/env-setup.d.ts +2 -0
- package/dist/__tests__/env-setup.d.ts.map +1 -0
- package/dist/__tests__/env-setup.js +37 -0
- package/dist/__tests__/env-setup.js.map +1 -0
- package/dist/__tests__/fhir-bundle-sdk-basic.test.d.ts +2 -0
- package/dist/__tests__/fhir-bundle-sdk-basic.test.d.ts.map +1 -0
- package/dist/__tests__/fhir-bundle-sdk-basic.test.js +19 -0
- package/dist/__tests__/fhir-bundle-sdk-basic.test.js.map +1 -0
- package/dist/__tests__/fhir-bundle-sdk.test.d.ts +2 -0
- package/dist/__tests__/fhir-bundle-sdk.test.d.ts.map +1 -0
- package/dist/__tests__/fhir-bundle-sdk.test.js +953 -0
- package/dist/__tests__/fhir-bundle-sdk.test.js.map +1 -0
- package/dist/__tests__/fixtures/fhir-bundles.d.ts +31 -0
- package/dist/__tests__/fixtures/fhir-bundles.d.ts.map +1 -0
- package/dist/__tests__/fixtures/fhir-bundles.js +487 -0
- package/dist/__tests__/fixtures/fhir-bundles.js.map +1 -0
- package/dist/__tests__/phase1-verification.test.d.ts +2 -0
- package/dist/__tests__/phase1-verification.test.d.ts.map +1 -0
- package/dist/__tests__/phase1-verification.test.js +141 -0
- package/dist/__tests__/phase1-verification.test.js.map +1 -0
- package/dist/__tests__/phase2-verification.test.d.ts +2 -0
- package/dist/__tests__/phase2-verification.test.d.ts.map +1 -0
- package/dist/__tests__/phase2-verification.test.js +234 -0
- package/dist/__tests__/phase2-verification.test.js.map +1 -0
- package/dist/__tests__/phase3-verification.test.d.ts +2 -0
- package/dist/__tests__/phase3-verification.test.d.ts.map +1 -0
- package/dist/__tests__/phase3-verification.test.js +121 -0
- package/dist/__tests__/phase3-verification.test.js.map +1 -0
- package/dist/__tests__/phase4-verification.test.d.ts +2 -0
- package/dist/__tests__/phase4-verification.test.d.ts.map +1 -0
- package/dist/__tests__/phase4-verification.test.js +168 -0
- package/dist/__tests__/phase4-verification.test.js.map +1 -0
- package/dist/__tests__/phase5-verification.test.d.ts +2 -0
- package/dist/__tests__/phase5-verification.test.d.ts.map +1 -0
- package/dist/__tests__/phase5-verification.test.js +397 -0
- package/dist/__tests__/phase5-verification.test.js.map +1 -0
- package/dist/__tests__/reverse-references.test.d.ts +2 -0
- package/dist/__tests__/reverse-references.test.d.ts.map +1 -0
- package/dist/__tests__/reverse-references.test.js +294 -0
- package/dist/__tests__/reverse-references.test.js.map +1 -0
- package/dist/__tests__/type-guards.test.d.ts +2 -0
- package/dist/__tests__/type-guards.test.d.ts.map +1 -0
- package/dist/__tests__/type-guards.test.js +163 -0
- package/dist/__tests__/type-guards.test.js.map +1 -0
- package/dist/clinical-dates.d.ts +26 -0
- package/dist/clinical-dates.d.ts.map +1 -0
- package/dist/clinical-dates.js +571 -0
- package/dist/clinical-dates.js.map +1 -0
- package/dist/fhir-bundle-sdk.d.ts +233 -0
- package/dist/fhir-bundle-sdk.d.ts.map +1 -0
- package/dist/fhir-bundle-sdk.js +545 -0
- package/dist/fhir-bundle-sdk.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/bundle-operations.d.ts +14 -0
- package/dist/internal/bundle-operations.d.ts.map +1 -0
- package/dist/internal/bundle-operations.js +55 -0
- package/dist/internal/bundle-operations.js.map +1 -0
- package/dist/internal/coding-systems.d.ts +48 -0
- package/dist/internal/coding-systems.d.ts.map +1 -0
- package/dist/internal/coding-systems.js +55 -0
- package/dist/internal/coding-systems.js.map +1 -0
- package/dist/internal/coding-utilities.d.ts +27 -0
- package/dist/internal/coding-utilities.d.ts.map +1 -0
- package/dist/internal/coding-utilities.js +297 -0
- package/dist/internal/coding-utilities.js.map +1 -0
- package/dist/internal/date-extraction.d.ts +12 -0
- package/dist/internal/date-extraction.d.ts.map +1 -0
- package/dist/internal/date-extraction.js +629 -0
- package/dist/internal/date-extraction.js.map +1 -0
- package/dist/internal/graph-traversal.d.ts +13 -0
- package/dist/internal/graph-traversal.d.ts.map +1 -0
- package/dist/internal/graph-traversal.js +89 -0
- package/dist/internal/graph-traversal.js.map +1 -0
- package/dist/internal/indexing.d.ts +17 -0
- package/dist/internal/indexing.d.ts.map +1 -0
- package/dist/internal/indexing.js +129 -0
- package/dist/internal/indexing.js.map +1 -0
- package/dist/internal/llm-context.d.ts +40 -0
- package/dist/internal/llm-context.d.ts.map +1 -0
- package/dist/internal/llm-context.js +214 -0
- package/dist/internal/llm-context.js.map +1 -0
- package/dist/internal/reference-resolution.d.ts +29 -0
- package/dist/internal/reference-resolution.d.ts.map +1 -0
- package/dist/internal/reference-resolution.js +338 -0
- package/dist/internal/reference-resolution.js.map +1 -0
- package/dist/internal/reference-utils.d.ts +26 -0
- package/dist/internal/reference-utils.d.ts.map +1 -0
- package/dist/internal/reference-utils.js +89 -0
- package/dist/internal/reference-utils.js.map +1 -0
- package/dist/internal/transparent-proxy.d.ts +12 -0
- package/dist/internal/transparent-proxy.d.ts.map +1 -0
- package/dist/internal/transparent-proxy.js +81 -0
- package/dist/internal/transparent-proxy.js.map +1 -0
- package/dist/internal/validation.d.ts +16 -0
- package/dist/internal/validation.d.ts.map +1 -0
- package/dist/internal/validation.js +45 -0
- package/dist/internal/validation.js.map +1 -0
- package/dist/type-guards.d.ts +212 -0
- package/dist/type-guards.d.ts.map +1 -0
- package/dist/type-guards.js +375 -0
- package/dist/type-guards.js.map +1 -0
- package/dist/types/coding-fields.d.ts +311 -0
- package/dist/types/coding-fields.d.ts.map +1 -0
- package/dist/types/coding-fields.js +3 -0
- package/dist/types/coding-fields.js.map +1 -0
- package/dist/types/sdk-types.d.ts +107 -0
- package/dist/types/sdk-types.d.ts.map +1 -0
- package/dist/types/sdk-types.js +17 -0
- package/dist/types/sdk-types.js.map +1 -0
- package/dist/types/smart-resources.d.ts +470 -0
- package/dist/types/smart-resources.d.ts.map +1 -0
- package/dist/types/smart-resources.js +249 -0
- package/dist/types/smart-resources.js.map +1 -0
- package/dist/utils/interval-tree/index.d.ts +87 -0
- package/dist/utils/interval-tree/index.d.ts.map +1 -0
- package/dist/utils/interval-tree/index.js +774 -0
- package/dist/utils/interval-tree/index.js.map +1 -0
- package/dist/utils/interval-tree/shallowequal/arrays.d.ts +3 -0
- package/dist/utils/interval-tree/shallowequal/arrays.d.ts.map +1 -0
- package/dist/utils/interval-tree/shallowequal/arrays.js +25 -0
- package/dist/utils/interval-tree/shallowequal/arrays.js.map +1 -0
- package/dist/utils/interval-tree/shallowequal/index.d.ts +6 -0
- package/dist/utils/interval-tree/shallowequal/index.d.ts.map +1 -0
- package/dist/utils/interval-tree/shallowequal/index.js +28 -0
- package/dist/utils/interval-tree/shallowequal/index.js.map +1 -0
- package/dist/utils/interval-tree/shallowequal/objects.d.ts +3 -0
- package/dist/utils/interval-tree/shallowequal/objects.d.ts.map +1 -0
- package/dist/utils/interval-tree/shallowequal/objects.js +28 -0
- package/dist/utils/interval-tree/shallowequal/objects.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getReferenceField = exports.isReferenceMethod = exports.REFERENCE_METHOD_MAPPING = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* IMPORTANT: For user-facing code, prefer specific Smart type aliases (SmartObservation,
|
|
6
|
+
* SmartCondition, etc.) defined in coding-fields.ts over the generic Smart<T> pattern.
|
|
7
|
+
*
|
|
8
|
+
* The specific types include CodeableConcept field overrides that enable coding system
|
|
9
|
+
* utilities (hasLoinc(), getIcd10Code(), etc.) to work correctly in TypeScript.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* // ✅ GOOD - Users get full TypeScript support for coding utilities
|
|
13
|
+
* getObservationById(id: string): SmartObservation | undefined
|
|
14
|
+
*
|
|
15
|
+
* // ❌ BAD - Users cannot access coding utilities without type assertions
|
|
16
|
+
* getObservationById(id: string): Smart<Observation> | undefined
|
|
17
|
+
*
|
|
18
|
+
* The generic Smart<T> should only be used internally or when the specific resource
|
|
19
|
+
* type is truly dynamic.
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Reference field mapping - maps reference method names to their field paths
|
|
23
|
+
*/
|
|
24
|
+
exports.REFERENCE_METHOD_MAPPING = {
|
|
25
|
+
Observation: {
|
|
26
|
+
getBasedOn: "basedOn",
|
|
27
|
+
getPartOf: "partOf",
|
|
28
|
+
getSubject: "subject",
|
|
29
|
+
getFocus: "focus",
|
|
30
|
+
getEncounter: "encounter",
|
|
31
|
+
getPerformers: "performer",
|
|
32
|
+
getSpecimen: "specimen",
|
|
33
|
+
getDevice: "device",
|
|
34
|
+
getHasMember: "hasMember",
|
|
35
|
+
getDerivedFrom: "derivedFrom",
|
|
36
|
+
},
|
|
37
|
+
Encounter: {
|
|
38
|
+
getSubject: "subject",
|
|
39
|
+
getEpisodeOfCare: "episodeOfCare",
|
|
40
|
+
getBasedOn: "basedOn",
|
|
41
|
+
getParticipants: "participant.individual",
|
|
42
|
+
getAppointment: "appointment",
|
|
43
|
+
getReasonReference: "reasonReference",
|
|
44
|
+
getAccount: "account",
|
|
45
|
+
getServiceProvider: "serviceProvider",
|
|
46
|
+
getPartOf: "partOf",
|
|
47
|
+
getHospitalizationOrigin: "hospitalization.origin",
|
|
48
|
+
getHospitalizationDestination: "hospitalization.destination",
|
|
49
|
+
getLocation: "location.location",
|
|
50
|
+
getDiagnosisCondition: "diagnosis.condition",
|
|
51
|
+
},
|
|
52
|
+
DiagnosticReport: {
|
|
53
|
+
getBasedOn: "basedOn",
|
|
54
|
+
getSubject: "subject",
|
|
55
|
+
getEncounter: "encounter",
|
|
56
|
+
getPerformers: "performer",
|
|
57
|
+
getResultsInterpreter: "resultsInterpreter",
|
|
58
|
+
getSpecimen: "specimen",
|
|
59
|
+
getResults: "result",
|
|
60
|
+
getImagingStudy: "imagingStudy",
|
|
61
|
+
getMediaLink: "media.link",
|
|
62
|
+
},
|
|
63
|
+
Patient: {
|
|
64
|
+
getGeneralPractitioners: "generalPractitioner",
|
|
65
|
+
getManagingOrganization: "managingOrganization",
|
|
66
|
+
getContactOrganization: "contact.organization",
|
|
67
|
+
getLinkOther: "link.other",
|
|
68
|
+
},
|
|
69
|
+
Practitioner: {
|
|
70
|
+
getQualificationIssuer: "qualification.issuer",
|
|
71
|
+
},
|
|
72
|
+
PractitionerRole: {
|
|
73
|
+
getPractitioner: "practitioner",
|
|
74
|
+
getOrganization: "organization",
|
|
75
|
+
getLocation: "location",
|
|
76
|
+
getHealthcareService: "healthcareService",
|
|
77
|
+
getEndpoint: "endpoint",
|
|
78
|
+
},
|
|
79
|
+
AllergyIntolerance: {
|
|
80
|
+
getPatient: "patient",
|
|
81
|
+
getEncounter: "encounter",
|
|
82
|
+
getRecorder: "recorder",
|
|
83
|
+
getAsserter: "asserter",
|
|
84
|
+
},
|
|
85
|
+
Condition: {
|
|
86
|
+
getSubject: "subject",
|
|
87
|
+
getEncounter: "encounter",
|
|
88
|
+
getRecorder: "recorder",
|
|
89
|
+
getAsserter: "asserter",
|
|
90
|
+
getStageAssessment: "stage.assessment",
|
|
91
|
+
getEvidenceDetail: "evidence.detail",
|
|
92
|
+
},
|
|
93
|
+
Organization: {
|
|
94
|
+
getPartOf: "partOf",
|
|
95
|
+
getEndpoint: "endpoint",
|
|
96
|
+
},
|
|
97
|
+
Location: {
|
|
98
|
+
getManagingOrganization: "managingOrganization",
|
|
99
|
+
getPartOf: "partOf",
|
|
100
|
+
getEndpoint: "endpoint",
|
|
101
|
+
},
|
|
102
|
+
Composition: {
|
|
103
|
+
getSubject: "subject",
|
|
104
|
+
getEncounter: "encounter",
|
|
105
|
+
getAuthors: "author",
|
|
106
|
+
getCustodian: "custodian",
|
|
107
|
+
getAttesterParty: "attester.party",
|
|
108
|
+
getRelatesToTarget: "relatesTo.targetReference",
|
|
109
|
+
getEventDetail: "event.detail",
|
|
110
|
+
getSectionAuthor: "section.author",
|
|
111
|
+
getSectionFocus: "section.focus",
|
|
112
|
+
getSectionEntry: "section.entry",
|
|
113
|
+
},
|
|
114
|
+
Coverage: {
|
|
115
|
+
getBeneficiary: "beneficiary",
|
|
116
|
+
getSubscriber: "subscriber",
|
|
117
|
+
getPayors: "payor",
|
|
118
|
+
getPolicyHolder: "policyHolder",
|
|
119
|
+
},
|
|
120
|
+
DocumentReference: {
|
|
121
|
+
getSubject: "subject",
|
|
122
|
+
getAuthors: "author",
|
|
123
|
+
getAuthenticator: "authenticator",
|
|
124
|
+
getCustodian: "custodian",
|
|
125
|
+
getRelatesToTarget: "relatesTo.target",
|
|
126
|
+
getContextEncounter: "context.encounter",
|
|
127
|
+
getContextSourcePatientInfo: "context.sourcePatientInfo",
|
|
128
|
+
getContextRelated: "context.related",
|
|
129
|
+
},
|
|
130
|
+
Immunization: {
|
|
131
|
+
getPatient: "patient",
|
|
132
|
+
getEncounter: "encounter",
|
|
133
|
+
getLocation: "location",
|
|
134
|
+
getManufacturer: "manufacturer",
|
|
135
|
+
getPerformers: "performer.actor",
|
|
136
|
+
getReasonReference: "reasonReference",
|
|
137
|
+
getProtocolAppliedAuthority: "protocolApplied.authority",
|
|
138
|
+
getReactionDetail: "reaction.detail",
|
|
139
|
+
},
|
|
140
|
+
Medication: {
|
|
141
|
+
getManufacturer: "manufacturer",
|
|
142
|
+
getIngredientItem: "ingredient.itemReference",
|
|
143
|
+
},
|
|
144
|
+
MedicationRequest: {
|
|
145
|
+
getReportedReference: "reportedReference",
|
|
146
|
+
getMedicationReference: "medicationReference",
|
|
147
|
+
getSubject: "subject",
|
|
148
|
+
getEncounter: "encounter",
|
|
149
|
+
getSupportingInformation: "supportingInformation",
|
|
150
|
+
getRequester: "requester",
|
|
151
|
+
getPerformer: "performer",
|
|
152
|
+
getRecorder: "recorder",
|
|
153
|
+
getReasonReference: "reasonReference",
|
|
154
|
+
getBasedOn: "basedOn",
|
|
155
|
+
getInsurance: "insurance",
|
|
156
|
+
getPriorPrescription: "priorPrescription",
|
|
157
|
+
getDetectedIssue: "detectedIssue",
|
|
158
|
+
getEventHistory: "eventHistory",
|
|
159
|
+
getDispenseRequestPerformer: "dispenseRequest.performer",
|
|
160
|
+
},
|
|
161
|
+
Procedure: {
|
|
162
|
+
getBasedOn: "basedOn",
|
|
163
|
+
getPartOf: "partOf",
|
|
164
|
+
getSubject: "subject",
|
|
165
|
+
getEncounter: "encounter",
|
|
166
|
+
getRecorder: "recorder",
|
|
167
|
+
getAsserter: "asserter",
|
|
168
|
+
getPerformers: "performer.actor",
|
|
169
|
+
getPerformerOnBehalfOf: "performer.onBehalfOf",
|
|
170
|
+
getLocation: "location",
|
|
171
|
+
getReasonReference: "reasonReference",
|
|
172
|
+
getReport: "report",
|
|
173
|
+
getComplicationDetail: "complicationDetail",
|
|
174
|
+
getFocalDeviceManipulated: "focalDevice.manipulated",
|
|
175
|
+
getUsedReference: "usedReference",
|
|
176
|
+
},
|
|
177
|
+
FamilyMemberHistory: {
|
|
178
|
+
getPatient: "patient",
|
|
179
|
+
},
|
|
180
|
+
MedicationAdministration: {
|
|
181
|
+
getSubject: "subject",
|
|
182
|
+
getContext: "context",
|
|
183
|
+
getPerformers: "performer.actor",
|
|
184
|
+
getMedicationReference: "medicationReference",
|
|
185
|
+
},
|
|
186
|
+
MedicationDispense: {
|
|
187
|
+
getSubject: "subject",
|
|
188
|
+
getContext: "context",
|
|
189
|
+
getPerformers: "performer.actor",
|
|
190
|
+
getMedicationReference: "medicationReference",
|
|
191
|
+
},
|
|
192
|
+
MedicationStatement: {
|
|
193
|
+
getSubject: "subject",
|
|
194
|
+
getContext: "context",
|
|
195
|
+
getInformationSource: "informationSource",
|
|
196
|
+
getMedicationReference: "medicationReference",
|
|
197
|
+
},
|
|
198
|
+
RelatedPerson: {
|
|
199
|
+
getPatient: "patient",
|
|
200
|
+
},
|
|
201
|
+
RiskAssessment: {
|
|
202
|
+
getSubject: "subject",
|
|
203
|
+
getEncounter: "encounter",
|
|
204
|
+
getPerformer: "performer",
|
|
205
|
+
},
|
|
206
|
+
ServiceRequest: {
|
|
207
|
+
getSubject: "subject",
|
|
208
|
+
getEncounter: "encounter",
|
|
209
|
+
getRequester: "requester",
|
|
210
|
+
getPerformers: "performer",
|
|
211
|
+
},
|
|
212
|
+
CarePlan: {
|
|
213
|
+
getBasedOn: "basedOn",
|
|
214
|
+
getReplaces: "replaces",
|
|
215
|
+
getPartOf: "partOf",
|
|
216
|
+
getSubject: "subject",
|
|
217
|
+
getEncounter: "encounter",
|
|
218
|
+
getAuthor: "author",
|
|
219
|
+
getContributor: "contributor",
|
|
220
|
+
getCareTeam: "careTeam",
|
|
221
|
+
getAddresses: "addresses",
|
|
222
|
+
getSupportingInfo: "supportingInfo",
|
|
223
|
+
getGoal: "goal",
|
|
224
|
+
getActivityReference: "activity.reference",
|
|
225
|
+
getActivityOutcomeReference: "activity.outcomeReference",
|
|
226
|
+
getActivityDetailReasonReference: "activity.detail.reasonReference",
|
|
227
|
+
getActivityDetailGoal: "activity.detail.goal",
|
|
228
|
+
getActivityDetailLocation: "activity.detail.location",
|
|
229
|
+
getActivityDetailPerformer: "activity.detail.performer",
|
|
230
|
+
getActivityDetailProductReference: "activity.detail.productReference",
|
|
231
|
+
},
|
|
232
|
+
};
|
|
233
|
+
/**
|
|
234
|
+
* Helper type to check if a method name is a valid reference method for a resource type
|
|
235
|
+
*/
|
|
236
|
+
function isReferenceMethod(methodName, resourceType) {
|
|
237
|
+
const mapping = exports.REFERENCE_METHOD_MAPPING[resourceType];
|
|
238
|
+
return mapping ? methodName in mapping : false;
|
|
239
|
+
}
|
|
240
|
+
exports.isReferenceMethod = isReferenceMethod;
|
|
241
|
+
/**
|
|
242
|
+
* Get the reference field path for a method name and resource type
|
|
243
|
+
*/
|
|
244
|
+
function getReferenceField(methodName, resourceType) {
|
|
245
|
+
const mapping = exports.REFERENCE_METHOD_MAPPING[resourceType];
|
|
246
|
+
return mapping ? mapping[methodName] : undefined;
|
|
247
|
+
}
|
|
248
|
+
exports.getReferenceField = getReferenceField;
|
|
249
|
+
//# sourceMappingURL=smart-resources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smart-resources.js","sourceRoot":"","sources":["../../src/types/smart-resources.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
export interface Interval<N extends number | bigint = number> {
|
|
2
|
+
readonly low: N;
|
|
3
|
+
readonly high: N;
|
|
4
|
+
}
|
|
5
|
+
export declare class Node<T extends Interval<N>, N extends number | bigint = number> {
|
|
6
|
+
intervalTree: IntervalTree<T, N>;
|
|
7
|
+
key: N;
|
|
8
|
+
max: N;
|
|
9
|
+
records: T[];
|
|
10
|
+
parent?: Node<T, N>;
|
|
11
|
+
height: number;
|
|
12
|
+
left?: Node<T, N>;
|
|
13
|
+
right?: Node<T, N>;
|
|
14
|
+
constructor(intervalTree: IntervalTree<T, N>, record: T);
|
|
15
|
+
getNodeHigh(): N;
|
|
16
|
+
updateHeight(): void;
|
|
17
|
+
updateMaxOfParents(): void;
|
|
18
|
+
private _updateMaxAfterRightRotate;
|
|
19
|
+
private _updateMaxAfterLeftRotate;
|
|
20
|
+
private _leftRotate;
|
|
21
|
+
private _rightRotate;
|
|
22
|
+
private _rebalance;
|
|
23
|
+
insert(record: T): void;
|
|
24
|
+
private _getOverlappingRecords;
|
|
25
|
+
search(low: N, high: N): T[];
|
|
26
|
+
searchExisting(low: N): Node<T, N> | undefined;
|
|
27
|
+
private _minValue;
|
|
28
|
+
remove(node: Node<T, N>): Node<T, N> | undefined;
|
|
29
|
+
}
|
|
30
|
+
export declare class IntervalTree<T extends Interval<N>, N extends number | bigint = number> {
|
|
31
|
+
root?: Node<T, N>;
|
|
32
|
+
count: number;
|
|
33
|
+
insert(record: T): boolean;
|
|
34
|
+
search(low: N, high: N): T[];
|
|
35
|
+
remove(record: T): boolean;
|
|
36
|
+
inOrder(): InOrder<T, N>;
|
|
37
|
+
reverseInOrder(): ReverseInOrder<T, N>;
|
|
38
|
+
preOrder(): PreOrder<T, N>;
|
|
39
|
+
}
|
|
40
|
+
export interface DataInterval<T, N extends number | bigint = number> extends Interval<N> {
|
|
41
|
+
data: T;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The default export just wraps the `IntervalTree`, while providing a simpler API. Check out the
|
|
45
|
+
* README for description on how to use each.
|
|
46
|
+
*/
|
|
47
|
+
export default class DataIntervalTree<T, N extends number | bigint = number> {
|
|
48
|
+
private tree;
|
|
49
|
+
insert(low: N, high: N, data: T): boolean;
|
|
50
|
+
remove(low: N, high: N, data: T): boolean;
|
|
51
|
+
search(low: N, high: N): T[];
|
|
52
|
+
inOrder(): InOrder<DataInterval<T, N>, N>;
|
|
53
|
+
reverseInOrder(): ReverseInOrder<DataInterval<T, N>, N>;
|
|
54
|
+
preOrder(): PreOrder<DataInterval<T, N>, N>;
|
|
55
|
+
get count(): number;
|
|
56
|
+
}
|
|
57
|
+
export declare class InOrder<T extends Interval<N>, N extends number | bigint = number> implements IterableIterator<T> {
|
|
58
|
+
private stack;
|
|
59
|
+
private currentNode?;
|
|
60
|
+
private i;
|
|
61
|
+
constructor(startNode?: Node<T, N>);
|
|
62
|
+
[Symbol.iterator](): this;
|
|
63
|
+
next(): IteratorResult<T>;
|
|
64
|
+
private push;
|
|
65
|
+
private pop;
|
|
66
|
+
}
|
|
67
|
+
export declare class ReverseInOrder<T extends Interval<N>, N extends number | bigint = number> implements IterableIterator<T> {
|
|
68
|
+
private stack;
|
|
69
|
+
private currentNode?;
|
|
70
|
+
private i;
|
|
71
|
+
constructor(startNode?: Node<T, N>);
|
|
72
|
+
[Symbol.iterator](): this;
|
|
73
|
+
next(): IteratorResult<T>;
|
|
74
|
+
private push;
|
|
75
|
+
private pop;
|
|
76
|
+
}
|
|
77
|
+
export declare class PreOrder<T extends Interval<N>, N extends number | bigint = number> implements IterableIterator<T> {
|
|
78
|
+
private stack;
|
|
79
|
+
private currentNode?;
|
|
80
|
+
private i;
|
|
81
|
+
constructor(startNode?: Node<T, N>);
|
|
82
|
+
[Symbol.iterator](): this;
|
|
83
|
+
next(): IteratorResult<T>;
|
|
84
|
+
private push;
|
|
85
|
+
private pop;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/interval-tree/index.ts"],"names":[],"mappings":"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"}
|