@tscircuit/parts-engine 0.0.17 → 0.0.18
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 +21 -10
- package/dist/index.js +121 -17
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,25 +1,32 @@
|
|
|
1
|
-
import { PartsEngine } from '@tscircuit/props';
|
|
2
1
|
import * as zod from 'zod';
|
|
2
|
+
import { PartsEngine } from '@tscircuit/props';
|
|
3
3
|
|
|
4
|
-
type PlatformFetch = typeof fetch
|
|
4
|
+
type PlatformFetch = (input: Parameters<typeof fetch>[0], init?: Parameters<typeof fetch>[1]) => ReturnType<typeof fetch>;
|
|
5
5
|
type FetchPartCircuitJsonParams = {
|
|
6
6
|
supplierPartNumber?: string;
|
|
7
7
|
manufacturerPartNumber?: string;
|
|
8
8
|
platformFetch?: PlatformFetch;
|
|
9
9
|
};
|
|
10
|
-
type
|
|
10
|
+
type EasyEdaProxyConfig = {
|
|
11
|
+
proxyEndpointUrl: string;
|
|
12
|
+
headers?: Record<string, string>;
|
|
13
|
+
};
|
|
14
|
+
type JlcPcbPartsEngineOptions = {
|
|
11
15
|
platformFetch?: PlatformFetch;
|
|
16
|
+
easyEdaProxyConfig?: EasyEdaProxyConfig;
|
|
12
17
|
};
|
|
13
18
|
|
|
14
|
-
declare class
|
|
15
|
-
private readonly
|
|
16
|
-
|
|
19
|
+
declare class JlcPcbPartsEngine implements PartsEngine {
|
|
20
|
+
private readonly defaultPlatformFetch;
|
|
21
|
+
private readonly easyEdaProxyConfig;
|
|
22
|
+
constructor({ platformFetch: defaultPlatformFetch, easyEdaProxyConfig, }?: JlcPcbPartsEngineOptions);
|
|
23
|
+
private getEasyEdaPlatformFetch;
|
|
17
24
|
findPart({ sourceComponent, footprinterString, }: Parameters<PartsEngine["findPart"]>[0]): Promise<{
|
|
18
25
|
jlcpcb: string[];
|
|
19
26
|
} | {
|
|
20
27
|
jlcpcb?: undefined;
|
|
21
28
|
}>;
|
|
22
|
-
fetchPartCircuitJson({ supplierPartNumber, manufacturerPartNumber, platformFetch:
|
|
29
|
+
fetchPartCircuitJson({ supplierPartNumber, manufacturerPartNumber, platformFetch: platformFetchOverride, }: Parameters<NonNullable<PartsEngine["fetchPartCircuitJson"]>>[0]): Promise<({
|
|
23
30
|
type: "source_trace";
|
|
24
31
|
source_trace_id: string;
|
|
25
32
|
connected_source_port_ids: string[];
|
|
@@ -4256,7 +4263,11 @@ declare class JlcPartsEngine implements PartsEngine {
|
|
|
4256
4263
|
|
|
4257
4264
|
declare const cache: Map<string, any>;
|
|
4258
4265
|
|
|
4259
|
-
declare const
|
|
4260
|
-
|
|
4266
|
+
declare const getFetchWithEasyEdaProxy: ({ platformFetch: upstreamFetch, easyEdaProxyConfig, }: {
|
|
4267
|
+
platformFetch: PlatformFetch;
|
|
4268
|
+
easyEdaProxyConfig: EasyEdaProxyConfig;
|
|
4269
|
+
}) => PlatformFetch;
|
|
4270
|
+
|
|
4271
|
+
declare const jlcPartsEngine: JlcPcbPartsEngine;
|
|
4261
4272
|
|
|
4262
|
-
export { type
|
|
4273
|
+
export { type EasyEdaProxyConfig, type FetchPartCircuitJsonParams, JlcPcbPartsEngine, type JlcPcbPartsEngineOptions, type PlatformFetch, cache, getFetchWithEasyEdaProxy, jlcPartsEngine };
|
package/dist/index.js
CHANGED
|
@@ -10432,6 +10432,91 @@ var getJlcpcbPackageName = (footprint) => {
|
|
|
10432
10432
|
return getJlcPackageFromFootprinterString(footprint);
|
|
10433
10433
|
};
|
|
10434
10434
|
|
|
10435
|
+
// lib/jlc-parts-engine/getFetchWithEasyEdaProxy.ts
|
|
10436
|
+
var EASYEDA_API_ORIGIN = "https://easyeda.com";
|
|
10437
|
+
var METHODS_WITHOUT_BODY = /* @__PURE__ */ new Set(["GET", "HEAD"]);
|
|
10438
|
+
var getRequestUrl = (requestInput) => {
|
|
10439
|
+
if (typeof requestInput === "string") return requestInput;
|
|
10440
|
+
if (requestInput instanceof URL) return requestInput.toString();
|
|
10441
|
+
return requestInput.url;
|
|
10442
|
+
};
|
|
10443
|
+
var createMergedTargetRequest = (requestInput, requestInit) => {
|
|
10444
|
+
if (requestInput instanceof URL) {
|
|
10445
|
+
return new Request(requestInput.toString(), requestInit);
|
|
10446
|
+
}
|
|
10447
|
+
if (typeof requestInput === "string") {
|
|
10448
|
+
return new Request(requestInput, requestInit);
|
|
10449
|
+
}
|
|
10450
|
+
return new Request(requestInput, requestInit);
|
|
10451
|
+
};
|
|
10452
|
+
var isEasyEdaApiRequestUrl = (requestUrl) => requestUrl.startsWith(`${EASYEDA_API_ORIGIN}/api/`);
|
|
10453
|
+
var getFetchWithEasyEdaProxy = ({
|
|
10454
|
+
platformFetch: upstreamFetch,
|
|
10455
|
+
easyEdaProxyConfig
|
|
10456
|
+
}) => {
|
|
10457
|
+
return async (requestInput, requestInit) => {
|
|
10458
|
+
const targetRequestUrl = getRequestUrl(requestInput);
|
|
10459
|
+
if (!isEasyEdaApiRequestUrl(targetRequestUrl)) {
|
|
10460
|
+
return upstreamFetch(requestInput, requestInit);
|
|
10461
|
+
}
|
|
10462
|
+
const mergedTargetRequest = createMergedTargetRequest(
|
|
10463
|
+
requestInput,
|
|
10464
|
+
requestInit
|
|
10465
|
+
);
|
|
10466
|
+
const targetRequestHeaders = new Headers(mergedTargetRequest.headers);
|
|
10467
|
+
const proxyRequestHeaders = new Headers(targetRequestHeaders);
|
|
10468
|
+
proxyRequestHeaders.delete("origin");
|
|
10469
|
+
proxyRequestHeaders.delete("authority");
|
|
10470
|
+
proxyRequestHeaders.delete("host");
|
|
10471
|
+
proxyRequestHeaders.delete("referer");
|
|
10472
|
+
proxyRequestHeaders.delete("user-agent");
|
|
10473
|
+
proxyRequestHeaders.delete("cookie");
|
|
10474
|
+
proxyRequestHeaders.set("X-Target-Url", targetRequestUrl);
|
|
10475
|
+
proxyRequestHeaders.set(
|
|
10476
|
+
"X-Sender-Origin",
|
|
10477
|
+
targetRequestHeaders.get("origin") ?? ""
|
|
10478
|
+
);
|
|
10479
|
+
proxyRequestHeaders.set(
|
|
10480
|
+
"X-Sender-Host",
|
|
10481
|
+
targetRequestHeaders.get("host") ?? EASYEDA_API_ORIGIN
|
|
10482
|
+
);
|
|
10483
|
+
proxyRequestHeaders.set(
|
|
10484
|
+
"X-Sender-Referer",
|
|
10485
|
+
targetRequestHeaders.get("referer") ?? ""
|
|
10486
|
+
);
|
|
10487
|
+
proxyRequestHeaders.set(
|
|
10488
|
+
"X-Sender-User-Agent",
|
|
10489
|
+
targetRequestHeaders.get("user-agent") ?? ""
|
|
10490
|
+
);
|
|
10491
|
+
proxyRequestHeaders.set(
|
|
10492
|
+
"X-Sender-Cookie",
|
|
10493
|
+
targetRequestHeaders.get("cookie") ?? ""
|
|
10494
|
+
);
|
|
10495
|
+
proxyRequestHeaders.set(
|
|
10496
|
+
"authority",
|
|
10497
|
+
targetRequestHeaders.get("authority") ?? targetRequestHeaders.get("host") ?? ""
|
|
10498
|
+
);
|
|
10499
|
+
proxyRequestHeaders.set(
|
|
10500
|
+
"content-type",
|
|
10501
|
+
targetRequestHeaders.get("content-type") ?? ""
|
|
10502
|
+
);
|
|
10503
|
+
for (const [name, value] of Object.entries(
|
|
10504
|
+
easyEdaProxyConfig.headers ?? {}
|
|
10505
|
+
)) {
|
|
10506
|
+
proxyRequestHeaders.set(name, value);
|
|
10507
|
+
}
|
|
10508
|
+
const proxyRequestBody = METHODS_WITHOUT_BODY.has(
|
|
10509
|
+
mergedTargetRequest.method
|
|
10510
|
+
) ? void 0 : await mergedTargetRequest.clone().arrayBuffer();
|
|
10511
|
+
return upstreamFetch(easyEdaProxyConfig.proxyEndpointUrl, {
|
|
10512
|
+
method: mergedTargetRequest.method,
|
|
10513
|
+
headers: proxyRequestHeaders,
|
|
10514
|
+
body: proxyRequestBody,
|
|
10515
|
+
signal: requestInit?.signal
|
|
10516
|
+
});
|
|
10517
|
+
};
|
|
10518
|
+
};
|
|
10519
|
+
|
|
10435
10520
|
// lib/jlc-parts-engine/jlc-parts-cache.ts
|
|
10436
10521
|
var cache = /* @__PURE__ */ new Map();
|
|
10437
10522
|
var getJlcPartsCached = async (name, params) => {
|
|
@@ -10457,10 +10542,25 @@ var withBasicPartPreference = (parts) => {
|
|
|
10457
10542
|
};
|
|
10458
10543
|
|
|
10459
10544
|
// lib/jlc-parts-engine/JlcPartsEngine.ts
|
|
10460
|
-
var
|
|
10461
|
-
|
|
10462
|
-
|
|
10463
|
-
|
|
10545
|
+
var JlcPcbPartsEngine = class {
|
|
10546
|
+
defaultPlatformFetch;
|
|
10547
|
+
easyEdaProxyConfig;
|
|
10548
|
+
constructor({
|
|
10549
|
+
platformFetch: defaultPlatformFetch,
|
|
10550
|
+
easyEdaProxyConfig
|
|
10551
|
+
} = {}) {
|
|
10552
|
+
this.defaultPlatformFetch = defaultPlatformFetch;
|
|
10553
|
+
this.easyEdaProxyConfig = easyEdaProxyConfig;
|
|
10554
|
+
}
|
|
10555
|
+
getEasyEdaPlatformFetch(platformFetchOverride) {
|
|
10556
|
+
const resolvedPlatformFetch = platformFetchOverride ?? this.defaultPlatformFetch ?? globalThis.fetch;
|
|
10557
|
+
if (!this.easyEdaProxyConfig) {
|
|
10558
|
+
return resolvedPlatformFetch;
|
|
10559
|
+
}
|
|
10560
|
+
return getFetchWithEasyEdaProxy({
|
|
10561
|
+
platformFetch: resolvedPlatformFetch,
|
|
10562
|
+
easyEdaProxyConfig: this.easyEdaProxyConfig
|
|
10563
|
+
});
|
|
10464
10564
|
}
|
|
10465
10565
|
async findPart({
|
|
10466
10566
|
sourceComponent,
|
|
@@ -10613,32 +10713,36 @@ var JlcPartsEngine = class {
|
|
|
10613
10713
|
async fetchPartCircuitJson({
|
|
10614
10714
|
supplierPartNumber,
|
|
10615
10715
|
manufacturerPartNumber,
|
|
10616
|
-
platformFetch:
|
|
10716
|
+
platformFetch: platformFetchOverride
|
|
10617
10717
|
}) {
|
|
10618
|
-
const
|
|
10619
|
-
|
|
10620
|
-
|
|
10718
|
+
const easyEdaPlatformFetch = this.getEasyEdaPlatformFetch(
|
|
10719
|
+
platformFetchOverride
|
|
10720
|
+
);
|
|
10721
|
+
let resolvedSupplierPartNumber = supplierPartNumber;
|
|
10722
|
+
if (!resolvedSupplierPartNumber && manufacturerPartNumber) {
|
|
10621
10723
|
const { components } = await getJlcPartsCached("components", {
|
|
10622
10724
|
search: manufacturerPartNumber
|
|
10623
10725
|
});
|
|
10624
|
-
|
|
10726
|
+
resolvedSupplierPartNumber = components?.[0] ? `C${components[0].lcsc}` : void 0;
|
|
10625
10727
|
}
|
|
10626
|
-
if (!
|
|
10627
|
-
const rawEasyEdaJson = await fetchEasyEDAComponent(
|
|
10628
|
-
|
|
10629
|
-
|
|
10728
|
+
if (!resolvedSupplierPartNumber) return void 0;
|
|
10729
|
+
const rawEasyEdaJson = await fetchEasyEDAComponent(
|
|
10730
|
+
resolvedSupplierPartNumber,
|
|
10731
|
+
{
|
|
10732
|
+
fetch: easyEdaPlatformFetch
|
|
10733
|
+
}
|
|
10734
|
+
);
|
|
10630
10735
|
const parsed = EasyEdaJsonSchema.parse(rawEasyEdaJson);
|
|
10631
10736
|
return convertEasyEdaJsonToCircuitJson(parsed);
|
|
10632
10737
|
}
|
|
10633
10738
|
};
|
|
10634
10739
|
|
|
10635
10740
|
// lib/jlc-parts-engine/index.ts
|
|
10636
|
-
var
|
|
10637
|
-
var jlcPartsEngine = new JlcPartsEngine();
|
|
10741
|
+
var jlcPartsEngine = new JlcPcbPartsEngine();
|
|
10638
10742
|
export {
|
|
10639
|
-
|
|
10743
|
+
JlcPcbPartsEngine,
|
|
10640
10744
|
cache,
|
|
10641
|
-
|
|
10745
|
+
getFetchWithEasyEdaProxy,
|
|
10642
10746
|
jlcPartsEngine
|
|
10643
10747
|
};
|
|
10644
10748
|
//# sourceMappingURL=index.js.map
|