@flighthq/path-boolean 0.5.1-next.3302.76ece6b → 0.5.1-next.4304.322dc96

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 (66) hide show
  1. package/README.md +2 -2
  2. package/dist/.tsbuildinfo.contract +1 -0
  3. package/dist/.tsbuildinfo.runtime +1 -0
  4. package/dist/booleanPaths.d.ts +33 -6
  5. package/dist/booleanPaths.d.ts.map +1 -1
  6. package/dist/booleanPaths.js +42 -3
  7. package/dist/booleanPaths.js.map +1 -1
  8. package/dist/contract.d.ts +12 -8
  9. package/dist/contract.d.ts.map +1 -1
  10. package/dist/contract.js +11 -8
  11. package/dist/contract.js.map +1 -1
  12. package/dist/contract.path-boolean-types.d.ts +4 -0
  13. package/dist/contract.path-boolean-types.d.ts.map +1 -0
  14. package/dist/contract.path-boolean-types.js +2 -0
  15. package/dist/contract.path-boolean-types.js.map +1 -0
  16. package/dist/explainPathBoolean.d.ts +15 -3
  17. package/dist/explainPathBoolean.d.ts.map +1 -1
  18. package/dist/explainPathBoolean.js +35 -9
  19. package/dist/explainPathBoolean.js.map +1 -1
  20. package/dist/index.d.ts +3 -8
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +3 -8
  23. package/dist/index.js.map +1 -1
  24. package/dist/martinezKernel.d.ts +44 -4
  25. package/dist/martinezKernel.d.ts.map +1 -1
  26. package/dist/martinezKernel.js +777 -559
  27. package/dist/martinezKernel.js.map +1 -1
  28. package/dist/offsetPath.d.ts +15 -2
  29. package/dist/offsetPath.d.ts.map +1 -1
  30. package/dist/offsetPath.js +205 -215
  31. package/dist/offsetPath.js.map +1 -1
  32. package/dist/pathBoolean.d.ts +53 -0
  33. package/dist/pathBoolean.d.ts.map +1 -0
  34. package/dist/pathBoolean.js +115 -0
  35. package/dist/pathBoolean.js.map +1 -0
  36. package/dist/pathBooleanCompat.d.ts +3 -0
  37. package/dist/pathBooleanCompat.d.ts.map +1 -0
  38. package/dist/pathBooleanCompat.js +2 -0
  39. package/dist/pathBooleanCompat.js.map +1 -0
  40. package/dist/resolvePathRegions.d.ts +8 -2
  41. package/dist/resolvePathRegions.d.ts.map +1 -1
  42. package/dist/resolvePathRegions.js +11 -3
  43. package/dist/resolvePathRegions.js.map +1 -1
  44. package/dist/simplifyPath.d.ts +9 -2
  45. package/dist/simplifyPath.d.ts.map +1 -1
  46. package/dist/simplifyPath.js +12 -2
  47. package/dist/simplifyPath.js.map +1 -1
  48. package/dist/unionAllPaths.d.ts +9 -2
  49. package/dist/unionAllPaths.d.ts.map +1 -1
  50. package/dist/unionAllPaths.js +23 -8
  51. package/dist/unionAllPaths.js.map +1 -1
  52. package/dist/writePathBooleanContours.d.ts +8 -2
  53. package/dist/writePathBooleanContours.d.ts.map +1 -1
  54. package/dist/writePathBooleanContours.js +16 -4
  55. package/dist/writePathBooleanContours.js.map +1 -1
  56. package/package.json +5 -4
  57. package/src/booleanPaths.test.ts +237 -114
  58. package/src/explainPathBoolean.test.ts +35 -21
  59. package/src/fuzzInvariants.test.ts +241 -154
  60. package/src/martinezKernel.test.ts +334 -328
  61. package/src/offsetPath.test.ts +296 -166
  62. package/src/pathBoolean.test.ts +95 -0
  63. package/src/resolvePathRegions.test.ts +41 -30
  64. package/src/simplifyPath.test.ts +143 -112
  65. package/src/unionAllPaths.test.ts +93 -61
  66. package/src/writePathBooleanContours.test.ts +44 -6
