@wafertools/wafermap 0.21.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.
Files changed (138) hide show
  1. package/CHANGELOG.md +751 -0
  2. package/LICENSE +21 -0
  3. package/README.md +79 -0
  4. package/dist/index.d.ts +4 -0
  5. package/dist/index.js +1 -0
  6. package/dist/packages/canvas-adapter/canvasTheme.d.ts +28 -0
  7. package/dist/packages/canvas-adapter/canvasTheme.js +1 -0
  8. package/dist/packages/canvas-adapter/charts/barPanel.d.ts +52 -0
  9. package/dist/packages/canvas-adapter/charts/barPanel.js +1 -0
  10. package/dist/packages/canvas-adapter/charts/binCluster.d.ts +17 -0
  11. package/dist/packages/canvas-adapter/charts/binCluster.js +1 -0
  12. package/dist/packages/canvas-adapter/charts/boxplot.d.ts +45 -0
  13. package/dist/packages/canvas-adapter/charts/boxplot.js +1 -0
  14. package/dist/packages/canvas-adapter/charts/capability.d.ts +41 -0
  15. package/dist/packages/canvas-adapter/charts/capability.js +1 -0
  16. package/dist/packages/canvas-adapter/charts/chartShell.d.ts +156 -0
  17. package/dist/packages/canvas-adapter/charts/chartShell.js +1 -0
  18. package/dist/packages/canvas-adapter/charts/correlation.d.ts +35 -0
  19. package/dist/packages/canvas-adapter/charts/correlation.js +1 -0
  20. package/dist/packages/canvas-adapter/charts/histogram.d.ts +30 -0
  21. package/dist/packages/canvas-adapter/charts/histogram.js +1 -0
  22. package/dist/packages/canvas-adapter/charts/index.d.ts +16 -0
  23. package/dist/packages/canvas-adapter/charts/index.js +1 -0
  24. package/dist/packages/canvas-adapter/charts/palette.d.ts +26 -0
  25. package/dist/packages/canvas-adapter/charts/palette.js +1 -0
  26. package/dist/packages/canvas-adapter/charts/regionYieldDiagram.d.ts +18 -0
  27. package/dist/packages/canvas-adapter/charts/regionYieldDiagram.js +1 -0
  28. package/dist/packages/canvas-adapter/charts/scatter.d.ts +37 -0
  29. package/dist/packages/canvas-adapter/charts/scatter.js +1 -0
  30. package/dist/packages/canvas-adapter/icons.d.ts +2 -0
  31. package/dist/packages/canvas-adapter/icons.js +42 -0
  32. package/dist/packages/canvas-adapter/index.d.ts +12 -0
  33. package/dist/packages/canvas-adapter/index.js +1 -0
  34. package/dist/packages/canvas-adapter/insightsTab.d.ts +76 -0
  35. package/dist/packages/canvas-adapter/insightsTab.js +1 -0
  36. package/dist/packages/canvas-adapter/metadataBadge.d.ts +26 -0
  37. package/dist/packages/canvas-adapter/metadataBadge.js +1 -0
  38. package/dist/packages/canvas-adapter/renderWaferGallery.d.ts +181 -0
  39. package/dist/packages/canvas-adapter/renderWaferGallery.js +20 -0
  40. package/dist/packages/canvas-adapter/renderWaferMap.d.ts +316 -0
  41. package/dist/packages/canvas-adapter/renderWaferMap.js +1 -0
  42. package/dist/packages/canvas-adapter/summaryPanel.d.ts +262 -0
  43. package/dist/packages/canvas-adapter/summaryPanel.js +3 -0
  44. package/dist/packages/canvas-adapter/toCanvas.d.ts +106 -0
  45. package/dist/packages/canvas-adapter/toCanvas.js +1 -0
  46. package/dist/packages/canvas-adapter/toolbar.d.ts +496 -0
  47. package/dist/packages/canvas-adapter/toolbar.js +9 -0
  48. package/dist/packages/canvas-adapter/userGuideHtml.d.ts +2 -0
  49. package/dist/packages/canvas-adapter/userGuideHtml.js +968 -0
  50. package/dist/packages/canvas-adapter/version.d.ts +3 -0
  51. package/dist/packages/canvas-adapter/version.js +1 -0
  52. package/dist/packages/core/aggregates.d.ts +54 -0
  53. package/dist/packages/core/aggregates.js +1 -0
  54. package/dist/packages/core/classify.d.ts +24 -0
  55. package/dist/packages/core/classify.js +1 -0
  56. package/dist/packages/core/dies.d.ts +92 -0
  57. package/dist/packages/core/dies.js +1 -0
  58. package/dist/packages/core/index.d.ts +13 -0
  59. package/dist/packages/core/index.js +1 -0
  60. package/dist/packages/core/inference/grid.d.ts +35 -0
  61. package/dist/packages/core/inference/grid.js +1 -0
  62. package/dist/packages/core/inference/index.d.ts +7 -0
  63. package/dist/packages/core/inference/index.js +1 -0
  64. package/dist/packages/core/inference/pitch.d.ts +26 -0
  65. package/dist/packages/core/inference/pitch.js +1 -0
  66. package/dist/packages/core/inference/wafer.d.ts +30 -0
  67. package/dist/packages/core/inference/wafer.js +1 -0
  68. package/dist/packages/core/metadata.d.ts +31 -0
  69. package/dist/packages/core/metadata.js +1 -0
  70. package/dist/packages/core/probe.d.ts +16 -0
  71. package/dist/packages/core/probe.js +1 -0
  72. package/dist/packages/core/reticle.d.ts +68 -0
  73. package/dist/packages/core/reticle.js +1 -0
  74. package/dist/packages/core/transforms.d.ts +142 -0
  75. package/dist/packages/core/transforms.js +1 -0
  76. package/dist/packages/core/utils.d.ts +60 -0
  77. package/dist/packages/core/utils.js +1 -0
  78. package/dist/packages/core/wafer.d.ts +45 -0
  79. package/dist/packages/core/wafer.js +1 -0
  80. package/dist/packages/renderer/buildView.d.ts +420 -0
  81. package/dist/packages/renderer/buildView.js +1 -0
  82. package/dist/packages/renderer/buildWaferMap.d.ts +543 -0
  83. package/dist/packages/renderer/buildWaferMap.js +1 -0
  84. package/dist/packages/renderer/colorMap.d.ts +46 -0
  85. package/dist/packages/renderer/colorMap.js +1 -0
  86. package/dist/packages/renderer/colorSchemes.d.ts +40 -0
  87. package/dist/packages/renderer/colorSchemes.js +1 -0
  88. package/dist/packages/renderer/fmt.d.ts +30 -0
  89. package/dist/packages/renderer/fmt.js +1 -0
  90. package/dist/packages/renderer/index.d.ts +7 -0
  91. package/dist/packages/renderer/index.js +1 -0
  92. package/dist/packages/stats/analyzeWaferLot.d.ts +5 -0
  93. package/dist/packages/stats/analyzeWaferLot.js +1 -0
  94. package/dist/packages/stats/analyzeWaferMap.d.ts +13 -0
  95. package/dist/packages/stats/analyzeWaferMap.js +1 -0
  96. package/dist/packages/stats/binPareto.d.ts +49 -0
  97. package/dist/packages/stats/binPareto.js +1 -0
  98. package/dist/packages/stats/boxplot.d.ts +39 -0
  99. package/dist/packages/stats/boxplot.js +1 -0
  100. package/dist/packages/stats/capability.d.ts +55 -0
  101. package/dist/packages/stats/capability.js +1 -0
  102. package/dist/packages/stats/clusterDetection.d.ts +18 -0
  103. package/dist/packages/stats/clusterDetection.js +1 -0
  104. package/dist/packages/stats/correlation.d.ts +55 -0
  105. package/dist/packages/stats/correlation.js +1 -0
  106. package/dist/packages/stats/facets.d.ts +74 -0
  107. package/dist/packages/stats/facets.js +1 -0
  108. package/dist/packages/stats/filterFindings.d.ts +9 -0
  109. package/dist/packages/stats/filterFindings.js +1 -0
  110. package/dist/packages/stats/findingsNarrative.d.ts +3 -0
  111. package/dist/packages/stats/findingsNarrative.js +1 -0
  112. package/dist/packages/stats/histogram.d.ts +42 -0
  113. package/dist/packages/stats/histogram.js +1 -0
  114. package/dist/packages/stats/index.d.ts +27 -0
  115. package/dist/packages/stats/index.js +1 -0
  116. package/dist/packages/stats/math.d.ts +10 -0
  117. package/dist/packages/stats/math.js +1 -0
  118. package/dist/packages/stats/patternClassification.d.ts +107 -0
  119. package/dist/packages/stats/patternClassification.js +1 -0
  120. package/dist/packages/stats/regions.d.ts +57 -0
  121. package/dist/packages/stats/regions.js +1 -0
  122. package/dist/packages/stats/renderFindingsReport.d.ts +7 -0
  123. package/dist/packages/stats/renderFindingsReport.js +41 -0
  124. package/dist/packages/stats/renderSummaryReport.d.ts +60 -0
  125. package/dist/packages/stats/renderSummaryReport.js +68 -0
  126. package/dist/packages/stats/reportHtml.d.ts +42 -0
  127. package/dist/packages/stats/reportHtml.js +301 -0
  128. package/dist/packages/stats/scatter.d.ts +24 -0
  129. package/dist/packages/stats/scatter.js +1 -0
  130. package/dist/packages/stats/types.d.ts +269 -0
  131. package/dist/packages/stats/types.js +1 -0
  132. package/dist/packages/stats/yield.d.ts +56 -0
  133. package/dist/packages/stats/yield.js +1 -0
  134. package/dist/packages/worker/index.d.ts +44 -0
  135. package/dist/packages/worker/index.js +1 -0
  136. package/dist/packages/worker/wafermap.worker.d.ts +44 -0
  137. package/dist/packages/worker/wafermap.worker.js +1 -0
  138. package/package.json +122 -0
