@jlcpcb/core 0.1.0 → 0.2.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 (114) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/api/easyeda-community.d.ts +36 -0
  3. package/dist/api/easyeda-community.d.ts.map +1 -0
  4. package/dist/api/easyeda.d.ts +23 -0
  5. package/dist/api/easyeda.d.ts.map +1 -0
  6. package/dist/api/index.d.ts +7 -0
  7. package/dist/api/index.d.ts.map +1 -0
  8. package/dist/api/jlc.d.ts +41 -0
  9. package/dist/api/jlc.d.ts.map +1 -0
  10. package/dist/assets/search.html +528 -0
  11. package/dist/browser/index.d.ts +8 -0
  12. package/dist/browser/index.d.ts.map +1 -0
  13. package/dist/browser/kicad-renderer.d.ts +13 -0
  14. package/dist/browser/kicad-renderer.d.ts.map +1 -0
  15. package/dist/browser/sexpr-parser.d.ts +84 -0
  16. package/dist/browser/sexpr-parser.d.ts.map +1 -0
  17. package/dist/constants/design-rules.d.ts +34 -0
  18. package/dist/constants/design-rules.d.ts.map +1 -0
  19. package/dist/constants/footprints.d.ts +134 -0
  20. package/dist/constants/footprints.d.ts.map +1 -0
  21. package/dist/constants/index.d.ts +7 -0
  22. package/dist/constants/index.d.ts.map +1 -0
  23. package/dist/constants/kicad.d.ts +67 -0
  24. package/dist/constants/kicad.d.ts.map +1 -0
  25. package/dist/converter/category-router.d.ts +47 -0
  26. package/dist/converter/category-router.d.ts.map +1 -0
  27. package/dist/converter/footprint-mapper.d.ts +40 -0
  28. package/dist/converter/footprint-mapper.d.ts.map +1 -0
  29. package/dist/converter/footprint-mapper.test.d.ts +2 -0
  30. package/dist/converter/footprint-mapper.test.d.ts.map +1 -0
  31. package/dist/converter/footprint.d.ts +116 -0
  32. package/dist/converter/footprint.d.ts.map +1 -0
  33. package/dist/converter/global-lib-table.d.ts +29 -0
  34. package/dist/converter/global-lib-table.d.ts.map +1 -0
  35. package/dist/converter/index.d.ts +12 -0
  36. package/dist/converter/index.d.ts.map +1 -0
  37. package/dist/converter/lib-table.d.ts +61 -0
  38. package/dist/converter/lib-table.d.ts.map +1 -0
  39. package/dist/converter/svg-arc.d.ts +45 -0
  40. package/dist/converter/svg-arc.d.ts.map +1 -0
  41. package/dist/converter/symbol-templates.d.ts +34 -0
  42. package/dist/converter/symbol-templates.d.ts.map +1 -0
  43. package/dist/converter/symbol.d.ts +223 -0
  44. package/dist/converter/symbol.d.ts.map +1 -0
  45. package/dist/converter/value-normalizer.d.ts +33 -0
  46. package/dist/converter/value-normalizer.d.ts.map +1 -0
  47. package/dist/http/index.d.ts +5 -0
  48. package/dist/http/index.d.ts.map +1 -0
  49. package/dist/http/routes.d.ts +12 -0
  50. package/dist/http/routes.d.ts.map +1 -0
  51. package/dist/http/server.d.ts +18 -0
  52. package/dist/http/server.d.ts.map +1 -0
  53. package/dist/index.d.ts +13 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +9633 -0
  56. package/dist/parsers/easyeda-shapes.d.ts +115 -0
  57. package/dist/parsers/easyeda-shapes.d.ts.map +1 -0
  58. package/dist/parsers/http-client.d.ts +16 -0
  59. package/dist/parsers/http-client.d.ts.map +1 -0
  60. package/dist/parsers/index.d.ts +11 -0
  61. package/dist/parsers/index.d.ts.map +1 -0
  62. package/dist/parsers/utils.d.ts +17 -0
  63. package/dist/parsers/utils.d.ts.map +1 -0
  64. package/dist/services/component-service.d.ts +31 -0
  65. package/dist/services/component-service.d.ts.map +1 -0
  66. package/dist/services/fix-service.d.ts +40 -0
  67. package/dist/services/fix-service.d.ts.map +1 -0
  68. package/dist/services/index.d.ts +8 -0
  69. package/dist/services/index.d.ts.map +1 -0
  70. package/dist/services/library-service.d.ts +112 -0
  71. package/dist/services/library-service.d.ts.map +1 -0
  72. package/dist/types/component.d.ts +56 -0
  73. package/dist/types/component.d.ts.map +1 -0
  74. package/dist/types/easyeda-community.d.ts +74 -0
  75. package/dist/types/easyeda-community.d.ts.map +1 -0
  76. package/dist/types/easyeda.d.ts +326 -0
  77. package/dist/types/easyeda.d.ts.map +1 -0
  78. package/dist/types/index.d.ts +12 -0
  79. package/dist/types/index.d.ts.map +1 -0
  80. package/dist/types/jlc.d.ts +78 -0
  81. package/dist/types/jlc.d.ts.map +1 -0
  82. package/dist/types/kicad.d.ts +141 -0
  83. package/dist/types/kicad.d.ts.map +1 -0
  84. package/dist/types/mcp.d.ts +66 -0
  85. package/dist/types/mcp.d.ts.map +1 -0
  86. package/dist/types/project.d.ts +60 -0
  87. package/dist/types/project.d.ts.map +1 -0
  88. package/dist/utils/conversion.d.ts +59 -0
  89. package/dist/utils/conversion.d.ts.map +1 -0
  90. package/dist/utils/file-system.d.ts +59 -0
  91. package/dist/utils/file-system.d.ts.map +1 -0
  92. package/dist/utils/index.d.ts +8 -0
  93. package/dist/utils/index.d.ts.map +1 -0
  94. package/dist/utils/logger.d.ts +26 -0
  95. package/dist/utils/logger.d.ts.map +1 -0
  96. package/dist/utils/validation.d.ts +259 -0
  97. package/dist/utils/validation.d.ts.map +1 -0
  98. package/package.json +5 -3
  99. package/scripts/build-search-page.ts +68 -0
  100. package/src/assets/search-built.html +528 -0
  101. package/src/assets/search.html +458 -0
  102. package/src/browser/index.ts +389 -0
  103. package/src/browser/kicad-renderer.ts +813 -0
  104. package/src/browser/sexpr-parser.ts +333 -0
  105. package/src/converter/footprint-mapper.test.ts +159 -0
  106. package/src/converter/footprint-mapper.ts +42 -134
  107. package/src/converter/footprint.ts +208 -36
  108. package/src/converter/global-lib-table.ts +71 -0
  109. package/src/http/index.ts +5 -0
  110. package/src/http/routes.ts +266 -0
  111. package/src/http/server.ts +83 -0
  112. package/src/index.ts +3 -0
  113. package/src/parsers/easyeda-shapes.ts +2 -1
  114. package/src/services/library-service.ts +73 -22
