@portll/cobolwork 0.5.0 → 0.7.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 (163) hide show
  1. package/README.md +89 -26
  2. package/STABILITY.md +76 -0
  3. package/bin/cobolwork.mjs +56 -14
  4. package/lib/baseline.mjs +9 -0
  5. package/lib/bms.mjs +21 -7
  6. package/lib/build.mjs +133 -53
  7. package/lib/capabilities.mjs +13 -11
  8. package/lib/cics-commands.mjs +501 -9
  9. package/lib/compliance.mjs +11 -0
  10. package/lib/consequence.mjs +17 -0
  11. package/lib/control-reuse.mjs +113 -0
  12. package/lib/control-workers.mjs +161 -0
  13. package/lib/control.mjs +77 -4
  14. package/lib/dataflow.mjs +402 -152
  15. package/lib/db2/cursor.mjs +15 -0
  16. package/lib/db2/read.mjs +170 -0
  17. package/lib/db2/rules.mjs +77 -0
  18. package/lib/db2/stmt/alter.mjs +473 -0
  19. package/lib/db2/stmt/grant.mjs +125 -0
  20. package/lib/db2/stmt/index.mjs +141 -0
  21. package/lib/db2/stmt/misc.mjs +325 -0
  22. package/lib/db2/stmt/routine.mjs +564 -0
  23. package/lib/db2/stmt/storage.mjs +146 -0
  24. package/lib/db2/stmt/table.mjs +540 -0
  25. package/lib/db2/stmt/view.mjs +146 -0
  26. package/lib/diff.mjs +17 -5
  27. package/lib/equivalence.mjs +44 -5
  28. package/lib/evidence/cli.mjs +26 -7
  29. package/lib/evidence/record.mjs +16 -6
  30. package/lib/evidence/seal.mjs +17 -0
  31. package/lib/evidence/store.mjs +44 -15
  32. package/lib/evidence/timestamp.mjs +83 -0
  33. package/lib/evidence/verify.mjs +120 -42
  34. package/lib/exec-reading.mjs +51 -0
  35. package/lib/execution.mjs +3 -2
  36. package/lib/explain.mjs +2 -0
  37. package/lib/exploitability.mjs +11 -2
  38. package/lib/hlasm/asm/data.mjs +128 -0
  39. package/lib/hlasm/asm/listing.mjs +43 -0
  40. package/lib/hlasm/asm/output.mjs +45 -0
  41. package/lib/hlasm/asm/sections.mjs +161 -0
  42. package/lib/hlasm/asm/symbols.mjs +78 -0
  43. package/lib/hlasm/exec.mjs +27 -0
  44. package/lib/hlasm/expr.mjs +167 -0
  45. package/lib/hlasm/instr.mjs +73 -0
  46. package/lib/hlasm/locate.mjs +333 -0
  47. package/lib/hlasm/macro/authorization.mjs +146 -0
  48. package/lib/hlasm/macro/datasets.mjs +107 -0
  49. package/lib/hlasm/macro/io.mjs +162 -0
  50. package/lib/hlasm/macro/le.mjs +53 -0
  51. package/lib/hlasm/macro/linkage.mjs +143 -0
  52. package/lib/hlasm/macro/operator.mjs +77 -0
  53. package/lib/hlasm/macro/program.mjs +184 -0
  54. package/lib/hlasm/macro/recovery.mjs +85 -0
  55. package/lib/hlasm/macro/storage.mjs +167 -0
  56. package/lib/hlasm/macro/structured.mjs +131 -0
  57. package/lib/hlasm/model.mjs +97 -0
  58. package/lib/hlasm/mvs38.mjs +47 -0
  59. package/lib/hlasm/operands.mjs +59 -0
  60. package/lib/hlasm/optable.mjs +61 -0
  61. package/lib/hlasm/read.mjs +130 -0
  62. package/lib/hlasm.mjs +44 -7
  63. package/lib/ims/dli.mjs +37 -0
  64. package/lib/ims/macro/dbd.mjs +299 -0
  65. package/lib/ims/macro/psb.mjs +286 -0
  66. package/lib/ims/model.mjs +149 -0
  67. package/lib/ims/operands.mjs +23 -0
  68. package/lib/ims/read.mjs +37 -0
  69. package/lib/ims/rules.mjs +135 -0
  70. package/lib/inventory.mjs +10 -7
  71. package/lib/ironwork-ids.mjs +24 -0
  72. package/lib/ironwork.mjs +20 -13
  73. package/lib/kernel/pds-archive.mjs +256 -0
  74. package/lib/kernel/registry.mjs +32 -23
  75. package/lib/kernel/shared-pass.mjs +163 -0
  76. package/lib/kernel/source-tree.mjs +104 -36
  77. package/lib/kernel/version-key.mjs +17 -0
  78. package/lib/layout.mjs +26 -31
  79. package/lib/options.mjs +26 -4
  80. package/lib/parser.mjs +136 -17
  81. package/lib/pli/cursor.mjs +15 -0
  82. package/lib/pli/expr.mjs +101 -0
  83. package/lib/pli/include.mjs +82 -0
  84. package/lib/pli/layout.mjs +125 -0
  85. package/lib/pli/lex.mjs +198 -0
  86. package/lib/pli/program.mjs +280 -0
  87. package/lib/pli/rules/based.mjs +95 -0
  88. package/lib/pli/rules/conditions.mjs +68 -0
  89. package/lib/pli/rules/entry.mjs +130 -0
  90. package/lib/pli/rules/index.mjs +24 -0
  91. package/lib/pli/rules/preprocessor.mjs +55 -0
  92. package/lib/pli/statements.mjs +130 -0
  93. package/lib/pli/stmt/alloc.mjs +45 -0
  94. package/lib/pli/stmt/assignment.mjs +56 -0
  95. package/lib/pli/stmt/call.mjs +104 -0
  96. package/lib/pli/stmt/conditions.mjs +94 -0
  97. package/lib/pli/stmt/control.mjs +219 -0
  98. package/lib/pli/stmt/declare.mjs +149 -0
  99. package/lib/pli/stmt/exec.mjs +55 -0
  100. package/lib/pli/stmt/io.mjs +239 -0
  101. package/lib/pli/stmt/misc.mjs +4 -0
  102. package/lib/pli/stmt/preprocessor.mjs +242 -0
  103. package/lib/pli/stmt/procedure.mjs +258 -0
  104. package/lib/pli/stmt/stream.mjs +283 -0
  105. package/lib/pli/storage.mjs +129 -0
  106. package/lib/policy.mjs +6 -0
  107. package/lib/precompile-check.mjs +124 -0
  108. package/lib/precompile-cics.mjs +8 -4
  109. package/lib/reach.mjs +11 -2
  110. package/lib/revision.json +1 -1
  111. package/lib/sarif.mjs +44 -3
  112. package/lib/scan.mjs +28 -12
  113. package/lib/sets/abend.mjs +82 -8
  114. package/lib/sets/build.mjs +43 -37
  115. package/lib/sets/cics.mjs +20 -38
  116. package/lib/sets/compile.mjs +46 -18
  117. package/lib/sets/copybook.mjs +5 -3
  118. package/lib/sets/crypto.mjs +5 -3
  119. package/lib/sets/ddl.mjs +36 -0
  120. package/lib/sets/flow.mjs +32 -8
  121. package/lib/sets/hidden.mjs +5 -3
  122. package/lib/sets/hlasm.mjs +124 -8
  123. package/lib/sets/ims.mjs +139 -0
  124. package/lib/sets/log.mjs +11 -9
  125. package/lib/sets/opaque.mjs +27 -7
  126. package/lib/sets/pli.mjs +40 -0
  127. package/lib/sets/priv.mjs +5 -3
  128. package/lib/sets/recon.mjs +5 -3
  129. package/lib/sets/secrets.mjs +112 -0
  130. package/lib/sets/semantics.mjs +8 -3
  131. package/lib/sets/web.mjs +39 -23
  132. package/lib/site.mjs +10 -0
  133. package/lib/sources.mjs +80 -20
  134. package/lib/statement-cursor.mjs +67 -0
  135. package/lib/verify.mjs +3 -2
  136. package/lib/version.mjs +6 -0
  137. package/package.json +3 -2
  138. package/rules/compliance-cobit2019.json +520 -5
  139. package/rules/compliance-dora.json +509 -5
  140. package/rules/compliance-ffiec.json +505 -1
  141. package/rules/compliance-nist80053.json +557 -1
  142. package/rules/gitleaks-mainframe.toml +46 -15
  143. package/rules/hlasm-instructions.json +2396 -0
  144. package/rules/hlasm-optables.json +8024 -0
  145. package/schema/cobolwork-baseline.schema.json +36 -0
  146. package/schema/cobolwork-build-provenance.schema.json +187 -0
  147. package/schema/cobolwork-build.schema.json +382 -0
  148. package/schema/cobolwork-capabilities.schema.json +239 -0
  149. package/schema/cobolwork-diff.schema.json +217 -0
  150. package/schema/cobolwork-evidence.schema.json +161 -0
  151. package/schema/cobolwork-execution.schema.json +53 -0
  152. package/schema/cobolwork-explain.schema.json +360 -0
  153. package/schema/cobolwork-finding.schema.json +465 -0
  154. package/schema/cobolwork-flow.schema.json +465 -0
  155. package/schema/cobolwork-gate.schema.json +211 -0
  156. package/schema/cobolwork-inventory.schema.json +206 -0
  157. package/schema/cobolwork-parse.schema.json +105 -0
  158. package/schema/cobolwork-reach.schema.json +74 -0
  159. package/schema/cobolwork-report.schema.json +559 -0
  160. package/schema/cobolwork-witness.schema.json +107 -0
  161. package/schema/cobolwork.baseline.schema.json +101 -0
  162. package/schema/cobolwork.policy.schema.json +7 -0
  163. package/schema/cobolwork.site.schema.json +116 -0
