@aiot-nexus/plugin-sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +74 -0
  2. package/dev-host/host.html +344 -0
  3. package/dev-host/main.js +694 -0
  4. package/dev-host/preload.js +22 -0
  5. package/dist/.generated/plugin-framework-version.d.ts +11 -0
  6. package/dist/.generated/plugin-framework-version.js +39 -0
  7. package/dist/.generated/plugin-manifest.schema.json +106 -0
  8. package/dist/browser/frame-client.d.ts +26 -0
  9. package/dist/browser/frame-client.mjs +239 -0
  10. package/dist/src/browser/frame-client.d.ts +26 -0
  11. package/dist/src/browser/frame-client.js +244 -0
  12. package/dist/src/cli/run.d.ts +7 -0
  13. package/dist/src/cli/run.js +270 -0
  14. package/dist/src/cli.d.ts +2 -0
  15. package/dist/src/cli.js +9 -0
  16. package/dist/src/dev.d.ts +36 -0
  17. package/dist/src/dev.js +224 -0
  18. package/dist/src/index.d.ts +7 -0
  19. package/dist/src/index.js +27 -0
  20. package/dist/src/scaffold.d.ts +23 -0
  21. package/dist/src/scaffold.js +306 -0
  22. package/dist/src/types.d.ts +142 -0
  23. package/dist/src/types.js +2 -0
  24. package/dist/src/validation.d.ts +9 -0
  25. package/dist/src/validation.js +160 -0
  26. package/package.json +47 -0
  27. package/templates/minimal/.gitignore.tmpl +4 -0
  28. package/templates/minimal/.vscode/launch.json +22 -0
  29. package/templates/minimal/README.md.tmpl +22 -0
  30. package/templates/minimal/scripts/build.js.tmpl +83 -0
  31. package/templates/minimal/src/main.ts.tmpl +23 -0
  32. package/templates/minimal/src/renderer/app.ts.tmpl +194 -0
  33. package/templates/minimal/src/renderer/index.html +34 -0
  34. package/templates/minimal/src/renderer/plugin.css +164 -0
  35. package/templates/minimal/tsconfig.main.json +15 -0
  36. package/templates/minimal/tsconfig.renderer.json +17 -0
  37. package/templates/sqlite/.gitignore.tmpl +4 -0
  38. package/templates/sqlite/.vscode/launch.json +22 -0
  39. package/templates/sqlite/README.md.tmpl +22 -0
  40. package/templates/sqlite/scripts/build.js.tmpl +143 -0
  41. package/templates/sqlite/src/better-sqlite3.d.ts +22 -0
  42. package/templates/sqlite/src/main.ts.tmpl +190 -0
  43. package/templates/sqlite/src/renderer/app.ts.tmpl +428 -0
  44. package/templates/sqlite/src/renderer/index.html +57 -0
  45. package/templates/sqlite/src/renderer/plugin.css +275 -0
  46. package/templates/sqlite/tsconfig.main.json +15 -0
  47. package/templates/sqlite/tsconfig.renderer.json +17 -0