@@ -1 +1 @@
1
- {"version":3,"file":"booleanPaths.d.ts","sourceRoot":"","sources":["../src/booleanPaths.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAIlH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,IAAI,EACT,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAC9C,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,EACvB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EACpB,SAAS,EAAE,oBAAoB,EAC/B,OAAO,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACrC,IAAI,CAMN;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,IAAI,EACT,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAC9C,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,EACjB,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,EACjB,OAAO,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACrC,IAAI,CAEN;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,IAAI,EACT,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAC9C,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,EACjB,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,EACjB,OAAO,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACrC,IAAI,CAEN;AAED,wBAAgB,UAAU,CACxB,GAAG,EAAE,IAAI,EACT,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAC9C,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,EACjB,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,EACjB,OAAO,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACrC,IAAI,CAEN;AAED,wBAAgB,QAAQ,CACtB,GAAG,EAAE,IAAI,EACT,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAC9C,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,EACjB,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,EACjB,OAAO,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACrC,IAAI,CAEN"}
1
+ {"version":3,"file":"booleanPaths.d.ts","sourceRoot":"","sources":["../src/booleanPaths.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAK3D;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,IAAI,EACT,iBAAiB,EAAE,QAAQ,CAAC,oBAAoB,CAAC,EACjD,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,EACvB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EACpB,SAAS,EAAE,oBAAoB,EAC/B,OAAO,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACrC,IAAI,CAON;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,IAAI,EACT,iBAAiB,EAAE,QAAQ,CAAC,oBAAoB,CAAC,EACjD,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,EACjB,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,EACjB,OAAO,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACrC,IAAI,CAEN;AAED;;;GAGG;AACH,iBAAS,gCAAgC,CAAC,OAAO,EAAE,WAAW,GAAG,mBAAmB,CAUnF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,IAAI,EACT,iBAAiB,EAAE,QAAQ,CAAC,oBAAoB,CAAC,EACjD,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,EACjB,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,EACjB,OAAO,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACrC,IAAI,CAEN;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,IAAI,EACT,iBAAiB,EAAE,QAAQ,CAAC,oBAAoB,CAAC,EACjD,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,EACjB,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,EACjB,OAAO,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACrC,IAAI,CAEN;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAE,IAAI,EACT,iBAAiB,EAAE,QAAQ,CAAC,oBAAoB,CAAC,EACjD,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,EACjB,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,EACjB,OAAO,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACrC,IAAI,CAEN;AAED,OAAO,EAAE,gCAAgC,EAAE,CAAC"}
@@ -1,22 +1,61 @@
1
+ // Generated from crates/flight-path-boolean/src/boolean_paths.rs by flight-compiler.
2
+ // Rust is authoritative; run `npm run generate` after changing it.
1
3
  import { flattenPath } from '@flighthq/path/contract';
2
4
  import { writePathBooleanContours } from "./writePathBooleanContours.js";
5
+ const DEFAULT_FLATTEN_TOLERANCE = 0.25;
6
+ /**
7
+ * Generic boolean operation on two paths. Flattens both operands to polygon
8
+ * contours, dispatches through the kernel, and writes the result into `out`.
9
+ * Alias-safe: the subject and clip are fully captured (flattened) before any
10
+ * write to `out`, so `out` may alias either input.
11
+ */
3
12
  export function booleanPaths(out, pathBooleanKernel, subject, clip, operation, options) {
4
- const fillRule = options?.fillRule ?? 'nonZero';
5
- const subjectContours = flattenPath(subject, options?.tolerance);
6
- const clipContours = flattenPath(clip, options?.tolerance);
13
+ const fillRule = getPathBooleanFillRuleForWinding(options?.fillRule ?? 'nonZero');
14
+ const tolerance = options?.tolerance ?? DEFAULT_FLATTEN_TOLERANCE;
15
+ const subjectContours = flattenPath(subject, tolerance);
16
+ const clipContours = flattenPath(clip, tolerance);
7
17
  const result = pathBooleanKernel.computePathBoolean(subjectContours, clipContours, operation, fillRule);
8
18
  writePathBooleanContours(out, result);
9
19
  }
20
+ /**
21
+ * Computes the set difference (subject minus clip) and writes the result into `out`.
22
+ */
10
23
  export function differencePaths(out, pathBooleanKernel, a, b, options) {
11
24
  booleanPaths(out, pathBooleanKernel, a, b, 'difference', options);
12
25
  }
26
+ /**
27
+ * The kernel fill rule for a public `PathWinding` option (TS passes the winding string straight
28
+ * through, since `PathBooleanFillRule` includes `PathWinding`).
29
+ */
30
+ function getPathBooleanFillRuleForWinding(winding) {
31
+ return (() => {
32
+ const matchValue = winding;
33
+ switch (matchValue) {
34
+ case 'evenOdd':
35
+ return 'evenOdd';
36
+ case 'nonZero':
37
+ return 'nonZero';
38
+ }
39
+ })();
40
+ }
41
+ /**
42
+ * Computes the intersection of subject and clip and writes the result into `out`.
43
+ */
13
44
  export function intersectPaths(out, pathBooleanKernel, a, b, options) {
14
45
  booleanPaths(out, pathBooleanKernel, a, b, 'intersection', options);
15
46
  }
47
+ /**
48
+ * Computes the union of subject and clip and writes the result into `out`.
49
+ */
16
50
  export function unionPaths(out, pathBooleanKernel, a, b, options) {
17
51
  booleanPaths(out, pathBooleanKernel, a, b, 'union', options);
18
52
  }
53
+ /**
54
+ * Computes the symmetric difference (XOR) of subject and clip and writes the
55
+ * result into `out`.
56
+ */
19
57
  export function xorPaths(out, pathBooleanKernel, a, b, options) {
20
58
  booleanPaths(out, pathBooleanKernel, a, b, 'xor', options);
21
59
  }
60
+ export { getPathBooleanFillRuleForWinding };
22
61
  //# sourceMappingURL=booleanPaths.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"booleanPaths.js","sourceRoot":"","sources":["../src/booleanPaths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,MAAM,UAAU,YAAY,CAC1B,GAAS,EACT,iBAA8C,EAC9C,OAAuB,EACvB,IAAoB,EACpB,SAA+B,EAC/B,OAAsC;IAEtC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,SAAS,CAAC;IAChD,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACxG,wBAAwB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,GAAS,EACT,iBAA8C,EAC9C,CAAiB,EACjB,CAAiB,EACjB,OAAsC;IAEtC,YAAY,CAAC,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,GAAS,EACT,iBAA8C,EAC9C,CAAiB,EACjB,CAAiB,EACjB,OAAsC;IAEtC,YAAY,CAAC,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,GAAS,EACT,iBAA8C,EAC9C,CAAiB,EACjB,CAAiB,EACjB,OAAsC;IAEtC,YAAY,CAAC,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,GAAS,EACT,iBAA8C,EAC9C,CAAiB,EACjB,CAAiB,EACjB,OAAsC;IAEtC,YAAY,CAAC,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"booleanPaths.js","sourceRoot":"","sources":["../src/booleanPaths.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,mEAAmE;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAKtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,MAAM,yBAAyB,GAAW,IAAI,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAS,EACT,iBAAiD,EACjD,OAAuB,EACvB,IAAoB,EACpB,SAA+B,EAC/B,OAAsC;IAEtC,MAAM,QAAQ,GAAG,gCAAgC,CAAC,OAAO,EAAE,QAAQ,IAAI,SAAS,CAAC,CAAC;IAClF,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,yBAAyB,CAAC;IAClE,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACxG,wBAAwB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,GAAS,EACT,iBAAiD,EACjD,CAAiB,EACjB,CAAiB,EACjB,OAAsC;IAEtC,YAAY,CAAC,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AACpE,CAAC;AAED;;;GAGG;AACH,SAAS,gCAAgC,CAAC,OAAoB;IAC5D,OAAO,CAAC,GAAG,EAAE;QACX,MAAM,UAAU,GAAG,OAAO,CAAC;QAC3B,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAC;YACnB,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;AACP,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,GAAS,EACT,iBAAiD,EACjD,CAAiB,EACjB,CAAiB,EACjB,OAAsC;IAEtC,YAAY,CAAC,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,GAAS,EACT,iBAAiD,EACjD,CAAiB,EACjB,CAAiB,EACjB,OAAsC;IAEtC,YAAY,CAAC,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CACtB,GAAS,EACT,iBAAiD,EACjD,CAAiB,EACjB,CAAiB,EACjB,OAAsC;IAEtC,YAAY,CAAC,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAC7D,CAAC;AAED,OAAO,EAAE,gCAAgC,EAAE,CAAC"}
@@ -1,9 +1,13 @@
1
- export * from './booleanPaths.ts';
2
- export * from './explainPathBoolean.ts';
3
- export * from './martinezKernel.ts';
4
- export * from './offsetPath.ts';
5
- export * from './resolvePathRegions.ts';
6
- export * from './simplifyPath.ts';
7
- export * from './unionAllPaths.ts';
8
- export * from './writePathBooleanContours.ts';
1
+ export { booleanPaths, differencePaths, intersectPaths, unionPaths, xorPaths } from './booleanPaths.ts';
2
+ export { explainOffsetPath, explainSimplifyPath } from './explainPathBoolean.ts';
3
+ export { createMartinezPathBooleanKernel, getPathBooleanFillRuleString, getPathBooleanOperationString, initializeMartinezPathBooleanKernel, martinezPathBooleanKernel, parsePathBooleanFillRule, parsePathBooleanOperation, } from './martinezKernel.ts';
4
+ export type { ComputePathBooleanFunction, PathBooleanContour, PathBooleanFillRule, PathBooleanKernelRaw, PathBooleanOperation, } from './martinezKernel.ts';
5
+ export { offsetPath } from './offsetPath.ts';
6
+ export { getPathBooleanExplanationOperationString, getPathBooleanExplanationReasonString, getPathOffsetEndString, getPathOffsetJoinString, parsePathBooleanExplanationOperation, parsePathBooleanExplanationReason, parsePathOffsetEnd, parsePathOffsetJoin, } from './pathBoolean.ts';
7
+ export type { PathBooleanExplanation, PathBooleanExplanationOperation, PathBooleanExplanationReason, PathBooleanOptions, PathOffsetEnd, PathOffsetJoin, PathOffsetOptions, } from './pathBoolean.ts';
8
+ export type { PathBooleanKernel } from './pathBooleanCompat.ts';
9
+ export { resolvePathRegions } from './resolvePathRegions.ts';
10
+ export { simplifyPath } from './simplifyPath.ts';
11
+ export { unionAllPaths } from './unionAllPaths.ts';
12
+ export { writePathBooleanContours } from './writePathBooleanContours.ts';
9
13
  //# sourceMappingURL=contract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC"}
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxG,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,EAC5B,6BAA6B,EAC7B,mCAAmC,EACnC,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,wCAAwC,EACxC,qCAAqC,EACrC,sBAAsB,EACtB,uBAAuB,EACvB,oCAAoC,EACpC,iCAAiC,EACjC,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,sBAAsB,EACtB,+BAA+B,EAC/B,4BAA4B,EAC5B,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC"}
package/dist/contract.js CHANGED
@@ -1,9 +1,12 @@
1
- export * from "./booleanPaths.js";
2
- export * from "./explainPathBoolean.js";
3
- export * from "./martinezKernel.js";
4
- export * from "./offsetPath.js";
5
- export * from "./resolvePathRegions.js";
6
- export * from "./simplifyPath.js";
7
- export * from "./unionAllPaths.js";
8
- export * from "./writePathBooleanContours.js";
1
+ // Generated from crates/flight-path-boolean/src/lib.rs by flight-compiler.
2
+ // Rust is authoritative; run `npm run generate` after changing it.
3
+ export { booleanPaths, differencePaths, intersectPaths, unionPaths, xorPaths } from "./booleanPaths.js";
4
+ export { explainOffsetPath, explainSimplifyPath } from "./explainPathBoolean.js";
5
+ export { createMartinezPathBooleanKernel, getPathBooleanFillRuleString, getPathBooleanOperationString, initializeMartinezPathBooleanKernel, martinezPathBooleanKernel, parsePathBooleanFillRule, parsePathBooleanOperation, } from "./martinezKernel.js";
6
+ export { offsetPath } from "./offsetPath.js";
7
+ export { getPathBooleanExplanationOperationString, getPathBooleanExplanationReasonString, getPathOffsetEndString, getPathOffsetJoinString, parsePathBooleanExplanationOperation, parsePathBooleanExplanationReason, parsePathOffsetEnd, parsePathOffsetJoin, } from "./pathBoolean.js";
8
+ export { resolvePathRegions } from "./resolvePathRegions.js";
9
+ export { simplifyPath } from "./simplifyPath.js";
10
+ export { unionAllPaths } from "./unionAllPaths.js";
11
+ export { writePathBooleanContours } from "./writePathBooleanContours.js";
9
12
  //# sourceMappingURL=contract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,mEAAmE;AAEnE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxG,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,EAC5B,6BAA6B,EAC7B,mCAAmC,EACnC,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAQ7B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,wCAAwC,EACxC,qCAAqC,EACrC,sBAAsB,EACtB,uBAAuB,EACvB,oCAAoC,EACpC,iCAAiC,EACjC,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAW1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export type { ComputePathBooleanFunction, PathBooleanContour, PathBooleanFillRule, PathBooleanKernelRaw, PathBooleanOperation, } from './martinezKernel.ts';
2
+ export type { PathBooleanExplanation, PathBooleanExplanationOperation, PathBooleanExplanationReason, PathBooleanOptions, PathOffsetEnd, PathOffsetJoin, PathOffsetOptions, } from './pathBoolean.ts';
3
+ export type { PathBooleanKernel } from './pathBooleanCompat.ts';
4
+ //# sourceMappingURL=contract.path-boolean-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.path-boolean-types.d.ts","sourceRoot":"","sources":["../src/contract.path-boolean-types.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,sBAAsB,EACtB,+BAA+B,EAC/B,4BAA4B,EAC5B,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=contract.path-boolean-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.path-boolean-types.js","sourceRoot":"","sources":["../src/contract.path-boolean-types.ts"],"names":[],"mappings":""}
@@ -1,4 +1,16 @@
1
- import type { PathBooleanKernel, Path, PathBooleanExplanation, PathBooleanOptions, PathOffsetOptions } from '@flighthq/types/contract';
2
- export declare function explainOffsetPath(pathBooleanKernel: Readonly<PathBooleanKernel>, path: Readonly<Path>, delta: number, options?: Readonly<PathOffsetOptions>): PathBooleanExplanation | null;
3
- export declare function explainSimplifyPath(pathBooleanKernel: Readonly<PathBooleanKernel>, path: Readonly<Path>, options?: Readonly<PathBooleanOptions>): PathBooleanExplanation | null;
1
+ import type { Path } from '@flighthq/path/contract';
2
+ import type { PathBooleanKernelRaw } from './martinezKernel.ts';
3
+ import type { PathBooleanExplanation, PathBooleanOptions, PathOffsetOptions } from './pathBoolean.ts';
4
+ /**
5
+ * Checks whether `offsetPath` would produce a meaningful result for the given
6
+ * path and delta. Returns `Some(explanation)` when the result is degenerate or
7
+ * empty, `undefined` when the offset succeeds normally.
8
+ */
9
+ export declare function explainOffsetPath(pathBooleanKernel: Readonly<PathBooleanKernelRaw>, path: Readonly<Path>, delta: number, options?: Readonly<PathOffsetOptions>): PathBooleanExplanation | undefined;
10
+ /**
11
+ * Checks whether `simplifyPath` would produce a meaningful result for the
12
+ * given path. Returns `Some(explanation)` when the result is degenerate or
13
+ * empty, `undefined` when simplification succeeds normally.
14
+ */
15
+ export declare function explainSimplifyPath(pathBooleanKernel: Readonly<PathBooleanKernelRaw>, path: Readonly<Path>, options?: Readonly<PathBooleanOptions>): PathBooleanExplanation | undefined;
4
16
  //# sourceMappingURL=explainPathBoolean.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"explainPathBoolean.d.ts","sourceRoot":"","sources":["../src/explainPathBoolean.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,IAAI,EACJ,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,iBAAiB,CAC/B,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAC9C,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EACpB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GACpC,sBAAsB,GAAG,IAAI,CAM/B;AAED,wBAAgB,mBAAmB,CACjC,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAC9C,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EACpB,OAAO,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACrC,sBAAsB,GAAG,IAAI,CAK/B"}
1
+ {"version":3,"file":"explainPathBoolean.d.ts","sourceRoot":"","sources":["../src/explainPathBoolean.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAKtG;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,iBAAiB,EAAE,QAAQ,CAAC,oBAAoB,CAAC,EACjD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EACpB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GACpC,sBAAsB,GAAG,SAAS,CAepC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,iBAAiB,EAAE,QAAQ,CAAC,oBAAoB,CAAC,EACjD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EACpB,OAAO,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACrC,sBAAsB,GAAG,SAAS,CAYpC"}
@@ -1,20 +1,46 @@
1
+ // Generated from crates/flight-path-boolean/src/explain_path_boolean.rs by flight-compiler.
2
+ // Rust is authoritative; run `npm run generate` after changing it.
1
3
  import { createPath, flattenPath } from '@flighthq/path/contract';
2
4
  import { offsetPath } from "./offsetPath.js";
3
5
  import { simplifyPath } from "./simplifyPath.js";
6
+ const DEFAULT_FLATTEN_TOLERANCE = 0.25;
7
+ /**
8
+ * Checks whether `offsetPath` would produce a meaningful result for the given
9
+ * path and delta. Returns `Some(explanation)` when the result is degenerate or
10
+ * empty, `undefined` when the offset succeeds normally.
11
+ */
4
12
  export function explainOffsetPath(pathBooleanKernel, path, delta, options) {
5
- if (!Number.isFinite(delta))
13
+ if (!Number.isFinite(delta)) {
6
14
  return { operation: 'offset', reason: 'non-finite-delta' };
7
- if (flattenPath(path, options?.tolerance).length === 0)
15
+ }
16
+ const tolerance = options?.tolerance ?? DEFAULT_FLATTEN_TOLERANCE;
17
+ const contours = flattenPath(path, tolerance);
18
+ if (contours.length === 0) {
8
19
  return { operation: 'offset', reason: 'empty-input' };
9
- const out = createPath('nonZero');
10
- offsetPath(out, pathBooleanKernel, path, delta, options);
11
- return out.commands.length === 0 ? { operation: 'offset', reason: 'collapsed-or-degenerate' } : null;
20
+ }
21
+ let result = createPath('nonZero');
22
+ offsetPath(result, pathBooleanKernel, path, delta, options);
23
+ if (result.commands.length === 0) {
24
+ return { operation: 'offset', reason: 'collapsed-or-degenerate' };
25
+ }
26
+ return undefined;
12
27
  }
28
+ /**
29
+ * Checks whether `simplifyPath` would produce a meaningful result for the
30
+ * given path. Returns `Some(explanation)` when the result is degenerate or
31
+ * empty, `undefined` when simplification succeeds normally.
32
+ */
13
33
  export function explainSimplifyPath(pathBooleanKernel, path, options) {
14
- if (flattenPath(path, options?.tolerance).length === 0)
34
+ const tolerance = options?.tolerance ?? DEFAULT_FLATTEN_TOLERANCE;
35
+ const contours = flattenPath(path, tolerance);
36
+ if (contours.length === 0) {
15
37
  return { operation: 'simplify', reason: 'empty-input' };
16
- const out = createPath('nonZero');
17
- simplifyPath(out, pathBooleanKernel, path, options);
18
- return out.commands.length === 0 ? { operation: 'simplify', reason: 'collapsed-or-degenerate' } : null;
38
+ }
39
+ let result = createPath('nonZero');
40
+ simplifyPath(result, pathBooleanKernel, path, options);
41
+ if (result.commands.length === 0) {
42
+ return { operation: 'simplify', reason: 'collapsed-or-degenerate' };
43
+ }
44
+ return undefined;
19
45
  }
20
46
  //# sourceMappingURL=explainPathBoolean.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"explainPathBoolean.js","sourceRoot":"","sources":["../src/explainPathBoolean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AASlE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,UAAU,iBAAiB,CAC/B,iBAA8C,EAC9C,IAAoB,EACpB,KAAa,EACb,OAAqC;IAErC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IACxF,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAC9G,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAClC,UAAU,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACzD,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACvG,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,iBAA8C,EAC9C,IAAoB,EACpB,OAAsC;IAEtC,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAChH,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAClC,YAAY,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzG,CAAC"}
1
+ {"version":3,"file":"explainPathBoolean.js","sourceRoot":"","sources":["../src/explainPathBoolean.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,mEAAmE;AAEnE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAIlE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,yBAAyB,GAAW,IAAI,CAAC;AAE/C;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,iBAAiD,EACjD,IAAoB,EACpB,KAAa,EACb,OAAqC;IAErC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7D,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,yBAAyB,CAAC;IAClE,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACxD,CAAC;IACD,IAAI,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACnC,UAAU,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5D,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;IACpE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,iBAAiD,EACjD,IAAoB,EACpB,OAAsC;IAEtC,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,yBAAyB,CAAC;IAClE,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAC1D,CAAC;IACD,IAAI,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACnC,YAAY,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACvD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;IACtE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,4 @@
1
- export * from './booleanPaths.ts';
2
- export * from './explainPathBoolean.ts';
3
- export { createMartinezPathBooleanKernel, martinezPathBooleanKernel } from './martinezKernel.ts';
4
- export * from './offsetPath.ts';
5
- export * from './resolvePathRegions.ts';
6
- export * from './simplifyPath.ts';
7
- export * from './unionAllPaths.ts';
8
- export * from './writePathBooleanContours.ts';
1
+ export { booleanPaths, createMartinezPathBooleanKernel, differencePaths, explainOffsetPath, explainSimplifyPath, getPathBooleanExplanationOperationString, getPathBooleanExplanationReasonString, getPathBooleanFillRuleString, getPathBooleanOperationString, getPathOffsetEndString, getPathOffsetJoinString, intersectPaths, martinezPathBooleanKernel, offsetPath, parsePathBooleanExplanationOperation, parsePathBooleanExplanationReason, parsePathBooleanFillRule, parsePathBooleanOperation, parsePathOffsetEnd, parsePathOffsetJoin, resolvePathRegions, simplifyPath, unionAllPaths, unionPaths, writePathBooleanContours, xorPaths, } from './contract.ts';
2
+ export type { ComputePathBooleanFunction, PathBooleanContour, PathBooleanExplanation, PathBooleanExplanationOperation, PathBooleanExplanationReason, PathBooleanFillRule, PathBooleanOperation, PathBooleanOptions, PathOffsetEnd, PathOffsetJoin, PathOffsetOptions, } from './contract.ts';
3
+ export type { PathBooleanKernel } from './pathBooleanCompat.ts';
9
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACjG,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EACZ,+BAA+B,EAC/B,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,wCAAwC,EACxC,qCAAqC,EACrC,4BAA4B,EAC5B,6BAA6B,EAC7B,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,UAAU,EACV,oCAAoC,EACpC,iCAAiC,EACjC,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,UAAU,EACV,wBAAwB,EACxB,QAAQ,GACT,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,0BAA0B,EAC1B,kBAAkB,EAClB,sBAAsB,EACtB,+BAA+B,EAC/B,4BAA4B,EAC5B,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
package/dist/index.js CHANGED
@@ -1,9 +1,4 @@
1
- export * from "./booleanPaths.js";
2
- export * from "./explainPathBoolean.js";
3
- export { createMartinezPathBooleanKernel, martinezPathBooleanKernel } from "./martinezKernel.js";
4
- export * from "./offsetPath.js";
5
- export * from "./resolvePathRegions.js";
6
- export * from "./simplifyPath.js";
7
- export * from "./unionAllPaths.js";
8
- export * from "./writePathBooleanContours.js";
1
+ // Generated from crates/flight-path-boolean/src/lib.rs by flight-compiler.
2
+ // Rust is authoritative; run `npm run generate` after changing it.
3
+ export { booleanPaths, createMartinezPathBooleanKernel, differencePaths, explainOffsetPath, explainSimplifyPath, getPathBooleanExplanationOperationString, getPathBooleanExplanationReasonString, getPathBooleanFillRuleString, getPathBooleanOperationString, getPathOffsetEndString, getPathOffsetJoinString, intersectPaths, martinezPathBooleanKernel, offsetPath, parsePathBooleanExplanationOperation, parsePathBooleanExplanationReason, parsePathBooleanFillRule, parsePathBooleanOperation, parsePathOffsetEnd, parsePathOffsetJoin, resolvePathRegions, simplifyPath, unionAllPaths, unionPaths, writePathBooleanContours, xorPaths, } from "./contract.js";
9
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACjG,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,mEAAmE;AAEnE,OAAO,EACL,YAAY,EACZ,+BAA+B,EAC/B,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,wCAAwC,EACxC,qCAAqC,EACrC,4BAA4B,EAC5B,6BAA6B,EAC7B,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,UAAU,EACV,oCAAoC,EACpC,iCAAiC,EACjC,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,UAAU,EACV,wBAAwB,EACxB,QAAQ,GACT,MAAM,eAAe,CAAC"}
@@ -1,5 +1,45 @@
1
- import type { PathBooleanKernel, EntityConstruction } from '@flighthq/types/contract';
2
- export declare function createMartinezPathBooleanKernel(): PathBooleanKernel;
3
- export declare function initializeMartinezPathBooleanKernel(out: EntityConstruction<PathBooleanKernel>): void;
4
- export declare const martinezPathBooleanKernel: PathBooleanKernel;
1
+ import type { EntityRaw } from '@flighthq/entity/contract';
2
+ /**
3
+ * The boolean set operation to perform on two path operands.
4
+ */
5
+ export type PathBooleanOperation = 'difference' | 'intersection' | 'union' | 'xor';
6
+ /**
7
+ * Fill rule for resolving winding numbers into filled/unfilled regions. Extends
8
+ * PathWinding with positive and negative rules used internally by the offset
9
+ * cleanup pass.
10
+ */
11
+ export type PathBooleanFillRule = 'evenOdd' | 'nonZero' | 'positive' | 'negative';
12
+ /**
13
+ * A flat array of interleaved `[x, y, x, y, ...]` coordinates representing one
14
+ * polygon contour for boolean operations.
15
+ */
16
+ export type PathBooleanContour = number[];
17
+ /**
18
+ * The strategy a `PathBooleanKernel` carries (TS `computePathBoolean`): the combined contour set of
19
+ * two operands under an operation and fill rule. A stateless function value (D9d).
20
+ */
21
+ export type ComputePathBooleanFunction = (arg0: Readonly<PathBooleanContour[]>, arg1: Readonly<PathBooleanContour[]>, arg2: PathBooleanOperation, arg3: PathBooleanFillRule) => PathBooleanContour[];
22
+ /**
23
+ * The boolean kernel (TS `PathBooleanKernel extends Entity`): a strategy entity whose
24
+ * `computePathBoolean` computes the combined contour set of two operands. Callers may supply any
25
+ * kernel; the Martinez kernel is the stock one.
26
+ */
27
+ export interface PathBooleanKernelRaw extends EntityRaw {
28
+ computePathBoolean: ComputePathBooleanFunction;
29
+ }
30
+ /**
31
+ * The kernel the boolean operations use unless the caller passes another one. A stateless value, so
32
+ * it is one shared instance rather than a per-call construction (TS `martinezPathBooleanKernel`;
33
+ * entity-valued singleton as `LazyLock`, D12).
34
+ */
35
+ export declare const martinezPathBooleanKernel: PathBooleanKernelRaw;
36
+ export declare function createMartinezPathBooleanKernel(): PathBooleanKernelRaw;
37
+ export declare function getPathBooleanFillRuleString(value: PathBooleanFillRule): string;
38
+ export declare function getPathBooleanOperationString(value: PathBooleanOperation): string;
39
+ /**
40
+ * The construction initializer of `createMartinezPathBooleanKernel`.
41
+ */
42
+ export declare function initializeMartinezPathBooleanKernel(out: PathBooleanKernelRaw): void;
43
+ export declare function parsePathBooleanFillRule(value: string): PathBooleanFillRule | undefined;
44
+ export declare function parsePathBooleanOperation(value: string): PathBooleanOperation | undefined;
5
45
  //# sourceMappingURL=martinezKernel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"martinezKernel.d.ts","sourceRoot":"","sources":["../src/martinezKernel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EAIjB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAElC,wBAAgB,+BAA+B,IAAI,iBAAiB,CAInE;AAyBD,wBAAgB,mCAAmC,CAAC,GAAG,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,GAAG,IAAI,CASpG;AAOD,eAAO,MAAM,yBAAyB,EAAE,iBAAqD,CAAC"}
1
+ {"version":3,"file":"martinezKernel.d.ts","sourceRoot":"","sources":["../src/martinezKernel.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,cAAc,GAAG,OAAO,GAAG,KAAK,CAAC;AAEnF;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAElF;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,EAAE,CAAC;AAE1C;;;GAGG;AACH,MAAM,MAAM,0BAA0B,GAAG,CACvC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,EAAE,CAAC,EACpC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,EAAE,CAAC,EACpC,IAAI,EAAE,oBAAoB,EAC1B,IAAI,EAAE,mBAAmB,KACtB,kBAAkB,EAAE,CAAC;AAE1B;;;;GAIG;AACH,MAAM,WAAW,oBAAqB,SAAQ,SAAS;IACrD,kBAAkB,EAAE,0BAA0B,CAAC;CAChD;AAiFD;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAAE,oBAAwD,CAAC;AAQjG,wBAAgB,+BAA+B,IAAI,oBAAoB,CAItE;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAc/E;AAgiBD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAcjF;AAED;;GAEG;AACH,wBAAgB,mCAAmC,CAAC,GAAG,EAAE,oBAAoB,GAAG,IAAI,CAEnF;AAqGD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAgBvF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAgBzF"}