dbml-sharepoint 0.4.0__py3-none-any.whl

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 (544) hide show
  1. dbml_sharepoint/__init__.py +43 -0
  2. dbml_sharepoint/analysis/__init__.py +1 -0
  3. dbml_sharepoint/analysis/checks/__init__.py +44 -0
  4. dbml_sharepoint/analysis/checks/_demo.py +292 -0
  5. dbml_sharepoint/analysis/checks/_formatting.py +515 -0
  6. dbml_sharepoint/analysis/checks/_naming.py +216 -0
  7. dbml_sharepoint/analysis/checks/_permissions.py +498 -0
  8. dbml_sharepoint/analysis/checks/_provenance.py +188 -0
  9. dbml_sharepoint/analysis/checks/_renames.py +70 -0
  10. dbml_sharepoint/analysis/checks/_retirement.py +358 -0
  11. dbml_sharepoint/analysis/checks/_sources.py +82 -0
  12. dbml_sharepoint/analysis/checks/_structure.py +1297 -0
  13. dbml_sharepoint/analysis/checks/_views.py +1098 -0
  14. dbml_sharepoint/analysis/checks/context.py +164 -0
  15. dbml_sharepoint/analysis/clock_cells.py +243 -0
  16. dbml_sharepoint/analysis/clock_usage.py +105 -0
  17. dbml_sharepoint/analysis/column_projection.py +64 -0
  18. dbml_sharepoint/analysis/column_refs.py +79 -0
  19. dbml_sharepoint/analysis/condition_description.py +57 -0
  20. dbml_sharepoint/analysis/condition_rendering.py +1606 -0
  21. dbml_sharepoint/analysis/conditions.py +669 -0
  22. dbml_sharepoint/analysis/demo_marker.py +42 -0
  23. dbml_sharepoint/analysis/exports.py +39 -0
  24. dbml_sharepoint/analysis/finding_help.py +1282 -0
  25. dbml_sharepoint/analysis/findings.py +554 -0
  26. dbml_sharepoint/analysis/forms.py +156 -0
  27. dbml_sharepoint/analysis/group_description.py +146 -0
  28. dbml_sharepoint/analysis/icons.py +86 -0
  29. dbml_sharepoint/analysis/immutable_shape.py +32 -0
  30. dbml_sharepoint/analysis/joins.py +215 -0
  31. dbml_sharepoint/analysis/limits.py +317 -0
  32. dbml_sharepoint/analysis/list_description.py +241 -0
  33. dbml_sharepoint/analysis/lookups.py +128 -0
  34. dbml_sharepoint/analysis/ordering.py +159 -0
  35. dbml_sharepoint/analysis/permissions.py +219 -0
  36. dbml_sharepoint/analysis/phases.py +101 -0
  37. dbml_sharepoint/analysis/provenance.py +59 -0
  38. dbml_sharepoint/analysis/rendered_columns.py +86 -0
  39. dbml_sharepoint/analysis/report_columns.py +100 -0
  40. dbml_sharepoint/analysis/role_definition_description.py +119 -0
  41. dbml_sharepoint/analysis/save_rules.py +147 -0
  42. dbml_sharepoint/analysis/styles.py +432 -0
  43. dbml_sharepoint/analysis/typemap.py +692 -0
  44. dbml_sharepoint/analysis/validator.py +409 -0
  45. dbml_sharepoint/bundle.py +450 -0
  46. dbml_sharepoint/catalogue.py +315 -0
  47. dbml_sharepoint/cli.py +1510 -0
  48. dbml_sharepoint/extension.py +133 -0
  49. dbml_sharepoint/extract/__init__.py +15 -0
  50. dbml_sharepoint/extract/decode.py +543 -0
  51. dbml_sharepoint/extract/emit.py +253 -0
  52. dbml_sharepoint/extract/field_xml.py +267 -0
  53. dbml_sharepoint/extract/folder.py +167 -0
  54. dbml_sharepoint/extract/inverse.py +456 -0
  55. dbml_sharepoint/extract/list_url.py +76 -0
  56. dbml_sharepoint/extract/notes.py +276 -0
  57. dbml_sharepoint/extract/run.py +191 -0
  58. dbml_sharepoint/extract/sources.py +148 -0
  59. dbml_sharepoint/extract/wizard.py +252 -0
  60. dbml_sharepoint/generators/__init__.py +1 -0
  61. dbml_sharepoint/generators/_indexes.py +15 -0
  62. dbml_sharepoint/generators/assessgen.py +283 -0
  63. dbml_sharepoint/generators/demogen.py +155 -0
  64. dbml_sharepoint/generators/extractgen.py +84 -0
  65. dbml_sharepoint/generators/jsgen.py +1067 -0
  66. dbml_sharepoint/generators/maintaingen.py +51 -0
  67. dbml_sharepoint/generators/manifestgen.py +314 -0
  68. dbml_sharepoint/generators/reportgen.py +2076 -0
  69. dbml_sharepoint/generators/rollbackgen.py +49 -0
  70. dbml_sharepoint/generators/verifygen.py +300 -0
  71. dbml_sharepoint/model/__init__.py +1 -0
  72. dbml_sharepoint/model/_keys.py +88 -0
  73. dbml_sharepoint/model/_retirement.py +279 -0
  74. dbml_sharepoint/model/conditions.py +129 -0
  75. dbml_sharepoint/model/env_file.py +191 -0
  76. dbml_sharepoint/model/mapping_loader.py +1262 -0
  77. dbml_sharepoint/model/mapping_types.py +756 -0
  78. dbml_sharepoint/model/parser.py +230 -0
  79. dbml_sharepoint/model/release.py +68 -0
  80. dbml_sharepoint/py.typed +0 -0
  81. dbml_sharepoint/solutions/README.md +420 -0
  82. dbml_sharepoint/solutions/asset-register/10-design/schema.dbml +59 -0
  83. dbml_sharepoint/solutions/asset-register/20-configure/formatting/asset-form-body.json +20 -0
  84. dbml_sharepoint/solutions/asset-register/20-configure/formatting/asset-form-header.json +46 -0
  85. dbml_sharepoint/solutions/asset-register/20-configure/formatting/location-form-body.json +8 -0
  86. dbml_sharepoint/solutions/asset-register/20-configure/formatting/location-form-header.json +46 -0
  87. dbml_sharepoint/solutions/asset-register/20-configure/mapping.yaml +372 -0
  88. dbml_sharepoint/solutions/asset-register/20-configure/release.yaml +7 -0
  89. dbml_sharepoint/solutions/asset-register/30-deploy/deploy.md +145 -0
  90. dbml_sharepoint/solutions/asset-register/40-adopt/staff-guide.md +61 -0
  91. dbml_sharepoint/solutions/asset-register/50-govern/governance.md +70 -0
  92. dbml_sharepoint/solutions/asset-register/README.md +37 -0
  93. dbml_sharepoint/solutions/audit-actions/10-design/schema.dbml +77 -0
  94. dbml_sharepoint/solutions/audit-actions/20-configure/formatting/audit-form-body.json +12 -0
  95. dbml_sharepoint/solutions/audit-actions/20-configure/formatting/audit-form-header.json +46 -0
  96. dbml_sharepoint/solutions/audit-actions/20-configure/formatting/recommendation-form-body.json +20 -0
  97. dbml_sharepoint/solutions/audit-actions/20-configure/formatting/recommendation-form-header.json +46 -0
  98. dbml_sharepoint/solutions/audit-actions/20-configure/mapping.yaml +583 -0
  99. dbml_sharepoint/solutions/audit-actions/20-configure/release.yaml +7 -0
  100. dbml_sharepoint/solutions/audit-actions/30-deploy/deploy.md +221 -0
  101. dbml_sharepoint/solutions/audit-actions/40-adopt/staff-guide.md +73 -0
  102. dbml_sharepoint/solutions/audit-actions/50-govern/governance.md +145 -0
  103. dbml_sharepoint/solutions/audit-actions/README.md +35 -0
  104. dbml_sharepoint/solutions/change-register/10-design/schema.dbml +63 -0
  105. dbml_sharepoint/solutions/change-register/20-configure/formatting/changerequest-form-body.json +20 -0
  106. dbml_sharepoint/solutions/change-register/20-configure/formatting/changerequest-form-header.json +46 -0
  107. dbml_sharepoint/solutions/change-register/20-configure/mapping.yaml +448 -0
  108. dbml_sharepoint/solutions/change-register/20-configure/release.yaml +7 -0
  109. dbml_sharepoint/solutions/change-register/30-deploy/deploy.md +158 -0
  110. dbml_sharepoint/solutions/change-register/40-adopt/staff-guide.md +58 -0
  111. dbml_sharepoint/solutions/change-register/50-govern/governance.md +93 -0
  112. dbml_sharepoint/solutions/change-register/README.md +46 -0
  113. dbml_sharepoint/solutions/complaints-feedback/10-design/schema.dbml +66 -0
  114. dbml_sharepoint/solutions/complaints-feedback/20-configure/formatting/feedback-form-body.json +24 -0
  115. dbml_sharepoint/solutions/complaints-feedback/20-configure/formatting/feedback-form-header.json +46 -0
  116. dbml_sharepoint/solutions/complaints-feedback/20-configure/mapping.yaml +454 -0
  117. dbml_sharepoint/solutions/complaints-feedback/20-configure/release.yaml +7 -0
  118. dbml_sharepoint/solutions/complaints-feedback/30-deploy/deploy.md +171 -0
  119. dbml_sharepoint/solutions/complaints-feedback/40-adopt/staff-guide.md +66 -0
  120. dbml_sharepoint/solutions/complaints-feedback/50-govern/governance.md +118 -0
  121. dbml_sharepoint/solutions/complaints-feedback/README.md +42 -0
  122. dbml_sharepoint/solutions/compliance-obligations/10-design/schema.dbml +46 -0
  123. dbml_sharepoint/solutions/compliance-obligations/20-configure/formatting/obligation-form-body.json +20 -0
  124. dbml_sharepoint/solutions/compliance-obligations/20-configure/formatting/obligation-form-header.json +46 -0
  125. dbml_sharepoint/solutions/compliance-obligations/20-configure/mapping.yaml +371 -0
  126. dbml_sharepoint/solutions/compliance-obligations/20-configure/release.yaml +7 -0
  127. dbml_sharepoint/solutions/compliance-obligations/30-deploy/deploy.md +173 -0
  128. dbml_sharepoint/solutions/compliance-obligations/40-adopt/staff-guide.md +81 -0
  129. dbml_sharepoint/solutions/compliance-obligations/50-govern/governance.md +113 -0
  130. dbml_sharepoint/solutions/compliance-obligations/README.md +39 -0
  131. dbml_sharepoint/solutions/contract-register/10-design/schema.dbml +57 -0
  132. dbml_sharepoint/solutions/contract-register/20-configure/formatting/contract-form-body.json +20 -0
  133. dbml_sharepoint/solutions/contract-register/20-configure/formatting/contract-form-header.json +46 -0
  134. dbml_sharepoint/solutions/contract-register/20-configure/mapping.yaml +381 -0
  135. dbml_sharepoint/solutions/contract-register/20-configure/release.yaml +8 -0
  136. dbml_sharepoint/solutions/contract-register/30-deploy/deploy.md +173 -0
  137. dbml_sharepoint/solutions/contract-register/40-adopt/staff-guide.md +62 -0
  138. dbml_sharepoint/solutions/contract-register/50-govern/governance.md +88 -0
  139. dbml_sharepoint/solutions/contract-register/README.md +29 -0
  140. dbml_sharepoint/solutions/credentialing-register/10-design/schema.dbml +87 -0
  141. dbml_sharepoint/solutions/credentialing-register/20-configure/formatting/credential-form-body.json +20 -0
  142. dbml_sharepoint/solutions/credentialing-register/20-configure/formatting/credential-form-header.json +46 -0
  143. dbml_sharepoint/solutions/credentialing-register/20-configure/formatting/practitioner-form-body.json +20 -0
  144. dbml_sharepoint/solutions/credentialing-register/20-configure/formatting/practitioner-form-header.json +46 -0
  145. dbml_sharepoint/solutions/credentialing-register/20-configure/formatting/row-expired.json +4 -0
  146. dbml_sharepoint/solutions/credentialing-register/20-configure/mapping.yaml +538 -0
  147. dbml_sharepoint/solutions/credentialing-register/20-configure/release.yaml +7 -0
  148. dbml_sharepoint/solutions/credentialing-register/30-deploy/deploy.md +216 -0
  149. dbml_sharepoint/solutions/credentialing-register/40-adopt/staff-guide.md +63 -0
  150. dbml_sharepoint/solutions/credentialing-register/50-govern/governance.md +84 -0
  151. dbml_sharepoint/solutions/credentialing-register/README.md +45 -0
  152. dbml_sharepoint/solutions/declarations-register/10-design/schema.dbml +79 -0
  153. dbml_sharepoint/solutions/declarations-register/20-configure/formatting/giftbenefit-form-body.json +16 -0
  154. dbml_sharepoint/solutions/declarations-register/20-configure/formatting/giftbenefit-form-header.json +46 -0
  155. dbml_sharepoint/solutions/declarations-register/20-configure/formatting/interest-form-body.json +16 -0
  156. dbml_sharepoint/solutions/declarations-register/20-configure/formatting/interest-form-header.json +46 -0
  157. dbml_sharepoint/solutions/declarations-register/20-configure/mapping.yaml +560 -0
  158. dbml_sharepoint/solutions/declarations-register/20-configure/release.yaml +7 -0
  159. dbml_sharepoint/solutions/declarations-register/30-deploy/deploy.md +184 -0
  160. dbml_sharepoint/solutions/declarations-register/40-adopt/staff-guide.md +74 -0
  161. dbml_sharepoint/solutions/declarations-register/50-govern/governance.md +125 -0
  162. dbml_sharepoint/solutions/declarations-register/README.md +36 -0
  163. dbml_sharepoint/solutions/delegations-register/10-design/schema.dbml +44 -0
  164. dbml_sharepoint/solutions/delegations-register/20-configure/formatting/delegation-form-body.json +16 -0
  165. dbml_sharepoint/solutions/delegations-register/20-configure/formatting/delegation-form-header.json +57 -0
  166. dbml_sharepoint/solutions/delegations-register/20-configure/mapping.yaml +323 -0
  167. dbml_sharepoint/solutions/delegations-register/20-configure/release.yaml +7 -0
  168. dbml_sharepoint/solutions/delegations-register/30-deploy/deploy.md +177 -0
  169. dbml_sharepoint/solutions/delegations-register/40-adopt/staff-guide.md +53 -0
  170. dbml_sharepoint/solutions/delegations-register/50-govern/governance.md +107 -0
  171. dbml_sharepoint/solutions/delegations-register/README.md +40 -0
  172. dbml_sharepoint/solutions/equipment-maintenance/10-design/schema.dbml +80 -0
  173. dbml_sharepoint/solutions/equipment-maintenance/20-configure/formatting/equipment-form-body.json +16 -0
  174. dbml_sharepoint/solutions/equipment-maintenance/20-configure/formatting/equipment-form-header.json +46 -0
  175. dbml_sharepoint/solutions/equipment-maintenance/20-configure/formatting/event-form-body.json +16 -0
  176. dbml_sharepoint/solutions/equipment-maintenance/20-configure/formatting/event-form-header.json +46 -0
  177. dbml_sharepoint/solutions/equipment-maintenance/20-configure/mapping.yaml +460 -0
  178. dbml_sharepoint/solutions/equipment-maintenance/20-configure/release.yaml +7 -0
  179. dbml_sharepoint/solutions/equipment-maintenance/30-deploy/deploy.md +172 -0
  180. dbml_sharepoint/solutions/equipment-maintenance/40-adopt/staff-guide.md +73 -0
  181. dbml_sharepoint/solutions/equipment-maintenance/50-govern/governance.md +97 -0
  182. dbml_sharepoint/solutions/equipment-maintenance/README.md +47 -0
  183. dbml_sharepoint/solutions/grants-register/10-design/schema.dbml +67 -0
  184. dbml_sharepoint/solutions/grants-register/20-configure/formatting/acquittal-form-body.json +16 -0
  185. dbml_sharepoint/solutions/grants-register/20-configure/formatting/acquittal-form-header.json +46 -0
  186. dbml_sharepoint/solutions/grants-register/20-configure/formatting/row-overdue.json +4 -0
  187. dbml_sharepoint/solutions/grants-register/20-configure/formatting/submission-form-body.json +16 -0
  188. dbml_sharepoint/solutions/grants-register/20-configure/formatting/submission-form-header.json +46 -0
  189. dbml_sharepoint/solutions/grants-register/20-configure/mapping.yaml +551 -0
  190. dbml_sharepoint/solutions/grants-register/20-configure/release.yaml +7 -0
  191. dbml_sharepoint/solutions/grants-register/30-deploy/deploy.md +179 -0
  192. dbml_sharepoint/solutions/grants-register/40-adopt/staff-guide.md +78 -0
  193. dbml_sharepoint/solutions/grants-register/50-govern/governance.md +100 -0
  194. dbml_sharepoint/solutions/grants-register/README.md +39 -0
  195. dbml_sharepoint/solutions/healthcare.md +93 -0
  196. dbml_sharepoint/solutions/improvement-register/10-design/schema.dbml +61 -0
  197. dbml_sharepoint/solutions/improvement-register/20-configure/formatting/improvement-form-body.json +20 -0
  198. dbml_sharepoint/solutions/improvement-register/20-configure/formatting/improvement-form-header.json +46 -0
  199. dbml_sharepoint/solutions/improvement-register/20-configure/mapping.yaml +415 -0
  200. dbml_sharepoint/solutions/improvement-register/20-configure/release.yaml +7 -0
  201. dbml_sharepoint/solutions/improvement-register/30-deploy/deploy.md +165 -0
  202. dbml_sharepoint/solutions/improvement-register/40-adopt/staff-guide.md +63 -0
  203. dbml_sharepoint/solutions/improvement-register/50-govern/governance.md +103 -0
  204. dbml_sharepoint/solutions/improvement-register/README.md +55 -0
  205. dbml_sharepoint/solutions/incident-management/10-design/schema.dbml +82 -0
  206. dbml_sharepoint/solutions/incident-management/20-configure/formatting/action-form-body.json +16 -0
  207. dbml_sharepoint/solutions/incident-management/20-configure/formatting/action-form-header.json +46 -0
  208. dbml_sharepoint/solutions/incident-management/20-configure/formatting/incident-form-body.json +24 -0
  209. dbml_sharepoint/solutions/incident-management/20-configure/formatting/incident-form-header.json +46 -0
  210. dbml_sharepoint/solutions/incident-management/20-configure/formatting/row-critical.json +4 -0
  211. dbml_sharepoint/solutions/incident-management/20-configure/mapping.yaml +515 -0
  212. dbml_sharepoint/solutions/incident-management/20-configure/release.yaml +7 -0
  213. dbml_sharepoint/solutions/incident-management/30-deploy/deploy.md +163 -0
  214. dbml_sharepoint/solutions/incident-management/40-adopt/staff-guide.md +63 -0
  215. dbml_sharepoint/solutions/incident-management/50-govern/governance.md +107 -0
  216. dbml_sharepoint/solutions/incident-management/README.md +39 -0
  217. dbml_sharepoint/solutions/m365-adoption-program/10-design/schema.dbml +489 -0
  218. dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/action-form-body.json +7 -0
  219. dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/action-form-header.json +46 -0
  220. dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/activity-form-body.json +9 -0
  221. dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/activity-form-header.json +46 -0
  222. dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/decision-form-body.json +7 -0
  223. dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/decision-form-header.json +46 -0
  224. dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/involvement-form-body.json +6 -0
  225. dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/involvement-form-header.json +46 -0
  226. dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/issue-form-body.json +8 -0
  227. dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/issue-form-header.json +46 -0
  228. dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/risk-form-body.json +9 -0
  229. dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/risk-form-header.json +46 -0
  230. dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/row-critical.json +4 -0
  231. dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/row-extreme.json +4 -0
  232. dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/row-needs-review.json +4 -0
  233. dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/servicerequest-form-body.json +9 -0
  234. dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/servicerequest-form-header.json +46 -0
  235. dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/stakeholder-form-body.json +7 -0
  236. dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/stakeholder-form-header.json +46 -0
  237. dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/workstream-form-body.json +7 -0
  238. dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/workstream-form-header.json +46 -0
  239. dbml_sharepoint/solutions/m365-adoption-program/20-configure/mapping.yaml +2258 -0
  240. dbml_sharepoint/solutions/m365-adoption-program/20-configure/release.yaml +61 -0
  241. dbml_sharepoint/solutions/m365-adoption-program/30-deploy/deploy.md +697 -0
  242. dbml_sharepoint/solutions/m365-adoption-program/40-adopt/staff-guide.md +495 -0
  243. dbml_sharepoint/solutions/m365-adoption-program/40-adopt/workflows/README.md +36 -0
  244. dbml_sharepoint/solutions/m365-adoption-program/40-adopt/workflows/complete-an-action.md +76 -0
  245. dbml_sharepoint/solutions/m365-adoption-program/40-adopt/workflows/confirm-your-accountability.md +73 -0
  246. dbml_sharepoint/solutions/m365-adoption-program/40-adopt/workflows/manage-a-risk.md +66 -0
  247. dbml_sharepoint/solutions/m365-adoption-program/40-adopt/workflows/raise-a-service-request.md +105 -0
  248. dbml_sharepoint/solutions/m365-adoption-program/40-adopt/workflows/raise-an-issue.md +59 -0
  249. dbml_sharepoint/solutions/m365-adoption-program/40-adopt/workflows/record-a-decision.md +153 -0
  250. dbml_sharepoint/solutions/m365-adoption-program/40-adopt/workflows/triage-incoming-work.md +55 -0
  251. dbml_sharepoint/solutions/m365-adoption-program/50-govern/governance.md +764 -0
  252. dbml_sharepoint/solutions/m365-adoption-program/50-govern/reporting-joins.md +107 -0
  253. dbml_sharepoint/solutions/m365-adoption-program/README.md +154 -0
  254. dbml_sharepoint/solutions/measures-register/10-design/schema.dbml +50 -0
  255. dbml_sharepoint/solutions/measures-register/20-configure/formatting/measure-form-body.json +20 -0
  256. dbml_sharepoint/solutions/measures-register/20-configure/formatting/measure-form-header.json +46 -0
  257. dbml_sharepoint/solutions/measures-register/20-configure/mapping.yaml +347 -0
  258. dbml_sharepoint/solutions/measures-register/20-configure/release.yaml +7 -0
  259. dbml_sharepoint/solutions/measures-register/30-deploy/deploy.md +149 -0
  260. dbml_sharepoint/solutions/measures-register/40-adopt/staff-guide.md +73 -0
  261. dbml_sharepoint/solutions/measures-register/50-govern/governance.md +85 -0
  262. dbml_sharepoint/solutions/measures-register/README.md +49 -0
  263. dbml_sharepoint/solutions/meeting-actions/10-design/schema.dbml +73 -0
  264. dbml_sharepoint/solutions/meeting-actions/20-configure/formatting/actionitem-form-body.json +16 -0
  265. dbml_sharepoint/solutions/meeting-actions/20-configure/formatting/actionitem-form-header.json +46 -0
  266. dbml_sharepoint/solutions/meeting-actions/20-configure/formatting/decision-form-body.json +12 -0
  267. dbml_sharepoint/solutions/meeting-actions/20-configure/formatting/decision-form-header.json +46 -0
  268. dbml_sharepoint/solutions/meeting-actions/20-configure/formatting/meeting-form-body.json +12 -0
  269. dbml_sharepoint/solutions/meeting-actions/20-configure/formatting/meeting-form-header.json +46 -0
  270. dbml_sharepoint/solutions/meeting-actions/20-configure/mapping.yaml +427 -0
  271. dbml_sharepoint/solutions/meeting-actions/20-configure/release.yaml +7 -0
  272. dbml_sharepoint/solutions/meeting-actions/30-deploy/deploy.md +168 -0
  273. dbml_sharepoint/solutions/meeting-actions/40-adopt/staff-guide.md +49 -0
  274. dbml_sharepoint/solutions/meeting-actions/50-govern/governance.md +58 -0
  275. dbml_sharepoint/solutions/meeting-actions/README.md +33 -0
  276. dbml_sharepoint/solutions/onboarding-tracker/10-design/schema.dbml +68 -0
  277. dbml_sharepoint/solutions/onboarding-tracker/20-configure/formatting/onboardingtask-form-body.json +16 -0
  278. dbml_sharepoint/solutions/onboarding-tracker/20-configure/formatting/onboardingtask-form-header.json +46 -0
  279. dbml_sharepoint/solutions/onboarding-tracker/20-configure/formatting/starter-form-body.json +16 -0
  280. dbml_sharepoint/solutions/onboarding-tracker/20-configure/formatting/starter-form-header.json +46 -0
  281. dbml_sharepoint/solutions/onboarding-tracker/20-configure/mapping.yaml +418 -0
  282. dbml_sharepoint/solutions/onboarding-tracker/20-configure/release.yaml +7 -0
  283. dbml_sharepoint/solutions/onboarding-tracker/30-deploy/deploy.md +157 -0
  284. dbml_sharepoint/solutions/onboarding-tracker/40-adopt/staff-guide.md +57 -0
  285. dbml_sharepoint/solutions/onboarding-tracker/50-govern/governance.md +71 -0
  286. dbml_sharepoint/solutions/onboarding-tracker/README.md +35 -0
  287. dbml_sharepoint/solutions/opportunities-register/10-design/schema.dbml +196 -0
  288. dbml_sharepoint/solutions/opportunities-register/20-configure/formatting/opportunity-form-body.json +77 -0
  289. dbml_sharepoint/solutions/opportunities-register/20-configure/formatting/opportunity-form-header.json +93 -0
  290. dbml_sharepoint/solutions/opportunities-register/20-configure/formatting/row-decision-attention.json +4 -0
  291. dbml_sharepoint/solutions/opportunities-register/20-configure/mapping.yaml +632 -0
  292. dbml_sharepoint/solutions/opportunities-register/20-configure/release.yaml +7 -0
  293. dbml_sharepoint/solutions/opportunities-register/30-deploy/deploy.md +229 -0
  294. dbml_sharepoint/solutions/opportunities-register/40-adopt/staff-guide.md +135 -0
  295. dbml_sharepoint/solutions/opportunities-register/50-govern/governance.md +261 -0
  296. dbml_sharepoint/solutions/opportunities-register/README.md +209 -0
  297. dbml_sharepoint/solutions/process-register/10-design/schema.dbml +61 -0
  298. dbml_sharepoint/solutions/process-register/20-configure/formatting/businessprocess-form-body.json +24 -0
  299. dbml_sharepoint/solutions/process-register/20-configure/formatting/businessprocess-form-header.json +46 -0
  300. dbml_sharepoint/solutions/process-register/20-configure/mapping.yaml +405 -0
  301. dbml_sharepoint/solutions/process-register/20-configure/release.yaml +7 -0
  302. dbml_sharepoint/solutions/process-register/30-deploy/deploy.md +168 -0
  303. dbml_sharepoint/solutions/process-register/40-adopt/staff-guide.md +66 -0
  304. dbml_sharepoint/solutions/process-register/50-govern/governance.md +107 -0
  305. dbml_sharepoint/solutions/process-register/README.md +53 -0
  306. dbml_sharepoint/solutions/project-pipeline/10-design/schema.dbml +62 -0
  307. dbml_sharepoint/solutions/project-pipeline/20-configure/formatting/proposal-form-body.json +20 -0
  308. dbml_sharepoint/solutions/project-pipeline/20-configure/formatting/proposal-form-header.json +46 -0
  309. dbml_sharepoint/solutions/project-pipeline/20-configure/mapping.yaml +452 -0
  310. dbml_sharepoint/solutions/project-pipeline/20-configure/release.yaml +7 -0
  311. dbml_sharepoint/solutions/project-pipeline/30-deploy/deploy.md +170 -0
  312. dbml_sharepoint/solutions/project-pipeline/40-adopt/staff-guide.md +68 -0
  313. dbml_sharepoint/solutions/project-pipeline/50-govern/governance.md +96 -0
  314. dbml_sharepoint/solutions/project-pipeline/README.md +51 -0
  315. dbml_sharepoint/solutions/raci-matrix/10-design/schema.dbml +121 -0
  316. dbml_sharepoint/solutions/raci-matrix/20-configure/formatting/activity-form-body.json +24 -0
  317. dbml_sharepoint/solutions/raci-matrix/20-configure/formatting/activity-form-header.json +46 -0
  318. dbml_sharepoint/solutions/raci-matrix/20-configure/formatting/involvement-form-body.json +12 -0
  319. dbml_sharepoint/solutions/raci-matrix/20-configure/formatting/involvement-form-header.json +46 -0
  320. dbml_sharepoint/solutions/raci-matrix/20-configure/formatting/party-form-body.json +12 -0
  321. dbml_sharepoint/solutions/raci-matrix/20-configure/formatting/party-form-header.json +46 -0
  322. dbml_sharepoint/solutions/raci-matrix/20-configure/formatting/row-needs-review.json +4 -0
  323. dbml_sharepoint/solutions/raci-matrix/20-configure/mapping.yaml +563 -0
  324. dbml_sharepoint/solutions/raci-matrix/20-configure/release.yaml +8 -0
  325. dbml_sharepoint/solutions/raci-matrix/30-deploy/deploy.md +286 -0
  326. dbml_sharepoint/solutions/raci-matrix/40-adopt/staff-guide.md +272 -0
  327. dbml_sharepoint/solutions/raci-matrix/50-govern/governance.md +364 -0
  328. dbml_sharepoint/solutions/raci-matrix/README.md +118 -0
  329. dbml_sharepoint/solutions/raid-log/10-design/schema.dbml +168 -0
  330. dbml_sharepoint/solutions/raid-log/20-configure/formatting/projectaction-form-body.json +16 -0
  331. dbml_sharepoint/solutions/raid-log/20-configure/formatting/projectaction-form-header.json +46 -0
  332. dbml_sharepoint/solutions/raid-log/20-configure/formatting/projectdecision-form-body.json +12 -0
  333. dbml_sharepoint/solutions/raid-log/20-configure/formatting/projectdecision-form-header.json +46 -0
  334. dbml_sharepoint/solutions/raid-log/20-configure/formatting/projectissue-form-body.json +20 -0
  335. dbml_sharepoint/solutions/raid-log/20-configure/formatting/projectissue-form-header.json +46 -0
  336. dbml_sharepoint/solutions/raid-log/20-configure/formatting/projectrisk-form-body.json +24 -0
  337. dbml_sharepoint/solutions/raid-log/20-configure/formatting/projectrisk-form-header.json +46 -0
  338. dbml_sharepoint/solutions/raid-log/20-configure/formatting/row-critical.json +4 -0
  339. dbml_sharepoint/solutions/raid-log/20-configure/formatting/row-extreme.json +4 -0
  340. dbml_sharepoint/solutions/raid-log/20-configure/mapping.yaml +671 -0
  341. dbml_sharepoint/solutions/raid-log/20-configure/release.yaml +7 -0
  342. dbml_sharepoint/solutions/raid-log/30-deploy/deploy.md +247 -0
  343. dbml_sharepoint/solutions/raid-log/40-adopt/staff-guide.md +124 -0
  344. dbml_sharepoint/solutions/raid-log/50-govern/governance.md +216 -0
  345. dbml_sharepoint/solutions/raid-log/README.md +78 -0
  346. dbml_sharepoint/solutions/records-digitisation/10-design/schema.dbml +195 -0
  347. dbml_sharepoint/solutions/records-digitisation/20-configure/formatting/platform-form-body.json +24 -0
  348. dbml_sharepoint/solutions/records-digitisation/20-configure/formatting/platform-form-header.json +46 -0
  349. dbml_sharepoint/solutions/records-digitisation/20-configure/formatting/row-not-a-destination.json +4 -0
  350. dbml_sharepoint/solutions/records-digitisation/20-configure/mapping.yaml +636 -0
  351. dbml_sharepoint/solutions/records-digitisation/20-configure/release.yaml +8 -0
  352. dbml_sharepoint/solutions/records-digitisation/30-deploy/deploy.md +231 -0
  353. dbml_sharepoint/solutions/records-digitisation/40-adopt/staff-guide.md +168 -0
  354. dbml_sharepoint/solutions/records-digitisation/50-govern/governance.md +230 -0
  355. dbml_sharepoint/solutions/records-digitisation/README.md +126 -0
  356. dbml_sharepoint/solutions/research-ethics-register-simple/10-design/schema.dbml +273 -0
  357. dbml_sharepoint/solutions/research-ethics-register-simple/20-configure/formatting/project-form-body.json +28 -0
  358. dbml_sharepoint/solutions/research-ethics-register-simple/20-configure/formatting/project-form-header.json +46 -0
  359. dbml_sharepoint/solutions/research-ethics-register-simple/20-configure/formatting/row-underway-unauthorised.json +4 -0
  360. dbml_sharepoint/solutions/research-ethics-register-simple/20-configure/mapping.yaml +785 -0
  361. dbml_sharepoint/solutions/research-ethics-register-simple/20-configure/release.yaml +8 -0
  362. dbml_sharepoint/solutions/research-ethics-register-simple/30-deploy/deploy.md +219 -0
  363. dbml_sharepoint/solutions/research-ethics-register-simple/40-adopt/staff-guide.md +150 -0
  364. dbml_sharepoint/solutions/research-ethics-register-simple/50-govern/governance.md +270 -0
  365. dbml_sharepoint/solutions/research-ethics-register-simple/README.md +103 -0
  366. dbml_sharepoint/solutions/risk-register/10-design/schema.dbml +143 -0
  367. dbml_sharepoint/solutions/risk-register/20-configure/formatting/levels-above-target.json +21 -0
  368. dbml_sharepoint/solutions/risk-register/20-configure/formatting/risk-form-body.json +24 -0
  369. dbml_sharepoint/solutions/risk-register/20-configure/formatting/risk-form-header.json +46 -0
  370. dbml_sharepoint/solutions/risk-register/20-configure/formatting/row-extreme.json +4 -0
  371. dbml_sharepoint/solutions/risk-register/20-configure/mapping.yaml +523 -0
  372. dbml_sharepoint/solutions/risk-register/20-configure/release.yaml +7 -0
  373. dbml_sharepoint/solutions/risk-register/30-deploy/deploy.md +166 -0
  374. dbml_sharepoint/solutions/risk-register/40-adopt/staff-guide.md +128 -0
  375. dbml_sharepoint/solutions/risk-register/50-govern/governance.md +177 -0
  376. dbml_sharepoint/solutions/risk-register/README.md +68 -0
  377. dbml_sharepoint/solutions/routine-checks/10-design/schema.dbml +69 -0
  378. dbml_sharepoint/solutions/routine-checks/20-configure/formatting/checkentry-form-body.json +20 -0
  379. dbml_sharepoint/solutions/routine-checks/20-configure/formatting/checkentry-form-header.json +46 -0
  380. dbml_sharepoint/solutions/routine-checks/20-configure/formatting/checkpoint-form-body.json +16 -0
  381. dbml_sharepoint/solutions/routine-checks/20-configure/formatting/checkpoint-form-header.json +46 -0
  382. dbml_sharepoint/solutions/routine-checks/20-configure/mapping.yaml +422 -0
  383. dbml_sharepoint/solutions/routine-checks/20-configure/release.yaml +7 -0
  384. dbml_sharepoint/solutions/routine-checks/30-deploy/deploy.md +163 -0
  385. dbml_sharepoint/solutions/routine-checks/40-adopt/staff-guide.md +59 -0
  386. dbml_sharepoint/solutions/routine-checks/50-govern/governance.md +93 -0
  387. dbml_sharepoint/solutions/routine-checks/README.md +49 -0
  388. dbml_sharepoint/solutions/service-evidence-register/10-design/schema.dbml +307 -0
  389. dbml_sharepoint/solutions/service-evidence-register/20-configure/formatting/follow-up-form-body.json +20 -0
  390. dbml_sharepoint/solutions/service-evidence-register/20-configure/formatting/follow-up-form-header.json +69 -0
  391. dbml_sharepoint/solutions/service-evidence-register/20-configure/formatting/row-issue-critical.json +4 -0
  392. dbml_sharepoint/solutions/service-evidence-register/20-configure/formatting/service-event-form-body.json +28 -0
  393. dbml_sharepoint/solutions/service-evidence-register/20-configure/formatting/service-event-form-header.json +69 -0
  394. dbml_sharepoint/solutions/service-evidence-register/20-configure/formatting/service-issue-form-body.json +28 -0
  395. dbml_sharepoint/solutions/service-evidence-register/20-configure/formatting/service-issue-form-header.json +69 -0
  396. dbml_sharepoint/solutions/service-evidence-register/20-configure/mapping.yaml +1169 -0
  397. dbml_sharepoint/solutions/service-evidence-register/20-configure/release.yaml +7 -0
  398. dbml_sharepoint/solutions/service-evidence-register/30-deploy/deploy.md +260 -0
  399. dbml_sharepoint/solutions/service-evidence-register/40-adopt/staff-guide.md +157 -0
  400. dbml_sharepoint/solutions/service-evidence-register/50-govern/governance.md +227 -0
  401. dbml_sharepoint/solutions/service-evidence-register/README.md +114 -0
  402. dbml_sharepoint/solutions/service-requests/10-design/schema.dbml +55 -0
  403. dbml_sharepoint/solutions/service-requests/20-configure/formatting/request-form-body.json +24 -0
  404. dbml_sharepoint/solutions/service-requests/20-configure/formatting/request-form-header.json +46 -0
  405. dbml_sharepoint/solutions/service-requests/20-configure/mapping.yaml +426 -0
  406. dbml_sharepoint/solutions/service-requests/20-configure/release.yaml +7 -0
  407. dbml_sharepoint/solutions/service-requests/30-deploy/deploy.md +156 -0
  408. dbml_sharepoint/solutions/service-requests/40-adopt/staff-guide.md +50 -0
  409. dbml_sharepoint/solutions/service-requests/50-govern/governance.md +99 -0
  410. dbml_sharepoint/solutions/service-requests/README.md +39 -0
  411. dbml_sharepoint/solutions/stakeholder-contacts/10-design/schema.dbml +78 -0
  412. dbml_sharepoint/solutions/stakeholder-contacts/20-configure/formatting/contact-active.json +15 -0
  413. dbml_sharepoint/solutions/stakeholder-contacts/20-configure/formatting/contact-form-body.json +16 -0
  414. dbml_sharepoint/solutions/stakeholder-contacts/20-configure/formatting/contact-form-header.json +46 -0
  415. dbml_sharepoint/solutions/stakeholder-contacts/20-configure/formatting/interaction-form-body.json +16 -0
  416. dbml_sharepoint/solutions/stakeholder-contacts/20-configure/formatting/interaction-form-header.json +46 -0
  417. dbml_sharepoint/solutions/stakeholder-contacts/20-configure/formatting/organisation-form-body.json +12 -0
  418. dbml_sharepoint/solutions/stakeholder-contacts/20-configure/formatting/organisation-form-header.json +46 -0
  419. dbml_sharepoint/solutions/stakeholder-contacts/20-configure/mapping.yaml +388 -0
  420. dbml_sharepoint/solutions/stakeholder-contacts/20-configure/release.yaml +7 -0
  421. dbml_sharepoint/solutions/stakeholder-contacts/30-deploy/deploy.md +182 -0
  422. dbml_sharepoint/solutions/stakeholder-contacts/40-adopt/staff-guide.md +54 -0
  423. dbml_sharepoint/solutions/stakeholder-contacts/50-govern/governance.md +65 -0
  424. dbml_sharepoint/solutions/stakeholder-contacts/README.md +35 -0
  425. dbml_sharepoint/solutions/switchboard-log/10-design/schema.dbml +120 -0
  426. dbml_sharepoint/solutions/switchboard-log/20-configure/formatting/all-clear-at.json +20 -0
  427. dbml_sharepoint/solutions/switchboard-log/20-configure/formatting/codeevent-form-body.json +24 -0
  428. dbml_sharepoint/solutions/switchboard-log/20-configure/formatting/codeevent-form-header.json +46 -0
  429. dbml_sharepoint/solutions/switchboard-log/20-configure/formatting/key-form-body.json +12 -0
  430. dbml_sharepoint/solutions/switchboard-log/20-configure/formatting/key-form-header.json +46 -0
  431. dbml_sharepoint/solutions/switchboard-log/20-configure/formatting/keymovement-form-body.json +16 -0
  432. dbml_sharepoint/solutions/switchboard-log/20-configure/formatting/keymovement-form-header.json +46 -0
  433. dbml_sharepoint/solutions/switchboard-log/20-configure/formatting/messagelog-form-body.json +24 -0
  434. dbml_sharepoint/solutions/switchboard-log/20-configure/formatting/messagelog-form-header.json +46 -0
  435. dbml_sharepoint/solutions/switchboard-log/20-configure/formatting/row-emergency.json +4 -0
  436. dbml_sharepoint/solutions/switchboard-log/20-configure/mapping.yaml +754 -0
  437. dbml_sharepoint/solutions/switchboard-log/20-configure/release.yaml +7 -0
  438. dbml_sharepoint/solutions/switchboard-log/30-deploy/deploy.md +184 -0
  439. dbml_sharepoint/solutions/switchboard-log/40-adopt/staff-guide.md +73 -0
  440. dbml_sharepoint/solutions/switchboard-log/50-govern/governance.md +124 -0
  441. dbml_sharepoint/solutions/switchboard-log/README.md +53 -0
  442. dbml_sharepoint/solutions/tiered-huddle/10-design/schema.dbml +251 -0
  443. dbml_sharepoint/solutions/tiered-huddle/20-configure/formatting/escalation-form-body.json +16 -0
  444. dbml_sharepoint/solutions/tiered-huddle/20-configure/formatting/escalation-form-header.json +46 -0
  445. dbml_sharepoint/solutions/tiered-huddle/20-configure/formatting/tier1-form-body.json +23 -0
  446. dbml_sharepoint/solutions/tiered-huddle/20-configure/formatting/tier1-form-header.json +46 -0
  447. dbml_sharepoint/solutions/tiered-huddle/20-configure/formatting/tier2-form-body.json +25 -0
  448. dbml_sharepoint/solutions/tiered-huddle/20-configure/formatting/tier2-form-header.json +46 -0
  449. dbml_sharepoint/solutions/tiered-huddle/20-configure/formatting/tier3-form-body.json +27 -0
  450. dbml_sharepoint/solutions/tiered-huddle/20-configure/formatting/tier3-form-header.json +46 -0
  451. dbml_sharepoint/solutions/tiered-huddle/20-configure/mapping.yaml +848 -0
  452. dbml_sharepoint/solutions/tiered-huddle/20-configure/release.yaml +7 -0
  453. dbml_sharepoint/solutions/tiered-huddle/30-deploy/deploy.md +236 -0
  454. dbml_sharepoint/solutions/tiered-huddle/40-adopt/staff-guide.md +85 -0
  455. dbml_sharepoint/solutions/tiered-huddle/50-govern/governance.md +121 -0
  456. dbml_sharepoint/solutions/tiered-huddle/README.md +64 -0
  457. dbml_sharepoint/solutions/training-register/10-design/schema.dbml +61 -0
  458. dbml_sharepoint/solutions/training-register/20-configure/formatting/course-form-body.json +16 -0
  459. dbml_sharepoint/solutions/training-register/20-configure/formatting/course-form-header.json +46 -0
  460. dbml_sharepoint/solutions/training-register/20-configure/formatting/trainingrecord-form-body.json +20 -0
  461. dbml_sharepoint/solutions/training-register/20-configure/formatting/trainingrecord-form-header.json +46 -0
  462. dbml_sharepoint/solutions/training-register/20-configure/mapping.yaml +422 -0
  463. dbml_sharepoint/solutions/training-register/20-configure/release.yaml +7 -0
  464. dbml_sharepoint/solutions/training-register/30-deploy/deploy.md +158 -0
  465. dbml_sharepoint/solutions/training-register/40-adopt/staff-guide.md +60 -0
  466. dbml_sharepoint/solutions/training-register/50-govern/governance.md +69 -0
  467. dbml_sharepoint/solutions/training-register/README.md +32 -0
  468. dbml_sharepoint/solutions/vehicle-log/10-design/schema.dbml +59 -0
  469. dbml_sharepoint/solutions/vehicle-log/20-configure/formatting/returned-at.json +20 -0
  470. dbml_sharepoint/solutions/vehicle-log/20-configure/formatting/row-negative-km.json +4 -0
  471. dbml_sharepoint/solutions/vehicle-log/20-configure/formatting/trip-form-body.json +16 -0
  472. dbml_sharepoint/solutions/vehicle-log/20-configure/formatting/trip-form-header.json +46 -0
  473. dbml_sharepoint/solutions/vehicle-log/20-configure/formatting/vehicle-form-body.json +12 -0
  474. dbml_sharepoint/solutions/vehicle-log/20-configure/formatting/vehicle-form-header.json +46 -0
  475. dbml_sharepoint/solutions/vehicle-log/20-configure/mapping.yaml +440 -0
  476. dbml_sharepoint/solutions/vehicle-log/20-configure/release.yaml +7 -0
  477. dbml_sharepoint/solutions/vehicle-log/30-deploy/deploy.md +160 -0
  478. dbml_sharepoint/solutions/vehicle-log/40-adopt/staff-guide.md +58 -0
  479. dbml_sharepoint/solutions/vehicle-log/50-govern/governance.md +107 -0
  480. dbml_sharepoint/solutions/vehicle-log/README.md +49 -0
  481. dbml_sharepoint/solutions/visitor-log/10-design/schema.dbml +39 -0
  482. dbml_sharepoint/solutions/visitor-log/20-configure/formatting/signed-out-at.json +20 -0
  483. dbml_sharepoint/solutions/visitor-log/20-configure/formatting/visit-form-body.json +16 -0
  484. dbml_sharepoint/solutions/visitor-log/20-configure/formatting/visit-form-header.json +46 -0
  485. dbml_sharepoint/solutions/visitor-log/20-configure/mapping.yaml +324 -0
  486. dbml_sharepoint/solutions/visitor-log/20-configure/release.yaml +7 -0
  487. dbml_sharepoint/solutions/visitor-log/30-deploy/deploy.md +151 -0
  488. dbml_sharepoint/solutions/visitor-log/40-adopt/staff-guide.md +55 -0
  489. dbml_sharepoint/solutions/visitor-log/50-govern/governance.md +95 -0
  490. dbml_sharepoint/solutions/visitor-log/README.md +38 -0
  491. dbml_sharepoint/solutions/volunteer-register/10-design/schema.dbml +41 -0
  492. dbml_sharepoint/solutions/volunteer-register/20-configure/formatting/volunteer-form-body.json +20 -0
  493. dbml_sharepoint/solutions/volunteer-register/20-configure/formatting/volunteer-form-header.json +46 -0
  494. dbml_sharepoint/solutions/volunteer-register/20-configure/mapping.yaml +375 -0
  495. dbml_sharepoint/solutions/volunteer-register/20-configure/release.yaml +7 -0
  496. dbml_sharepoint/solutions/volunteer-register/30-deploy/deploy.md +160 -0
  497. dbml_sharepoint/solutions/volunteer-register/40-adopt/staff-guide.md +62 -0
  498. dbml_sharepoint/solutions/volunteer-register/50-govern/governance.md +81 -0
  499. dbml_sharepoint/solutions/volunteer-register/README.md +40 -0
  500. dbml_sharepoint/templates/_assess_body.js.j2 +541 -0
  501. dbml_sharepoint/templates/_digest_cached.js.j2 +57 -0
  502. dbml_sharepoint/templates/_formula_canonical.js.j2 +30 -0
  503. dbml_sharepoint/templates/_http.js.j2 +44 -0
  504. dbml_sharepoint/templates/_http_write.js.j2 +12 -0
  505. dbml_sharepoint/templates/_maintain_list.js.j2 +115 -0
  506. dbml_sharepoint/templates/_provenance.js.j2 +13 -0
  507. dbml_sharepoint/templates/_site_guard.js.j2 +28 -0
  508. dbml_sharepoint/templates/_verify_body.js.j2 +346 -0
  509. dbml_sharepoint/templates/assess-manifest.md.j2 +47 -0
  510. dbml_sharepoint/templates/assess.js.j2 +45 -0
  511. dbml_sharepoint/templates/columns.js.j2 +184 -0
  512. dbml_sharepoint/templates/demo.js.j2 +157 -0
  513. dbml_sharepoint/templates/deploy/_acls.js.j2 +374 -0
  514. dbml_sharepoint/templates/deploy/_assess_gate.js.j2 +48 -0
  515. dbml_sharepoint/templates/deploy/_field_defaults.js.j2 +63 -0
  516. dbml_sharepoint/templates/deploy/_field_reconcile.js.j2 +897 -0
  517. dbml_sharepoint/templates/deploy/_forms.js.j2 +94 -0
  518. dbml_sharepoint/templates/deploy/_helpers.js.j2 +122 -0
  519. dbml_sharepoint/templates/deploy/_indexes.js.j2 +47 -0
  520. dbml_sharepoint/templates/deploy/_lists.js.j2 +319 -0
  521. dbml_sharepoint/templates/deploy/_lookups.js.j2 +97 -0
  522. dbml_sharepoint/templates/deploy/_maintenance_unseal.js.j2 +107 -0
  523. dbml_sharepoint/templates/deploy/_operator_enrolment.js.j2 +57 -0
  524. dbml_sharepoint/templates/deploy/_preflight.js.j2 +160 -0
  525. dbml_sharepoint/templates/deploy/_reader_enrolment.js.j2 +366 -0
  526. dbml_sharepoint/templates/deploy/_renames.js.j2 +52 -0
  527. dbml_sharepoint/templates/deploy/_seal.js.j2 +114 -0
  528. dbml_sharepoint/templates/deploy/_security_principals.js.j2 +917 -0
  529. dbml_sharepoint/templates/deploy/_seeds.js.j2 +207 -0
  530. dbml_sharepoint/templates/deploy/_shape_probes.js.j2 +277 -0
  531. dbml_sharepoint/templates/deploy/_views.js.j2 +640 -0
  532. dbml_sharepoint/templates/deploy.js.j2 +181 -0
  533. dbml_sharepoint/templates/extract.js.j2 +194 -0
  534. dbml_sharepoint/templates/manifest.md.j2 +494 -0
  535. dbml_sharepoint/templates/protection.js.j2 +93 -0
  536. dbml_sharepoint/templates/rollback.js.j2 +256 -0
  537. dbml_sharepoint/templates/verify.js.j2 +44 -0
  538. dbml_sharepoint/templating.py +53 -0
  539. dbml_sharepoint/wizard.py +1321 -0
  540. dbml_sharepoint-0.4.0.dist-info/METADATA +292 -0
  541. dbml_sharepoint-0.4.0.dist-info/RECORD +544 -0
  542. dbml_sharepoint-0.4.0.dist-info/WHEEL +4 -0
  543. dbml_sharepoint-0.4.0.dist-info/entry_points.txt +2 -0
  544. dbml_sharepoint-0.4.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,43 @@