@@ -0,0 +1,206 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/Portll/cobolwork/schema/cobolwork-inventory.schema.json",
4
+ "title": "cobolwork inventory",
5
+ "description": "What cobolwork inventory found in a tree: its sources, their formats, and the copybooks they resolve or miss. A later minor release may add keys; a reader ignores keys it does not know.",
6
+ "type": "object",
7
+ "required": [
8
+ "tool",
9
+ "schemaVersion",
10
+ "summary"
11
+ ],
12
+ "properties": {
13
+ "tool": {
14
+ "const": "cobolwork-inventory"
15
+ },
16
+ "schemaVersion": {
17
+ "const": 3
18
+ },
19
+ "missingCopybooks": {
20
+ "type": "object",
21
+ "description": "Each copybook no tree or library holds, with how many COPY statements name it.",
22
+ "additionalProperties": {
23
+ "type": "integer",
24
+ "minimum": 0
25
+ }
26
+ },
27
+ "refusedCopies": {
28
+ "type": "array"
29
+ },
30
+ "unreadable": {
31
+ "type": "array"
32
+ },
33
+ "ebcdic": {
34
+ "type": "array"
35
+ },
36
+ "recursiveCopybooks": {
37
+ "type": "object",
38
+ "description": "Each copybook that copies itself, directly or through others."
39
+ },
40
+ "summary": {
41
+ "type": "object",
42
+ "required": [
43
+ "toolVersion",
44
+ "filesScanned",
45
+ "coverageIncomplete"
46
+ ],
47
+ "properties": {
48
+ "toolVersion": {
49
+ "type": "string"
50
+ },
51
+ "filesScanned": {
52
+ "type": "integer",
53
+ "minimum": 0
54
+ },
55
+ "programs": {
56
+ "type": "integer",
57
+ "minimum": 0
58
+ },
59
+ "programFiles": {
60
+ "type": "integer",
61
+ "minimum": 0
62
+ },
63
+ "copybookFiles": {
64
+ "type": "integer",
65
+ "minimum": 0
66
+ },
67
+ "jclFiles": {
68
+ "type": "integer",
69
+ "minimum": 0
70
+ },
71
+ "copiesResolved": {
72
+ "type": "integer",
73
+ "minimum": 0
74
+ },
75
+ "copiesMissing": {
76
+ "type": "integer",
77
+ "minimum": 0
78
+ },
79
+ "copiesSystem": {
80
+ "type": "integer",
81
+ "minimum": 0
82
+ },
83
+ "copiesRefused": {
84
+ "type": "integer",
85
+ "minimum": 0
86
+ },
87
+ "copiesRecursive": {
88
+ "type": "integer",
89
+ "minimum": 0
90
+ },
91
+ "filesUnreadable": {
92
+ "type": "integer",
93
+ "minimum": 0
94
+ },
95
+ "filesEbcdic": {
96
+ "type": "integer",
97
+ "minimum": 0
98
+ },
99
+ "notPrograms": {
100
+ "type": "integer",
101
+ "minimum": 0
102
+ },
103
+ "dirsUnreadable": {
104
+ "type": "integer",
105
+ "minimum": 0
106
+ },
107
+ "symlinks": {
108
+ "type": "object",
109
+ "properties": {
110
+ "followed": {
111
+ "type": "integer",
112
+ "minimum": 0
113
+ },
114
+ "outside": {
115
+ "type": "integer",
116
+ "minimum": 0
117
+ },
118
+ "broken": {
119
+ "type": "integer",
120
+ "minimum": 0
121
+ }
122
+ }
123
+ },
124
+ "withEmbeddedSql": {
125
+ "type": "integer",
126
+ "minimum": 0
127
+ },
128
+ "withCics": {
129
+ "type": "integer",
130
+ "minimum": 0
131
+ },
132
+ "withDli": {
133
+ "type": "integer",
134
+ "minimum": 0
135
+ },
136
+ "formats": {
137
+ "type": "object",
138
+ "additionalProperties": {
139
+ "type": "integer",
140
+ "minimum": 0
141
+ }
142
+ },
143
+ "nosrc": {
144
+ "type": "boolean"
145
+ },
146
+ "coverageIncomplete": {
147
+ "type": "boolean"
148
+ },
149
+ "toolRevision": {
150
+ "type": [
151
+ "object",
152
+ "null"
153
+ ],
154
+ "description": "A commit and whether its tree held changes, with where it was read.",
155
+ "properties": {
156
+ "commit": {
157
+ "type": [
158
+ "string",
159
+ "null"
160
+ ]
161
+ },
162
+ "dirty": {
163
+ "type": [
164
+ "boolean",
165
+ "null"
166
+ ]
167
+ },
168
+ "tag": {
169
+ "type": "string"
170
+ },
171
+ "from": {
172
+ "type": "string"
173
+ }
174
+ }
175
+ },
176
+ "revision": {
177
+ "type": [
178
+ "object",
179
+ "null"
180
+ ],
181
+ "description": "A commit and whether its tree held changes, with where it was read.",
182
+ "properties": {
183
+ "commit": {
184
+ "type": [
185
+ "string",
186
+ "null"
187
+ ]
188
+ },
189
+ "dirty": {
190
+ "type": [
191
+ "boolean",
192
+ "null"
193
+ ]
194
+ },
195
+ "tag": {
196
+ "type": "string"
197
+ },
198
+ "from": {
199
+ "type": "string"
200
+ }
201
+ }
202
+ }
203
+ }
204
+ }
205
+ }
206
+ }
@@ -0,0 +1,105 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/Portll/cobolwork/schema/cobolwork-parse.schema.json",
4
+ "title": "cobolwork parse",
5
+ "description": "What cobolwork parse read in one source file. A later minor release may add keys; a reader ignores keys it does not know.",
6
+ "type": "object",
7
+ "required": [
8
+ "tool",
9
+ "schemaVersion",
10
+ "file",
11
+ "format",
12
+ "finalFormat",
13
+ "programs",
14
+ "copies",
15
+ "diagnostics"
16
+ ],
17
+ "properties": {
18
+ "tool": {
19
+ "const": "cobolwork-parse"
20
+ },
21
+ "schemaVersion": {
22
+ "const": 1
23
+ },
24
+ "file": {
25
+ "type": "string"
26
+ },
27
+ "format": {
28
+ "type": "string",
29
+ "description": "The source format detected at the first line: fixed, free or terminal."
30
+ },
31
+ "finalFormat": {
32
+ "type": "string",
33
+ "description": "The format in force at the end, after any >>SOURCE directive."
34
+ },
35
+ "programs": {
36
+ "type": "array",
37
+ "items": {
38
+ "type": "object",
39
+ "required": [
40
+ "id",
41
+ "items",
42
+ "labels",
43
+ "calls",
44
+ "execs",
45
+ "diagnostics"
46
+ ],
47
+ "properties": {
48
+ "id": {
49
+ "type": [
50
+ "string",
51
+ "null"
52
+ ]
53
+ },
54
+ "items": {
55
+ "type": "integer",
56
+ "minimum": 0,
57
+ "description": "Data items declared."
58
+ },
59
+ "labels": {
60
+ "type": "integer",
61
+ "minimum": 0,
62
+ "description": "Sections and paragraphs."
63
+ },
64
+ "calls": {
65
+ "type": "integer",
66
+ "minimum": 0
67
+ },
68
+ "execs": {
69
+ "type": "integer",
70
+ "minimum": 0,
71
+ "description": "EXEC blocks."
72
+ },
73
+ "diagnostics": {
74
+ "type": "integer",
75
+ "minimum": 0
76
+ }
77
+ }
78
+ }
79
+ },
80
+ "copies": {
81
+ "type": "array",
82
+ "items": {
83
+ "type": "object",
84
+ "required": [
85
+ "name",
86
+ "status"
87
+ ],
88
+ "properties": {
89
+ "name": {
90
+ "type": "string"
91
+ },
92
+ "status": {
93
+ "type": "string",
94
+ "description": "How the COPY was resolved, or why it was not."
95
+ }
96
+ }
97
+ }
98
+ },
99
+ "diagnostics": {
100
+ "type": "integer",
101
+ "minimum": 0,
102
+ "description": "Diagnostics in the file as a whole."
103
+ }
104
+ }
105
+ }
@@ -0,0 +1,74 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/Portll/cobolwork/schema/cobolwork-reach.schema.json",
4
+ "title": "cobolwork reachability extract",
5
+ "description": "Who may start each transaction and job, and which run with elevated authority, reduced from a RACF unload and the SIT and brought as COBOLWORK_REACH. docs/spec/reach.md. lib/reach.mjs reads it; a key it does not read is reported under summary.feedWarnings, and a key opening with an underscore is a note for people.",
6
+ "type": "object",
7
+ "required": [
8
+ "extract",
9
+ "retrieved"
10
+ ],
11
+ "additionalProperties": false,
12
+ "patternProperties": {
13
+ "^_": {}
14
+ },
15
+ "properties": {
16
+ "$schema": {
17
+ "type": "string"
18
+ },
19
+ "version": {
20
+ "description": "The extract version. An extract without one is read as version 0, which holds the same keys as version 1.",
21
+ "type": "integer",
22
+ "minimum": 0,
23
+ "maximum": 1
24
+ },
25
+ "extract": {
26
+ "type": "string",
27
+ "minLength": 1,
28
+ "description": "Which extract this is."
29
+ },
30
+ "retrieved": {
31
+ "type": "string",
32
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
33
+ "description": "When the extract was taken."
34
+ },
35
+ "transactions": {
36
+ "$ref": "#/$defs/access",
37
+ "description": "Each transaction's access, by name."
38
+ },
39
+ "jobs": {
40
+ "$ref": "#/$defs/access",
41
+ "description": "Each job's access, by name."
42
+ },
43
+ "privileged": {
44
+ "type": "object",
45
+ "description": "The transactions and jobs that run with elevated authority.",
46
+ "additionalProperties": false,
47
+ "properties": {
48
+ "transactions": {
49
+ "$ref": "#/$defs/names"
50
+ },
51
+ "jobs": {
52
+ "$ref": "#/$defs/names"
53
+ }
54
+ }
55
+ }
56
+ },
57
+ "$defs": {
58
+ "access": {
59
+ "type": "object",
60
+ "additionalProperties": {
61
+ "enum": [
62
+ "open",
63
+ "restricted"
64
+ ]
65
+ }
66
+ },
67
+ "names": {
68
+ "type": "array",
69
+ "items": {
70
+ "type": "string"
71
+ }
72
+ }
73
+ }
74
+ }