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,10 @@
1
+ # Generated from lib/moku6/rules/visibility_rule.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ module Rules
5
+ class VisibilityRule < BaseRule
6
+ # : (Event event) -> Array[Offense]
7
+ def check: (Event event) -> Array[Offense]
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ # Generated from lib/moku6/version.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ VERSION: String
5
+ end
@@ -0,0 +1,9 @@
1
+ # Generated from lib/moku6.rb with RBS::Inline
2
+
3
+ module Moku6
4
+ class Error < StandardError
5
+ end
6
+
7
+ class UsageError < Error
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ # Hand-written supplements for third-party gems and stdlib gaps.
2
+
3
+ # senko's bundled RBS is not wired into this project's signature load path.
4
+ Senko: untyped
5
+
6
+ # YAML is an alias of Psych; both safe_load_file and SyntaxError are missing
7
+ # from the bundled stdlib RBS.
8
+ module Psych
9
+ def self.safe_load_file: (untyped path, ?permitted_classes: untyped, ?permitted_symbols: untyped, ?aliases: untyped, **untyped) -> untyped
10
+
11
+ class SyntaxError < ::StandardError
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ # Hand-written: Offense is a Struct, which rbs-inline cannot type precisely.
2
+ module Moku6
3
+ class Offense
4
+ attr_accessor rule: String?
5
+ attr_accessor severity: Symbol
6
+ attr_accessor action: String?
7
+ attr_accessor file: String?
8
+ attr_accessor message: String?
9
+
10
+ def initialize: (?rule: String?, ?severity: Symbol, ?action: String?, ?file: String?, ?message: String?) -> void
11
+ def to_h: () -> Hash[Symbol, untyped]
12
+ end
13
+ end
@@ -0,0 +1,18 @@
1
+ catalog_dir: catalog
2
+ output_dir: generated
3
+
4
+ naming:
5
+ # Allowed action pattern (default: namespace.verb)
6
+ pattern: '^[a-z0-9_]+(\.[a-z0-9_]+)+$'
7
+
8
+ rules:
9
+ strict: false # treat warnings as errors when true
10
+ warn_pii_field_names: true
11
+
12
+ generators:
13
+ docs: { out: generated/docs/audit-events.md }
14
+ json_schema: { out: generated/schema }
15
+ typescript: { out: generated/typescript/audit-events.ts }
16
+ ruby: { out: generated/ruby/audit_events.rb }
17
+ bigquery: { out: generated/bigquery/audit_events.sql }
18
+ examples: { out: examples/generated }
@@ -0,0 +1,36 @@
1
+ action: employee.updated
2
+ label: Employee updated
3
+ description: Recorded when an employee's basic information is updated
4
+
5
+ category: employee
6
+ required: true
7
+
8
+ actor:
9
+ required: true
10
+
11
+ target:
12
+ type: employee
13
+ required: true
14
+
15
+ fields:
16
+ employee_id:
17
+ type: string
18
+ required: true
19
+ description: ID of the updated employee
20
+ changed_fields:
21
+ type: array
22
+ required: true
23
+ description: List of changed field names
24
+
25
+ privacy:
26
+ contains_personal_data: true
27
+ masked_fields:
28
+ - before.email
29
+ - after.email
30
+
31
+ visibility:
32
+ customer_visible: true
33
+ internal_only: false
34
+
35
+ retention:
36
+ years: 5
metadata ADDED
@@ -0,0 +1,141 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: moku6
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Yudai Takada
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: senko
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '0.1'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '0.1'
26
+ description: moku6 is not another audit log storage library. It helps teams define
27
+ what should be recorded as audit events, how each event should be shaped, which
28
+ fields are required, whether personal data must be hidden, and whether the event
29
+ can be shown to customers.
30
+ email:
31
+ - t.yudai92@gmail.com
32
+ executables:
33
+ - moku6
34
+ extensions: []
35
+ extra_rdoc_files: []
36
+ files:
37
+ - LICENSE.txt
38
+ - README.md
39
+ - exe/moku6
40
+ - lib/moku6.rb
41
+ - lib/moku6/catalog.rb
42
+ - lib/moku6/cli.rb
43
+ - lib/moku6/config.rb
44
+ - lib/moku6/differ.rb
45
+ - lib/moku6/envelope_schema.rb
46
+ - lib/moku6/event.rb
47
+ - lib/moku6/generate.rb
48
+ - lib/moku6/generators.rb
49
+ - lib/moku6/generators/base_generator.rb
50
+ - lib/moku6/generators/bigquery_generator.rb
51
+ - lib/moku6/generators/cloud_events_generator.rb
52
+ - lib/moku6/generators/docs_generator.rb
53
+ - lib/moku6/generators/event_catalog_generator.rb
54
+ - lib/moku6/generators/example_generator.rb
55
+ - lib/moku6/generators/json_schema_generator.rb
56
+ - lib/moku6/generators/open_api_generator.rb
57
+ - lib/moku6/generators/outbox_generator.rb
58
+ - lib/moku6/generators/rails_generator.rb
59
+ - lib/moku6/generators/ruby_generator.rb
60
+ - lib/moku6/generators/typescript_generator.rb
61
+ - lib/moku6/initializer.rb
62
+ - lib/moku6/linter.rb
63
+ - lib/moku6/loader.rb
64
+ - lib/moku6/offense.rb
65
+ - lib/moku6/reporter.rb
66
+ - lib/moku6/result.rb
67
+ - lib/moku6/rules/action_naming_rule.rb
68
+ - lib/moku6/rules/base_rule.rb
69
+ - lib/moku6/rules/example_consistency_rule.rb
70
+ - lib/moku6/rules/label_description_rule.rb
71
+ - lib/moku6/rules/pii_field_name_heuristic_rule.rb
72
+ - lib/moku6/rules/privacy_masking_rule.rb
73
+ - lib/moku6/rules/retention_rule.rb
74
+ - lib/moku6/rules/schema_rule.rb
75
+ - lib/moku6/rules/uniqueness_rule.rb
76
+ - lib/moku6/rules/visibility_rule.rb
77
+ - lib/moku6/version.rb
78
+ - schemas/audit-event.schema.json
79
+ - sig/generated/moku6.rbs
80
+ - sig/generated/moku6/catalog.rbs
81
+ - sig/generated/moku6/config.rbs
82
+ - sig/generated/moku6/differ.rbs
83
+ - sig/generated/moku6/envelope_schema.rbs
84
+ - sig/generated/moku6/event.rbs
85
+ - sig/generated/moku6/generators.rbs
86
+ - sig/generated/moku6/generators/base_generator.rbs
87
+ - sig/generated/moku6/generators/bigquery_generator.rbs
88
+ - sig/generated/moku6/generators/cloud_events_generator.rbs
89
+ - sig/generated/moku6/generators/docs_generator.rbs
90
+ - sig/generated/moku6/generators/event_catalog_generator.rbs
91
+ - sig/generated/moku6/generators/example_generator.rbs
92
+ - sig/generated/moku6/generators/json_schema_generator.rbs
93
+ - sig/generated/moku6/generators/open_api_generator.rbs
94
+ - sig/generated/moku6/generators/outbox_generator.rbs
95
+ - sig/generated/moku6/generators/rails_generator.rbs
96
+ - sig/generated/moku6/generators/ruby_generator.rbs
97
+ - sig/generated/moku6/generators/typescript_generator.rbs
98
+ - sig/generated/moku6/initializer.rbs
99
+ - sig/generated/moku6/linter.rbs
100
+ - sig/generated/moku6/loader.rbs
101
+ - sig/generated/moku6/reporter.rbs
102
+ - sig/generated/moku6/result.rbs
103
+ - sig/generated/moku6/rules/action_naming_rule.rbs
104
+ - sig/generated/moku6/rules/base_rule.rbs
105
+ - sig/generated/moku6/rules/example_consistency_rule.rbs
106
+ - sig/generated/moku6/rules/label_description_rule.rbs
107
+ - sig/generated/moku6/rules/pii_field_name_heuristic_rule.rbs
108
+ - sig/generated/moku6/rules/privacy_masking_rule.rbs
109
+ - sig/generated/moku6/rules/retention_rule.rbs
110
+ - sig/generated/moku6/rules/schema_rule.rbs
111
+ - sig/generated/moku6/rules/uniqueness_rule.rbs
112
+ - sig/generated/moku6/rules/visibility_rule.rbs
113
+ - sig/generated/moku6/version.rbs
114
+ - sig/manual/dependencies.rbs
115
+ - sig/manual/offense.rbs
116
+ - templates/init/.moku6.yml
117
+ - templates/init/catalog/employee.updated.yaml
118
+ homepage: https://github.com/ydah/moku6
119
+ licenses:
120
+ - MIT
121
+ metadata:
122
+ homepage_uri: https://github.com/ydah/moku6
123
+ source_code_uri: https://github.com/ydah/moku6
124
+ rdoc_options: []
125
+ require_paths:
126
+ - lib
127
+ required_ruby_version: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: 3.1.0
132
+ required_rubygems_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ requirements: []
138
+ rubygems_version: 4.0.6
139
+ specification_version: 4
140
+ summary: Define, lint, and document business-level audit events.
141
+ test_files: []