1
+ """DBML -> SharePoint Online list provisioning via browser-console deploy.js.
2
+
3
+ Every name an extension author needs is imported from the module that defines
4
+ it, and no module here declares another module's name as its own. An
5
+ aggregator would need an export list, or a redundant `import X as X`, to
6
+ survive `mypy --strict`, and either gives a name a second home to be kept in
7
+ step with the first.
8
+
9
+ An old path such as `dbml_sharepoint.analysis.validator.Finding` does still
10
+ resolve at RUNTIME: a normal `from x import Y` binds `Y` in the importing
11
+ module and Python offers no way to unbind it. `mypy --strict` refuses it
12
+ ("does not explicitly export attribute", checked 2026-08-17), which is what
13
+ makes the paths below the supported ones rather than merely the preferred
14
+ ones.
15
+
16
+ The paths below are the canonical ones. `test/test_public_api.py` imports each
17
+ of them, so a name that moves fails there rather than in a reader's editor.
18
+
19
+ The extension protocol, in `dbml_sharepoint.extension`:
20
+
21
+ - `dbml_sharepoint.extension.DeploymentExtension` is the protocol: hook names,
22
+ parameter order, return types.
23
+ - `dbml_sharepoint.extension.BaseExtension` is the no-op base to subclass.
24
+ - `dbml_sharepoint.extension.SiteContext` is the per-build input `seed_lists`
25
+ receives.
26
+ - `dbml_sharepoint.extension.ManifestExtras` is what `manifest_extras` returns.
27
+
28
+ What a hook reports, in `dbml_sharepoint.analysis.findings`:
29
+
30
+ - `dbml_sharepoint.analysis.findings.Finding` is one reported problem.
31
+ - `dbml_sharepoint.analysis.findings.FindingCode` is its stable code.
32
+ - `dbml_sharepoint.analysis.findings.Severity` is "error" or "warning"; an
33
+ error aborts the build.
34
+ - `dbml_sharepoint.analysis.findings.Location` is where the finding was found.
35
+
36
+ What a hook is given, from the parsed inputs:
37
+
38
+ - `dbml_sharepoint.model.mapping_types.MappingBundle` is the loaded mapping.
39
+ - `dbml_sharepoint.model.parser.Schema`, `dbml_sharepoint.model.parser.Table`
40
+ and `dbml_sharepoint.model.parser.Column` are the parsed DBML.
41
+ """
42
+
43
+ __version__ = "0.4.0" # x-release-please-version
@@ -0,0 +1 @@
1
+ """Analysis layer: fail-closed build-time rules, ordering, and SP projections."""
@@ -0,0 +1,44 @@
1
+ # src/dbml_sharepoint/analysis/checks/__init__.py
2
+ """Mapping checks, one module per family.
3
+
4
+ ``validate_against_mapping`` was a single function of about 1,200 lines
5
+ covering eighteen unrelated concerns. Each family now lives in its own
6
+ module behind the same ``check(vc) -> list[Finding]`` signature, so a
7
+ reader looking for one rule opens one file.
8
+
9
+ CHECK_FAMILIES is ordered, and the order is part of the contract: findings
10
+ are reported in it, and tests assert on the sequence. Later families also
11
+ rely on earlier ones having reported structural problems. The formatting
12
+ checks skip an unknown entity rather than re-report it, because _structure
13
+ has already errored on it. Append rather than reorder.
14
+ """
15
+
16
+ from collections.abc import Callable
17
+
18
+ from dbml_sharepoint.analysis.checks import (
19
+ _demo,
20
+ _formatting,
21
+ _naming,
22
+ _permissions,
23
+ _provenance,
24
+ _renames,
25
+ _retirement,
26
+ _sources,
27
+ _structure,
28
+ _views,
29
+ )
30
+ from dbml_sharepoint.analysis.checks.context import ValidationContext
31
+ from dbml_sharepoint.analysis.findings import Finding
32
+
33
+ CHECK_FAMILIES: tuple[Callable[[ValidationContext], list["Finding"]], ...] = (
34
+ _structure.check,
35
+ _views.check,
36
+ _demo.check,
37
+ _formatting.check,
38
+ _retirement.check,
39
+ _naming.check,
40
+ _sources.check,
41
+ _permissions.check,
42
+ _provenance.check,
43
+ _renames.check,
44
+ )
@@ -0,0 +1,292 @@
1
+ # src/dbml_sharepoint/analysis/checks/_demo.py
2
+ """Demo rows seeded by ``--seed``."""
3
+
4
+ import datetime as dt
5
+ import re
6
+
7
+ from dbml_sharepoint.analysis.checks.context import ValidationContext
8
+ from dbml_sharepoint.analysis.demo_marker import DEMO_TITLE_PREFIX
9
+ from dbml_sharepoint.analysis.findings import Finding, FindingCode, Location, Section
10
+ from dbml_sharepoint.analysis.rendered_columns import rendered_columns
11
+ from dbml_sharepoint.analysis.typemap import (
12
+ DATE_TYPES,
13
+ TODAY_SENTINEL,
14
+ choice_enum_for,
15
+ element_type,
16
+ is_hyperlink,
17
+ is_multi_value,
18
+ is_person,
19
+ )
20
+
21
+ _DEMO_ISO_DATE = re.compile(r"^\d{4}-\d{2}-\d{2}$")
22
+
23
+
24
+ def check(vc: ValidationContext) -> list[Finding]:
25
+ bundle = vc.bundle
26
+ tables_by_name = vc.tables_by_name
27
+ enum_by_name = vc.enum_by_name
28
+ cross_site_by_entity = vc.cross_site_by_entity
29
+ findings: list[Finding] = []
30
+ # Demo rows (--seed): everything checkable at build time IS checked.
31
+ # A demo paste failing live in front of an audience is exactly the
32
+ # failure class this tool exists to prevent.
33
+ demo_keys: dict[str, str] = {}
34
+ for entity_name, demo_rows in bundle.mapping.demo_items.items():
35
+ if entity_name not in tables_by_name or entity_name not in bundle.mapping.entities:
36
+ findings.append(Finding(
37
+ FindingCode.UNKNOWN_ENTITY, f"demo_items[{entity_name}]: unknown entity.",
38
+ location=Location(Section.DEMO_ITEMS, entity=entity_name),
39
+ ))
40
+ continue
41
+ # A document library's items ARE files. demo-data.js POSTs to
42
+ # /items, and SharePoint refuses that on a library outright:
43
+ # HTTP 500, "To add an item to a document library, use
44
+ # SPFileCollection.Add()" (probed 2026-07-29,
45
+ # test/manual/document-library-probe.js,
46
+ # `library.file-vs-item.fileless-item-post`, L2 in that run).
47
+ #
48
+ # So the paste fails, loudly, in front of whoever was being shown
49
+ # the demo. Refusing at build turns that into a failed build.
50
+ # Seeding a library would mean uploading real files, which is a
51
+ # different feature from writing list rows and is not one this tool
52
+ # has.
53
+ if bundle.mapping.entities[entity_name].kind == "DocumentLibrary":
54
+ findings.append(Finding(
55
+ FindingCode.DEMO_ROWS_ON_DOCUMENT_LIBRARY,
56
+ f"demo_items[{entity_name}]: {entity_name} is a DocumentLibrary, and a "
57
+ f"library's items are files. Seeding posts to /items, which SharePoint "
58
+ f"refuses outright -- HTTP 500, \"To add an item to a document library, "
59
+ f"use SPFileCollection.Add()\" -- so the paste fails in front of whoever "
60
+ f"was being shown the demo. Seed the register list that accompanies the "
61
+ f"library, and upload sample documents by hand.",
62
+ location=Location(Section.DEMO_ITEMS, entity=entity_name),
63
+ ))
64
+ continue
65
+ for row in demo_rows:
66
+ if row.key in demo_keys:
67
+ findings.append(Finding(
68
+ FindingCode.DUPLICATE_DEMO_KEY,
69
+ f"demo_items[{entity_name}].{row.key}: duplicate demo "
70
+ f"key (also declared under {demo_keys[row.key]}).",
71
+ location=Location(
72
+ Section.DEMO_ITEMS, entity=entity_name, sub=row.key,
73
+ ),
74
+ ))
75
+ else:
76
+ demo_keys[row.key] = entity_name
77
+ for entity_name, demo_rows in bundle.mapping.demo_items.items():
78
+ demo_table = tables_by_name.get(entity_name)
79
+ if demo_table is None or entity_name not in bundle.mapping.entities:
80
+ continue
81
+ xcols = cross_site_by_entity.get(entity_name, set())
82
+ demo_writable = rendered_columns(demo_table, xcols) | {"Title"}
83
+ demo_types = {c.name: c.type for c in demo_table.columns}
84
+ columns = {c.name: c for c in demo_table.columns}
85
+ row_positions = {row.key: position for position, row in enumerate(demo_rows)}
86
+ for position, row in enumerate(demo_rows):
87
+ ctx = f"demo_items[{entity_name}].{row.key}"
88
+ at = Location(Section.DEMO_ITEMS, entity=entity_name, sub=row.key)
89
+ demo_title = row.values.get("Title")
90
+ if not isinstance(demo_title, str) or not demo_title.startswith(
91
+ DEMO_TITLE_PREFIX,
92
+ ):
93
+ findings.append(Finding(
94
+ FindingCode.DEMO_TITLE_MISSING_MARKER,
95
+ f"{ctx}: Title must start with '{DEMO_TITLE_PREFIX}' -- the "
96
+ f"visible notice that identifies this declared row as sample "
97
+ f"data. Rollback requires per-list confirmation before every delete.",
98
+ location=at,
99
+ ))
100
+ for col_name, value in row.values.items():
101
+ col_type = demo_types.get(col_name)
102
+ if col_name not in demo_writable or col_name == "Id":
103
+ findings.append(Finding(
104
+ FindingCode.DEMO_COLUMN_NOT_WRITABLE,
105
+ f"{ctx}: values references {col_name!r}, which is "
106
+ f"not a writable column of {entity_name}.",
107
+ location=at,
108
+ ))
109
+ continue
110
+ if isinstance(col_type, str) and col_type.startswith("calculated"):
111
+ findings.append(Finding(
112
+ FindingCode.DEMO_VALUE_ON_CALCULATED_COLUMN,
113
+ f"{ctx}: {col_name} is a calculated column; demo "
114
+ f"rows cannot write it (set its inputs instead).",
115
+ location=at,
116
+ ))
117
+ continue
118
+ # ARITY IS ANSWERED FIRST, because every rule below reads one
119
+ # scalar and a rule handed a list reports the wrong fault.
120
+ if is_multi_value(col_type or ""):
121
+ if not isinstance(value, list):
122
+ findings.append(Finding(
123
+ FindingCode.DEMO_MULTI_VALUE_NOT_A_LIST,
124
+ f"{ctx}: {col_name} is a multi-value column "
125
+ f"({col_type}), so its demo value must be a list of "
126
+ f"members, got {value!r}. An empty list is accepted "
127
+ f"and leaves the column unset.",
128
+ location=at,
129
+ ))
130
+ continue
131
+ # Compared by list rather than by set: a demo value can
132
+ # hold an unhashable member, and these lists are tiny.
133
+ seen: list[object] = []
134
+ repeated: list[object] = []
135
+ for member in value:
136
+ if member not in seen:
137
+ seen.append(member)
138
+ elif member not in repeated:
139
+ repeated.append(member)
140
+ for member in repeated:
141
+ findings.append(Finding(
142
+ FindingCode.DEMO_MULTI_VALUE_DUPLICATE_MEMBER,
143
+ f"{ctx}: {col_name} repeats {member!r}. The write "
144
+ f"shape measured as M3 on 2026-08-17 is a collection "
145
+ f"of choices and nothing "
146
+ f"has measured what a repeat reads back as, so declare "
147
+ f"each member once.",
148
+ location=at,
149
+ ))
150
+ # Hyperlinks are checked before the object-value rule below,
151
+ # and in BOTH authored shapes:
152
+ # a URL column takes a bare address or a {url, description}
153
+ # record. Gating this on `isinstance(value, dict)` left the
154
+ # scalar form unchecked, and the generator DOES refuse a
155
+ # non-string there, so an invalid mapping surfaced as a build
156
+ # traceback rather than a finding. A validator must refuse
157
+ # everything its generator refuses, and refuse it first.
158
+ if is_hyperlink(col_type):
159
+ if isinstance(value, dict):
160
+ unknown = set(value) - {"url", "description"}
161
+ if unknown or "url" not in value:
162
+ findings.append(Finding(
163
+ FindingCode.DEMO_HYPERLINK_OBJECT_INVALID,
164
+ f"{ctx}: {col_name} is a hyperlink; an object value "
165
+ f"must be {{url: <address>, description: <label>}} "
166
+ f"with 'description' optional. Got keys "
167
+ f"{sorted(value)}.",
168
+ location=at,
169
+ ))
170
+ continue
171
+ address = value["url"]
172
+ else:
173
+ address = value
174
+ # Checked as a STRING, not stringified: str(None) is
175
+ # "None", which is non-empty, so a coerced emptiness test
176
+ # passes a null through to become a link pointing at the
177
+ # word None.
178
+ if not (isinstance(address, str) and address.strip()):
179
+ findings.append(Finding(
180
+ FindingCode.DEMO_HYPERLINK_ADDRESS_INVALID,
181
+ f"{ctx}: {col_name} is a hyperlink; its address must be "
182
+ f"a non-empty string, got {address!r}.",
183
+ location=at,
184
+ ))
185
+ continue
186
+ if isinstance(value, dict):
187
+ if set(value) != {"demo_ref"}:
188
+ findings.append(Finding(
189
+ FindingCode.DEMO_OBJECT_VALUE_INVALID,
190
+ f"{ctx}: {col_name} object value must be exactly "
191
+ f"{{demo_ref: <key>}}.",
192
+ location=at,
193
+ ))
194
+ elif value["demo_ref"] not in demo_keys:
195
+ findings.append(Finding(
196
+ FindingCode.DEMO_REF_UNKNOWN_KEY,
197
+ f"{ctx}: {col_name} demo_ref "
198
+ f"{value['demo_ref']!r} is not a declared demo "
199
+ f"key.",
200
+ location=at,
201
+ ))
202
+ else:
203
+ column = columns.get(col_name)
204
+ target_entity = demo_keys[value["demo_ref"]]
205
+ if column is None or column.ref is None:
206
+ findings.append(Finding(
207
+ FindingCode.DEMO_REF_ON_NON_LOOKUP,
208
+ f"{ctx}: {col_name} uses demo_ref but is not a lookup column.",
209
+ location=at,
210
+ ))
211
+ elif column.ref.target_table != target_entity:
212
+ findings.append(Finding(
213
+ FindingCode.DEMO_REF_TARGET_MISMATCH,
214
+ f"{ctx}: {col_name} targets {column.ref.target_table}, but "
215
+ f"demo_ref {value['demo_ref']!r} belongs to {target_entity}.",
216
+ location=at,
217
+ ))
218
+ elif (
219
+ target_entity == entity_name
220
+ and row_positions.get(value["demo_ref"], position) >= position
221
+ ):
222
+ findings.append(Finding(
223
+ FindingCode.DEMO_REF_FORWARD_REFERENCE,
224
+ f"{ctx}: {col_name} demo_ref {value['demo_ref']!r} must be "
225
+ f"declared before the row that uses it.",
226
+ location=at,
227
+ ))
228
+ continue
229
+ if is_person(col_type):
230
+ if value != "@me":
231
+ findings.append(Finding(
232
+ FindingCode.DEMO_PERSON_VALUE_UNSUPPORTED,
233
+ f"{ctx}: person column {col_name} accepts only "
234
+ f"\"@me\" (the deploying operator).",
235
+ location=at,
236
+ ))
237
+ continue
238
+ # The enum question first: `_resolve_column` resolves an enum
239
+ # before a scalar, so an enum named `date` is a Choice column
240
+ # there and has to be one here too.
241
+ enum_name = choice_enum_for(col_type or "", enum_by_name)
242
+ # Through `element_type`, because `date[]` is not a key in
243
+ # DATE_TYPES and the rule read as though it covered the column.
244
+ if enum_name is None and element_type(col_type or "") in DATE_TYPES:
245
+ valid_date = False
246
+ if isinstance(value, str) and TODAY_SENTINEL.match(value):
247
+ valid_date = True
248
+ elif isinstance(value, str) and _DEMO_ISO_DATE.match(value):
249
+ try:
250
+ dt.date.fromisoformat(value)
251
+ valid_date = True
252
+ except ValueError:
253
+ pass
254
+ if not valid_date:
255
+ findings.append(Finding(
256
+ FindingCode.DEMO_DATE_VALUE_INVALID,
257
+ f"{ctx}: date column {col_name} accepts "
258
+ f"'today+N'/'today-N' or a real ISO calendar date "
259
+ f"(got {value!r}).",
260
+ location=at,
261
+ ))
262
+ continue
263
+ # The resolver answers with the name; this rule needs the
264
+ # members behind it.
265
+ if enum_name is None:
266
+ continue
267
+ demo_enum = enum_by_name[enum_name]
268
+ # Membership is the same rule per member on a multi-value
269
+ # column, so it keeps the same code rather than gaining a twin.
270
+ # The arity test stays here: on a SCALAR enum column a list is
271
+ # simply not a member, which is what already fires today.
272
+ declared = (
273
+ value
274
+ if is_multi_value(col_type or "") and isinstance(value, list)
275
+ else [value]
276
+ )
277
+ # Distinct, so a member repeated twice is one mistake and one
278
+ # finding. The duplicate rule above is what reports the repeat.
279
+ distinct: list[object] = []
280
+ for member in declared:
281
+ if member not in distinct:
282
+ distinct.append(member)
283
+ for member in distinct:
284
+ if member not in demo_enum.members:
285
+ findings.append(Finding(
286
+ FindingCode.DEMO_ENUM_VALUE_UNKNOWN,
287
+ f"{ctx}: {col_name} value {member!r} is not a member "
288
+ f"of enum {enum_name}.",
289
+ location=at,
290
+ ))
291
+
292
+ return findings