package/CHANGELOG.md CHANGED
@@ -1,5 +1,38 @@
1
1
  # @jlcpcb/core
2
2
 
3
+ ## 0.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - cd6df88: Packages to select: @jlcpcb/cli (minor), @jlcpcb/core (minor)
8
+
9
+ Summary to paste:
10
+
11
+ Add `jlc easyeda install [uuid]` command for EasyEDA community components
12
+
13
+ CLI changes:
14
+ - New `jlc easyeda install [uuid]` subcommand with -p/--project, --with-3d, -f/--force options
15
+ - Dedicated EasyEDAInfoScreen and EasyEDADetailView showing community-specific fields
16
+ - Installation status detection: shows "R Regenerate" if installed, "Enter Install" if not
17
+ - "✓ Installed" indicator next to component title when already in library
18
+ - `jlc install` now rejects non-LCSC IDs with helpful redirect to `jlc easyeda install`
19
+
20
+ Core changes:
21
+ - Add `isEasyEDAInstalled()` method to check if component exists in EasyEDA library
22
+ - Register EasyEDA library in global KiCad tables with portable ${KICAD9_3RD_PARTY} paths
23
+ - Support global installation for community components (no projectPath required)
24
+ - Separate library names (EasyEDA vs EasyEDA-local) to avoid global/local collision
25
+
26
+ ## 0.1.1
27
+
28
+ ### Patch Changes
29
+
30
+ - **@jlcpcb/core:**
31
+ - Fix: Restrict built-in footprints to 2-pad passives only — prevents pin-flip issues on multi-pin components
32
+
33
+ **@jlcpcb/cli & @jlcpcb/mcp:**
34
+ - Updated dependencies
35
+
3
36
  ## 0.1.0
4
37
 
5
38
  ### Minor Changes
