tree-sitter-bynk 0.140.0 → 0.142.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/grammar.js CHANGED
@@ -544,6 +544,12 @@ module.exports = grammar({
544
544
  // v0.131 (ADR 0158): the optional `cors { }` policy, in header position
545
545
  // before the handlers (a `from http` concern; the checker restricts it).
546
546
  optional(field("cors", $.cors_policy)),
547
+ // v0.141 (ADR 0164): the optional `security { }` policy, likewise a
548
+ // header-position `from http` concern restricted by the checker.
549
+ optional(field("security", $.security_policy)),
550
+ // v0.142 (ADR 0166): the optional `limits { }` policy, likewise a
551
+ // header-position `from http` concern restricted by the checker.
552
+ optional(field("limits", $.limits_policy)),
547
553
  repeat($.handler),
548
554
  "}",
549
555
  ),
@@ -559,6 +565,30 @@ module.exports = grammar({
559
565
  ),
560
566
  cors_field: ($) =>
561
567
  seq(field("name", $.identifier), ":", field("value", $._expression)),
568
+ // v0.141: `security { <name>: <value>, … }`. `security` is a contextual
569
+ // keyword (like `cors`); field names (`hsts`/`nosniff`) are ordinary
570
+ // identifiers matched against the closed set by the checker.
571
+ security_policy: ($) =>
572
+ seq(
573
+ "security",
574
+ "{",
575
+ repeat(seq($.security_field, optional(","))),
576
+ "}",
577
+ ),
578
+ security_field: ($) =>
579
+ seq(field("name", $.identifier), ":", field("value", $._expression)),
580
+ // v0.142: `limits { <name>: <value>, … }`. `limits` is a contextual
581
+ // keyword (like `cors`/`security`); field names are ordinary identifiers
582
+ // matched against the closed set by the checker.
583
+ limits_policy: ($) =>
584
+ seq(
585
+ "limits",
586
+ "{",
587
+ repeat(seq($.limits_field, optional(","))),
588
+ "}",
589
+ ),
590
+ limits_field: ($) =>
591
+ seq(field("name", $.identifier), ":", field("value", $._expression)),
562
592
  // v0.44: `from <protocol>` on the service header.
563
593
  // v0.103: `from WebSocket(in: I, out: O)` binds the inbound/outbound frame
564
594
  // types. `WebSocket`, `in`, and `out` are contextual (resolved by `word`).
@@ -1297,12 +1327,12 @@ module.exports = grammar({
1297
1327
  // overshadowing `identifier`; we use a regex.
1298
1328
  constant_name: () => /[A-Z][A-Za-z0-9_]*/,
1299
1329
 
1300
- number_literal: () => /[0-9]+/,
1330
+ number_literal: () => /[0-9]+(_[0-9]+)*/,
1301
1331
  // v0.21: a float literal — fraction with a digit on both sides of the
1302
1332
  // `.`, an exponent, or both. Longest-match keeps `1.toFloat()` lexing
1303
1333
  // as a method call on an integer literal.
1304
1334
  float_literal: () =>
1305
- /[0-9]+\.[0-9]+([eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+/,
1335
+ /[0-9]+(_[0-9]+)*\.[0-9]+(_[0-9]+)*([eE][+-]?[0-9]+(_[0-9]+)*)?|[0-9]+(_[0-9]+)*[eE][+-]?[0-9]+(_[0-9]+)*/,
1306
1336
  string_literal: ($) =>
1307
1337
  seq(
1308
1338
  '"',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tree-sitter-bynk",
3
- "version": "0.140.0",
3
+ "version": "0.142.0",
4
4
  "description": "Tree-sitter grammar for the Bynk DSL (v0–v0.16).",
5
5
  "main": "bindings/node",
6
6
  "types": "bindings/node",
@@ -40,6 +40,8 @@
40
40
  "agent"
41
41
  "store"
42
42
  "cors"
43
+ "security"
44
+ "limits"
43
45
  "exports"
44
46
  "key"
45
47
  "suite"
package/src/grammar.json CHANGED
@@ -2411,6 +2411,38 @@
2411
2411
  }
2412
2412
  ]
2413
2413
  },
2414
+ {
2415
+ "type": "CHOICE",
2416
+ "members": [
2417
+ {
2418
+ "type": "FIELD",
2419
+ "name": "security",
2420
+ "content": {
2421
+ "type": "SYMBOL",
2422
+ "name": "security_policy"
2423
+ }
2424
+ },
2425
+ {
2426
+ "type": "BLANK"
2427
+ }
2428
+ ]
2429
+ },
2430
+ {
2431
+ "type": "CHOICE",
2432
+ "members": [
2433
+ {
2434
+ "type": "FIELD",
2435
+ "name": "limits",
2436
+ "content": {
2437
+ "type": "SYMBOL",
2438
+ "name": "limits_policy"
2439
+ }
2440
+ },
2441
+ {
2442
+ "type": "BLANK"
2443
+ }
2444
+ ]
2445
+ },
2414
2446
  {
2415
2447
  "type": "REPEAT",
2416
2448
  "content": {
@@ -2490,6 +2522,138 @@
2490
2522
  }
2491
2523
  ]
2492
2524
  },
2525
+ "security_policy": {
2526
+ "type": "SEQ",
2527
+ "members": [
2528
+ {
2529
+ "type": "STRING",
2530
+ "value": "security"
2531
+ },
2532
+ {
2533
+ "type": "STRING",
2534
+ "value": "{"
2535
+ },
2536
+ {
2537
+ "type": "REPEAT",
2538
+ "content": {
2539
+ "type": "SEQ",
2540
+ "members": [
2541
+ {
2542
+ "type": "SYMBOL",
2543
+ "name": "security_field"
2544
+ },
2545
+ {
2546
+ "type": "CHOICE",
2547
+ "members": [
2548
+ {
2549
+ "type": "STRING",
2550
+ "value": ","
2551
+ },
2552
+ {
2553
+ "type": "BLANK"
2554
+ }
2555
+ ]
2556
+ }
2557
+ ]
2558
+ }
2559
+ },
2560
+ {
2561
+ "type": "STRING",
2562
+ "value": "}"
2563
+ }
2564
+ ]
2565
+ },
2566
+ "security_field": {
2567
+ "type": "SEQ",
2568
+ "members": [
2569
+ {
2570
+ "type": "FIELD",
2571
+ "name": "name",
2572
+ "content": {
2573
+ "type": "SYMBOL",
2574
+ "name": "identifier"
2575
+ }
2576
+ },
2577
+ {
2578
+ "type": "STRING",
2579
+ "value": ":"
2580
+ },
2581
+ {
2582
+ "type": "FIELD",
2583
+ "name": "value",
2584
+ "content": {
2585
+ "type": "SYMBOL",
2586
+ "name": "_expression"
2587
+ }
2588
+ }
2589
+ ]
2590
+ },
2591
+ "limits_policy": {
2592
+ "type": "SEQ",
2593
+ "members": [
2594
+ {
2595
+ "type": "STRING",
2596
+ "value": "limits"
2597
+ },
2598
+ {
2599
+ "type": "STRING",
2600
+ "value": "{"
2601
+ },
2602
+ {
2603
+ "type": "REPEAT",
2604
+ "content": {
2605
+ "type": "SEQ",
2606
+ "members": [
2607
+ {
2608
+ "type": "SYMBOL",
2609
+ "name": "limits_field"
2610
+ },
2611
+ {
2612
+ "type": "CHOICE",
2613
+ "members": [
2614
+ {
2615
+ "type": "STRING",
2616
+ "value": ","
2617
+ },
2618
+ {
2619
+ "type": "BLANK"
2620
+ }
2621
+ ]
2622
+ }
2623
+ ]
2624
+ }
2625
+ },
2626
+ {
2627
+ "type": "STRING",
2628
+ "value": "}"
2629
+ }
2630
+ ]
2631
+ },
2632
+ "limits_field": {
2633
+ "type": "SEQ",
2634
+ "members": [
2635
+ {
2636
+ "type": "FIELD",
2637
+ "name": "name",
2638
+ "content": {
2639
+ "type": "SYMBOL",
2640
+ "name": "identifier"
2641
+ }
2642
+ },
2643
+ {
2644
+ "type": "STRING",
2645
+ "value": ":"
2646
+ },
2647
+ {
2648
+ "type": "FIELD",
2649
+ "name": "value",
2650
+ "content": {
2651
+ "type": "SYMBOL",
2652
+ "name": "_expression"
2653
+ }
2654
+ }
2655
+ ]
2656
+ },
2493
2657
  "service_protocol": {
2494
2658
  "type": "SEQ",
2495
2659
  "members": [
@@ -6785,11 +6949,11 @@
6785
6949
  },
6786
6950
  "number_literal": {
6787
6951
  "type": "PATTERN",
6788
- "value": "[0-9]+"
6952
+ "value": "[0-9]+(_[0-9]+)*"
6789
6953
  },
6790
6954
  "float_literal": {
6791
6955
  "type": "PATTERN",
6792
- "value": "[0-9]+\\.[0-9]+([eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+"
6956
+ "value": "[0-9]+(_[0-9]+)*\\.[0-9]+(_[0-9]+)*([eE][+-]?[0-9]+(_[0-9]+)*)?|[0-9]+(_[0-9]+)*[eE][+-]?[0-9]+(_[0-9]+)*"
6793
6957
  },
6794
6958
  "string_literal": {
6795
6959
  "type": "SEQ",
@@ -4377,6 +4377,163 @@
4377
4377
  }
4378
4378
  }
4379
4379
  },
4380
+ {
4381
+ "type": "limits_field",
4382
+ "named": true,
4383
+ "fields": {
4384
+ "name": {
4385
+ "multiple": false,
4386
+ "required": true,
4387
+ "types": [
4388
+ {
4389
+ "type": "identifier",
4390
+ "named": true
4391
+ }
4392
+ ]
4393
+ },
4394
+ "value": {
4395
+ "multiple": false,
4396
+ "required": true,
4397
+ "types": [
4398
+ {
4399
+ "type": "binary_expr",
4400
+ "named": true
4401
+ },
4402
+ {
4403
+ "type": "block",
4404
+ "named": true
4405
+ },
4406
+ {
4407
+ "type": "boolean_literal",
4408
+ "named": true
4409
+ },
4410
+ {
4411
+ "type": "call",
4412
+ "named": true
4413
+ },
4414
+ {
4415
+ "type": "effect_pure_expr",
4416
+ "named": true
4417
+ },
4418
+ {
4419
+ "type": "err_expr",
4420
+ "named": true
4421
+ },
4422
+ {
4423
+ "type": "expect_expr",
4424
+ "named": true
4425
+ },
4426
+ {
4427
+ "type": "field_access",
4428
+ "named": true
4429
+ },
4430
+ {
4431
+ "type": "float_literal",
4432
+ "named": true
4433
+ },
4434
+ {
4435
+ "type": "identifier",
4436
+ "named": true
4437
+ },
4438
+ {
4439
+ "type": "if_expr",
4440
+ "named": true
4441
+ },
4442
+ {
4443
+ "type": "is_expr",
4444
+ "named": true
4445
+ },
4446
+ {
4447
+ "type": "lambda_expr",
4448
+ "named": true
4449
+ },
4450
+ {
4451
+ "type": "list_literal",
4452
+ "named": true
4453
+ },
4454
+ {
4455
+ "type": "match_expr",
4456
+ "named": true
4457
+ },
4458
+ {
4459
+ "type": "method_call",
4460
+ "named": true
4461
+ },
4462
+ {
4463
+ "type": "none_expr",
4464
+ "named": true
4465
+ },
4466
+ {
4467
+ "type": "number_literal",
4468
+ "named": true
4469
+ },
4470
+ {
4471
+ "type": "ok_expr",
4472
+ "named": true
4473
+ },
4474
+ {
4475
+ "type": "paren_expr",
4476
+ "named": true
4477
+ },
4478
+ {
4479
+ "type": "question_expr",
4480
+ "named": true
4481
+ },
4482
+ {
4483
+ "type": "record_construction",
4484
+ "named": true
4485
+ },
4486
+ {
4487
+ "type": "record_spread",
4488
+ "named": true
4489
+ },
4490
+ {
4491
+ "type": "self_expr",
4492
+ "named": true
4493
+ },
4494
+ {
4495
+ "type": "some_expr",
4496
+ "named": true
4497
+ },
4498
+ {
4499
+ "type": "string_literal",
4500
+ "named": true
4501
+ },
4502
+ {
4503
+ "type": "trace_expr",
4504
+ "named": true
4505
+ },
4506
+ {
4507
+ "type": "unary_expr",
4508
+ "named": true
4509
+ },
4510
+ {
4511
+ "type": "unit_literal",
4512
+ "named": true
4513
+ },
4514
+ {
4515
+ "type": "val_expr",
4516
+ "named": true
4517
+ }
4518
+ ]
4519
+ }
4520
+ }
4521
+ },
4522
+ {
4523
+ "type": "limits_policy",
4524
+ "named": true,
4525
+ "fields": {},
4526
+ "children": {
4527
+ "multiple": true,
4528
+ "required": false,
4529
+ "types": [
4530
+ {
4531
+ "type": "limits_field",
4532
+ "named": true
4533
+ }
4534
+ ]
4535
+ }
4536
+ },
4380
4537
  {
4381
4538
  "type": "list_literal",
4382
4539
  "named": true,
@@ -7128,6 +7285,163 @@
7128
7285
  ]
7129
7286
  }
7130
7287
  },
