moku6 0.1.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 (83) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +131 -0
  4. data/exe/moku6 +6 -0
  5. data/lib/moku6/catalog.rb +23 -0
  6. data/lib/moku6/cli.rb +118 -0
  7. data/lib/moku6/config.rb +61 -0
  8. data/lib/moku6/differ.rb +74 -0
  9. data/lib/moku6/envelope_schema.rb +56 -0
  10. data/lib/moku6/event.rb +54 -0
  11. data/lib/moku6/generate.rb +95 -0
  12. data/lib/moku6/generators/base_generator.rb +31 -0
  13. data/lib/moku6/generators/bigquery_generator.rb +29 -0
  14. data/lib/moku6/generators/cloud_events_generator.rb +47 -0
  15. data/lib/moku6/generators/docs_generator.rb +49 -0
  16. data/lib/moku6/generators/event_catalog_generator.rb +57 -0
  17. data/lib/moku6/generators/example_generator.rb +66 -0
  18. data/lib/moku6/generators/json_schema_generator.rb +23 -0
  19. data/lib/moku6/generators/open_api_generator.rb +60 -0
  20. data/lib/moku6/generators/outbox_generator.rb +96 -0
  21. data/lib/moku6/generators/rails_generator.rb +84 -0
  22. data/lib/moku6/generators/ruby_generator.rb +27 -0
  23. data/lib/moku6/generators/typescript_generator.rb +59 -0
  24. data/lib/moku6/generators.rb +29 -0
  25. data/lib/moku6/initializer.rb +44 -0
  26. data/lib/moku6/linter.rb +60 -0
  27. data/lib/moku6/loader.rb +31 -0
  28. data/lib/moku6/offense.rb +13 -0
  29. data/lib/moku6/reporter.rb +71 -0
  30. data/lib/moku6/result.rb +23 -0
  31. data/lib/moku6/rules/action_naming_rule.rb +18 -0
  32. data/lib/moku6/rules/base_rule.rb +37 -0
  33. data/lib/moku6/rules/example_consistency_rule.rb +53 -0
  34. data/lib/moku6/rules/label_description_rule.rb +21 -0
  35. data/lib/moku6/rules/pii_field_name_heuristic_rule.rb +45 -0
  36. data/lib/moku6/rules/privacy_masking_rule.rb +21 -0
  37. data/lib/moku6/rules/retention_rule.rb +19 -0
  38. data/lib/moku6/rules/schema_rule.rb +31 -0
  39. data/lib/moku6/rules/uniqueness_rule.rb +22 -0
  40. data/lib/moku6/rules/visibility_rule.rb +27 -0
  41. data/lib/moku6/version.rb +6 -0
  42. data/lib/moku6.rb +55 -0
  43. data/schemas/audit-event.schema.json +85 -0
  44. data/sig/generated/moku6/catalog.rbs +22 -0
  45. data/sig/generated/moku6/config.rbs +43 -0
  46. data/sig/generated/moku6/differ.rbs +28 -0
  47. data/sig/generated/moku6/envelope_schema.rbs +19 -0
  48. data/sig/generated/moku6/event.rbs +51 -0
  49. data/sig/generated/moku6/generators/base_generator.rbs +22 -0
  50. data/sig/generated/moku6/generators/bigquery_generator.rbs +12 -0
  51. data/sig/generated/moku6/generators/cloud_events_generator.rbs +19 -0
  52. data/sig/generated/moku6/generators/docs_generator.rbs +18 -0
  53. data/sig/generated/moku6/generators/event_catalog_generator.rbs +16 -0
  54. data/sig/generated/moku6/generators/example_generator.rbs +23 -0
  55. data/sig/generated/moku6/generators/json_schema_generator.rbs +12 -0
  56. data/sig/generated/moku6/generators/open_api_generator.rbs +20 -0
  57. data/sig/generated/moku6/generators/outbox_generator.rbs +23 -0
  58. data/sig/generated/moku6/generators/rails_generator.rbs +23 -0
  59. data/sig/generated/moku6/generators/ruby_generator.rbs +15 -0
  60. data/sig/generated/moku6/generators/typescript_generator.rbs +20 -0
  61. data/sig/generated/moku6/generators.rbs +13 -0
  62. data/sig/generated/moku6/initializer.rbs +23 -0
  63. data/sig/generated/moku6/linter.rbs +31 -0
  64. data/sig/generated/moku6/loader.rbs +15 -0
  65. data/sig/generated/moku6/reporter.rbs +30 -0
  66. data/sig/generated/moku6/result.rbs +22 -0
  67. data/sig/generated/moku6/rules/action_naming_rule.rbs +10 -0
  68. data/sig/generated/moku6/rules/base_rule.rbs +23 -0
  69. data/sig/generated/moku6/rules/example_consistency_rule.rbs +18 -0
  70. data/sig/generated/moku6/rules/label_description_rule.rbs +15 -0
  71. data/sig/generated/moku6/rules/pii_field_name_heuristic_rule.rbs +21 -0
  72. data/sig/generated/moku6/rules/privacy_masking_rule.rbs +10 -0
  73. data/sig/generated/moku6/rules/retention_rule.rbs +10 -0
  74. data/sig/generated/moku6/rules/schema_rule.rbs +15 -0
  75. data/sig/generated/moku6/rules/uniqueness_rule.rbs +11 -0
  76. data/sig/generated/moku6/rules/visibility_rule.rbs +10 -0
  77. data/sig/generated/moku6/version.rbs +5 -0
  78. data/sig/generated/moku6.rbs +9 -0
  79. data/sig/manual/dependencies.rbs +13 -0
  80. data/sig/manual/offense.rbs +13 -0
  81. data/templates/init/.moku6.yml +18 -0
  82. data/templates/init/catalog/employee.updated.yaml +36 -0
  83. metadata +141 -0
