jupyterlab-unianalytics-dashboard 4.0.6__tar.gz → 4.0.8__tar.gz

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 (137) hide show
  1. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/.copier-answers.yml +6 -6
  2. jupyterlab_unianalytics_dashboard-4.0.8/.yarnrc.yml +1 -0
  3. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/CHANGELOG.md +13 -2
  4. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/LICENSE +1 -1
  5. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/PKG-INFO +52 -6
  6. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/README.md +41 -3
  7. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/RELEASE.md +35 -1
  8. jupyterlab_unianalytics_dashboard-4.0.8/conftest.py +8 -0
  9. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/junit.xml +3 -3
  10. jupyterlab_unianalytics_dashboard-4.0.8/jupyter-config/server-config/jupyterlab_unianalytics_dashboard.json +7 -0
  11. jupyterlab_unianalytics_dashboard-4.0.8/jupyterlab_unianalytics_dashboard/__init__.py +36 -0
  12. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/jupyterlab_unianalytics_dashboard/_version.py +1 -1
  13. jupyterlab_unianalytics_dashboard-4.0.8/jupyterlab_unianalytics_dashboard/handlers.py +53 -0
  14. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/jupyterlab_unianalytics_dashboard/labextension/package.json +49 -28
  15. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/jupyterlab_unianalytics_dashboard/labextension/schemas/jupyterlab_unianalytics_dashboard/package.json.orig +48 -27
  16. jupyterlab_unianalytics_dashboard-4.0.8/jupyterlab_unianalytics_dashboard/labextension/static/120.f9ab87c96623964d015f.js +1 -0
  17. jupyterlab_unianalytics_dashboard-4.0.8/jupyterlab_unianalytics_dashboard/labextension/static/18.759fbf2374edc42b5c3e.js +2 -0
  18. jupyterlab_unianalytics_dashboard-4.0.8/jupyterlab_unianalytics_dashboard/labextension/static/308.d9da4ce35f354c6f12e1.js +1 -0
  19. jupyterlab_unianalytics_dashboard-4.0.8/jupyterlab_unianalytics_dashboard/labextension/static/426.a7015f9dfda310972c1b.js +1 -0
  20. jupyterlab_unianalytics_dashboard-4.0.8/jupyterlab_unianalytics_dashboard/labextension/static/546.a8f5ba1be2a764c64287.js +1 -0
  21. jupyterlab_unianalytics_dashboard-4.0.8/jupyterlab_unianalytics_dashboard/labextension/static/638.d37271636c4d956096de.js +1 -0
  22. jupyterlab_unianalytics_dashboard-4.0.8/jupyterlab_unianalytics_dashboard/labextension/static/708.323c3614d31a5918cfaf.js +2 -0
  23. jupyterlab_unianalytics_dashboard-4.0.6/jupyterlab_unianalytics_dashboard/labextension/static/708.8d6156d603ddfa7e363d.js.LICENSE.txt → jupyterlab_unianalytics_dashboard-4.0.8/jupyterlab_unianalytics_dashboard/labextension/static/708.323c3614d31a5918cfaf.js.LICENSE.txt +1 -1
  24. jupyterlab_unianalytics_dashboard-4.0.8/jupyterlab_unianalytics_dashboard/labextension/static/remoteEntry.8cd70c149b116f11f59e.js +1 -0
  25. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/jupyterlab_unianalytics_dashboard/labextension/static/third-party-licenses.json +18 -18
  26. jupyterlab_unianalytics_dashboard-4.0.8/jupyterlab_unianalytics_dashboard/tests/__init__.py +1 -0
  27. jupyterlab_unianalytics_dashboard-4.0.8/jupyterlab_unianalytics_dashboard/tests/test_handlers.py +7 -0
  28. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/package.json +48 -27
  29. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/pyproject.toml +13 -1
  30. jupyterlab_unianalytics_dashboard-4.0.8/setup.py +1 -0
  31. jupyterlab_unianalytics_dashboard-4.0.8/src/__tests__/jupyterlab_unianalytics_dashboard.spec.ts +9 -0
  32. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/dashboard-widgets/PanelManager.ts +80 -71
  33. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/dashboard-widgets/WebsocketManager.ts +9 -5
  34. jupyterlab_unianalytics_dashboard-4.0.8/src/handler.ts +31 -0
  35. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/index.ts +25 -13
  36. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/plugins/dashboards.ts +1 -3
  37. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/plugins/uploadNotebook.tsx +10 -6
  38. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/side-dashboard/pages/Cell.tsx +114 -59
  39. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/toc-dashboard/TocReactComponent.tsx +2 -2
  40. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/toc-dashboard/generator/render.tsx +2 -2
  41. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/toc-dashboard/tocDashboardTree.tsx +3 -3
  42. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/utils/constants.ts +10 -3
  43. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/utils/interactionRecorder.ts +4 -3
  44. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/utils/utils.ts +2 -49
  45. jupyterlab_unianalytics_dashboard-4.0.8/style/index.css +5 -0
  46. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/style/reactVisu.css +11 -8
  47. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/style/tocDashboard.css +3 -2
  48. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/tsconfig.json +1 -2
  49. jupyterlab_unianalytics_dashboard-4.0.8/tsconfig.test.json +6 -0
  50. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/ui-tests/README.md +1 -1
  51. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/ui-tests/package.json +2 -2
  52. jupyterlab_unianalytics_dashboard-4.0.8/ui-tests/yarn.lock +4124 -0
  53. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/yarn.lock +1777 -1896
  54. jupyterlab_unianalytics_dashboard-4.0.6/.yarnrc.yml +0 -3
  55. jupyterlab_unianalytics_dashboard-4.0.6/jupyterlab_unianalytics_dashboard/__init__.py +0 -8
  56. jupyterlab_unianalytics_dashboard-4.0.6/jupyterlab_unianalytics_dashboard/labextension/static/18.7ff03b96ce4c1ba53ee1.js +0 -2
  57. jupyterlab_unianalytics_dashboard-4.0.6/jupyterlab_unianalytics_dashboard/labextension/static/308.52850e2a1110e4767a49.js +0 -1
  58. jupyterlab_unianalytics_dashboard-4.0.6/jupyterlab_unianalytics_dashboard/labextension/static/426.3f483e930d772b4f379a.js +0 -1
  59. jupyterlab_unianalytics_dashboard-4.0.6/jupyterlab_unianalytics_dashboard/labextension/static/546.8d39a8d86318c82a94bc.js +0 -1
  60. jupyterlab_unianalytics_dashboard-4.0.6/jupyterlab_unianalytics_dashboard/labextension/static/638.707471a39fb6c87b1554.js +0 -1
  61. jupyterlab_unianalytics_dashboard-4.0.6/jupyterlab_unianalytics_dashboard/labextension/static/694.d59084cb175b38ecc1a9.js +0 -1
  62. jupyterlab_unianalytics_dashboard-4.0.6/jupyterlab_unianalytics_dashboard/labextension/static/708.8d6156d603ddfa7e363d.js +0 -2
  63. jupyterlab_unianalytics_dashboard-4.0.6/jupyterlab_unianalytics_dashboard/labextension/static/remoteEntry.27b69645f536048bd908.js +0 -1
  64. jupyterlab_unianalytics_dashboard-4.0.6/setup.py +0 -1
  65. jupyterlab_unianalytics_dashboard-4.0.6/src/__tests__/jupyterlab_unianalytics_dashboard.spec.ts +0 -7
  66. jupyterlab_unianalytics_dashboard-4.0.6/style/index.css +0 -5
  67. jupyterlab_unianalytics_dashboard-4.0.6/tsconfig.test.json +0 -3
  68. jupyterlab_unianalytics_dashboard-4.0.6/ui-tests/yarn.lock +0 -0
  69. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/.gitignore +0 -0
  70. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/.prettierignore +0 -0
  71. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/babel.config.js +0 -0
  72. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/install.json +0 -0
  73. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/jest.config.js +0 -0
  74. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/jupyterlab_unianalytics_dashboard/labextension/schemas/jupyterlab_unianalytics_dashboard/plugin.json +0 -0
  75. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/jupyterlab_unianalytics_dashboard/labextension/static/10.1e5c908a94fc4b83c2e5.js +0 -0
  76. /jupyterlab_unianalytics_dashboard-4.0.6/jupyterlab_unianalytics_dashboard/labextension/static/18.7ff03b96ce4c1ba53ee1.js.LICENSE.txt → /jupyterlab_unianalytics_dashboard-4.0.8/jupyterlab_unianalytics_dashboard/labextension/static/18.759fbf2374edc42b5c3e.js.LICENSE.txt +0 -0
  77. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/jupyterlab_unianalytics_dashboard/labextension/static/39.5a3b28a79ba693a9b627.js +0 -0
  78. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/jupyterlab_unianalytics_dashboard/labextension/static/563.b613f734176cb51510ef.js +0 -0
  79. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/jupyterlab_unianalytics_dashboard/labextension/static/744.329dc4d1ed2f5c918266.js +0 -0
  80. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/jupyterlab_unianalytics_dashboard/labextension/static/798.33a8f0893a66574e9259.js +0 -0
  81. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/jupyterlab_unianalytics_dashboard/labextension/static/981.ebb9e1d6122980b5ff0e.js +0 -0
  82. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/jupyterlab_unianalytics_dashboard/labextension/static/981.ebb9e1d6122980b5ff0e.js.LICENSE.txt +0 -0
  83. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/jupyterlab_unianalytics_dashboard/labextension/static/style.js +0 -0
  84. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/schema/plugin.json +0 -0
  85. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/chat-dashboard/ChatContainer.tsx +0 -0
  86. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/chat-dashboard/ConnectionComponent.tsx +0 -0
  87. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/dashboard-widgets/ChatDashboardPanel.tsx +0 -0
  88. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/dashboard-widgets/DashboardPanel.tsx +0 -0
  89. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/dashboard-widgets/TocDashboardPanel.tsx +0 -0
  90. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/dashboard-widgets/VisuDashboardPanel.tsx +0 -0
  91. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/icons/index.ts +0 -0
  92. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/icons/react-app-env.d.ts +0 -0
  93. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/redux/reducers/CommonDashboardReducer.ts +0 -0
  94. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/redux/reducers/SideDashboardReducer.ts +0 -0
  95. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/redux/reducers/ToCDashboardReducer.ts +0 -0
  96. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/redux/store.ts +0 -0
  97. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/redux/types.d.ts +0 -0
  98. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/side-dashboard/PageRouter.tsx +0 -0
  99. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/side-dashboard/components/buttons/SortDropDown.tsx +0 -0
  100. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/side-dashboard/components/buttons/TimeDropDown.tsx +0 -0
  101. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/side-dashboard/components/cell/CellInput.tsx +0 -0
  102. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/side-dashboard/components/cell/CellOutput.tsx +0 -0
  103. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/side-dashboard/components/cell/MarkdownComponent.tsx +0 -0
  104. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/side-dashboard/components/layout/GridSystem.tsx +0 -0
  105. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/side-dashboard/components/layout/TopBreadcrumb.tsx +0 -0
  106. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/side-dashboard/components/notebook/ChartContainer.tsx +0 -0
  107. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/side-dashboard/components/notebook/CodeExecComponent.tsx +0 -0
  108. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/side-dashboard/components/notebook/TimeSpentComponent.tsx +0 -0
  109. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/side-dashboard/components/placeholder/Loader.tsx +0 -0
  110. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/side-dashboard/components/placeholder/NoData.tsx +0 -0
  111. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/side-dashboard/components/placeholder/SidebarPlaceholder.tsx +0 -0
  112. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/side-dashboard/pages/Notebook.tsx +0 -0
  113. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/toc-dashboard/ExportCSVButton.tsx +0 -0
  114. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/toc-dashboard/generator/index.ts +0 -0
  115. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/toc-dashboard/generator/options_manager.ts +0 -0
  116. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/toc-dashboard/generator/toolbar_generator.tsx +0 -0
  117. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/toc-dashboard/generator/utils.ts +0 -0
  118. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/toc-dashboard/tocDashboardItem.tsx +0 -0
  119. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/utils/chartOptions.ts +0 -0
  120. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/utils/compatibility.ts +0 -0
  121. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/utils/headings.d.ts +0 -0
  122. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/utils/interfaces.ts +0 -0
  123. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/widget-extensions/CellButton.ts +0 -0
  124. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/widget-extensions/NotebookButton.ts +0 -0
  125. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/src/widget-extensions/index.ts +0 -0
  126. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/style/base.css +0 -0
  127. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/style/icons/analytics.svg +0 -0
  128. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/style/icons/eyeFill.svg +0 -0
  129. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/style/icons/eyeSlash.svg +0 -0
  130. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/style/icons/folder.svg +0 -0
  131. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/style/icons/notebook.svg +0 -0
  132. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/style/index.js +0 -0
  133. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/style/tocDashboardEditor.css +0 -0
  134. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/style/upload.css +0 -0
  135. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/ui-tests/jupyter_server_test_config.py +0 -0
  136. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/ui-tests/playwright.config.js +0 -0
  137. {jupyterlab_unianalytics_dashboard-4.0.6 → jupyterlab_unianalytics_dashboard-4.0.8}/ui-tests/tests/jupyterlab_unianalytics_dashboard.spec.ts +0 -0