@@ -0,0 +1,36 @@
1
+ /**
2
+ * EasyEDA Community Library API client
3
+ * For searching and fetching user-contributed components
4
+ *
5
+ * Uses shared parsers from common/parsers for all shape types.
6
+ */
7
+ import type { EasyEDACommunitySearchParams, EasyEDACommunitySearchResult, EasyEDACommunityComponent } from '../types/index.js';
8
+ export declare class EasyEDACommunityClient {
9
+ /**
10
+ * Search the EasyEDA community library
11
+ */
12
+ search(params: EasyEDACommunitySearchParams): Promise<EasyEDACommunitySearchResult[]>;
13
+ /**
14
+ * Get full component details by UUID
15
+ */
16
+ getComponent(uuid: string): Promise<EasyEDACommunityComponent | null>;
17
+ /**
18
+ * Download 3D model for a component
19
+ */
20
+ get3DModel(uuid: string, format?: 'step' | 'obj'): Promise<Buffer | null>;
21
+ /**
22
+ * Parse search results from the API response
23
+ */
24
+ private parseSearchResults;
25
+ /**
26
+ * Parse a single search result item
27
+ */
28
+ private parseSearchItem;
29
+ /**
30
+ * Parse full component data from the API response
31
+ * Uses shared parsers for consistent shape parsing with LCSC client.
32
+ */
33
+ private parseComponent;
34
+ }
35
+ export declare const easyedaCommunityClient: EasyEDACommunityClient;
36
+ //# sourceMappingURL=easyeda-community.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"easyeda-community.d.ts","sourceRoot":"","sources":["../../src/api/easyeda-community.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,4BAA4B,EAC5B,4BAA4B,EAC5B,yBAAyB,EAC1B,MAAM,mBAAmB,CAAA;AAkB1B,qBAAa,sBAAsB;IACjC;;OAEG;IACG,MAAM,CACV,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,4BAA4B,EAAE,CAAC;IAgC1C;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAoB3E;;OAEG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAM,GAAG,KAAc,GAC9B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAczB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyB1B;;OAEG;IACH,OAAO,CAAC,eAAe;IA+BvB;;;OAGG;IACH,OAAO,CAAC,cAAc;CAgFvB;AAED,eAAO,MAAM,sBAAsB,wBAA+B,CAAA"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * EasyEDA API client for component library fetching
3
+ *
4
+ * Uses shared parsers from common/parsers for all shape types.
5
+ */
6
+ import type { EasyEDAComponentData } from '../types/index.js';
7
+ export declare class EasyEDAClient {
8
+ private userAgent;
9
+ /**
10
+ * Fetch component data from EasyEDA API
11
+ */
12
+ getComponentData(lcscPartNumber: string): Promise<EasyEDAComponentData | null>;
13
+ /**
14
+ * Download 3D model for a component
15
+ */
16
+ get3DModel(uuid: string, format?: 'step' | 'obj'): Promise<Buffer | null>;
17
+ /**
18
+ * Parse raw EasyEDA API response into structured data
19
+ */
20
+ private parseComponentData;
21
+ }
22
+ export declare const easyedaClient: EasyEDAClient;
23
+ //# sourceMappingURL=easyeda.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"easyeda.d.ts","sourceRoot":"","sources":["../../src/api/easyeda.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAc9D,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAA2B;IAE5C;;OAEG;IACG,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAoBpF;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,GAAG,KAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAavF;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAqF3B;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * API clients for JLC and EasyEDA
3
+ */
4
+ export { JLCClient, jlcClient } from './jlc.js';
5
+ export { EasyEDAClient, easyedaClient } from './easyeda.js';
6
+ export { EasyEDACommunityClient, easyedaCommunityClient } from './easyeda-community.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * JLC API client for component search and details
3
+ * Uses JLCPCB's parts library API which provides LCSC component data
4
+ */
5
+ import type { LCSCSearchOptions, ComponentSearchResult } from '../types/index.js';
6
+ export interface LCSCProduct {
7
+ productCode: string;
8
+ productModel: string;
9
+ brandNameEn: string;
10
+ encapStandard: string;
11
+ productPriceList: Array<{
12
+ ladder: number;
13
+ productPrice: number;
14
+ currencySymbol: string;
15
+ }>;
16
+ stockNumber: number;
17
+ productIntroEn: string;
18
+ }
19
+ export declare class JLCClient {
20
+ /**
21
+ * Search for components via JLCPCB API
22
+ */
23
+ search(query: string, options?: LCSCSearchOptions): Promise<ComponentSearchResult[]>;
24
+ /**
25
+ * Get stock and pricing information for a component
26
+ */
27
+ getStock(lcscPartNumber: string): Promise<{
28
+ stock: number;
29
+ priceBreaks: Array<{
30
+ quantity: number;
31
+ price: number;
32
+ }>;
33
+ }>;
34
+ /**
35
+ * Get detailed component information including attributes
36
+ * Used to enrich EasyEDA data with JLC-specific attributes
37
+ */
38
+ getComponentDetails(lcscPartNumber: string): Promise<ComponentSearchResult | null>;
39
+ }
40
+ export declare const jlcClient: JLCClient;
41
+ //# sourceMappingURL=jlc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jlc.d.ts","sourceRoot":"","sources":["../../src/api/jlc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AA6ClF,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,KAAK,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC,CAAC;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,SAAS;IACpB;;OAEG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,qBAAqB,EAAE,CAAC;IA+EnC;;OAEG;IACG,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;QAC9C,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACzD,CAAC;IAeF;;;OAGG;IACG,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;CAOzF;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}