@@ -0,0 +1,43 @@
1
+ # Generated from lib/moku6/config.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ class Config
5
+ DEFAULTS: Hash[String, untyped]
6
+
7
+ DEFAULT_CONFIG_PATH: String
8
+
9
+ # : (?Hash[Symbol, untyped] options) -> Config
10
+ def self.load: (?Hash[Symbol, untyped] options) -> Config
11
+
12
+ # : (Hash[String, untyped] base, Hash[String, untyped] override) -> Hash[String, untyped]
13
+ def self.deep_merge: (Hash[String, untyped] base, Hash[String, untyped] override) -> Hash[String, untyped]
14
+
15
+ attr_reader data: Hash[String, untyped]
16
+
17
+ attr_reader options: Hash[Symbol, untyped]
18
+
19
+ # : (Hash[String, untyped] data, ?Hash[Symbol, untyped] options) -> void
20
+ def initialize: (Hash[String, untyped] data, ?Hash[Symbol, untyped] options) -> void
21
+
22
+ # : () -> String?
23
+ def catalog_dir: () -> String?
24
+
25
+ # : () -> String?
26
+ def output_dir: () -> String?
27
+
28
+ # : () -> String?
29
+ def naming_pattern: () -> String?
30
+
31
+ # : () -> bool
32
+ def strict?: () -> bool
33
+
34
+ # : () -> bool
35
+ def warn_pii_field_names?: () -> bool
36
+
37
+ # : () -> String
38
+ def examples_dir: () -> String
39
+
40
+ # : (String | Symbol name) -> String?
41
+ def generator_out: (String | Symbol name) -> String?
42
+ end
43
+ end
@@ -0,0 +1,28 @@
1
+ # Generated from lib/moku6/differ.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ # Detects breaking changes between two catalogs (design sections 13 / 16).
5
+ # Breaking changes (error): action removed, required field added, field type changed.
6
+ class Differ
7
+ @old: Catalog
8
+
9
+ @new: Catalog
10
+
11
+ # : (Catalog old_catalog, Catalog new_catalog) -> void
12
+ def initialize: (Catalog old_catalog, Catalog new_catalog) -> void
13
+
14
+ # : () -> Result
15
+ def run: () -> Result
16
+
17
+ private
18
+
19
+ # : () -> Array[Offense]
20
+ def removed_actions: () -> Array[Offense]
21
+
22
+ # : (Event old_event, Event new_event) -> Array[Offense]
23
+ def field_changes: (Event old_event, Event new_event) -> Array[Offense]
24
+
25
+ # : (Event event, String message, String rule) -> Offense
26
+ def breaking: (Event event, String message, String rule) -> Offense
27
+ end
28
+ end
@@ -0,0 +1,19 @@
1
+ # Generated from lib/moku6/envelope_schema.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ # Builds the runtime event (envelope) validation JSON Schema from a definition.
5
+ # Shared by JsonSchemaGenerator and ExampleConsistencyRule (see design sections 8 / 12.2).
6
+ module EnvelopeSchema
7
+ TYPE_MAP: Hash[String, Hash[String, String]]
8
+
9
+ # : (Event event) -> Hash[String, untyped]
10
+ def self?.for: (Event event) -> Hash[String, untyped]
11
+
12
+ # The schema for the `metadata` object (the definition's fields).
13
+ # : (Event event) -> Hash[String, untyped]
14
+ def self?.metadata_schema: (Event event) -> Hash[String, untyped]
15
+
16
+ # : (Hash[String, untyped] f) -> Hash[String, untyped]
17
+ def self?.field_type: (Hash[String, untyped] f) -> Hash[String, untyped]
18
+ end
19
+ end
@@ -0,0 +1,51 @@
1
+ # Generated from lib/moku6/event.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ class Event
5
+ attr_reader data: Hash[String, untyped]
6
+
7
+ attr_reader source_path: String
8
+
9
+ # : (Hash[String, untyped]? data, source_path: String) -> void
10
+ def initialize: (Hash[String, untyped]? data, source_path: String) -> void
11
+
12
+ # : () -> String?
13
+ def action: () -> String?
14
+
15
+ # : () -> String?
16
+ def label: () -> String?
17
+
18
+ # : () -> String?
19
+ def description: () -> String?
20
+
21
+ # : () -> String?
22
+ def category: () -> String?
23
+
24
+ # : () -> bool
25
+ def required?: () -> bool
26
+
27
+ # : () -> untyped
28
+ def actor: () -> untyped
29
+
30
+ # : () -> untyped
31
+ def target: () -> untyped
32
+
33
+ # : () -> Hash[String, untyped]
34
+ def fields: () -> Hash[String, untyped]
35
+
36
+ # : () -> untyped
37
+ def privacy: () -> untyped
38
+
39
+ # : () -> untyped
40
+ def visibility: () -> untyped
41
+
42
+ # : () -> untyped
43
+ def retention: () -> untyped
44
+
45
+ # : () -> Array[untyped]
46
+ def examples: () -> Array[untyped]
47
+
48
+ # : () -> Hash[String, untyped]
49
+ def to_h: () -> Hash[String, untyped]
50
+ end
51
+ end
@@ -0,0 +1,22 @@
1
+ # Generated from lib/moku6/generators/base_generator.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Generators
5
+ class BaseGenerator
6
+ AUTOGEN_NOTE: String
7
+
8
+ @catalog: Catalog
9
+
10
+ @config: Config
11
+
12
+ # : (Catalog catalog, Config config) -> void
13
+ def initialize: (Catalog catalog, Config config) -> void
14
+
15
+ # : () -> String
16
+ def render: () -> String
17
+
18
+ # : (String path) -> String
19
+ def write: (String path) -> String
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,12 @@
1
+ # Generated from lib/moku6/generators/bigquery_generator.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Generators
5
+ # Emits BigQuery DDL for the shared envelope (design section 12.5).
6
+ # Fields live in the `metadata JSON` column, consistent with section 8.
7
+ class BigQueryGenerator < BaseGenerator
8
+ # : () -> String
9
+ def render: () -> String
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,19 @@
1
+ # Generated from lib/moku6/generators/cloud_events_generator.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Generators
5
+ # Emits a CloudEvents (v1.0, structured JSON mode) validation JSON Schema per
6
+ # action. The CloudEvents `type` maps to the action and `data` carries the
7
+ # definition's metadata (design section 13: CloudEvents conversion).
8
+ class CloudEventsGenerator < BaseGenerator
9
+ SPEC_VERSION: String
10
+
11
+ # : (String dir) -> String
12
+ def write: (String dir) -> String
13
+
14
+ private
15
+
16
+ def schema_for: (untyped e) -> untyped
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,18 @@
1
+ # Generated from lib/moku6/generators/docs_generator.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Generators
5
+ class DocsGenerator < BaseGenerator
6
+ # : () -> String
7
+ def render: () -> String
8
+
9
+ private
10
+
11
+ def summary_table: () -> untyped
12
+
13
+ def detail: (untyped e) -> untyped
14
+
15
+ def yn: (untyped v) -> untyped
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,16 @@
1
+ # Generated from lib/moku6/generators/event_catalog_generator.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Generators
5
+ # Emits EventCatalog (eventcatalog.dev) compatible event documents, one per
6
+ # action at <action>/index.md (design section 13: EventCatalog integration).
7
+ class EventCatalogGenerator < BaseGenerator
8
+ # : (String dir) -> String
9
+ def write: (String dir) -> String
10
+
11
+ private
12
+
13
+ def document: (untyped e) -> untyped
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,23 @@
1
+ # Generated from lib/moku6/generators/example_generator.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Generators
5
+ # Generates a minimal sample event (envelope) satisfying required fields per definition.
6
+ class ExampleGenerator < BaseGenerator
7
+ # : (String dir) -> String
8
+ def write: (String dir) -> String
9
+
10
+ private
11
+
12
+ def example_for: (untyped e) -> untyped
13
+
14
+ def actor_sample: (untyped e) -> untyped
15
+
16
+ def target_sample: (untyped e) -> untyped
17
+
18
+ def metadata_sample: (untyped e) -> untyped
19
+
20
+ def sample_value: (untyped type) -> untyped
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,12 @@
1
+ # Generated from lib/moku6/generators/json_schema_generator.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Generators
5
+ # Emits a runtime event (envelope) validation JSON Schema per action.
6
+ # write(dir) takes a directory and writes multiple files.
7
+ class JsonSchemaGenerator < BaseGenerator
8
+ # : (String dir) -> String
9
+ def write: (String dir) -> String
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,20 @@
1
+ # Generated from lib/moku6/generators/open_api_generator.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Generators
5
+ # Emits a single OpenAPI 3.1 document describing audit events as webhooks,
6
+ # with one component schema per action (design section 13: OpenAPI output).
7
+ class OpenApiGenerator < BaseGenerator
8
+ # : () -> String
9
+ def render: () -> String
10
+
11
+ private
12
+
13
+ def document: () -> untyped
14
+
15
+ def webhooks: () -> untyped
16
+
17
+ def schemas: () -> untyped
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,23 @@
1
+ # Generated from lib/moku6/generators/outbox_generator.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Generators
5
+ # Emits a sample Rails transactional outbox for audit events: a migration,
6
+ # an ActiveRecord model, and a dispatcher (design section 13: Outbox sample).
7
+ # The files are a starting point and are meant to be edited.
8
+ class OutboxGenerator < BaseGenerator
9
+ FILES: Hash[String, Symbol]
10
+
11
+ # : (String dir) -> String
12
+ def write: (String dir) -> String
13
+
14
+ private
15
+
16
+ def migration: () -> untyped
17
+
18
+ def model: () -> untyped
19
+
20
+ def dispatcher: () -> untyped
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ # Generated from lib/moku6/generators/rails_generator.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Generators
5
+ # Emits a Ruby SDK with one typed emitter method per action. Each method
6
+ # builds the canonical envelope and hands it to a configurable sink, so a
7
+ # Rails app can wire it to an outbox (design section 13: Rails SDK).
8
+ class RailsGenerator < BaseGenerator
9
+ # : () -> String
10
+ def render: () -> String
11
+
12
+ private
13
+
14
+ def sink_block: () -> untyped
15
+
16
+ def emitter_method: (untyped e) -> untyped
17
+
18
+ def method_name: (untyped e) -> untyped
19
+
20
+ def masked_fields: (untyped e) -> untyped
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,15 @@
1
+ # Generated from lib/moku6/generators/ruby_generator.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Generators
5
+ # Emits Ruby constants for every action (design section 12.4).
6
+ class RubyGenerator < BaseGenerator
7
+ # : () -> String
8
+ def render: () -> String
9
+
10
+ private
11
+
12
+ def const_name: (untyped e) -> untyped
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ # Generated from lib/moku6/generators/typescript_generator.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Generators
5
+ class TypeScriptGenerator < BaseGenerator
6
+ # : () -> String
7
+ def render: () -> String
8
+
9
+ private
10
+
11
+ def union_type: (untyped events) -> untyped
12
+
13
+ def interface: (untyped e) -> untyped
14
+
15
+ def iface_name: (untyped e) -> untyped
16
+
17
+ def ts: (untyped f) -> untyped
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,13 @@
1
+ # Generated from lib/moku6/generators.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Generators
5
+ REGISTRY: Hash[Symbol, untyped]
6
+
7
+ # : (String | Symbol name, untyped klass) -> untyped
8
+ def self.register: (String | Symbol name, untyped klass) -> untyped
9
+
10
+ # : (String | Symbol name, Catalog catalog, Config config) -> untyped
11
+ def self.build: (String | Symbol name, Catalog catalog, Config config) -> untyped
12
+ end
13
+ end
@@ -0,0 +1,23 @@
1
+ # Generated from lib/moku6/initializer.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ # Backs `moku6 init`. Copies templates/init into ./ (never overwrites existing files).
5
+ class Initializer
6
+ TEMPLATE_DIR: String
7
+
8
+ @options: Hash[Symbol, untyped]
9
+
10
+ @dest_root: String
11
+
12
+ # : (?Hash[Symbol, untyped] options) -> void
13
+ def initialize: (?Hash[Symbol, untyped] options) -> void
14
+
15
+ # : () -> void
16
+ def run: () -> void
17
+
18
+ private
19
+
20
+ # : () -> Array[String]
21
+ def entries: () -> Array[String]
22
+ end
23
+ end
@@ -0,0 +1,31 @@
1
+ # Generated from lib/moku6/linter.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ class Linter
5
+ EVENT_RULES: Array[singleton(Rules::BaseRule)]
6
+
7
+ CATALOG_RULES: Array[singleton(Rules::BaseRule)]
8
+
9
+ @catalog: Catalog
10
+
11
+ @config: Config
12
+
13
+ # : (singleton(Rules::BaseRule) klass) -> Array[singleton(Rules::BaseRule)]
14
+ def self.register_event_rule: (singleton(Rules::BaseRule) klass) -> Array[singleton(Rules::BaseRule)]
15
+
16
+ # : (singleton(Rules::BaseRule) klass) -> Array[singleton(Rules::BaseRule)]
17
+ def self.register_catalog_rule: (singleton(Rules::BaseRule) klass) -> Array[singleton(Rules::BaseRule)]
18
+
19
+ # : () -> Array[singleton(Rules::BaseRule)]
20
+ def self.custom_event_rules: () -> Array[singleton(Rules::BaseRule)]
21
+
22
+ # : () -> Array[singleton(Rules::BaseRule)]
23
+ def self.custom_catalog_rules: () -> Array[singleton(Rules::BaseRule)]
24
+
25
+ # : (Catalog catalog, Config config) -> void
26
+ def initialize: (Catalog catalog, Config config) -> void
27
+
28
+ # : () -> Result
29
+ def run: () -> Result
30
+ end
31
+ end
@@ -0,0 +1,15 @@
1
+ # Generated from lib/moku6/loader.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ class Loader
5
+ PERMITTED_CLASSES: Array[Class]
6
+
7
+ @catalog_dir: String
8
+
9
+ # : (String catalog_dir) -> void
10
+ def initialize: (String catalog_dir) -> void
11
+
12
+ # : () -> Catalog
13
+ def load: () -> Catalog
14
+ end
15
+ end
@@ -0,0 +1,30 @@
1
+ # Generated from lib/moku6/reporter.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Reporter
5
+ # : (String? format) -> untyped
6
+ def self.for: (String? format) -> untyped
7
+
8
+ module Text
9
+ # : (Result result) -> void
10
+ def self.report: (Result result) -> void
11
+ end
12
+
13
+ module Json
14
+ # : (Result result) -> void
15
+ def self.report: (Result result) -> void
16
+ end
17
+
18
+ # Review-friendly Markdown report (e.g. for posting as a PR comment).
19
+ module Markdown
20
+ # : (Result result) -> void
21
+ def self.report: (Result result) -> void
22
+
23
+ # : (Result result) -> String
24
+ def self.render: (Result result) -> String
25
+
26
+ # : (String title, Array[Offense] offenses) -> Array[String]
27
+ def self.section: (String title, Array[Offense] offenses) -> Array[String]
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,22 @@
1
+ # Generated from lib/moku6/result.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ class Result
5
+ attr_reader offenses: Array[Offense]
6
+
7
+ # : (Array[Offense] offenses) -> void
8
+ def initialize: (Array[Offense] offenses) -> void
9
+
10
+ # : () -> Array[Offense]
11
+ def errors: () -> Array[Offense]
12
+
13
+ # : () -> Array[Offense]
14
+ def warnings: () -> Array[Offense]
15
+
16
+ # : () -> bool
17
+ def errors?: () -> bool
18
+
19
+ # : () -> bool
20
+ def empty?: () -> bool
21
+ end
22
+ end
@@ -0,0 +1,10 @@
1
+ # Generated from lib/moku6/rules/action_naming_rule.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Rules
5
+ class ActionNamingRule < BaseRule
6
+ # : (Event event) -> Array[Offense]
7
+ def check: (Event event) -> Array[Offense]
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,23 @@
1
+ # Generated from lib/moku6/rules/base_rule.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Rules
5
+ class BaseRule
6
+ @config: Config
7
+
8
+ # : (Config config) -> void
9
+ def initialize: (Config config) -> void
10
+
11
+ # : (Event event) -> Array[Offense]
12
+ def check: (Event event) -> Array[Offense]
13
+
14
+ private
15
+
16
+ # : (Event event, Symbol severity, String message, ?rule: String) -> Offense
17
+ def offense: (Event event, Symbol severity, String message, ?rule: String) -> Offense
18
+
19
+ # : () -> String
20
+ def rule_id: () -> String
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,18 @@
1
+ # Generated from lib/moku6/rules/example_consistency_rule.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Rules
5
+ class ExampleConsistencyRule < BaseRule
6
+ # : (Event event) -> Array[Offense]
7
+ def check: (Event event) -> Array[Offense]
8
+
9
+ private
10
+
11
+ # : (Event event) -> Array[untyped]
12
+ def collect_examples: (Event event) -> Array[untyped]
13
+
14
+ # : (Event event) -> String?
15
+ def external_path: (Event event) -> String?
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,15 @@
1
+ # Generated from lib/moku6/rules/label_description_rule.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Rules
5
+ class LabelDescriptionRule < BaseRule
6
+ # : (Event event) -> Array[Offense]
7
+ def check: (Event event) -> Array[Offense]
8
+
9
+ private
10
+
11
+ # : (untyped value) -> bool
12
+ def blank?: (untyped value) -> bool
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,21 @@
1
+ # Generated from lib/moku6/rules/pii_field_name_heuristic_rule.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Rules
5
+ # Warns when a field name looks like PII (email/phone/ssn, ...) but is not
6
+ # covered by privacy.masked_fields (design section 10.1, v0.2).
7
+ class PiiFieldNameHeuristicRule < BaseRule
8
+ PII_PATTERN: Regexp
9
+
10
+ # : (Event event) -> Array[Offense]
11
+ def check: (Event event) -> Array[Offense]
12
+
13
+ private
14
+
15
+ # Tokens that count a field as masked: the full masked path and each of its
16
+ # dot-separated segments (e.g. "before.email" covers "email").
17
+ # : (Event event) -> Array[String]
18
+ def masked_field_tokens: (Event event) -> Array[String]
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,10 @@
1
+ # Generated from lib/moku6/rules/privacy_masking_rule.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Rules
5
+ class PrivacyMaskingRule < BaseRule
6
+ # : (Event event) -> Array[Offense]
7
+ def check: (Event event) -> Array[Offense]
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ # Generated from lib/moku6/rules/retention_rule.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Rules
5
+ class RetentionRule < BaseRule
6
+ # : (Event event) -> Array[Offense]
7
+ def check: (Event event) -> Array[Offense]
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,15 @@
1
+ # Generated from lib/moku6/rules/schema_rule.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Rules
5
+ class SchemaRule < BaseRule
6
+ SCHEMA_PATH: String
7
+
8
+ # : () -> untyped
9
+ def self.schemer: () -> untyped
10
+
11
+ # : (Event event) -> Array[Offense]
12
+ def check: (Event event) -> Array[Offense]
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,11 @@
1
+ # Generated from lib/moku6/rules/uniqueness_rule.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Rules
5
+ class UniquenessRule < BaseRule
6
+ # catalog-level rule
7
+ # : (Catalog catalog) -> Array[Offense]
8
+ def check_catalog: (Catalog catalog) -> Array[Offense]
9
+ end
10
+ end
11
+ end