@@ -0,0 +1,44 @@
1
+ import type { WaferMapInput, WaferMapResult } from '../renderer/buildWaferMap.js';
2
+ import type { AnalyzeWaferMapOptions, LotStatsSummary, StatsSummary } from '../stats/index.js';
3
+ export interface WafermapWorker {
4
+ /** Run buildWaferMap in the worker thread. Returns a promise that resolves with the result. */
5
+ run(input: WaferMapInput): Promise<WaferMapResult>;
6
+ /** Run analyzeWaferMap (and optionally analyzeWaferLot) in the worker thread. */
7
+ runAnalysis(results: WaferMapResult[], options: AnalyzeWaferMapOptions, hasMultiWafer: boolean): Promise<{
8
+ waferSummaries: StatsSummary[];
9
+ lotSummary: LotStatsSummary | null;
10
+ }>;
11
+ /**
12
+ * Build and analyse in a single round-trip. The built `WaferMapResult`s stay
13
+ * in the worker for analysis instead of being sent out and cloned back in, so
14
+ * the large result objects cross the worker boundary only once (out), not three
15
+ * times. Prefer this over `run` + `runAnalysis` when you need both.
16
+ */
17
+ runWithAnalysis(inputs: WaferMapInput[], options: AnalyzeWaferMapOptions, hasMultiWafer: boolean): Promise<{
18
+ results: WaferMapResult[];
19
+ waferSummaries: StatsSummary[];
20
+ lotSummary: LotStatsSummary | null;
21
+ }>;
22
+ /** Terminate the underlying Worker. Call when the worker is no longer needed. */
23
+ terminate(): void;
24
+ }
25
+ /**
26
+ * Creates a wrapper around a `wafermap.worker.js` Web Worker.
27
+ *
28
+ * Pass the worker URL (or a pre-constructed Worker instance) — the worker
29
+ * script must be the compiled `wafermap.worker.js` served from your build
30
+ * output.
31
+ *
32
+ * @example
33
+ * // With a bundler (Vite, webpack…)
34
+ * import workerUrl from '@wafertools/wafermap/worker-script?url';
35
+ * const worker = createWafermapWorker(new Worker(workerUrl, { type: 'module' }));
36
+ *
37
+ * @example
38
+ * // Plain script tag / CDN
39
+ * const worker = createWafermapWorker(
40
+ * new Worker('/dist/wafermap.worker.js', { type: 'module' })
41
+ * );
42
+ */
43
+ export declare function createWafermapWorker(worker: Worker): WafermapWorker;
44
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ export function createWafermapWorker(n){let i=0;const s=new Map;return n.onmessage=t=>{const e=t.data;if(e.type==="pong")return;const r=s.get(e.id);r&&(s.delete(e.id),e.type==="error"?r.reject(new Error(e.message)):e.type==="result"?r.resolve(e.result):e.type==="analyzed"?r.resolve({waferSummaries:e.waferSummaries,lotSummary:e.lotSummary}):e.type==="resultWithAnalysis"&&r.resolve({results:e.results,waferSummaries:e.waferSummaries,lotSummary:e.lotSummary}))},n.onerror=t=>{const e=new Error(t.message??"Worker error");for(const r of s.values())r.reject(e);s.clear()},{run(t){return new Promise((e,r)=>{const a=i++;s.set(a,{resolve:e,reject:r}),n.postMessage({type:"run",id:a,input:t})})},runAnalysis(t,e,r){return new Promise((a,l)=>{const o=i++;s.set(o,{resolve:a,reject:l}),n.postMessage({type:"analyze",id:o,results:t,options:e,hasMultiWafer:r})})},runWithAnalysis(t,e,r){return new Promise((a,l)=>{const o=i++;s.set(o,{resolve:a,reject:l}),n.postMessage({type:"runWithAnalysis",id:o,inputs:t,options:e,hasMultiWafer:r})})},terminate(){n.terminate();const t=new Error("Worker terminated");for(const e of s.values())e.reject(t);s.clear()}}}
@@ -0,0 +1,44 @@
1
+ import type { WaferMapInput, WaferMapResult } from '../renderer/buildWaferMap.js';
2
+ import type { AnalyzeWaferMapOptions, StatsSummary, LotStatsSummary } from '../stats/index.js';
3
+ export type WorkerRequest = {
4
+ type: 'run';
5
+ id: number;
6
+ input: WaferMapInput;
7
+ } | {
8
+ type: 'analyze';
9
+ id: number;
10
+ results: WaferMapResult[];
11
+ options: AnalyzeWaferMapOptions;
12
+ hasMultiWafer: boolean;
13
+ } | {
14
+ type: 'runWithAnalysis';
15
+ id: number;
16
+ inputs: WaferMapInput[];
17
+ options: AnalyzeWaferMapOptions;
18
+ hasMultiWafer: boolean;
19
+ } | {
20
+ type: 'ping';
21
+ };
22
+ export type WorkerResponse = {
23
+ type: 'result';
24
+ id: number;
25
+ result: WaferMapResult;
26
+ } | {
27
+ type: 'analyzed';
28
+ id: number;
29
+ waferSummaries: StatsSummary[];
30
+ lotSummary: LotStatsSummary | null;
31
+ } | {
32
+ type: 'resultWithAnalysis';
33
+ id: number;
34
+ results: WaferMapResult[];
35
+ waferSummaries: StatsSummary[];
36
+ lotSummary: LotStatsSummary | null;
37
+ } | {
38
+ type: 'error';
39
+ id: number;
40
+ message: string;
41
+ } | {
42
+ type: 'pong';
43
+ };
44
+ //# sourceMappingURL=wafermap.worker.d.ts.map
@@ -0,0 +1 @@
1
+ import{buildWaferMap as o}from"../renderer/buildWaferMap.js";import{analyzeWaferMap as i,analyzeWaferLot as n}from"../stats/index.js";self.onmessage=p=>{const e=p.data;if(e.type==="ping"){self.postMessage({type:"pong"});return}if(e.type==="run")try{const s=o(e.input);self.postMessage({type:"result",id:e.id,result:s})}catch(s){const t=s instanceof Error?s.message:String(s);self.postMessage({type:"error",id:e.id,message:t})}if(e.type==="analyze")try{const s=e.results.map(r=>i(r,e.options)),t=e.hasMultiWafer?n(e.results,{...e.options,perWaferSummaries:s}):null;self.postMessage({type:"analyzed",id:e.id,waferSummaries:s,lotSummary:t})}catch(s){const t=s instanceof Error?s.message:String(s);self.postMessage({type:"error",id:e.id,message:t})}if(e.type==="runWithAnalysis")try{const s=e.inputs.map(a=>o(a)),t=s.map(a=>i(a,e.options)),r=e.hasMultiWafer?n(s,{...e.options,perWaferSummaries:t}):null;self.postMessage({type:"resultWithAnalysis",id:e.id,results:s,waferSummaries:t,lotSummary:r})}catch(s){const t=s instanceof Error?s.message:String(s);self.postMessage({type:"error",id:e.id,message:t})}};
package/package.json ADDED
@@ -0,0 +1,122 @@
1
+ {
2
+ "name": "@wafertools/wafermap",
3
+ "version": "0.21.1",
4
+ "description": "Interactive wafer map visualization and yield analysis for semiconductor test data. Hard bins, soft bins, test values, retests, edge exclusion, reticle overlays, spatial statistics, failure clustering, and lot-level trend analysis — pure ES modules, no runtime dependencies, no server required.",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "author": {
8
+ "name": "Paul Robins",
9
+ "url": "https://wafertools.github.io/wafermap/"
10
+ },
11
+ "homepage": "https://wafertools.github.io/wafermap/",
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "git+https://github.com/wafertools/wafermap.git"
15
+ },
16
+ "bugs": {
17
+ "url": "https://github.com/wafertools/wafermap/issues"
18
+ },
19
+ "private": false,
20
+ "publishConfig": {
21
+ "access": "public"
22
+ },
23
+ "files": [
24
+ "dist",
25
+ "!dist/**/*.map",
26
+ "README.md",
27
+ "LICENSE",
28
+ "CHANGELOG.md"
29
+ ],
30
+ "main": "./dist/index.js",
31
+ "module": "./dist/index.js",
32
+ "types": "./dist/index.d.ts",
33
+ "exports": {
34
+ ".": {
35
+ "types": "./dist/index.d.ts",
36
+ "import": "./dist/index.js"
37
+ },
38
+ "./core": {
39
+ "types": "./dist/packages/core/index.d.ts",
40
+ "import": "./dist/packages/core/index.js"
41
+ },
42
+ "./renderer": {
43
+ "types": "./dist/packages/renderer/index.d.ts",
44
+ "import": "./dist/packages/renderer/index.js"
45
+ },
46
+ "./stats": {
47
+ "types": "./dist/packages/stats/index.d.ts",
48
+ "import": "./dist/packages/stats/index.js"
49
+ },
50
+ "./worker": {
51
+ "types": "./dist/packages/worker/index.d.ts",
52
+ "import": "./dist/packages/worker/index.js"
53
+ },
54
+ "./worker-script": {
55
+ "types": "./dist/packages/worker/wafermap.worker.d.ts",
56
+ "import": "./dist/packages/worker/wafermap.worker.js"
57
+ },
58
+ "./render": {
59
+ "types": "./dist/packages/canvas-adapter/index.d.ts",
60
+ "import": "./dist/packages/canvas-adapter/index.js"
61
+ },
62
+ "./canvas-adapter": {
63
+ "types": "./dist/packages/canvas-adapter/index.d.ts",
64
+ "import": "./dist/packages/canvas-adapter/index.js"
65
+ }
66
+ },
67
+ "sideEffects": false,
68
+ "engines": {
69
+ "node": ">=18"
70
+ },
71
+ "scripts": {
72
+ "build": "node scripts/build-user-guide.mjs && node scripts/sync-icons.mjs && node scripts/sync-version.mjs && rm -rf dist && tsc -p tsconfig.build.json",
73
+ "build:guide": "node scripts/build-user-guide.mjs",
74
+ "clean": "rm -rf dist",
75
+ "check": "node scripts/sync-version.mjs && tsc --noEmit -p tsconfig.json",
76
+ "dev": "rm -rf docs/dist && cp -r dist docs/dist && ./.venv/bin/zensical serve --dev-addr localhost:8001",
77
+ "test": "npm run build && node --test tests/*.test.mjs",
78
+ "build:site": "rm -rf docs/dist && cp -r dist docs/ && ${ZENSICAL:-.venv/bin/zensical} build --clean && cp -r docs/data site/data && rm -rf docs/dist && node scripts/bundle-docs.mjs",
79
+ "preview:site": "npm run build:site && echo \"\\nServing bundled site at http://localhost:8002/examples/ — Ctrl-C to stop\\n\" && cd site && python3 -m http.server 8002",
80
+ "prepack": "npm run build && node scripts/minify-dist.mjs",
81
+ "pack:check": "npm pack --dry-run",
82
+ "prepublishOnly": "npm test",
83
+ "postpublish": "echo \"\\ndist/ was minified for publish — run 'npm run build' to restore the readable dev build.\\n\"",
84
+ "screenshots": "node scripts/capture-screenshots.mjs",
85
+ "screenshots:list": "node scripts/capture-screenshots.mjs --list",
86
+ "build:images": "npm run build && node scripts/capture-screenshots.mjs"
87
+ },
88
+ "keywords": [
89
+ "wafer-map",
90
+ "wafer",
91
+ "semiconductor",
92
+ "yield-analysis",
93
+ "yield",
94
+ "bin-map",
95
+ "die-map",
96
+ "ate",
97
+ "prober",
98
+ "stdf",
99
+ "hard-bin",
100
+ "soft-bin",
101
+ "test-values",
102
+ "spatial-analysis",
103
+ "failure-clustering",
104
+ "reticle",
105
+ "lot-analysis",
106
+ "canvas",
107
+ "visualization",
108
+ "typescript"
109
+ ],
110
+ "devDependencies": {
111
+ "esbuild": "^0.28.1",
112
+ "jsdom": "^29.1.1",
113
+ "marked": "^18.0.3",
114
+ "playwright": "^1.60.0",
115
+ "semble": "^0.1.1",
116
+ "serve": "^14.2.0",
117
+ "typescript": "^5.6.3"
118
+ },
119
+ "allowScripts": {
120
+ "esbuild@0.28.1": true
121
+ }
122
+ }