@@ -1,20 +1,20 @@
1
1
  # Changes here will be overwritten by Copier; NEVER EDIT MANUALLY
2
- _commit: v4.0.5
2
+ _commit: v4.2.5
3
3
  _src_path: https://github.com/jupyterlab/extension-template
4
- author_email: me@test.com
4
+ author_email: raphael.marietan@hotmail.com
5
5
  author_name: Raphael Marietan
6
6
  data_format: string
7
7
  file_extension: ''
8
8
  has_binder: true
9
9
  has_settings: true
10
- kind: frontend
10
+ kind: server
11
11
  labextension_name: jupyterlab_unianalytics_dashboard
12
12
  mimetype: ''
13
13
  mimetype_name: ''
14
- project_short_description:
15
- A JupyterLab dashboard extension to visualiaze data from
16
- students.
14
+ project_short_description: A JupyterLab dashboard extension to visualize data from
15
+ students.
17
16
  python_name: jupyterlab_unianalytics_dashboard
18
17
  repository: https://github.com/chili-epfl/jupyter-dashboard-visu-extension
19
18
  test: true
20
19
  viewer_name: ''
20
+
@@ -0,0 +1 @@
1
+ nodeLinker: node-modules
@@ -2,12 +2,23 @@
2
2
 
3
3
  <!-- <START NEW CHANGELOG ENTRY> -->