7288
+ {
7289
+ "type": "security_field",
7290
+ "named": true,
7291
+ "fields": {
7292
+ "name": {
7293
+ "multiple": false,
7294
+ "required": true,
7295
+ "types": [
7296
+ {
7297
+ "type": "identifier",
7298
+ "named": true
7299
+ }
7300
+ ]
7301
+ },
7302
+ "value": {
7303
+ "multiple": false,
7304
+ "required": true,
7305
+ "types": [
7306
+ {
7307
+ "type": "binary_expr",
7308
+ "named": true
7309
+ },
7310
+ {
7311
+ "type": "block",
7312
+ "named": true
7313
+ },
7314
+ {
7315
+ "type": "boolean_literal",
7316
+ "named": true
7317
+ },
7318
+ {
7319
+ "type": "call",
7320
+ "named": true
7321
+ },
7322
+ {
7323
+ "type": "effect_pure_expr",
7324
+ "named": true
7325
+ },
7326
+ {
7327
+ "type": "err_expr",
7328
+ "named": true
7329
+ },
7330
+ {
7331
+ "type": "expect_expr",
7332
+ "named": true
7333
+ },
7334
+ {
7335
+ "type": "field_access",
7336
+ "named": true
7337
+ },
7338
+ {
7339
+ "type": "float_literal",
7340
+ "named": true
7341
+ },
7342
+ {
7343
+ "type": "identifier",
7344
+ "named": true
7345
+ },
7346
+ {
7347
+ "type": "if_expr",
7348
+ "named": true
7349
+ },
7350
+ {
7351
+ "type": "is_expr",
7352
+ "named": true
7353
+ },
7354
+ {
7355
+ "type": "lambda_expr",
7356
+ "named": true
7357
+ },
7358
+ {
7359
+ "type": "list_literal",
7360
+ "named": true
7361
+ },
7362
+ {
7363
+ "type": "match_expr",
7364
+ "named": true
7365
+ },
7366
+ {
7367
+ "type": "method_call",
7368
+ "named": true
7369
+ },
7370
+ {
7371
+ "type": "none_expr",
7372
+ "named": true
7373
+ },
7374
+ {
7375
+ "type": "number_literal",
7376
+ "named": true
7377
+ },
7378
+ {
7379
+ "type": "ok_expr",
7380
+ "named": true
7381
+ },
7382
+ {
7383
+ "type": "paren_expr",
7384
+ "named": true
7385
+ },
7386
+ {
7387
+ "type": "question_expr",
7388
+ "named": true
7389
+ },
7390
+ {
7391
+ "type": "record_construction",
7392
+ "named": true
7393
+ },
7394
+ {
7395
+ "type": "record_spread",
7396
+ "named": true
7397
+ },
7398
+ {
7399
+ "type": "self_expr",
7400
+ "named": true
7401
+ },
7402
+ {
7403
+ "type": "some_expr",
7404
+ "named": true
7405
+ },
7406
+ {
7407
+ "type": "string_literal",
7408
+ "named": true
7409
+ },
7410
+ {
7411
+ "type": "trace_expr",
7412
+ "named": true
7413
+ },
7414
+ {
7415
+ "type": "unary_expr",
7416
+ "named": true
7417
+ },
7418
+ {
7419
+ "type": "unit_literal",
7420
+ "named": true
7421
+ },
7422
+ {
7423
+ "type": "val_expr",
7424
+ "named": true
7425
+ }
7426
+ ]
7427
+ }
7428
+ }
7429
+ },
7430
+ {
7431
+ "type": "security_policy",
7432
+ "named": true,
7433
+ "fields": {},
7434
+ "children": {
7435
+ "multiple": true,
7436
+ "required": false,
7437
+ "types": [
7438
+ {
7439
+ "type": "security_field",
7440
+ "named": true
7441
+ }
7442
+ ]
7443
+ }
7444
+ },
7131
7445
  {
7132
7446
  "type": "self_expr",
7133
7447
  "named": true,
@@ -7152,6 +7466,16 @@
7152
7466
  }
