@ploaness/governance 1.1.0 → 1.3.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 (236) hide show
  1. package/dist/a11y-hit-target.d.ts.map +1 -1
  2. package/dist/a11y-hit-target.js +1 -21
  3. package/dist/a11y-hit-target.js.map +1 -1
  4. package/dist/a11y-incomplete.d.ts.map +1 -1
  5. package/dist/a11y-incomplete.js +1 -18
  6. package/dist/a11y-incomplete.js.map +1 -1
  7. package/dist/access-boundary.d.ts +43 -1
  8. package/dist/access-boundary.d.ts.map +1 -1
  9. package/dist/access-boundary.js +146 -5
  10. package/dist/access-boundary.js.map +1 -1
  11. package/dist/admin-view-coverage.d.ts.map +1 -1
  12. package/dist/admin-view-coverage.js +1 -17
  13. package/dist/admin-view-coverage.js.map +1 -1
  14. package/dist/asset-policy.d.ts.map +1 -1
  15. package/dist/asset-policy.js +1 -23
  16. package/dist/asset-policy.js.map +1 -1
  17. package/dist/axe-coverage.d.ts +3 -4
  18. package/dist/axe-coverage.d.ts.map +1 -1
  19. package/dist/axe-coverage.js +18 -51
  20. package/dist/axe-coverage.js.map +1 -1
  21. package/dist/blocklist-entries.d.ts +36 -0
  22. package/dist/blocklist-entries.d.ts.map +1 -0
  23. package/dist/blocklist-entries.js +338 -0
  24. package/dist/blocklist-entries.js.map +1 -0
  25. package/dist/blocklist.d.ts +91 -0
  26. package/dist/blocklist.d.ts.map +1 -0
  27. package/dist/blocklist.js +187 -0
  28. package/dist/blocklist.js.map +1 -0
  29. package/dist/checkov-check.d.ts +9 -0
  30. package/dist/checkov-check.d.ts.map +1 -0
  31. package/dist/checkov-check.js +4 -0
  32. package/dist/checkov-check.js.map +1 -0
  33. package/dist/checkov-checks-aws.d.ts +4 -0
  34. package/dist/checkov-checks-aws.d.ts.map +1 -0
  35. package/dist/checkov-checks-aws.js +93 -0
  36. package/dist/checkov-checks-aws.js.map +1 -0
  37. package/dist/checkov-checks-azure.d.ts +4 -0
  38. package/dist/checkov-checks-azure.d.ts.map +1 -0
  39. package/dist/checkov-checks-azure.js +32 -0
  40. package/dist/checkov-checks-azure.js.map +1 -0
  41. package/dist/checkov-checks-google.d.ts +6 -0
  42. package/dist/checkov-checks-google.d.ts.map +1 -0
  43. package/dist/checkov-checks-google.js +53 -0
  44. package/dist/checkov-checks-google.js.map +1 -0
  45. package/dist/checkov-policy.d.ts +63 -0
  46. package/dist/checkov-policy.d.ts.map +1 -0
  47. package/dist/checkov-policy.js +105 -0
  48. package/dist/checkov-policy.js.map +1 -0
  49. package/dist/container-failure.d.ts.map +1 -1
  50. package/dist/container-failure.js +1 -18
  51. package/dist/container-failure.js.map +1 -1
  52. package/dist/container-files.d.ts +16 -0
  53. package/dist/container-files.d.ts.map +1 -1
  54. package/dist/container-files.js +23 -8
  55. package/dist/container-files.js.map +1 -1
  56. package/dist/container-images.d.ts +43 -0
  57. package/dist/container-images.d.ts.map +1 -0
  58. package/dist/container-images.js +157 -0
  59. package/dist/container-images.js.map +1 -0
  60. package/dist/dependency-freshness.d.ts +8 -0
  61. package/dist/dependency-freshness.d.ts.map +1 -1
  62. package/dist/dependency-freshness.js +2 -18
  63. package/dist/dependency-freshness.js.map +1 -1
  64. package/dist/doc-blocks.d.ts.map +1 -1
  65. package/dist/doc-blocks.js +1 -13
  66. package/dist/doc-blocks.js.map +1 -1
  67. package/dist/editorconfig-policy.d.ts +7 -0
  68. package/dist/editorconfig-policy.d.ts.map +1 -1
  69. package/dist/editorconfig-policy.js +19 -12
  70. package/dist/editorconfig-policy.js.map +1 -1
  71. package/dist/environment-coherence.d.ts +59 -5
  72. package/dist/environment-coherence.d.ts.map +1 -1
  73. package/dist/environment-coherence.js +107 -27
  74. package/dist/environment-coherence.js.map +1 -1
  75. package/dist/environment-files.d.ts.map +1 -1
  76. package/dist/environment-files.js +1 -19
  77. package/dist/environment-files.js.map +1 -1
  78. package/dist/file-roles.d.ts +7 -2
  79. package/dist/file-roles.d.ts.map +1 -1
  80. package/dist/file-roles.js +10 -9
  81. package/dist/file-roles.js.map +1 -1
  82. package/dist/freshness-repair.d.ts +82 -0
  83. package/dist/freshness-repair.d.ts.map +1 -0
  84. package/dist/freshness-repair.js +91 -0
  85. package/dist/freshness-repair.js.map +1 -0
  86. package/dist/generated-denial.d.ts.map +1 -1
  87. package/dist/generated-denial.js +1 -9
  88. package/dist/generated-denial.js.map +1 -1
  89. package/dist/generated-drift.d.ts.map +1 -1
  90. package/dist/generated-drift.js +1 -12
  91. package/dist/generated-drift.js.map +1 -1
  92. package/dist/harness-package.d.ts +13 -0
  93. package/dist/harness-package.d.ts.map +1 -0
  94. package/dist/harness-package.js +20 -0
  95. package/dist/harness-package.js.map +1 -0
  96. package/dist/history-policy.d.ts.map +1 -1
  97. package/dist/history-policy.js +1 -7
  98. package/dist/history-policy.js.map +1 -1
  99. package/dist/image-assets.d.ts.map +1 -1
  100. package/dist/image-assets.js +1 -10
  101. package/dist/image-assets.js.map +1 -1
  102. package/dist/index.d.ts +20 -0
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +20 -0
  105. package/dist/index.js.map +1 -1
  106. package/dist/install-policy.d.ts +21 -0
  107. package/dist/install-policy.d.ts.map +1 -1
  108. package/dist/install-policy.js +53 -1
  109. package/dist/install-policy.js.map +1 -1
  110. package/dist/jsx-accessibility-scope.d.ts +17 -0
  111. package/dist/jsx-accessibility-scope.d.ts.map +1 -0
  112. package/dist/jsx-accessibility-scope.js +36 -0
  113. package/dist/jsx-accessibility-scope.js.map +1 -0
  114. package/dist/jsx-accessibility.d.ts +13 -0
  115. package/dist/jsx-accessibility.d.ts.map +1 -0
  116. package/dist/jsx-accessibility.js +188 -0
  117. package/dist/jsx-accessibility.js.map +1 -0
  118. package/dist/network-policy.d.ts.map +1 -1
  119. package/dist/network-policy.js +1 -12
  120. package/dist/network-policy.js.map +1 -1
  121. package/dist/oxlint-policy.d.ts +16 -0
  122. package/dist/oxlint-policy.d.ts.map +1 -0
  123. package/dist/oxlint-policy.js +28 -0
  124. package/dist/oxlint-policy.js.map +1 -0
  125. package/dist/oxlint-report.d.ts +29 -0
  126. package/dist/oxlint-report.d.ts.map +1 -0
  127. package/dist/oxlint-report.js +84 -0
  128. package/dist/oxlint-report.js.map +1 -0
  129. package/dist/oxlint-scope.d.ts +13 -0
  130. package/dist/oxlint-scope.d.ts.map +1 -0
  131. package/dist/oxlint-scope.js +46 -0
  132. package/dist/oxlint-scope.js.map +1 -0
  133. package/dist/oxlint-suppressions.d.ts +17 -0
  134. package/dist/oxlint-suppressions.d.ts.map +1 -0
  135. package/dist/oxlint-suppressions.js +72 -0
  136. package/dist/oxlint-suppressions.js.map +1 -0
  137. package/dist/paired-assets.d.ts.map +1 -1
  138. package/dist/paired-assets.js.map +1 -1
  139. package/dist/payload-access.d.ts +6 -0
  140. package/dist/payload-access.d.ts.map +1 -1
  141. package/dist/payload-access.js +166 -9
  142. package/dist/payload-access.js.map +1 -1
  143. package/dist/payload-bootstrap.d.ts +52 -0
  144. package/dist/payload-bootstrap.d.ts.map +1 -0
  145. package/dist/payload-bootstrap.js +195 -0
  146. package/dist/payload-bootstrap.js.map +1 -0
  147. package/dist/payload-configs.d.ts +0 -1
  148. package/dist/payload-configs.d.ts.map +1 -1
  149. package/dist/payload-configs.js +36 -17
  150. package/dist/payload-configs.js.map +1 -1
  151. package/dist/payload-database.d.ts +80 -0
  152. package/dist/payload-database.d.ts.map +1 -0
  153. package/dist/payload-database.js +164 -0
  154. package/dist/payload-database.js.map +1 -0
  155. package/dist/payload-defaults.d.ts +128 -0
  156. package/dist/payload-defaults.d.ts.map +1 -0
  157. package/dist/payload-defaults.js +295 -0
  158. package/dist/payload-defaults.js.map +1 -0
  159. package/dist/payload-policy.d.ts +21 -0
  160. package/dist/payload-policy.d.ts.map +1 -1
  161. package/dist/payload-policy.js +92 -43
  162. package/dist/payload-policy.js.map +1 -1
  163. package/dist/relationship-cleanup.d.ts.map +1 -1
  164. package/dist/relationship-cleanup.js +16 -16
  165. package/dist/relationship-cleanup.js.map +1 -1
  166. package/dist/release-age.d.ts.map +1 -1
  167. package/dist/release-age.js +1 -16
  168. package/dist/release-age.js.map +1 -1
  169. package/dist/request-limits.d.ts.map +1 -1
  170. package/dist/request-limits.js +1 -11
  171. package/dist/request-limits.js.map +1 -1
  172. package/dist/route-map.d.ts.map +1 -1
  173. package/dist/route-map.js +1 -16
  174. package/dist/route-map.js.map +1 -1
  175. package/dist/run-plan.d.ts.map +1 -1
  176. package/dist/run-plan.js +1 -19
  177. package/dist/run-plan.js.map +1 -1
  178. package/dist/secret-policy.d.ts.map +1 -1
  179. package/dist/secret-policy.js +1 -11
  180. package/dist/secret-policy.js.map +1 -1
  181. package/dist/settings-layering.d.ts +8 -30
  182. package/dist/settings-layering.d.ts.map +1 -1
  183. package/dist/settings-layering.js +19 -48
  184. package/dist/settings-layering.js.map +1 -1
  185. package/dist/settings.d.ts +9 -2
  186. package/dist/settings.d.ts.map +1 -1
  187. package/dist/settings.js.map +1 -1
  188. package/dist/shell-files.d.ts +45 -0
  189. package/dist/shell-files.d.ts.map +1 -0
  190. package/dist/shell-files.js +105 -0
  191. package/dist/shell-files.js.map +1 -0
  192. package/dist/source-security.d.ts +10 -0
  193. package/dist/source-security.d.ts.map +1 -1
  194. package/dist/source-security.js +88 -1
  195. package/dist/source-security.js.map +1 -1
  196. package/dist/source-text.d.ts +2 -0
  197. package/dist/source-text.d.ts.map +1 -1
  198. package/dist/source-text.js +7 -16
  199. package/dist/source-text.js.map +1 -1
  200. package/dist/terraform-files.d.ts +29 -0
  201. package/dist/terraform-files.d.ts.map +1 -0
  202. package/dist/terraform-files.js +50 -0
  203. package/dist/terraform-files.js.map +1 -0
  204. package/dist/terraform-policy.d.ts +13 -0
  205. package/dist/terraform-policy.d.ts.map +1 -0
  206. package/dist/terraform-policy.js +261 -0
  207. package/dist/terraform-policy.js.map +1 -0
  208. package/dist/terraform-providers.d.ts +28 -0
  209. package/dist/terraform-providers.d.ts.map +1 -0
  210. package/dist/terraform-providers.js +68 -0
  211. package/dist/terraform-providers.js.map +1 -0
  212. package/dist/toolchain-pins.d.ts +1 -1
  213. package/dist/toolchain-pins.d.ts.map +1 -1
  214. package/dist/toolchain-pins.js +11 -21
  215. package/dist/toolchain-pins.js.map +1 -1
  216. package/dist/version-policy.d.ts +7 -8
  217. package/dist/version-policy.d.ts.map +1 -1
  218. package/dist/version-policy.js +15 -26
  219. package/dist/version-policy.js.map +1 -1
  220. package/dist/vulnerability-policy.d.ts.map +1 -1
  221. package/dist/vulnerability-policy.js +1 -11
  222. package/dist/vulnerability-policy.js.map +1 -1
  223. package/dist/wiring-policy.d.ts.map +1 -1
  224. package/dist/wiring-policy.js +4 -1
  225. package/dist/wiring-policy.js.map +1 -1
  226. package/dist/wiring-violation.d.ts.map +1 -1
  227. package/dist/wiring-violation.js +1 -6
  228. package/dist/wiring-violation.js.map +1 -1
  229. package/dist/workspace-policy.d.ts.map +1 -1
  230. package/dist/workspace-policy.js +3 -9
  231. package/dist/workspace-policy.js.map +1 -1
  232. package/dist/yaml-blocks.d.ts +10 -0
  233. package/dist/yaml-blocks.d.ts.map +1 -1
  234. package/dist/yaml-blocks.js +20 -0
  235. package/dist/yaml-blocks.js.map +1 -1
  236. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload-bootstrap.js","sourceRoot":"","sources":["../src/payload-bootstrap.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,6 @@ export interface PayloadConfigKind {
7
7
  /** One Payload configuration literal, with the source position its body begins at. */
8
8
  export interface FoundPayloadConfig {
9
9
  readonly kind: PayloadConfigKind;
10
- readonly marker: number;
11
10
  readonly body: string;
12
11
  readonly bodyStart: number;
13
12
  readonly line: number;
@@ -1 +1 @@
1
- {"version":3,"file":"payload-configs.d.ts","sourceRoot":"","sources":["../src/payload-configs.ts"],"names":[],"mappings":"AAgBA,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ,CAAA;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;CACvC;AAED,sFAAsF;AACtF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,qFAAqF;AACrF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AA2CD,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,KAAG,SAAS,kBAAkB,EAI1E,CAAA;AAwCH,2EAA2E;AAC3E,eAAO,MAAM,cAAc,GACzB,QAAQ,MAAM,EACd,QAAQ,kBAAkB,KACzB,SAAS,iBAAiB,EAkB5B,CAAA"}
1
+ {"version":3,"file":"payload-configs.d.ts","sourceRoot":"","sources":["../src/payload-configs.ts"],"names":[],"mappings":"AAaA,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ,CAAA;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;CACvC;AAED,sFAAsF;AACtF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,qFAAqF;AACrF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AA0ED,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,KAAG,SAAS,kBAAkB,EAI1E,CAAA;AAwCH,2EAA2E;AAC3E,eAAO,MAAM,cAAc,GACzB,QAAQ,MAAM,EACd,QAAQ,kBAAkB,KACzB,SAAS,iBAAiB,EAkB5B,CAAA"}
@@ -1,9 +1,5 @@
1
- // The shared catalogue of Payload configuration literals.
2
- //
3
- // Access policy and field policy ask different questions of the same object: whether a collection or
4
- // global has declared its operation boundary, and whether a privilege-bearing field has declared its
5
- // own. The declaration forms must therefore have one owner. A second regex beside the access rule was
6
- // how generic annotations and `satisfies` configurations previously escaped every Payload check.
1
+ // Share the vocabulary of Payload configuration literals across source-policy checks.
2
+ import { COLLECTION_OPERATIONS, GLOBAL_OPERATIONS } from './payload-defaults.js';
7
3
  import { configBody, depthOneValue } from './payload-source.js';
8
4
  import { balancedArguments, lineOf, NOT_FOUND, scanDelimited, } from './source-text.js';
9
5
  const declarationPattern = (typeName) => new RegExp(String.raw `(:|satisfies)\s*${typeName}(?=[<=,)\s]|$)`, 'g');
@@ -12,27 +8,50 @@ const CONFIG_KINDS = [
12
8
  kind: 'collection',
13
9
  label: 'CollectionConfig',
14
10
  declaration: declarationPattern('CollectionConfig'),
15
- operations: ['create', 'read', 'update', 'delete'],
11
+ operations: COLLECTION_OPERATIONS,
16
12
  },
17
13
  {
18
14
  kind: 'global',
19
15
  label: 'GlobalConfig',
20
16
  declaration: declarationPattern('GlobalConfig'),
21
- operations: ['read', 'update'],
17
+ operations: GLOBAL_OPERATIONS,
22
18
  },
23
19
  ];
24
20
  const SATISFIES = 'satisfies';
25
- const bodyStartOf = (source, body, marker, isTrailing) => isTrailing ? source.lastIndexOf(body, marker) : source.indexOf(body, marker);
26
- const configsOfKind = (source, kind) => [...source.matchAll(kind.declaration)].flatMap((match) => {
27
- const isTrailing = match[1] === SATISFIES;
28
- const body = configBody(source, match.index, isTrailing);
21
+ // What may stand between a leading type reference and the literal it types. Every form a config is
22
+ // really written in puts one of four things there: `= {`, a generic argument and then `= {`, `=> ({`,
23
+ // or the opening brace of a function body. Taking "the next brace anywhere after the type name"
24
+ // instead crossed statement boundaries and read an unrelated literal further down the file as the
25
+ // configuration. A call argument (`= jobsAccess({ ... })`), a parameter annotation
26
+ // (`(config: CollectionConfig): void => { ... }`), an interface member and a type-alias member each
27
+ // put an identifier, a `)` or a `}` in this gap, and each was judged as though it were a collection -
28
+ // so the very code a project writes to GIVE a generated collection its access block was reported as a
29
+ // collection with none.
30
+ const GOVERNED_BODY = /^\s*(?:<[^;{}]*>\s*)?(?:=>?\s*(?:\(\s*)?)?\{/;
31
+ /** The literal a leading annotation governs, or nothing when the annotation types something else. */
32
+ const governedLiteral = (source, afterType) => {
33
+ const gap = GOVERNED_BODY.exec(source.slice(afterType));
34
+ if (gap === null) {
35
+ return undefined;
36
+ }
37
+ const bodyStart = afterType + gap[0].length - 1;
38
+ const inner = balancedArguments(source, bodyStart);
39
+ return inner === undefined ? undefined : { body: `{${inner}}`, bodyStart };
40
+ };
41
+ /** The literal a trailing `satisfies` types: the one that closed just before it. */
42
+ const precedingLiteral = (source, marker) => {
43
+ const body = configBody(source, marker, true);
29
44
  if (body === undefined) {
30
- return [];
45
+ return undefined;
31
46
  }
32
- const bodyStart = bodyStartOf(source, body, match.index, isTrailing);
33
- return bodyStart === NOT_FOUND
34
- ? []
35
- : [{ kind, marker: match.index, body, bodyStart, line: lineOf(source, match.index) }];
47
+ const bodyStart = source.lastIndexOf(body, marker);
48
+ return bodyStart === NOT_FOUND ? undefined : { body, bodyStart };
49
+ };
50
+ const configsOfKind = (source, kind) => [...source.matchAll(kind.declaration)].flatMap((match) => {
51
+ const literal = match[1] === SATISFIES
52
+ ? precedingLiteral(source, match.index)
53
+ : governedLiteral(source, match.index + match[0].length);
54
+ return literal === undefined ? [] : [{ kind, ...literal, line: lineOf(source, match.index) }];
36
55
  });
37
56
  /** Every collection and global configuration literal the source declares. */
38
57
  export const payloadConfigsIn = (source) => CONFIG_KINDS.flatMap((kind) => configsOfKind(source, kind));
@@ -1 +1 @@
1
- {"version":3,"file":"payload-configs.js","sourceRoot":"","sources":["../src/payload-configs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"payload-configs.js","sourceRoot":"","sources":["../src/payload-configs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ import { type PayloadViolation } from './payload-source.js';
2
+ /** One `buildConfig({ ... })` literal: its brace-wrapped body, and the line the call begins on. */
3
+ export interface FoundRootConfig {
4
+ readonly body: string;
5
+ readonly line: number;
6
+ }
7
+ /**
8
+ * Every root configuration literal the source declares.
9
+ *
10
+ * The collection and global readers key on a type marker, which the root configuration does not carry:
11
+ * it is an argument to a call rather than an annotated declaration. So this reads the call instead.
12
+ * @param code the file's text, with comments already stripped.
13
+ * @returns one entry per `buildConfig` call whose argument is an object literal.
14
+ */
15
+ export declare const rootConfigsIn: (code: string) => readonly FoundRootConfig[];
16
+ /**
17
+ * The database adapters whose schema Payload can apply by pushing it.
18
+ *
19
+ * Only the adapter whose behaviour is established belongs here. Naming one that does not carry the
20
+ * option would report a project for failing to disable something it never had, and an adapter left out
21
+ * is merely unreported - the safe direction of the two.
22
+ */
23
+ export declare const PUSHING_ADAPTERS: readonly string[];
24
+ /** The rule name a schema-push finding carries. */
25
+ export declare const SCHEMA_PUSH_RULE: string;
26
+ /**
27
+ * Report a root configuration whose database adapter does not disable schema push.
28
+ * @param code the file's text, with comments already stripped.
29
+ * @returns one violation per configuration that pushes, declared or by omission.
30
+ */
31
+ export declare const findUnreviewedSchemaPush: (code: string) => readonly PayloadViolation[];
32
+ /**
33
+ * Whether a source declares a database adapter whose schema is applied by push.
34
+ * @param code the file's text, with comments already stripped.
35
+ * @returns true when at least one root configuration names such an adapter.
36
+ */
37
+ export declare const declaresPushingAdapter: (code: string) => boolean;
38
+ /**
39
+ * The migration directory a configuration names, when it names one.
40
+ * @param code the file's text, with comments already stripped.
41
+ * @returns the declared directory, or undefined when the adapter leaves it to Payload's default.
42
+ */
43
+ export declare const declaredMigrationDirectoryIn: (code: string) => string | undefined;
44
+ /** The directories Payload looks in, in the order its own resolver tries them. */
45
+ export declare const MIGRATION_DIRECTORY_CANDIDATES: readonly string[];
46
+ /**
47
+ * Whether a file name is one Payload reads as a migration.
48
+ *
49
+ * Taken from Payload's own reader rather than invented here: a `.ts` or `.js` file that is not the
50
+ * barrel. An empty directory, or one holding only a barrel, records no schema - and that is exactly the
51
+ * distinction a project would otherwise satisfy the rule with.
52
+ * @param name the file's base name.
53
+ * @returns true when Payload would read it as a migration.
54
+ */
55
+ export declare const isMigrationFile: (name: string) => boolean;
56
+ /**
57
+ * The directories to read for a member, the declared one first.
58
+ * @param declared the directory the configuration names, when it names one.
59
+ * @returns the candidate paths, relative to the member root.
60
+ */
61
+ export declare const migrationDirectoriesFor: (declared: string | undefined) => readonly string[];
62
+ /** One candidate directory as the gate found it: its path, and the entries it holds. */
63
+ export interface MigrationDirectory {
64
+ readonly path: string;
65
+ readonly names: readonly string[];
66
+ }
67
+ /** What the gate read about where a member's schema would come from. */
68
+ export interface MigrationEvidence {
69
+ readonly declaresPushingAdapter: boolean;
70
+ readonly directories: readonly MigrationDirectory[];
71
+ }
72
+ /** The rule name a missing-migration finding carries. */
73
+ export declare const RECORDED_MIGRATIONS_RULE: string;
74
+ /**
75
+ * Report a member that records no migration for the schema it expects.
76
+ * @param evidence the adapter it declares, and the candidate directories as they were read.
77
+ * @returns one finding when the member pushes and records nothing, or none.
78
+ */
79
+ export declare const findMissingMigrations: (evidence: MigrationEvidence) => readonly string[];
80
+ //# sourceMappingURL=payload-database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload-database.d.ts","sourceRoot":"","sources":["../src/payload-database.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAG1E,mGAAmG;AACnG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAID;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,SAAS,eAAe,EASjE,CAAA;AAEJ;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAAwB,CAAA;AAiCtE,mDAAmD;AACnD,eAAO,MAAM,gBAAgB,EAAE,MAAoC,CAAA;AAuBnE;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GAAI,MAAM,MAAM,KAAG,SAAS,gBAAgB,EAgB7E,CAAA;AAEJ;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,MAAM,MAAM,KAAG,OAGnD,CAAA;AAEH;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,GAAI,MAAM,MAAM,KAAG,MAAM,GAAG,SAMkB,CAAA;AAEvF,kFAAkF;AAClF,eAAO,MAAM,8BAA8B,EAAE,SAAS,MAAM,EAI3D,CAAA;AAKD;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,KAAG,OAE3B,CAAA;AAEpB;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAAI,UAAU,MAAM,GAAG,SAAS,KAAG,SAAS,MAAM,EAGnC,CAAA;AAEnD,wFAAwF;AACxF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAClC;AAED,wEAAwE;AACxE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAA;IACxC,QAAQ,CAAC,WAAW,EAAE,SAAS,kBAAkB,EAAE,CAAA;CACpD;AAED,yDAAyD;AACzD,eAAO,MAAM,wBAAwB,EAAE,MAAsC,CAAA;AAQ7E;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,GAAI,UAAU,iBAAiB,KAAG,SAAS,MAAM,EASlF,CAAA"}
@@ -0,0 +1,164 @@
1
+ // Whether a project's schema changes are recorded where a reader can review them.
2
+ //
3
+ // Payload's Postgres adapter can apply a schema by pushing it: at boot, it diffs the configuration
4
+ // against the live database and issues whatever closes the gap. Nothing is written down, so there is no
5
+ // artefact to review before it runs and none to roll back after. The guard Payload applies is
6
+ // `this.push !== false`, which is why an UNDECLARED push is the dangerous spelling rather than a neutral
7
+ // one, and why this rule reports it.
8
+ //
9
+ // Push is also skipped where `NODE_ENV` is production, and a production boot then falls to
10
+ // `prodMigrations`. A project that pushes instead of migrating therefore has no mechanism that creates
11
+ // its schema in production at all, which is the second rule here.
12
+ //
13
+ // The value is read from SOURCE rather than from the built configuration. `postgresAdapter()` returns a
14
+ // factory whose `init` closure carries `push`, and Payload calls that closure at `payload.init()`, not
15
+ // during `buildConfig`. A probe that imports the built configuration reads `undefined` for every project
16
+ // and would pass every defect.
17
+ import { depthOneValue } from './payload-source.js';
18
+ import { balancedArguments, lineOf, occurrences, topLevelSlice } from './source-text.js';
19
+ const BUILD_CONFIG_CALL = 'buildConfig(';
20
+ /**
21
+ * Every root configuration literal the source declares.
22
+ *
23
+ * The collection and global readers key on a type marker, which the root configuration does not carry:
24
+ * it is an argument to a call rather than an annotated declaration. So this reads the call instead.
25
+ * @param code the file's text, with comments already stripped.
26
+ * @returns one entry per `buildConfig` call whose argument is an object literal.
27
+ */
28
+ export const rootConfigsIn = (code) => occurrences(code, BUILD_CONFIG_CALL).flatMap((found) => {
29
+ const argumentText = balancedArguments(code, found + BUILD_CONFIG_CALL.length - 1);
30
+ return argumentText?.trimStart().startsWith('{') === true
31
+ ? [{ body: argumentText, line: lineOf(code, found) }]
32
+ : [];
33
+ });
34
+ /**
35
+ * The database adapters whose schema Payload can apply by pushing it.
36
+ *
37
+ * Only the adapter whose behaviour is established belongs here. Naming one that does not carry the
38
+ * option would report a project for failing to disable something it never had, and an adapter left out
39
+ * is merely unreported - the safe direction of the two.
40
+ */
41
+ export const PUSHING_ADAPTERS = ['postgresAdapter'];
42
+ const ADAPTER_CALL = /^\s*([a-z_$][\w$]*)\s*\(/i;
43
+ const adapterCallIn = (databaseValue) => {
44
+ const matched = ADAPTER_CALL.exec(databaseValue);
45
+ if (matched === null) {
46
+ return undefined;
47
+ }
48
+ const options = balancedArguments(databaseValue, matched[0].length - 1);
49
+ return options === undefined ? undefined : { name: matched[1] ?? '', options };
50
+ };
51
+ // `push` is read from the depth-one text of the adapter's own options, so a key nested inside `pool`
52
+ // cannot be mistaken for the adapter's own - the protection `topLevelSlice` exists to give.
53
+ //
54
+ // `migrationDir` cannot be read the same way, and that is a property of the scan rather than an
55
+ // oversight: the walk jumps a string literal whole, so the fold never sees the quoted value and the
56
+ // slice a quoted value would land in comes back empty. It is therefore read from the raw options, where
57
+ // the key boundary alone separates it from a value nested beneath. `push` is unaffected because `false`
58
+ // is not a string literal and survives the slice intact.
59
+ const PUSH_PROPERTY = /(?:^|,)\s*push\s*:\s*([^,]*)/;
60
+ const MIGRATION_DIR_PROPERTY = /(?:^|[{,])\s*migrationDir\s*:\s*['"]([^'"]*)['"]/;
61
+ const declaredPushIn = (options) => PUSH_PROPERTY.exec(topLevelSlice(options))?.[1]?.trim();
62
+ /** The rule name a schema-push finding carries. */
63
+ export const SCHEMA_PUSH_RULE = 'no-unreviewed-schema-push';
64
+ const REPAIR = 'set push: false and record the schema with `payload migrate:create`';
65
+ const pushReason = (adapter, declared) => declared === undefined
66
+ ? `${adapter} declares no push; Payload treats an undeclared push as on, so it rewrites the ` +
67
+ 'schema at every boot outside production and no committed artefact records what the schema ' +
68
+ `became - ${REPAIR}`
69
+ : `${adapter} sets push: ${declared}; Payload rewrites the schema at every boot outside ` +
70
+ `production and no committed artefact records what the schema became - ${REPAIR}`;
71
+ // The adapter a configuration's `db` names, when it is one that can push. Shared by every rule here, so
72
+ // the question "does this project push?" is answered in one place.
73
+ const pushingAdapterIn = (body) => {
74
+ const databaseValue = depthOneValue(body, 'db');
75
+ if (databaseValue === undefined) {
76
+ return undefined;
77
+ }
78
+ const adapter = adapterCallIn(databaseValue);
79
+ return adapter !== undefined && PUSHING_ADAPTERS.includes(adapter.name) ? adapter : undefined;
80
+ };
81
+ /**
82
+ * Report a root configuration whose database adapter does not disable schema push.
83
+ * @param code the file's text, with comments already stripped.
84
+ * @returns one violation per configuration that pushes, declared or by omission.
85
+ */
86
+ export const findUnreviewedSchemaPush = (code) => rootConfigsIn(code).flatMap((config) => {
87
+ const adapter = pushingAdapterIn(config.body);
88
+ if (adapter === undefined) {
89
+ return [];
90
+ }
91
+ const declared = declaredPushIn(adapter.options);
92
+ return declared === 'false'
93
+ ? []
94
+ : [
95
+ {
96
+ line: config.line,
97
+ rule: SCHEMA_PUSH_RULE,
98
+ reason: pushReason(adapter.name, declared),
99
+ },
100
+ ];
101
+ });
102
+ /**
103
+ * Whether a source declares a database adapter whose schema is applied by push.
104
+ * @param code the file's text, with comments already stripped.
105
+ * @returns true when at least one root configuration names such an adapter.
106
+ */
107
+ export const declaresPushingAdapter = (code) => rootConfigsIn(code).some((config) => pushingAdapterIn(config.body) !== undefined);
108
+ /**
109
+ * The migration directory a configuration names, when it names one.
110
+ * @param code the file's text, with comments already stripped.
111
+ * @returns the declared directory, or undefined when the adapter leaves it to Payload's default.
112
+ */
113
+ export const declaredMigrationDirectoryIn = (code) => rootConfigsIn(code)
114
+ .map((config) => {
115
+ const adapter = pushingAdapterIn(config.body);
116
+ return adapter === undefined ? undefined : MIGRATION_DIR_PROPERTY.exec(adapter.options)?.[1];
117
+ })
118
+ .find((declared) => declared !== undefined);
119
+ /** The directories Payload looks in, in the order its own resolver tries them. */
120
+ export const MIGRATION_DIRECTORY_CANDIDATES = [
121
+ 'src/migrations',
122
+ 'dist/migrations',
123
+ 'migrations',
124
+ ];
125
+ const MIGRATION_EXTENSIONS = ['.ts', '.js'];
126
+ const BARRELS = new Set(['index.ts', 'index.js']);
127
+ /**
128
+ * Whether a file name is one Payload reads as a migration.
129
+ *
130
+ * Taken from Payload's own reader rather than invented here: a `.ts` or `.js` file that is not the
131
+ * barrel. An empty directory, or one holding only a barrel, records no schema - and that is exactly the
132
+ * distinction a project would otherwise satisfy the rule with.
133
+ * @param name the file's base name.
134
+ * @returns true when Payload would read it as a migration.
135
+ */
136
+ export const isMigrationFile = (name) => MIGRATION_EXTENSIONS.some((extension) => name.endsWith(extension)) &&
137
+ !BARRELS.has(name);
138
+ /**
139
+ * The directories to read for a member, the declared one first.
140
+ * @param declared the directory the configuration names, when it names one.
141
+ * @returns the candidate paths, relative to the member root.
142
+ */
143
+ export const migrationDirectoriesFor = (declared) => declared === undefined
144
+ ? MIGRATION_DIRECTORY_CANDIDATES
145
+ : [declared, ...MIGRATION_DIRECTORY_CANDIDATES];
146
+ /** The rule name a missing-migration finding carries. */
147
+ export const RECORDED_MIGRATIONS_RULE = 'require-recorded-migrations';
148
+ const MISSING_MIGRATIONS = `[${RECORDED_MIGRATIONS_RULE}] no migration is recorded; this member declares a database adapter ` +
149
+ 'whose schema is applied by push, and push is skipped where NODE_ENV is production - so a ' +
150
+ 'production boot creates nothing and no file in the repository states what the schema should be. ' +
151
+ 'Run `payload migrate:create` and commit the file it writes';
152
+ /**
153
+ * Report a member that records no migration for the schema it expects.
154
+ * @param evidence the adapter it declares, and the candidate directories as they were read.
155
+ * @returns one finding when the member pushes and records nothing, or none.
156
+ */
157
+ export const findMissingMigrations = (evidence) => {
158
+ if (!evidence.declaresPushingAdapter) {
159
+ return [];
160
+ }
161
+ const carriesMigration = evidence.directories.some((directory) => directory.names.some((name) => isMigrationFile(name)));
162
+ return carriesMigration ? [] : [MISSING_MIGRATIONS];
163
+ };
164
+ //# sourceMappingURL=payload-database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload-database.js","sourceRoot":"","sources":["../src/payload-database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ /** The operations a collection must decide; the static rule holds a written config to the same list. */
2
+ export declare const COLLECTION_OPERATIONS: readonly string[];
3
+ /** The operations a global must decide. */
4
+ export declare const GLOBAL_OPERATIONS: readonly string[];
5
+ /** The operation an auth collection decides on top of the four: who may clear a locked account. */
6
+ export declare const UNLOCK_OPERATION: string;
7
+ /** The operation a versioned collection or global decides: who may read a stored version. */
8
+ export declare const READ_VERSIONS_OPERATION: string;
9
+ /** What an entity of the built configuration is, as far as the operations it owes depend on it. */
10
+ export interface PayloadSubjectTraits {
11
+ readonly kind: PayloadSubjectKind;
12
+ readonly hasAuth: boolean;
13
+ readonly hasVersions: boolean;
14
+ }
15
+ /**
16
+ * The access operations one entity owes a decision on. Two of them are conditional, and neither may be
17
+ * added to the lists above: Payload writes `unlock` onto EVERY collection during sanitisation, auth or
18
+ * not, so demanding it unconditionally would report the whole configuration, and `readVersions` means
19
+ * nothing on an entity that keeps no versions.
20
+ * @param traits what the entity is: its kind, and whether it authenticates or keeps versions.
21
+ * @returns the operations that entity must decide, in the order they are reported.
22
+ */
23
+ export declare const accessOperationsFor: (traits: PayloadSubjectTraits) => readonly string[];
24
+ /**
25
+ * The prefix the probe prints its report behind. A plugin may log on import, and a line the parser can
26
+ * name is what separates the report from that chatter.
27
+ */
28
+ export declare const INHERITED_ACCESS_REPORT_MARKER: string;
29
+ /** One entity of the built configuration and the operations it left to Payload's default. */
30
+ export interface InheritedAccessEntry {
31
+ readonly slug: string;
32
+ readonly inherited: readonly string[];
33
+ }
34
+ /**
35
+ * What a read rule answered an anonymous caller, as the probe observed it. `filtered` carries the
36
+ * query constraint the rule returned, which is the half `/api/access` reports and the anonymous sweep
37
+ * never opens; `undecidable` is a rule that threw when asked, which is reported rather than assumed
38
+ * safe.
39
+ */
40
+ export type AnonymousRead = {
41
+ readonly kind: 'denied';
42
+ } | {
43
+ readonly kind: 'filtered';
44
+ readonly where: unknown;
45
+ } | {
46
+ readonly kind: 'open';
47
+ } | {
48
+ readonly kind: 'undecidable';
49
+ readonly reason: string;
50
+ };
51
+ /** One entity that keeps drafts, and what its read rule answers a caller with no credentials. */
52
+ export interface DraftReadEntry {
53
+ readonly kind: PayloadSubjectKind;
54
+ readonly slug: string;
55
+ readonly anonymousRead: AnonymousRead;
56
+ }
57
+ /** What the probe reports: every collection and every global, decided ones included. */
58
+ export interface InheritedAccessReport {
59
+ readonly collections: readonly InheritedAccessEntry[];
60
+ readonly draftReads: readonly DraftReadEntry[];
61
+ readonly globals: readonly InheritedAccessEntry[];
62
+ }
63
+ /** The two kinds of entity a Payload configuration holds. */
64
+ export type PayloadSubjectKind = 'collection' | 'global';
65
+ /** One entity Payload builds for its own bookkeeping, which keeps the default access by design. */
66
+ export interface ExemptPayloadSubject {
67
+ readonly kind: PayloadSubjectKind;
68
+ readonly slug: string;
69
+ readonly reason: string;
70
+ }
71
+ /** The entities exempt from the rule, each with the reason. Nothing a project declares extends this. */
72
+ export declare const EXEMPT_PAYLOAD_SUBJECTS: readonly ExemptPayloadSubject[];
73
+ /**
74
+ * The saved-filter collection Payload builds behind `enableQueryPresets`.
75
+ *
76
+ * It is named here because the probe has to read its access from somewhere other than the collection.
77
+ * `getAccess` wraps EVERY operation of this one collection in a closure that calls the project's rule
78
+ * where there is one and Payload's own default where there is not, so the built collection carries four
79
+ * functions that match neither the default by reference nor its source text. Read there, a project that
80
+ * decided nothing is indistinguishable from one that decided everything - and undecided means an
81
+ * unconstrained `create` for any signed-in user, and a preset shared as `everyone` readable by every
82
+ * role that can log in, the ones a project keeps outside its editorial staff included.
83
+ */
84
+ export declare const QUERY_PRESETS_SLUG: string;
85
+ /**
86
+ * Every entity of the built configuration that still carries Payload's default access on a judged
87
+ * operation, in configuration order, each naming where the project decides it.
88
+ * @param report what the probe read from the built configuration.
89
+ * @returns one finding per entity, or nothing when every entity decides its access.
90
+ */
91
+ export declare const findInheritedAccess: (report: InheritedAccessReport) => readonly string[];
92
+ /**
93
+ * Whether a read filter admits published documents alone.
94
+ *
95
+ * A clause under `and` is enough on its own, because every conjunct holds. A clause under `or` counts
96
+ * only when EVERY branch carries one, because a single branch without it is a way in - which is the
97
+ * shape of the defect this rule exists for.
98
+ * @param where the query constraint the read rule returned.
99
+ * @returns whether every document the filter admits is a published one.
100
+ */
101
+ export declare const requiresPublishedStatus: (where: unknown) => boolean;
102
+ /**
103
+ * Every entity that keeps drafts and lets a stranger read something that was never approved, in
104
+ * configuration order.
105
+ * @param report what the probe read from the built configuration.
106
+ * @returns one finding per entity, or nothing when no drafts read admits an unapproved document.
107
+ */
108
+ export declare const findUnconstrainedDraftReads: (report: InheritedAccessReport) => readonly string[];
109
+ /**
110
+ * Read the probe's report out of everything the probe wrote to standard output.
111
+ *
112
+ * The LAST marker line is the report, so a plugin that logs during import cannot hide it, and a report
113
+ * that fails to parse or has the wrong shape is undefined rather than empty: a probe that printed a
114
+ * stack trace must fail the gate, never pass it as "no findings".
115
+ * @param text the probe's standard output.
116
+ * @returns the report, or undefined when no well-formed report was printed.
117
+ */
118
+ export declare const parseInheritedAccessReport: (text: string) => InheritedAccessReport | undefined;
119
+ /** Where a Payload member keeps its configuration when its tsconfig says nothing else. */
120
+ export declare const DEFAULT_PAYLOAD_CONFIG_PATH: string;
121
+ /**
122
+ * The path of the Payload configuration a member's tsconfig aliases as `@payload-config`, which is the
123
+ * alias `ploaness init` writes and Payload's own CLI resolves through.
124
+ * @param tsconfig the parsed tsconfig, or anything when it could not be read.
125
+ * @returns the configured path relative to the member root, or the default path.
126
+ */
127
+ export declare const payloadConfigPathOf: (tsconfig: unknown) => string;
128
+ //# sourceMappingURL=payload-defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload-defaults.d.ts","sourceRoot":"","sources":["../src/payload-defaults.ts"],"names":[],"mappings":"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"}