4
4
 
5
- ## 4.0.6
5
+ ## 4.0.8
6
6
 
7
- Fixed incompatibility with JupyterLab 3.
7
+ No merged PRs
8
8
 
9
9
  <!-- <END NEW CHANGELOG ENTRY> -->
10
10
 
11
+ ## 4.0.7
12
+
13
+ - Feature: adding text-based filtering in Cell dashboard
14
+ - Adding server extension component
15
+ - Generating or retrieving persistent user identifier
16
+ - Small bug fixes
17
+
18
+ ## 4.0.6
19
+
20
+ Fixed incompatibility with JupyterLab 3.
21
+
11
22
  ## 4.0.5
12
23
 
13
24
  Changes since last release:
@@ -1,6 +1,6 @@
1
1
  BSD 3-Clause License
2
2
 
3
- Copyright (c) 2023, Raphael Marietan
3
+ Copyright (c) 2024, Raphael Marietan
4
4
  All rights reserved.
5
5
 
6
6
  Redistribution and use in source and binary forms, with or without
@@ -1,14 +1,14 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jupyterlab_unianalytics_dashboard
3
- Version: 4.0.6
3
+ Version: 4.0.8
4
4
  Summary: A JupyterLab dashboard extension to visualize data from students.
5
5
  Project-URL: Homepage, https://github.com/chili-epfl/jupyter-dashboard-visu-extension