@@ -0,0 +1,275 @@
1
+ :root {
2
+ color-scheme: light dark;
3
+ font-family: "Segoe UI", Arial, sans-serif;
4
+ background: #f3f5f7;
5
+ color: #20252b;
6
+ }
7
+
8
+ * {
9
+ box-sizing: border-box;
10
+ }
11
+
12
+ body {
13
+ margin: 0;
14
+ min-height: 0;
15
+ background: #f3f5f7;
16
+ }
17
+
18
+ .plugin-shell {
19
+ display: grid;
20
+ gap: 12px;
21
+ padding: 16px;
22
+ }
23
+
24
+ .plugin-header,
25
+ .summary,
26
+ .panel {
27
+ border: 1px solid #d4d9df;
28
+ border-radius: 8px;
29
+ background: #ffffff;
30
+ }
31
+
32
+ .plugin-header {
33
+ display: flex;
34
+ align-items: flex-start;
35
+ justify-content: space-between;
36
+ gap: 16px;
37
+ padding: 14px 16px;
38
+ }
39
+
40
+ h1,
41
+ h2,
42
+ p {
43
+ margin: 0;
44
+ }
45
+
46
+ h1 {
47
+ font-size: 22px;
48
+ }
49
+
50
+ h2 {
51
+ font-size: 15px;
52
+ }
53
+
54
+ .plugin-header p {
55
+ max-width: 760px;
56
+ overflow: hidden;
57
+ margin-top: 4px;
58
+ color: #65717e;
59
+ font-size: 12px;
60
+ text-overflow: ellipsis;
61
+ white-space: nowrap;
62
+ }
63
+
64
+ .summary {
65
+ display: grid;
66
+ grid-template-columns: repeat(4, minmax(100px, 1fr));
67
+ gap: 12px;
68
+ padding: 12px 16px;
69
+ }
70
+
71
+ .summary div {
72
+ display: grid;
73
+ gap: 3px;
74
+ min-width: 0;
75
+ }
76
+
77
+ .summary span,
78
+ #statusLog {
79
+ color: #65717e;
80
+ font-size: 12px;
81
+ }
82
+
83
+ .summary strong {
84
+ overflow: hidden;
85
+ font-size: 13px;
86
+ text-overflow: ellipsis;
87
+ white-space: nowrap;
88
+ }
89
+
90
+ .panel {
91
+ padding: 14px 16px;
92
+ }
93
+
94
+ .entry-form {
95
+ display: grid;
96
+ grid-template-columns: minmax(150px, 1fr) minmax(220px, 2fr) auto;
97
+ gap: 12px;
98
+ align-items: end;
99
+ margin-top: 12px;
100
+ }
101
+
102
+ label {
103
+ display: grid;
104
+ gap: 5px;
105
+ font-size: 12px;
106
+ font-weight: 600;
107
+ }
108
+
109
+ input,
110
+ textarea {
111
+ width: 100%;
112
+ border: 1px solid #aeb7c2;
113
+ border-radius: 6px;
114
+ padding: 8px 10px;
115
+ background: #ffffff;
116
+ color: #20252b;
117
+ font: inherit;
118
+ }
119
+
120
+ textarea {
121
+ min-height: 36px;
122
+ resize: vertical;
123
+ }
124
+
125
+ .entry-actions,
126
+ .record-actions {
127
+ display: flex;
128
+ gap: 8px;
129
+ justify-content: flex-end;
130
+ }
131
+
132
+ button {
133
+ min-height: 34px;
134
+ border: 1px solid #1768a6;
135
+ border-radius: 6px;
136
+ padding: 0 12px;
137
+ background: #1768a6;
138
+ color: #ffffff;
139
+ font: inherit;
140
+ font-weight: 600;
141
+ cursor: pointer;
142
+ }
143
+
144
+ button:disabled {
145
+ cursor: default;
146
+ opacity: 0.55;
147
+ }
148
+
149
+ button.button-secondary {
150
+ border-color: #aeb7c2;
151
+ background: #ffffff;
152
+ color: #20252b;
153
+ }
154
+
155
+ button.button-danger {
156
+ border-color: #b42318;
157
+ background: #b42318;
158
+ }
159
+
160
+ .error {
161
+ margin-top: 10px;
162
+ color: #b42318;
163
+ font-size: 12px;
164
+ }
165
+
166
+ .panel-heading {
167
+ display: flex;
168
+ align-items: center;
169
+ justify-content: space-between;
170
+ gap: 12px;
171
+ margin-bottom: 10px;
172
+ }
173
+
174
+ .empty-state {
175
+ padding: 18px;
176
+ border: 1px dashed #aeb7c2;
177
+ border-radius: 6px;
178
+ color: #65717e;
179
+ text-align: center;
180
+ }
181
+
182
+ .table-wrap {
183
+ overflow: auto;
184
+ border: 1px solid #d4d9df;
185
+ border-radius: 6px;
186
+ }
187
+
188
+ table {
189
+ width: 100%;
190
+ min-width: 720px;
191
+ border-collapse: collapse;
192
+ }
193
+
194
+ th,
195
+ td {
196
+ border-bottom: 1px solid #e7eaee;
197
+ padding: 8px 10px;
198
+ text-align: left;
199
+ vertical-align: top;
200
+ }
201
+
202
+ th {
203
+ background: #f7f8fa;
204
+ color: #56616d;
205
+ font-size: 12px;
206
+ }
207
+
208
+ td {
209
+ font-size: 13px;
210
+ }
211
+
212
+ .actions-column {
213
+ width: 150px;
214
+ }
215
+
216
+ .record-actions button {
217
+ min-height: 28px;
218
+ font-size: 12px;
219
+ }
220
+
221
+ @media (max-width: 720px) {
222
+ .summary,
223
+ .entry-form {
224
+ grid-template-columns: 1fr;
225
+ }
226
+
227
+ .entry-actions {
228
+ justify-content: flex-start;
229
+ }
230
+ }
231
+
232
+ @media (prefers-color-scheme: dark) {
233
+ :root,
234
+ body {
235
+ background: #16191d;
236
+ color: #edf0f2;
237
+ }
238
+
239
+ .plugin-header,
240
+ .summary,
241
+ .panel {
242
+ border-color: #454b52;
243
+ background: #24282d;
244
+ }
245
+
246
+ .plugin-header p,
247
+ .summary span,
248
+ #statusLog,
249
+ .empty-state {
250
+ color: #aeb7c2;
251
+ }
252
+
253
+ input,
254
+ textarea,
255
+ button.button-secondary {
256
+ border-color: #59616a;
257
+ background: #191c20;
258
+ color: #edf0f2;
259
+ }
260
+
261
+ .table-wrap,
262
+ .empty-state {
263
+ border-color: #454b52;
264
+ }
265
+
266
+ th {
267
+ background: #2d3238;
268
+ color: #d2d8de;
269
+ }
270
+
271
+ th,
272
+ td {
273
+ border-bottom-color: #454b52;
274
+ }
275
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "module": "commonjs",
5
+ "moduleResolution": "node",
6
+ "lib": ["ES2020"],
7
+ "rootDir": "src",
8
+ "outDir": ".build/main",
9
+ "strict": true,
10
+ "esModuleInterop": true,
11
+ "skipLibCheck": true,
12
+ "types": ["node"]
13
+ },
14
+ "include": ["src/main.ts", "src/better-sqlite3.d.ts"]
15
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "module": "ES2020",
5
+ "moduleResolution": "node",
6
+ "lib": ["ES2020", "DOM"],
7
+ "baseUrl": ".",
8
+ "paths": {
9
+ "@aiot-nexus/plugin-sdk/browser": ["node_modules/@aiot-nexus/plugin-sdk/dist/browser/frame-client.d.ts"]
10
+ },
11
+ "rootDir": "src/renderer",
12
+ "outDir": ".build/renderer",
13
+ "strict": true,
14
+ "skipLibCheck": true
15
+ },
16
+ "include": ["src/renderer/app.ts"]
17
+ }