peertube-plugin-user-group-privacy-enhanced 1.0.1

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 (56) hide show
  1. package/.devcontainer/ClaudeCode/.env.example +4 -0
  2. package/.devcontainer/ClaudeCode/Dockerfile +41 -0
  3. package/.devcontainer/ClaudeCode/devcontainer.json +19 -0
  4. package/.devcontainer/ClaudeCode/post-start.sh +31 -0
  5. package/.eslintrc.json +41 -0
  6. package/.stylelintrc.js +9 -0
  7. package/LICENSE +661 -0
  8. package/README.md +31 -0
  9. package/assets/style.scss +1 -0
  10. package/client/api.ts +24 -0
  11. package/client/common-client-plugin.ts +8 -0
  12. package/client/tsconfig.json +28 -0
  13. package/client/user-group-selection-updater.ts +136 -0
  14. package/client/video-edit.ts +63 -0
  15. package/dist/assets/style.css +1 -0
  16. package/dist/client/common-client-plugin.js +1 -0
  17. package/dist/client/video-edit.js +1 -0
  18. package/dist/server/main.js +96 -0
  19. package/dist/server/main.js.map +1 -0
  20. package/dist/server/migrations/001_initial_schema.js +55 -0
  21. package/dist/server/migrations/001_initial_schema.js.map +1 -0
  22. package/dist/server/migrations/002_add_group_config_id.js +38 -0
  23. package/dist/server/migrations/002_add_group_config_id.js.map +1 -0
  24. package/dist/server/migrations/migration-runner.js +130 -0
  25. package/dist/server/migrations/migration-runner.js.map +1 -0
  26. package/dist/server/model/params.js +3 -0
  27. package/dist/server/model/params.js.map +1 -0
  28. package/dist/server/model/user-group.js +12 -0
  29. package/dist/server/model/user-group.js.map +1 -0
  30. package/dist/server/service/db-service.js +129 -0
  31. package/dist/server/service/db-service.js.map +1 -0
  32. package/dist/server/service/group-permission-service.js +105 -0
  33. package/dist/server/service/group-permission-service.js.map +1 -0
  34. package/dist/server/service/hook-handler-factory.js +149 -0
  35. package/dist/server/service/hook-handler-factory.js.map +1 -0
  36. package/dist/server/service/route-handler-factory.js +97 -0
  37. package/dist/server/service/route-handler-factory.js.map +1 -0
  38. package/dist/shared/constants.js +6 -0
  39. package/dist/shared/constants.js.map +1 -0
  40. package/jest.config.js +7 -0
  41. package/languages/de.json +8 -0
  42. package/package.json +80 -0
  43. package/public/images/.gitkeep +0 -0
  44. package/scripts/build.js +25 -0
  45. package/server/main.ts +108 -0
  46. package/server/migrations/001_initial_schema.ts +65 -0
  47. package/server/migrations/002_add_group_config_id.ts +47 -0
  48. package/server/migrations/migration-runner.ts +172 -0
  49. package/server/model/params.ts +59 -0
  50. package/server/model/user-group.ts +11 -0
  51. package/server/service/db-service.ts +187 -0
  52. package/server/service/group-permission-service.ts +135 -0
  53. package/server/service/hook-handler-factory.ts +277 -0
  54. package/server/service/route-handler-factory.ts +122 -0
  55. package/server/tsconfig.json +24 -0
  56. package/shared/constants.ts +2 -0
