@suss/adapter-ruby 0.9.0 → 0.11.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.
package/dist/index.cjs CHANGED
@@ -15296,7 +15296,7 @@ function date4(params) {
15296
15296
  // ../../../node_modules/zod/v4/classic/external.js
15297
15297
  config(en_default());
15298
15298
 
15299
- // ../../ir-core/dist/chunk-XUXN6DIX.js
15299
+ // ../../ir-core/dist/chunk-AQYS5AC6.js
15300
15300
  function gqlIdentityKey(typeName, fieldName) {
15301
15301
  return `gql:${typeName}.${fieldName}`;
15302
15302
  }
@@ -15598,6 +15598,9 @@ function normalizePath(path4) {
15598
15598
  );
15599
15599
  return normalized;
15600
15600
  }
15601
+ function pathShape(path4) {
15602
+ return normalizePath(path4).replace(/\{[^}]*\}/g, "{}");
15603
+ }
15601
15604
  function methodsAgree(a, b) {
15602
15605
  if (a === null || b === null) {
15603
15606
  return false;
@@ -15649,12 +15652,17 @@ var restSemantics = defineBoundarySemantics({
15649
15652
  * settles it inside the bucket. The identity key stays what a reader
15650
15653
  * sees and a suppression targets ("GET /users", "* /users"), and
15651
15654
  * this key groups what a reader still tells apart.
15655
+ *
15656
+ * A parameter's name goes too. A spec written by hand says
15657
+ * `{userId}` where the Express route that serves it says `:id`, and
15658
+ * both match the same requests, so pairing on the name gave two
15659
+ * boundaries that never met and a run with nothing to report.
15652
15660
  */
15653
15661
  pairingKey(semantics) {
15654
15662
  if (semantics.method === null || semantics.path === null) {
15655
15663
  return null;
15656
15664
  }
15657
- return `rest ${normalizePath(semantics.path)}`;
15665
+ return `rest ${pathShape(semantics.path)}`;
15658
15666
  },
15659
15667
  sidesAgree(a, b) {
15660
15668
  return methodsAgree(a.method, b.method);
@@ -15749,7 +15757,9 @@ var StorageSemanticsSchema = external_exports.object({
15749
15757
  * The table, bucket, collection, or index, as the source declares
15750
15758
  * it, or null when the source states one this reader could not
15751
15759
  * settle. A null container pairs with nothing, rather than with
15752
- * whatever its source text happens to spell.
15760
+ * whatever its source text happens to spell. The string is in the
15761
+ * boundary-name syntax: a literal, a pattern with `{}` holes, or a
15762
+ * reference, and `parseBoundaryName` is the one reader of it.
15753
15763
  */
15754
15764
  container: external_exports.string().nullable(),
15755
15765
  /**
package/dist/index.js CHANGED
@@ -15245,7 +15245,7 @@ function date4(params) {
15245
15245
  // ../../../node_modules/zod/v4/classic/external.js
15246
15246
  config(en_default());
15247
15247
 
15248
- // ../../ir-core/dist/chunk-XUXN6DIX.js
15248
+ // ../../ir-core/dist/chunk-AQYS5AC6.js
15249
15249
  function gqlIdentityKey(typeName, fieldName) {
15250
15250
  return `gql:${typeName}.${fieldName}`;
15251
15251
  }
@@ -15547,6 +15547,9 @@ function normalizePath(path4) {
15547
15547
  );
15548
15548
  return normalized;
15549
15549
  }
15550
+ function pathShape(path4) {
15551
+ return normalizePath(path4).replace(/\{[^}]*\}/g, "{}");
15552
+ }
15550
15553
  function methodsAgree(a, b) {
15551
15554
  if (a === null || b === null) {
15552
15555
  return false;
@@ -15598,12 +15601,17 @@ var restSemantics = defineBoundarySemantics({
15598
15601
  * settles it inside the bucket. The identity key stays what a reader
15599
15602
  * sees and a suppression targets ("GET /users", "* /users"), and
15600
15603
  * this key groups what a reader still tells apart.
15604
+ *
15605
+ * A parameter's name goes too. A spec written by hand says
15606
+ * `{userId}` where the Express route that serves it says `:id`, and
15607
+ * both match the same requests, so pairing on the name gave two
15608
+ * boundaries that never met and a run with nothing to report.
15601
15609
  */
15602
15610
  pairingKey(semantics) {
15603
15611
  if (semantics.method === null || semantics.path === null) {
15604
15612
  return null;
15605
15613
  }
15606
- return `rest ${normalizePath(semantics.path)}`;
15614
+ return `rest ${pathShape(semantics.path)}`;
15607
15615
  },
15608
15616
  sidesAgree(a, b) {
15609
15617
  return methodsAgree(a.method, b.method);
@@ -15698,7 +15706,9 @@ var StorageSemanticsSchema = external_exports.object({
15698
15706
  * The table, bucket, collection, or index, as the source declares
15699
15707
  * it, or null when the source states one this reader could not
15700
15708
  * settle. A null container pairs with nothing, rather than with
15701
- * whatever its source text happens to spell.
15709
+ * whatever its source text happens to spell. The string is in the
15710
+ * boundary-name syntax: a literal, a pattern with `{}` holes, or a
15711
+ * reference, and `parseBoundaryName` is the one reader of it.
15702
15712
  */
15703
15713
  container: external_exports.string().nullable(),
15704
15714
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@suss/adapter-ruby",
3
- "version": "0.9.0",
3
+ "version": "0.11.0",
4
4
  "type": "module",
5
5
  "description": "Ruby language adapter for suss, parsing source with tree-sitter (WASM), resolving constant nesting with a lexical binder, and emitting raw extractions for the suss pipeline.",
6
6
  "keywords": [
@@ -47,9 +47,9 @@
47
47
  "typecheck": "tsc --noEmit"
48
48
  },
49
49
  "dependencies": {
50
- "@suss/behavioral-ir": "0.9.0",
51
- "@suss/datalog": "0.9.0",
52
- "@suss/extractor": "0.9.0",
50
+ "@suss/behavioral-ir": "0.11.0",
51
+ "@suss/datalog": "0.11.0",
52
+ "@suss/extractor": "0.11.0",
53
53
  "web-tree-sitter": "^0.26.11"
54
54
  },
55
55
  "devDependencies": {