6
6
  Project-URL: Bug Tracker, https://github.com/chili-epfl/jupyter-dashboard-visu-extension/issues
7
7
  Project-URL: Repository, https://github.com/chili-epfl/jupyter-dashboard-visu-extension.git
8
- Author-email: Raphael Marietan <me@test.com>
8
+ Author-email: Raphael Marietan <raphael.marietan@hotmail.com>
9
9
  License: BSD 3-Clause License
10
10
 
11
- Copyright (c) 2023, Raphael Marietan
11
+ Copyright (c) 2024, Raphael Marietan
12
12
  All rights reserved.
13
13
 
14
14
  Redistribution and use in source and binary forms, with or without
@@ -48,7 +48,15 @@ Classifier: Programming Language :: Python :: 3.8
48
48
  Classifier: Programming Language :: Python :: 3.9
49
49
  Classifier: Programming Language :: Python :: 3.10
50
50
  Classifier: Programming Language :: Python :: 3.11
51
+ Classifier: Programming Language :: Python :: 3.12
51
52
  Requires-Python: >=3.8
53
+ Requires-Dist: jupyter-server<3,>=1.12
54
+ Provides-Extra: test
55
+ Requires-Dist: coverage; extra == 'test'
56
+ Requires-Dist: pytest; extra == 'test'
57
+ Requires-Dist: pytest-asyncio; extra == 'test'
58
+ Requires-Dist: pytest-cov; extra == 'test'
59
+ Requires-Dist: pytest-jupyter[server]>=0.6.0; extra == 'test'
52
60
  Description-Content-Type: text/markdown
53
61
 
54
62
  # Unianalytics Dashboard JupyterLab Extension
@@ -79,6 +87,22 @@ To remove the extension, execute:
79
87
  pip uninstall jupyterlab-unianalytics_dashboard
80
88
  ```
81
89
 
90
+ ## Troubleshoot
91
+
92
+ If you are seeing the frontend extension, but it is not working, check
93
+ that the server extension is enabled:
94
+
95
+ ```bash
96
+ jupyter server extension list
97
+ ```
98
+
99
+ If the server extension is installed and enabled, but you are not seeing
100
+ the frontend extension, check the frontend extension is installed:
101
+
102
+ ```bash
103
+ jupyter labextension list
104
+ ```
105
+
82
106
  ## Contributing
83
107
 
84
108
  ### Development install
@@ -91,11 +115,13 @@ The `jlpm` command is JupyterLab's pinned version of
91
115
 
92
116
  ```bash
93
117
  # Clone the repo to your local environment
94
- # Change directory to the extension directory
118
+ # Change directory to the jupyterlab_unianalytics_dashboard directory
95
119
  # Install package in development mode
96
- pip install -e "."
120
+ pip install -e ".[test]"
97
121
  # Link your development version of the extension with JupyterLab
98
122
  jupyter labextension develop . --overwrite
123
+ # Server extension must be manually installed in develop mode
124
+ jupyter server extension enable jupyterlab_unianalytics_dashboard
99
125
  # Rebuild extension Typescript source after making changes
100
126
  jlpm build
101
127
  ```
@@ -120,6 +146,8 @@ jupyter lab build --minimize=False
120
146
  ### Development uninstall
121
147
 
122
148
  ```bash
149
+ # Server extension must be manually disabled in develop mode
150
+ jupyter server extension disable jupyterlab_unianalytics_dashboard
123
151
  pip uninstall jupyterlab_unianalytics_dashboard