@@ -0,0 +1,4 @@
1
+ # Example environment variables for DevContainer
2
+ # Copy this file to .env and update with your values
3
+
4
+ # PEERTUBE_PASSWORD=your_peertube_password_here
@@ -0,0 +1,41 @@
1
+ FROM node:24.2.0-bookworm
2
+
3
+ # Install basic development tools
4
+ RUN apt update && apt install -y less man-db sudo
5
+
6
+ # Install Docker CLI
7
+ RUN apt-get update && apt-get install -y \
8
+ ca-certificates \
9
+ curl \
10
+ gnupg \
11
+ lsb-release
12
+ RUN mkdir -p /etc/apt/keyrings
13
+ RUN curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
14
+ RUN echo \
15
+ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
16
+ $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
17
+ RUN apt-get update && apt-get install -y docker-ce-cli
18
+
19
+ # Install the Claude Code CLI
20
+ RUN npm install -g @anthropic-ai/claude-code
21
+
22
+ # Create docker group with GID 999 (this should match the host's docker GID)
23
+ RUN groupadd -g 999 docker
24
+
25
+ # Add node user to docker group
26
+ RUN usermod -aG docker node
27
+
28
+ # Ensure default `node` user has access to `sudo`
29
+ ARG USERNAME=node
30
+ RUN echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
31
+ && chmod 0440 /etc/sudoers.d/$USERNAME
32
+
33
+ # Set `DEVCONTAINER` environment variable to help with orientation
34
+ ENV DEVCONTAINER=true
35
+
36
+ # Install PeerTube CLI
37
+ RUN npm install -g @peertube/peertube-cli
38
+
39
+ # Add peertube.localhost to hosts file
40
+ # RUN
41
+
@@ -0,0 +1,19 @@
1
+ // See https://containers.dev/implementors/json_reference/ for configuration reference
2
+ {
3
+ "name": "Claude Code",
4
+ "build": {
5
+ "dockerfile": "Dockerfile"
6
+ },
7
+ "remoteUser": "node",
8
+
9
+ // Mount Docker socket from WSL2 host
10
+ "mounts": [
11
+ "source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind"
12
+ ],
13
+
14
+ // Add user to docker group for non-root docker access and connect to PeerTube network
15
+ "runArgs": ["--group-add=docker", "--network=local_default"],
16
+
17
+ // Run commands after each container start
18
+ "postStartCommand": ".devcontainer/ClaudeCode/post-start.sh"
19
+ }
@@ -0,0 +1,31 @@
1
+ #!/bin/bash
2
+
3
+ # Configure Docker socket permissions
4
+ sudo chgrp docker /var/run/docker.sock
5
+ sudo chmod g+rw /var/run/docker.sock
6
+
7
+ # Add PeerTube host entry if not already present
8
+ if ! grep -q 'peertube.localhost' /etc/hosts; then
9
+ # Find PeerTube container IP dynamically
10
+ PEERTUBE_CONTAINER=$(docker ps -q --filter "name=peertube" 2>/dev/null)
11
+
12
+ if [ -n "$PEERTUBE_CONTAINER" ]; then
13
+ PEERTUBE_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$PEERTUBE_CONTAINER" 2>/dev/null | head -n1)
14
+ if [ -n "$PEERTUBE_IP" ]; then
15
+ echo "$PEERTUBE_IP peertube.localhost" | sudo tee -a /etc/hosts
16
+ echo "Added PeerTube container IP $PEERTUBE_IP to /etc/hosts"
17
+ else
18
+ echo "Error: Could not get IP address from PeerTube container"
19
+ exit 1
20
+ fi
21
+ else
22
+ echo "Error: PeerTube container not found. Make sure PeerTube is running."
23
+ exit 1
24
+ fi
25
+ fi
26
+
27
+ # Add PeerTube CLI authentication
28
+ if [ -f ".devcontainer/ClaudeCode/.env" ]; then
29
+ source .devcontainer/ClaudeCode/.env
30
+ peertube-cli auth add -u "http://peertube.localhost:9000" -U "root" --password "$PEERTUBE_PASSWORD" 2>/dev/null || true
31
+ fi
package/.eslintrc.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "root": true,
3
+ "env": {
4
+ "browser": true,
5
+ "es6": true
6
+ },
7
+ "extends": [
8
+ "standard-with-typescript"
9
+ ],
10
+ "globals": {},
11
+ "parser": "@typescript-eslint/parser",
12
+ "parserOptions": {
13
+ "ecmaVersion": 2018,
14
+ "project": [
15
+ "./server/tsconfig.json",
16
+ "./client/tsconfig.json"
17
+ ]
18
+ },
19
+ "plugins": [
20
+ "@typescript-eslint"
21
+ ],
22
+ "ignorePatterns": ["dist", "node_modules", "scripts"],
23
+ "rules": {
24
+ "@typescript-eslint/no-unused-vars": [2, {"argsIgnorePattern": "^_"}],
25
+ "@typescript-eslint/no-floating-promises": "error",
26
+ "@typescript-eslint/no-misused-promises": "error",
27
+ "@typescript-eslint/no-var-requires": "off",
28
+ "@typescript-eslint/strict-boolean-expressions": "off",
29
+ "@typescript-eslint/return-await": [2, "in-try-catch"], // FIXME: correct?
30
+ "@typescript-eslint/no-invalid-void-type": "off",
31
+ "@typescript-eslint/triple-slash-reference": "off",
32
+ "max-len": [
33
+ "error",
34
+ {
35
+ "code": 120,
36
+ "comments": 120
37
+ }
38
+ ],
39
+ "no-unused-vars": "off"
40
+ }
41
+ }
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ module.exports = {
4
+ extends: [
5
+ 'stylelint-config-recommended-scss',
6
+ 'stylelint-config-standard-scss'
7
+ ],
8
+ rules: {}
9
+ }