7153
7467
  ]
7154
7468
  },
7469
+ "limits": {
7470
+ "multiple": false,
7471
+ "required": false,
7472
+ "types": [
7473
+ {
7474
+ "type": "limits_policy",
7475
+ "named": true
7476
+ }
7477
+ ]
7478
+ },
7155
7479
  "name": {
7156
7480
  "multiple": false,
7157
7481
  "required": true,
@@ -7171,6 +7495,16 @@
7171
7495
  "named": true
7172
7496
  }
7173
7497
  ]
7498
+ },
7499
+ "security": {
7500
+ "multiple": false,
7501
+ "required": false,
7502
+ "types": [
7503
+ {
7504
+ "type": "security_policy",
7505
+ "named": true
7506
+ }
7507
+ ]
7174
7508
  }
7175
7509
  },
7176
7510
  "children": {
@@ -9322,6 +9656,10 @@
9322
9656
  "type": "let",
9323
9657
  "named": false
9324
9658
  },
9659
+ {
9660
+ "type": "limits",
9661
+ "named": false
9662
+ },
9325
9663
  {
9326
9664
  "type": "line_comment",
9327
9665
  "named": true,
@@ -9391,6 +9729,10 @@
9391
9729
  "type": "schedule",
9392
9730
  "named": false
9393
9731
  },
9732
+ {
9733
+ "type": "security",
9734
+ "named": false
9735
+ },
9394
9736
  {
9395
9737
  "type": "self",
9396
9738
  "named": false