124
152
  ```
125
153
 
@@ -129,6 +157,24 @@ folder is located. Then you can remove the symlink named `jupyterlab_unianalytic
129
157
 
130
158
  ### Testing the extension
131
159
 
160
+ #### Server tests
161
+
162
+ This extension is using [Pytest](https://docs.pytest.org/) for Python code testing.
163
+
164
+ Install test dependencies (needed only once):
165
+
166
+ ```sh
167
+ pip install -e ".[test]"
168
+ # Each time you install the Python package, you need to restore the front-end extension link
169
+ jupyter labextension develop . --overwrite
170
+ ```
171
+
172
+ To execute them, run:
173
+
174
+ ```sh
175
+ pytest -vv -r ap --cov jupyterlab_unianalytics_dashboard
176
+ ```
177
+
132
178
  #### Frontend tests
133
179
 
134
180
  This extension is using [Jest](https://jestjs.io/) for JavaScript code testing.
@@ -142,7 +188,7 @@ jlpm test
142
188
 
143
189
  #### Integration tests
144
190
 
145
- This extension uses [Playwright](https://playwright.dev/docs/intro/) for the integration tests (aka user level tests).
191
+ This extension uses [Playwright](https://playwright.dev/docs/intro) for the integration tests (aka user level tests).
146
192
  More precisely, the JupyterLab helper [Galata](https://github.com/jupyterlab/jupyterlab/tree/master/galata) is used to handle testing the extension in JupyterLab.
147
193
 
148
194
  More information are provided within the [ui-tests](./ui-tests/README.md) README.
@@ -26,6 +26,22 @@ To remove the extension, execute:
26
26
  pip uninstall jupyterlab-unianalytics_dashboard
27
27
  ```
28
28
 
29
+ ## Troubleshoot
30
+
31
+ If you are seeing the frontend extension, but it is not working, check
32
+ that the server extension is enabled:
33
+
34
+ ```bash
35
+ jupyter server extension list
36
+ ```
37
+
38
+ If the server extension is installed and enabled, but you are not seeing
39
+ the frontend extension, check the frontend extension is installed:
40
+
41
+ ```bash
42
+ jupyter labextension list
43
+ ```
44
+
29
45
  ## Contributing
30
46
 
31
47
  ### Development install
@@ -38,11 +54,13 @@ The `jlpm` command is JupyterLab's pinned version of
38
54
 
39
55
  ```bash
40
56
  # Clone the repo to your local environment
41
- # Change directory to the extension directory
57
+ # Change directory to the jupyterlab_unianalytics_dashboard directory
42
58
  # Install package in development mode
43
- pip install -e "."
59
+ pip install -e ".[test]"
44
60
  # Link your development version of the extension with JupyterLab
45
61
  jupyter labextension develop . --overwrite
62
+ # Server extension must be manually installed in develop mode
63
+ jupyter server extension enable jupyterlab_unianalytics_dashboard
46
64
  # Rebuild extension Typescript source after making changes
47
65
  jlpm build
48
66
  ```
@@ -67,6 +85,8 @@ jupyter lab build --minimize=False
67
85
  ### Development uninstall
68
86
 
69
87
  ```bash
88
+ # Server extension must be manually disabled in develop mode
89
+ jupyter server extension disable jupyterlab_unianalytics_dashboard
70
90
  pip uninstall jupyterlab_unianalytics_dashboard
71
91
  ```
72
92
 
@@ -76,6 +96,24 @@ folder is located. Then you can remove the symlink named `jupyterlab_unianalytic
76
96
 
77
97
  ### Testing the extension
78
98
 
99
+ #### Server tests
100
+
101
+ This extension is using [Pytest](https://docs.pytest.org/) for Python code testing.
102
+
103
+ Install test dependencies (needed only once):
104
+
105
+ ```sh
106
+ pip install -e ".[test]"
107
+ # Each time you install the Python package, you need to restore the front-end extension link
108
+ jupyter labextension develop . --overwrite
109
+ ```
110
+
111
+ To execute them, run:
112
+
113
+ ```sh
114
+ pytest -vv -r ap --cov jupyterlab_unianalytics_dashboard
115
+ ```
116
+
79
117
  #### Frontend tests
80
118
 
81
119
  This extension is using [Jest](https://jestjs.io/) for JavaScript code testing.
@@ -89,7 +127,7 @@ jlpm test
89
127
 
90
128
  #### Integration tests
91
129
 
92
- This extension uses [Playwright](https://playwright.dev/docs/intro/) for the integration tests (aka user level tests).
130
+ This extension uses [Playwright](https://playwright.dev/docs/intro) for the integration tests (aka user level tests).
93
131
  More precisely, the JupyterLab helper [Galata](https://github.com/jupyterlab/jupyterlab/tree/master/galata) is used to handle testing the extension in JupyterLab.
94
132
 
95
133
  More information are provided within the [ui-tests](./ui-tests/README.md) README.
@@ -64,7 +64,41 @@ Check out the [workflow documentation](https://jupyter-releaser.readthedocs.io/e
64
64
 
65
65
  Here is a summary of the steps to cut a new release:
66
66
 
67
- - Add `ADMIN_GITHUB_TOKEN`, `PYPI_TOKEN` and `NPM_TOKEN` to the [Github Secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets) in the repository
67
+ - Add tokens to the [Github Secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets) in the repository:
68
+ - `ADMIN_GITHUB_TOKEN` (with "public_repo" and "repo:status" permissions); see the [documentation](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)
69
+ - `NPM_TOKEN` (with "automation" permission); see the [documentation](https://docs.npmjs.com/creating-and-viewing-access-tokens)
70
+ - Set up PyPI
71
+
72
+ <details><summary>Using PyPI trusted publisher (modern way)</summary>
73
+
74
+ - Set up your PyPI project by [adding a trusted publisher](https://docs.pypi.org/trusted-publishers/adding-a-publisher/)
75
+ - The _workflow name_ is `publish-release.yml` and the _environment_ should be left blank.
76
+ - Ensure the publish release job as `permissions`: `id-token : write` (see the [documentation](https://docs.pypi.org/trusted-publishers/using-a-publisher/))
77
+
78
+ </details>
79
+
80
+ <details><summary>Using PyPI token (legacy way)</summary>
81
+
82
+ - If the repo generates PyPI release(s), create a scoped PyPI [token](https://packaging.python.org/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/#saving-credentials-on-github). We recommend using a scoped token for security reasons.
83
+
84
+ - You can store the token as `PYPI_TOKEN` in your fork's `Secrets`.
85
+
86
+ - Advanced usage: if you are releasing multiple repos, you can create a secret named `PYPI_TOKEN_MAP` instead of `PYPI_TOKEN` that is formatted as follows:
87
+
88
+ ```text
89
+ owner1/repo1,token1
90
+ owner2/repo2,token2
91
+ ```
92
+
93
+ If you have multiple Python packages in the same repository, you can point to them as follows:
94
+
95
+ ```text
96
+ owner1/repo1/path/to/package1,token1
97
+ owner1/repo1/path/to/package2,token2
98
+ ```
99
+
100
+ </details>
101
+
68
102
  - Go to the Actions panel
69
103
  - Run the "Step 1: Prep Release" workflow
70
104
  - Check the draft changelog
@@ -0,0 +1,8 @@
1
+ import pytest
2
+
3
+ pytest_plugins = ("pytest_jupyter.jupyter_server", )
4
+
5
+
6
+ @pytest.fixture
7
+ def jp_server_config(jp_server_config):
8
+ return {"ServerApp": {"jpserver_extensions": {"jupyterlab_unianalytics_dashboard": True}}}
@@ -1,7 +1,7 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuites name="jest tests" tests="1" failures="0" errors="0" time="37.109">
3
- <testsuite name="jupyterlab_unianalytics_dashboard" errors="0" failures="0" skipped="0" timestamp="2023-10-02T15:00:21" time="24.817" tests="1">
4
- <testcase classname="jupyterlab_unianalytics_dashboard should be tested" name="jupyterlab_unianalytics_dashboard should be tested" time="0.006">
2
+ <testsuites name="jest tests" tests="1" failures="0" errors="0" time="25.156">
3
+ <testsuite name="jupyterlab_unianalytics_dashboard" errors="0" failures="0" skipped="0" timestamp="2024-01-26T16:04:36" time="13.286" tests="1">
4
+ <testcase classname="jupyterlab_unianalytics_dashboard should be tested" name="jupyterlab_unianalytics_dashboard should be tested" time="0.005">
5
5
  </testcase>
6
6
  </testsuite>
7
7
  </testsuites>
@@ -0,0 +1,7 @@
1
+ {
2
+ "ServerApp": {
3
+ "jpserver_extensions": {
4
+ "jupyterlab_unianalytics_dashboard": true
5
+ }
6
+ }
7
+ }
@@ -0,0 +1,36 @@
1
+ try:
2
+ from ._version import __version__
3
+ except ImportError:
4
+ # Fallback when using the package in dev mode without installing
5
+ # in editable mode with pip. It is highly recommended to install
6
+ # the package from a stable release or in editable mode: https://pip.pypa.io/en/stable/topics/local-project-installs/#editable-installs
7
+ import warnings
8
+ warnings.warn("Importing 'jupyterlab_unianalytics_dashboard' outside a proper installation.")
9
+ __version__ = "dev"
10
+ from .handlers import setup_handlers
11
+
12
+
13
+ def _jupyter_labextension_paths():
14
+ return [{
15
+ "src": "labextension",
16
+ "dest": "jupyterlab_unianalytics_dashboard"
17
+ }]
18
+
19
+
20
+ def _jupyter_server_extension_points():
21
+ return [{
22
+ "module": "jupyterlab_unianalytics_dashboard"
23
+ }]
24
+
25
+
26
+ def _load_jupyter_server_extension(server_app):
27
+ """Registers the API handler to receive HTTP requests from the frontend extension.
28
+
29
+ Parameters
30
+ ----------
31
+ server_app: jupyterlab.labapp.LabApp
32
+ JupyterLab application instance
33
+ """
34
+ setup_handlers(server_app.web_app)
35
+ name = "jupyterlab_unianalytics_dashboard"
36
+ server_app.log.info(f"Registered {name} server extension")
@@ -1,4 +1,4 @@
1
1
  # This file is auto-generated by Hatchling. As such, do not:
2
2
  # - modify
3
3
  # - track in version control e.g. be sure to add to .gitignore
4
- __version__ = VERSION = '4.0.6'
4
+ __version__ = VERSION = '4.0.8'
@@ -0,0 +1,53 @@
1
+ import os
2
+ import uuid
3
+ from hashlib import sha256
4
+ from jupyter_server.config_manager import BaseJSONConfigManager
5
+
6
+ from jupyter_server.base.handlers import APIHandler
7
+ from jupyter_server.utils import url_path_join
8
+ import tornado
9
+
10
+ SECRET_SALT = '5ea06c48dbb6a90cdee78f88b8a08e673efda3d28c8019e62e326ce817ee8900'
11
+ def hash_user_id_with_salt(prehashed_id):
12
+ return sha256(prehashed_id.encode('utf-8') + SECRET_SALT.encode('utf-8')).hexdigest()
13
+
14
+ class RouteHandler(APIHandler):
15
+ # the following decorator should be present on all verb methods (head, get, post,
16
+ # patch, put, delete, options) to ensure only authorized user can request the
17
+ # Jupyter server
18
+ @tornado.web.authenticated
19
+ def get(self):
20
+ # return the anonymized user identifier
21
+ self.finish(self.anonymized_user_id)
22
+
23
+ def __init__(self, *args, **kwargs):
24
+ super().__init__(*args, **kwargs)
25
+
26
+ # get the SCIPER identifier if available
27
+ user_id = os.getenv('JUPYTERHUB_USER')
28
+
29
+ if not user_id :
30
+
31
+ # get randomly generated user_id from persisting config, and create one if not found
32
+ config_dir_path = os.path.join(os.path.expanduser('~'), '.jupyter/lab/user-settings/jupyterlab_unianalytics')
33
+ json_filename = 'unianalytics_user_info'
34
+
35
+ cm = BaseJSONConfigManager(config_dir=config_dir_path)
36
+ cm.ensure_config_dir_exists()
37
+
38
+ user_id = cm.get(json_filename).get('user_id')
39
+
40
+ if not user_id :
41
+ user_id = str(uuid.uuid4())
42
+ cm.set(json_filename, { 'user_id': user_id })
43
+
44
+ # anonymize the user_id
45
+ self.anonymized_user_id = hash_user_id_with_salt(user_id)
46
+
47
+ def setup_handlers(web_app):
48
+ host_pattern = ".*$"
49
+
50
+ base_url = web_app.settings["base_url"]
51
+ route_pattern = url_path_join(base_url, "jupyterlab-unianalytics-dashboard", "get_anonymized_user_id")
52
+ handlers = [(route_pattern, RouteHandler)]
53
+ web_app.add_handlers(host_pattern, handlers)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jupyterlab_unianalytics_dashboard",
3
- "version": "4.0.6",
3
+ "version": "4.0.8",
4
4
  "description": "A JupyterLab dashboard extension to visualize data from students.",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -14,11 +14,12 @@
14
14
  "license": "BSD-3-Clause",
15
15
  "author": {
16
16
  "name": "Raphael Marietan",
17
- "email": "me@test.com"
17
+ "email": "raphael.marietan@hotmail.com"
18
18
  },
19
19
  "files": [
20
20
  "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}",
21
21
  "style/**/*.{css,js,eot,gif,html,jpg,json,png,svg,woff2,ttf}",
22
+ "src/**/*.{ts,tsx}",
22
23
  "schema/*.json"
23
24
  ],
24
25
  "main": "lib/index.js",
@@ -58,16 +59,14 @@
58
59
  "dependencies": {
59
60
  "@juggle/resize-observer": "^3.4.0",
60
61
  "@jupyterlab/application": "^4.0.0",
61
- "@jupyterlab/launcher": "^4.0.1",
62
+ "@jupyterlab/coreutils": "^6.0.0",
63
+ "@jupyterlab/services": "^7.0.0",
62
64
  "@jupyterlab/settingregistry": "^4.0.0",
63
- "@jupyterlab/toc": "^6.0.2",
64
65
  "@reduxjs/toolkit": "^1.9.5",
65
- "bootstrap": "^5.2.3",
66
- "chart.js": "^4.3.0",
67
- "crypto-js": "^4.1.1",
68
- "jszip": "^3.10.1",
69
- "marked": "^9.1.6",
70
- "react-bootstrap": "^2.7.4",
66
+ "bootstrap": "^5.3.2",
67
+ "chart.js": "^4.4.1",
68
+ "marked": "^11.1.1",
69
+ "react-bootstrap": "^2.10.0",
71
70
  "react-bootstrap-icons": "^1.10.3",
72
71
  "react-chartjs-2": "^5.2.0",
73
72
  "react-redux": "^8.0.5"
@@ -75,29 +74,29 @@
75
74
  "devDependencies": {
76
75
  "@jupyterlab/builder": "^4.0.0",
77
76
  "@jupyterlab/testutils": "^4.0.0",
78
- "@types/crypto-js": "^4.1.1",
79
77
  "@types/jest": "^29.2.0",
80
78
  "@types/json-schema": "^7.0.11",
81
79
  "@types/react": "^18.0.26",
82
- "@types/react-dom": "^18.2.14",
83
- "@types/uuid": "^9.0.2",
84
- "@typescript-eslint/eslint-plugin": "^5.55.0",
85
- "@typescript-eslint/parser": "^5.55.0",
80
+ "@types/react-addons-linked-state-mixin": "^0.14.22",
81
+ "@types/react-dom": "^18.2.18",
82
+ "@typescript-eslint/eslint-plugin": "^6.1.0",
83
+ "@typescript-eslint/parser": "^6.1.0",
86
84
  "css-loader": "^6.7.1",
87
85
  "eslint": "^8.36.0",
88
- "eslint-config-prettier": "^8.7.0",
89
- "eslint-plugin-prettier": "^4.2.1",
86
+ "eslint-config-prettier": "^8.8.0",
87
+ "eslint-plugin-prettier": "^5.0.0",
90
88
  "jest": "^29.2.0",
89
+ "mkdirp": "^1.0.3",
91
90
  "npm-run-all": "^4.1.5",
92
- "prettier": "^2.8.7",
93
- "rimraf": "^4.4.1",
91
+ "prettier": "^3.0.0",
92
+ "rimraf": "^5.0.1",
94
93
  "source-map-loader": "^1.0.2",
95
94
  "style-loader": "^3.3.1",
96
- "stylelint": "^14.9.1",
97
- "stylelint-config-prettier": "^9.0.4",
98
- "stylelint-config-recommended": "^8.0.0",
99
- "stylelint-config-standard": "^26.0.0",
100
- "stylelint-prettier": "^2.0.0",
95
+ "stylelint": "^15.10.1",
96
+ "stylelint-config-recommended": "^13.0.0",
97
+ "stylelint-config-standard": "^34.0.0",
98
+ "stylelint-csstree-validator": "^3.0.0",
99
+ "stylelint-prettier": "^4.0.0",
101
100
  "typescript": "~5.0.2",
102
101
  "yjs": "^13.5.0"
103
102
  },
@@ -110,11 +109,21 @@
110
109
  "access": "public"
111
110
  },
112
111
  "jupyterlab": {
112
+ "discovery": {
113
+ "server": {
114
+ "managers": [
115
+ "pip"
116
+ ],
117
+ "base": {
118
+ "name": "jupyterlab_unianalytics_dashboard"
119
+ }
120
+ }
121
+ },
113
122
  "extension": true,
114
123
  "outputDir": "jupyterlab_unianalytics_dashboard/labextension",
115
124
  "schemaDir": "schema",
116
125
  "_build": {
117
- "load": "static/remoteEntry.27b69645f536048bd908.js",
126
+ "load": "static/remoteEntry.8cd70c149b116f11f59e.js",
118
127
  "extension": "./extension",
119
128
  "style": "./style"
120
129
  }
@@ -186,7 +195,15 @@
186
195
  "singleQuote": true,
187
196
  "trailingComma": "none",
188
197
  "arrowParens": "avoid",
189
- "endOfLine": "auto"
198
+ "endOfLine": "auto",
199
+ "overrides": [
200
+ {
201
+ "files": "package.json",
202
+ "options": {
203
+ "tabWidth": 4
204
+ }
205
+ }
206
+ ]
190
207
  },
191
208
  "stylelint": {
192
209
  "extends": [
@@ -194,11 +211,15 @@
194
211
  "stylelint-config-standard",
195
212
  "stylelint-prettier/recommended"
196
213
  ],
214
+ "plugins": [
215
+ "stylelint-csstree-validator"
216
+ ],
197
217
  "rules": {
218
+ "csstree/validator": true,
198
219
  "property-no-vendor-prefix": null,
220
+ "selector-class-pattern": "^([a-z][A-z\\d]*)(-[A-z\\d]+)*$",
199
221
  "selector-no-vendor-prefix": null,
200
- "value-no-vendor-prefix": null,
201
- "selector-class-pattern": null
222
+ "value-no-vendor-prefix": null
202
223
  }
203
224
  }
204
225
  }