@r8s/element 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,30 @@
1
+ export interface ElementProps {
2
+ /** Resource name */
3
+ name?: string;
4
+ /** Kubernetes namespace */
5
+ namespace?: string;
6
+ /** Element Web version (default: latest) */
7
+ version?: string;
8
+ /** Hostname for Element */
9
+ host: string;
10
+ /** Matrix homeserver URL */
11
+ homeserverUrl: string;
12
+ /** TLS config */
13
+ tls?: {
14
+ secretName: string;
15
+ clusterIssuer: string;
16
+ };
17
+ }
18
+ /**
19
+ * Element Matrix chat client (web UI).
20
+ * Deploys without operator — native Kubernetes resources only.
21
+ *
22
+ * @example
23
+ * <Element
24
+ * host="chat.example.com"
25
+ * homeserverUrl="https://matrix.example.com"
26
+ * tls={{ secretName: "element-tls", clusterIssuer: "letsencrypt" }}
27
+ * />
28
+ */
29
+ export declare function Element(props: ElementProps): import("@r8s/core").r8sElement;
30
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,4BAA4B;IAC5B,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB;IACjB,GAAG,CAAC,EAAE;QACJ,UAAU,EAAE,MAAM,CAAA;QAClB,aAAa,EAAE,MAAM,CAAA;KACtB,CAAA;CACF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,kCA2J1C"}
package/dist/index.js ADDED
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Element = Element;
4
+ const core_1 = require("@r8s/core");
5
+ /**
6
+ * Element Matrix chat client (web UI).
7
+ * Deploys without operator — native Kubernetes resources only.
8
+ *
9
+ * @example
10
+ * <Element
11
+ * host="chat.example.com"
12
+ * homeserverUrl="https://matrix.example.com"
13
+ * tls={{ secretName: "element-tls", clusterIssuer: "letsencrypt" }}
14
+ * />
15
+ */
16
+ function Element(props) {
17
+ const { name = 'element', namespace = 'element', version = 'latest', host, homeserverUrl, tls, } = props;
18
+ const resources = [];
19
+ // Namespace
20
+ resources.push((0, core_1.jsx)('Namespace', {
21
+ apiVersion: 'v1',
22
+ kind: 'Namespace',
23
+ metadata: { name: namespace },
24
+ }));
25
+ // ConfigMap for config.json
26
+ const config = {
27
+ default_server_config: {
28
+ 'm.homeserver': {
29
+ base_url: homeserverUrl,
30
+ server_name: host,
31
+ },
32
+ },
33
+ brand: 'Element',
34
+ integrations_ui_url: 'https://scalar.vector.im/',
35
+ integrations_rest_url: 'https://scalar.vector.im/api',
36
+ integrations_widgets_urls: [
37
+ 'https://scalar.vector.im/_matrix/integrations/v1',
38
+ 'https://scalar.vector.im/api',
39
+ 'https://scalar-staging.vector.im/_matrix/integrations/v1',
40
+ 'https://scalar-staging.vector.im/api',
41
+ ],
42
+ bug_report_endpoint_url: 'https://element.io/bugreports/submit',
43
+ uisi_autorageshared_sigs: true,
44
+ show_labs_settings: true,
45
+ room_directory: {
46
+ servers: [host],
47
+ },
48
+ };
49
+ resources.push((0, core_1.jsx)('ConfigMap', {
50
+ apiVersion: 'v1',
51
+ kind: 'ConfigMap',
52
+ metadata: { name: `${name}-config`, namespace },
53
+ data: {
54
+ 'config.json': JSON.stringify(config, null, 2),
55
+ },
56
+ }));
57
+ // Deployment
58
+ resources.push((0, core_1.jsx)('Deployment', {
59
+ apiVersion: 'apps/v1',
60
+ kind: 'Deployment',
61
+ metadata: { name, namespace },
62
+ spec: {
63
+ replicas: 1,
64
+ selector: { matchLabels: { app: name } },
65
+ template: {
66
+ metadata: { labels: { app: name } },
67
+ spec: {
68
+ containers: [
69
+ {
70
+ name: 'element',
71
+ image: `vectorim/element-web:${version}`,
72
+ ports: [{ containerPort: 80, name: 'http' }],
73
+ volumeMounts: [
74
+ {
75
+ name: 'config',
76
+ mountPath: '/app/config.json',
77
+ subPath: 'config.json',
78
+ readOnly: true,
79
+ },
80
+ ],
81
+ resources: {
82
+ requests: { memory: '64Mi', cpu: '50m' },
83
+ limits: { memory: '256Mi', cpu: '200m' },
84
+ },
85
+ },
86
+ ],
87
+ volumes: [{ name: 'config', configMap: { name: `${name}-config` } }],
88
+ },
89
+ },
90
+ },
91
+ }));
92
+ // Service
93
+ resources.push((0, core_1.jsx)('Service', {
94
+ apiVersion: 'v1',
95
+ kind: 'Service',
96
+ metadata: { name, namespace },
97
+ spec: {
98
+ selector: { app: name },
99
+ ports: [{ port: 80, targetPort: 80 }],
100
+ },
101
+ }));
102
+ // Ingress
103
+ const ingressSpec = {
104
+ rules: [
105
+ {
106
+ host,
107
+ http: {
108
+ paths: [
109
+ {
110
+ path: '/',
111
+ pathType: 'Prefix',
112
+ backend: {
113
+ service: { name, port: { number: 80 } },
114
+ },
115
+ },
116
+ ],
117
+ },
118
+ },
119
+ ],
120
+ };
121
+ if (tls) {
122
+ ingressSpec.tls = [
123
+ {
124
+ hosts: [host],
125
+ secretName: tls.secretName,
126
+ },
127
+ ];
128
+ }
129
+ resources.push((0, core_1.jsx)('Ingress', {
130
+ apiVersion: 'networking.k8s.io/v1',
131
+ kind: 'Ingress',
132
+ metadata: {
133
+ name,
134
+ namespace,
135
+ annotations: tls
136
+ ? {
137
+ 'cert-manager.io/cluster-issuer': tls.clusterIssuer,
138
+ }
139
+ : undefined,
140
+ },
141
+ spec: ingressSpec,
142
+ }));
143
+ return (0, core_1.jsx)(core_1.Fragment, { children: resources });
144
+ }
145
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@r8s/element",
3
+ "version": "0.1.0",
4
+ "description": "Element Matrix chat client components for r8s",
5
+ "license": "MIT",
6
+ "author": "Berget AI AB",
7
+ "homepage": "https://r8s.berget.ai",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/berget-ai/r8s.git",
11
+ "directory": "packages/element"
12
+ },
13
+ "bugs": "https://github.com/berget-ai/r8s/issues",
14
+ "publishConfig": {
15
+ "access": "public"
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "keywords": [
21
+ "element",
22
+ "matrix",
23
+ "chat",
24
+ "messaging"
25
+ ],
26
+ "r8s": {
27
+ "category": "Networking"
28
+ },
29
+ "main": "./dist/index.js",
30
+ "types": "./dist/index.d.ts",
31
+ "scripts": {
32
+ "build": "tsc --build",
33
+ "test": "vitest run",
34
+ "clean": "rm -rf dist tsconfig.tsbuildinfo"
35
+ },
36
+ "dependencies": {
37
+ "@r8s/core": "^0.1.0",
38
+ "@r8s/k8s-types": "^0.1.0"
39
+ },
40
+ "devDependencies": {
41
+ "typescript": "^5.3.0",
42
+ "vitest": "^1.0.0"
43
+ }
44
+ }