@positronic/cli 0.0.70 → 0.0.72
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.
- package/dist/src/cli.js +7 -0
- package/dist/src/commands/store.js +36 -0
- package/dist/src/components/schedule-create.js +5 -6
- package/dist/src/components/schedule-timezone.js +4 -5
- package/dist/src/components/secret-bulk.js +4 -6
- package/dist/src/components/secret-create.js +5 -6
- package/dist/src/components/store-explorer.js +699 -0
- package/dist/src/components/users-create.js +1 -1
- package/dist/src/components/users-keys-list.js +1 -1
- package/dist/src/hooks/useApi.js +4 -1
- package/dist/types/cli.d.ts.map +1 -1
- package/dist/types/commands/store.d.ts +5 -0
- package/dist/types/commands/store.d.ts.map +1 -0
- package/dist/types/components/schedule-create.d.ts.map +1 -1
- package/dist/types/components/schedule-timezone.d.ts.map +1 -1
- package/dist/types/components/secret-bulk.d.ts.map +1 -1
- package/dist/types/components/secret-create.d.ts.map +1 -1
- package/dist/types/components/store-explorer.d.ts +2 -0
- package/dist/types/components/store-explorer.d.ts.map +1 -0
- package/dist/types/hooks/useApi.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/src/cli.js
CHANGED
|
@@ -162,6 +162,7 @@ import { SecretCommand } from './commands/secret.js';
|
|
|
162
162
|
import { PagesCommand } from './commands/pages.js';
|
|
163
163
|
import { UsersCommand } from './commands/users.js';
|
|
164
164
|
import { AuthCommand } from './commands/auth.js';
|
|
165
|
+
import { StoreCommand } from './commands/store.js';
|
|
165
166
|
import { readFileSync } from 'fs';
|
|
166
167
|
import { fileURLToPath } from 'url';
|
|
167
168
|
import { dirname, join } from 'path';
|
|
@@ -963,6 +964,12 @@ export function buildCli(options) {
|
|
|
963
964
|
}).demandCommand(1, 'You need to specify a users command (list, create, delete, keys)');
|
|
964
965
|
return yargsUsers;
|
|
965
966
|
});
|
|
967
|
+
// --- Store Explorer Command ---
|
|
968
|
+
var storeCommand = new StoreCommand();
|
|
969
|
+
cli = cli.command('store', 'Browse and manage brain store data\n', function() {}, function() {
|
|
970
|
+
var element = storeCommand.explore();
|
|
971
|
+
render(element);
|
|
972
|
+
});
|
|
966
973
|
// --- Auth Commands (Available in both local and global mode) ---
|
|
967
974
|
var authCommand = new AuthCommand(undefined, projectRootPath);
|
|
968
975
|
{
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
function _class_call_check(instance, Constructor) {
|
|
2
|
+
if (!(instance instanceof Constructor)) {
|
|
3
|
+
throw new TypeError("Cannot call a class as a function");
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
function _defineProperties(target, props) {
|
|
7
|
+
for(var i = 0; i < props.length; i++){
|
|
8
|
+
var descriptor = props[i];
|
|
9
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
10
|
+
descriptor.configurable = true;
|
|
11
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
12
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
16
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
17
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
18
|
+
return Constructor;
|
|
19
|
+
}
|
|
20
|
+
import React from 'react';
|
|
21
|
+
import { StoreExplorer } from '../components/store-explorer.js';
|
|
22
|
+
export var StoreCommand = /*#__PURE__*/ function() {
|
|
23
|
+
"use strict";
|
|
24
|
+
function StoreCommand() {
|
|
25
|
+
_class_call_check(this, StoreCommand);
|
|
26
|
+
}
|
|
27
|
+
_create_class(StoreCommand, [
|
|
28
|
+
{
|
|
29
|
+
key: "explore",
|
|
30
|
+
value: function explore() {
|
|
31
|
+
return React.createElement(StoreExplorer);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
]);
|
|
35
|
+
return StoreCommand;
|
|
36
|
+
}();
|
|
@@ -180,7 +180,7 @@ export var ScheduleCreate = function(param) {
|
|
|
180
180
|
useEffect(function() {
|
|
181
181
|
var createSchedule = function() {
|
|
182
182
|
return _async_to_generator(function() {
|
|
183
|
-
var
|
|
183
|
+
var result, err;
|
|
184
184
|
return _ts_generator(this, function(_state) {
|
|
185
185
|
switch(_state.label){
|
|
186
186
|
case 0:
|
|
@@ -190,13 +190,12 @@ export var ScheduleCreate = function(param) {
|
|
|
190
190
|
,
|
|
191
191
|
3
|
|
192
192
|
]);
|
|
193
|
-
body = JSON.stringify({
|
|
194
|
-
identifier: identifier,
|
|
195
|
-
cronExpression: cronExpression
|
|
196
|
-
});
|
|
197
193
|
return [
|
|
198
194
|
4,
|
|
199
|
-
execute(
|
|
195
|
+
execute({
|
|
196
|
+
identifier: identifier,
|
|
197
|
+
cronExpression: cronExpression
|
|
198
|
+
})
|
|
200
199
|
];
|
|
201
200
|
case 1:
|
|
202
201
|
result = _state.sent();
|
|
@@ -216,7 +216,7 @@ var TimezoneSet = function(param) {
|
|
|
216
216
|
useEffect(function() {
|
|
217
217
|
var setTz = function() {
|
|
218
218
|
return _async_to_generator(function() {
|
|
219
|
-
var
|
|
219
|
+
var res, e;
|
|
220
220
|
return _ts_generator(this, function(_state) {
|
|
221
221
|
switch(_state.label){
|
|
222
222
|
case 0:
|
|
@@ -226,12 +226,11 @@ var TimezoneSet = function(param) {
|
|
|
226
226
|
,
|
|
227
227
|
3
|
|
228
228
|
]);
|
|
229
|
-
body = JSON.stringify({
|
|
230
|
-
timezone: timezone
|
|
231
|
-
});
|
|
232
229
|
return [
|
|
233
230
|
4,
|
|
234
|
-
execute(
|
|
231
|
+
execute({
|
|
232
|
+
timezone: timezone
|
|
233
|
+
})
|
|
235
234
|
];
|
|
236
235
|
case 1:
|
|
237
236
|
res = _state.sent();
|
|
@@ -184,7 +184,7 @@ export var SecretBulk = function(param) {
|
|
|
184
184
|
useEffect(function() {
|
|
185
185
|
var bulkUploadSecrets = function() {
|
|
186
186
|
return _async_to_generator(function() {
|
|
187
|
-
var basePath, filePath, content, parsed, secrets,
|
|
187
|
+
var basePath, filePath, content, parsed, secrets, response, err;
|
|
188
188
|
return _ts_generator(this, function(_state) {
|
|
189
189
|
switch(_state.label){
|
|
190
190
|
case 0:
|
|
@@ -219,13 +219,11 @@ export var SecretBulk = function(param) {
|
|
|
219
219
|
2
|
|
220
220
|
];
|
|
221
221
|
}
|
|
222
|
-
// Send to API
|
|
223
|
-
body = JSON.stringify({
|
|
224
|
-
secrets: secrets
|
|
225
|
-
});
|
|
226
222
|
return [
|
|
227
223
|
4,
|
|
228
|
-
execute(
|
|
224
|
+
execute({
|
|
225
|
+
secrets: secrets
|
|
226
|
+
})
|
|
229
227
|
];
|
|
230
228
|
case 1:
|
|
231
229
|
response = _state.sent();
|
|
@@ -181,7 +181,7 @@ export var SecretCreate = function(param) {
|
|
|
181
181
|
useEffect(function() {
|
|
182
182
|
var createSecret = function() {
|
|
183
183
|
return _async_to_generator(function() {
|
|
184
|
-
var
|
|
184
|
+
var result, err;
|
|
185
185
|
return _ts_generator(this, function(_state) {
|
|
186
186
|
switch(_state.label){
|
|
187
187
|
case 0:
|
|
@@ -199,13 +199,12 @@ export var SecretCreate = function(param) {
|
|
|
199
199
|
,
|
|
200
200
|
4
|
|
201
201
|
]);
|
|
202
|
-
body = JSON.stringify({
|
|
203
|
-
name: name,
|
|
204
|
-
value: value
|
|
205
|
-
});
|
|
206
202
|
return [
|
|
207
203
|
4,
|
|
208
|
-
execute(
|
|
204
|
+
execute({
|
|
205
|
+
name: name,
|
|
206
|
+
value: value
|
|
207
|
+
})
|
|
209
208
|
];
|
|
210
209
|
case 2:
|
|
211
210
|
result = _state.sent();
|
|
@@ -0,0 +1,699 @@
|
|
|
1
|
+
function _array_like_to_array(arr, len) {
|
|
2
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
3
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
4
|
+
return arr2;
|
|
5
|
+
}
|
|
6
|
+
function _array_with_holes(arr) {
|
|
7
|
+
if (Array.isArray(arr)) return arr;
|
|
8
|
+
}
|
|
9
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
10
|
+
try {
|
|
11
|
+
var info = gen[key](arg);
|
|
12
|
+
var value = info.value;
|
|
13
|
+
} catch (error) {
|
|
14
|
+
reject(error);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (info.done) {
|
|
18
|
+
resolve(value);
|
|
19
|
+
} else {
|
|
20
|
+
Promise.resolve(value).then(_next, _throw);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function _async_to_generator(fn) {
|
|
24
|
+
return function() {
|
|
25
|
+
var self = this, args = arguments;
|
|
26
|
+
return new Promise(function(resolve, reject) {
|
|
27
|
+
var gen = fn.apply(self, args);
|
|
28
|
+
function _next(value) {
|
|
29
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
30
|
+
}
|
|
31
|
+
function _throw(err) {
|
|
32
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
33
|
+
}
|
|
34
|
+
_next(undefined);
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function _iterable_to_array_limit(arr, i) {
|
|
39
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
40
|
+
if (_i == null) return;
|
|
41
|
+
var _arr = [];
|
|
42
|
+
var _n = true;
|
|
43
|
+
var _d = false;
|
|
44
|
+
var _s, _e;
|
|
45
|
+
try {
|
|
46
|
+
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
47
|
+
_arr.push(_s.value);
|
|
48
|
+
if (i && _arr.length === i) break;
|
|
49
|
+
}
|
|
50
|
+
} catch (err) {
|
|
51
|
+
_d = true;
|
|
52
|
+
_e = err;
|
|
53
|
+
} finally{
|
|
54
|
+
try {
|
|
55
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
56
|
+
} finally{
|
|
57
|
+
if (_d) throw _e;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return _arr;
|
|
61
|
+
}
|
|
62
|
+
function _non_iterable_rest() {
|
|
63
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
64
|
+
}
|
|
65
|
+
function _sliced_to_array(arr, i) {
|
|
66
|
+
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
67
|
+
}
|
|
68
|
+
function _type_of(obj) {
|
|
69
|
+
"@swc/helpers - typeof";
|
|
70
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
71
|
+
}
|
|
72
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
73
|
+
if (!o) return;
|
|
74
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
75
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
76
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
77
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
78
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
79
|
+
}
|
|
80
|
+
function _ts_generator(thisArg, body) {
|
|
81
|
+
var f, y, t, _ = {
|
|
82
|
+
label: 0,
|
|
83
|
+
sent: function() {
|
|
84
|
+
if (t[0] & 1) throw t[1];
|
|
85
|
+
return t[1];
|
|
86
|
+
},
|
|
87
|
+
trys: [],
|
|
88
|
+
ops: []
|
|
89
|
+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
90
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
91
|
+
return this;
|
|
92
|
+
}), g;
|
|
93
|
+
function verb(n) {
|
|
94
|
+
return function(v) {
|
|
95
|
+
return step([
|
|
96
|
+
n,
|
|
97
|
+
v
|
|
98
|
+
]);
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
function step(op) {
|
|
102
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
103
|
+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
104
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
105
|
+
if (y = 0, t) op = [
|
|
106
|
+
op[0] & 2,
|
|
107
|
+
t.value
|
|
108
|
+
];
|
|
109
|
+
switch(op[0]){
|
|
110
|
+
case 0:
|
|
111
|
+
case 1:
|
|
112
|
+
t = op;
|
|
113
|
+
break;
|
|
114
|
+
case 4:
|
|
115
|
+
_.label++;
|
|
116
|
+
return {
|
|
117
|
+
value: op[1],
|
|
118
|
+
done: false
|
|
119
|
+
};
|
|
120
|
+
case 5:
|
|
121
|
+
_.label++;
|
|
122
|
+
y = op[1];
|
|
123
|
+
op = [
|
|
124
|
+
0
|
|
125
|
+
];
|
|
126
|
+
continue;
|
|
127
|
+
case 7:
|
|
128
|
+
op = _.ops.pop();
|
|
129
|
+
_.trys.pop();
|
|
130
|
+
continue;
|
|
131
|
+
default:
|
|
132
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
133
|
+
_ = 0;
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
137
|
+
_.label = op[1];
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
141
|
+
_.label = t[1];
|
|
142
|
+
t = op;
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
if (t && _.label < t[2]) {
|
|
146
|
+
_.label = t[2];
|
|
147
|
+
_.ops.push(op);
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
if (t[2]) _.ops.pop();
|
|
151
|
+
_.trys.pop();
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
op = body.call(thisArg, _);
|
|
155
|
+
} catch (e) {
|
|
156
|
+
op = [
|
|
157
|
+
6,
|
|
158
|
+
e
|
|
159
|
+
];
|
|
160
|
+
y = 0;
|
|
161
|
+
} finally{
|
|
162
|
+
f = t = 0;
|
|
163
|
+
}
|
|
164
|
+
if (op[0] & 5) throw op[1];
|
|
165
|
+
return {
|
|
166
|
+
value: op[0] ? op[1] : void 0,
|
|
167
|
+
done: true
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
import React, { useState, useEffect, useRef, useCallback } from 'react';
|
|
172
|
+
import { Text, Box, useStdout, useInput, useApp } from 'ink';
|
|
173
|
+
import { apiClient } from '../commands/helpers.js';
|
|
174
|
+
import { ErrorComponent } from './error.js';
|
|
175
|
+
import { StateView } from './state-view.js';
|
|
176
|
+
export var StoreExplorer = function() {
|
|
177
|
+
var write = useStdout().write;
|
|
178
|
+
var exit = useApp().exit;
|
|
179
|
+
// Navigation state
|
|
180
|
+
var _useState = _sliced_to_array(useState('brains'), 2), mode = _useState[0], setMode = _useState[1];
|
|
181
|
+
var _useState1 = _sliced_to_array(useState(0), 2), selectedIndex = _useState1[0], setSelectedIndex = _useState1[1];
|
|
182
|
+
// Data state
|
|
183
|
+
var _useState2 = _sliced_to_array(useState([]), 2), brains = _useState2[0], setBrains = _useState2[1];
|
|
184
|
+
var _useState3 = _sliced_to_array(useState(null), 2), selectedBrain = _useState3[0], setSelectedBrain = _useState3[1];
|
|
185
|
+
var _useState4 = _sliced_to_array(useState([]), 2), keys = _useState4[0], setKeys = _useState4[1];
|
|
186
|
+
var _useState5 = _sliced_to_array(useState(null), 2), selectedKey = _useState5[0], setSelectedKey = _useState5[1];
|
|
187
|
+
var _useState6 = _sliced_to_array(useState(null), 2), value = _useState6[0], setValue = _useState6[1];
|
|
188
|
+
// Loading/error state
|
|
189
|
+
var _useState7 = _sliced_to_array(useState(true), 2), loading = _useState7[0], setLoading = _useState7[1];
|
|
190
|
+
var _useState8 = _sliced_to_array(useState(null), 2), error = _useState8[0], setError = _useState8[1];
|
|
191
|
+
// Delete confirmation state
|
|
192
|
+
var _useState9 = _sliced_to_array(useState(false), 2), confirmingDelete = _useState9[0], setConfirmingDelete = _useState9[1];
|
|
193
|
+
var _useState10 = _sliced_to_array(useState(false), 2), confirmingClear = _useState10[0], setConfirmingClear = _useState10[1];
|
|
194
|
+
var _useState11 = _sliced_to_array(useState(null), 2), deleteMessage = _useState11[0], setDeleteMessage = _useState11[1];
|
|
195
|
+
// Scroll state for value view
|
|
196
|
+
var _useState12 = _sliced_to_array(useState(0), 2), scrollOffset = _useState12[0], setScrollOffset = _useState12[1];
|
|
197
|
+
// Refetch trigger
|
|
198
|
+
var _useState13 = _sliced_to_array(useState(0), 2), fetchVersion = _useState13[0], setFetchVersion = _useState13[1];
|
|
199
|
+
// Use a ref to hold the latest input handler so useInput always
|
|
200
|
+
// calls through to current state, avoiding stale closure issues
|
|
201
|
+
// caused by useEffect re-registration timing in ink's useInput.
|
|
202
|
+
var inputHandlerRef = useRef(function() {});
|
|
203
|
+
// Enter alternate screen buffer on mount, exit on unmount
|
|
204
|
+
useEffect(function() {
|
|
205
|
+
if (process.env.NODE_ENV === 'test') {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
write('\x1B[?1049h\x1B[2J\x1B[H');
|
|
209
|
+
return function() {
|
|
210
|
+
write('\x1B[?1049l');
|
|
211
|
+
};
|
|
212
|
+
}, [
|
|
213
|
+
write
|
|
214
|
+
]);
|
|
215
|
+
// Fetch brains list
|
|
216
|
+
useEffect(function() {
|
|
217
|
+
if (mode !== 'brains') return;
|
|
218
|
+
var fetchBrains = function() {
|
|
219
|
+
return _async_to_generator(function() {
|
|
220
|
+
var response, data, err;
|
|
221
|
+
return _ts_generator(this, function(_state) {
|
|
222
|
+
switch(_state.label){
|
|
223
|
+
case 0:
|
|
224
|
+
setLoading(true);
|
|
225
|
+
setError(null);
|
|
226
|
+
_state.label = 1;
|
|
227
|
+
case 1:
|
|
228
|
+
_state.trys.push([
|
|
229
|
+
1,
|
|
230
|
+
4,
|
|
231
|
+
5,
|
|
232
|
+
6
|
|
233
|
+
]);
|
|
234
|
+
return [
|
|
235
|
+
4,
|
|
236
|
+
apiClient.fetch('/store')
|
|
237
|
+
];
|
|
238
|
+
case 2:
|
|
239
|
+
response = _state.sent();
|
|
240
|
+
if (!response.ok) {
|
|
241
|
+
setError({
|
|
242
|
+
title: 'Server Error',
|
|
243
|
+
message: "Failed to load store data: ".concat(response.status)
|
|
244
|
+
});
|
|
245
|
+
return [
|
|
246
|
+
2
|
|
247
|
+
];
|
|
248
|
+
}
|
|
249
|
+
return [
|
|
250
|
+
4,
|
|
251
|
+
response.json()
|
|
252
|
+
];
|
|
253
|
+
case 3:
|
|
254
|
+
data = _state.sent();
|
|
255
|
+
setBrains(data.brains);
|
|
256
|
+
return [
|
|
257
|
+
3,
|
|
258
|
+
6
|
|
259
|
+
];
|
|
260
|
+
case 4:
|
|
261
|
+
err = _state.sent();
|
|
262
|
+
setError({
|
|
263
|
+
title: 'Connection Error',
|
|
264
|
+
message: 'Error connecting to the server.',
|
|
265
|
+
details: err.message
|
|
266
|
+
});
|
|
267
|
+
return [
|
|
268
|
+
3,
|
|
269
|
+
6
|
|
270
|
+
];
|
|
271
|
+
case 5:
|
|
272
|
+
setLoading(false);
|
|
273
|
+
return [
|
|
274
|
+
7
|
|
275
|
+
];
|
|
276
|
+
case 6:
|
|
277
|
+
return [
|
|
278
|
+
2
|
|
279
|
+
];
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
})();
|
|
283
|
+
};
|
|
284
|
+
fetchBrains();
|
|
285
|
+
}, [
|
|
286
|
+
mode,
|
|
287
|
+
fetchVersion
|
|
288
|
+
]);
|
|
289
|
+
// Fetch keys when a brain is selected
|
|
290
|
+
useEffect(function() {
|
|
291
|
+
if (mode !== 'keys' || !selectedBrain) return;
|
|
292
|
+
var fetchKeys = function() {
|
|
293
|
+
return _async_to_generator(function() {
|
|
294
|
+
var response, data, err;
|
|
295
|
+
return _ts_generator(this, function(_state) {
|
|
296
|
+
switch(_state.label){
|
|
297
|
+
case 0:
|
|
298
|
+
// Don't show loading spinner during background refetch after delete/clear
|
|
299
|
+
if (!deleteMessage) {
|
|
300
|
+
setLoading(true);
|
|
301
|
+
}
|
|
302
|
+
setError(null);
|
|
303
|
+
_state.label = 1;
|
|
304
|
+
case 1:
|
|
305
|
+
_state.trys.push([
|
|
306
|
+
1,
|
|
307
|
+
4,
|
|
308
|
+
5,
|
|
309
|
+
6
|
|
310
|
+
]);
|
|
311
|
+
return [
|
|
312
|
+
4,
|
|
313
|
+
apiClient.fetch("/store/".concat(encodeURIComponent(selectedBrain)))
|
|
314
|
+
];
|
|
315
|
+
case 2:
|
|
316
|
+
response = _state.sent();
|
|
317
|
+
if (!response.ok) {
|
|
318
|
+
setError({
|
|
319
|
+
title: 'Server Error',
|
|
320
|
+
message: "Failed to load keys: ".concat(response.status)
|
|
321
|
+
});
|
|
322
|
+
return [
|
|
323
|
+
2
|
|
324
|
+
];
|
|
325
|
+
}
|
|
326
|
+
return [
|
|
327
|
+
4,
|
|
328
|
+
response.json()
|
|
329
|
+
];
|
|
330
|
+
case 3:
|
|
331
|
+
data = _state.sent();
|
|
332
|
+
setKeys(data.keys);
|
|
333
|
+
return [
|
|
334
|
+
3,
|
|
335
|
+
6
|
|
336
|
+
];
|
|
337
|
+
case 4:
|
|
338
|
+
err = _state.sent();
|
|
339
|
+
setError({
|
|
340
|
+
title: 'Connection Error',
|
|
341
|
+
message: 'Error connecting to the server.',
|
|
342
|
+
details: err.message
|
|
343
|
+
});
|
|
344
|
+
return [
|
|
345
|
+
3,
|
|
346
|
+
6
|
|
347
|
+
];
|
|
348
|
+
case 5:
|
|
349
|
+
setLoading(false);
|
|
350
|
+
return [
|
|
351
|
+
7
|
|
352
|
+
];
|
|
353
|
+
case 6:
|
|
354
|
+
return [
|
|
355
|
+
2
|
|
356
|
+
];
|
|
357
|
+
}
|
|
358
|
+
});
|
|
359
|
+
})();
|
|
360
|
+
};
|
|
361
|
+
fetchKeys();
|
|
362
|
+
}, [
|
|
363
|
+
mode,
|
|
364
|
+
selectedBrain,
|
|
365
|
+
fetchVersion
|
|
366
|
+
]);
|
|
367
|
+
// Fetch value when a key is selected
|
|
368
|
+
useEffect(function() {
|
|
369
|
+
if (mode !== 'value' || !selectedBrain || !selectedKey) return;
|
|
370
|
+
var fetchValue = function() {
|
|
371
|
+
return _async_to_generator(function() {
|
|
372
|
+
var scopePath, response, data, err;
|
|
373
|
+
return _ts_generator(this, function(_state) {
|
|
374
|
+
switch(_state.label){
|
|
375
|
+
case 0:
|
|
376
|
+
setLoading(true);
|
|
377
|
+
setError(null);
|
|
378
|
+
_state.label = 1;
|
|
379
|
+
case 1:
|
|
380
|
+
_state.trys.push([
|
|
381
|
+
1,
|
|
382
|
+
4,
|
|
383
|
+
5,
|
|
384
|
+
6
|
|
385
|
+
]);
|
|
386
|
+
scopePath = selectedKey.scope === 'shared' ? 'shared' : 'user';
|
|
387
|
+
return [
|
|
388
|
+
4,
|
|
389
|
+
apiClient.fetch("/store/".concat(encodeURIComponent(selectedBrain), "/").concat(scopePath, "/").concat(encodeURIComponent(selectedKey.key)))
|
|
390
|
+
];
|
|
391
|
+
case 2:
|
|
392
|
+
response = _state.sent();
|
|
393
|
+
if (!response.ok) {
|
|
394
|
+
setError({
|
|
395
|
+
title: 'Server Error',
|
|
396
|
+
message: "Failed to load value: ".concat(response.status)
|
|
397
|
+
});
|
|
398
|
+
return [
|
|
399
|
+
2
|
|
400
|
+
];
|
|
401
|
+
}
|
|
402
|
+
return [
|
|
403
|
+
4,
|
|
404
|
+
response.json()
|
|
405
|
+
];
|
|
406
|
+
case 3:
|
|
407
|
+
data = _state.sent();
|
|
408
|
+
setValue(data);
|
|
409
|
+
setScrollOffset(0);
|
|
410
|
+
return [
|
|
411
|
+
3,
|
|
412
|
+
6
|
|
413
|
+
];
|
|
414
|
+
case 4:
|
|
415
|
+
err = _state.sent();
|
|
416
|
+
setError({
|
|
417
|
+
title: 'Connection Error',
|
|
418
|
+
message: 'Error connecting to the server.',
|
|
419
|
+
details: err.message
|
|
420
|
+
});
|
|
421
|
+
return [
|
|
422
|
+
3,
|
|
423
|
+
6
|
|
424
|
+
];
|
|
425
|
+
case 5:
|
|
426
|
+
setLoading(false);
|
|
427
|
+
return [
|
|
428
|
+
7
|
|
429
|
+
];
|
|
430
|
+
case 6:
|
|
431
|
+
return [
|
|
432
|
+
2
|
|
433
|
+
];
|
|
434
|
+
}
|
|
435
|
+
});
|
|
436
|
+
})();
|
|
437
|
+
};
|
|
438
|
+
fetchValue();
|
|
439
|
+
}, [
|
|
440
|
+
mode,
|
|
441
|
+
selectedBrain,
|
|
442
|
+
selectedKey,
|
|
443
|
+
fetchVersion
|
|
444
|
+
]);
|
|
445
|
+
// Update the ref with the latest handler on every render
|
|
446
|
+
inputHandlerRef.current = function(input, key) {
|
|
447
|
+
// Clear delete message on any input
|
|
448
|
+
if (deleteMessage) {
|
|
449
|
+
setDeleteMessage(null);
|
|
450
|
+
}
|
|
451
|
+
if (mode === 'brains') {
|
|
452
|
+
if ((key.upArrow || input === 'k') && brains.length > 0) {
|
|
453
|
+
setSelectedIndex(function(prev) {
|
|
454
|
+
return (prev - 1 + brains.length) % brains.length;
|
|
455
|
+
});
|
|
456
|
+
} else if ((key.downArrow || input === 'j') && brains.length > 0) {
|
|
457
|
+
setSelectedIndex(function(prev) {
|
|
458
|
+
return (prev + 1) % brains.length;
|
|
459
|
+
});
|
|
460
|
+
} else if (key.return && brains.length > 0) {
|
|
461
|
+
setSelectedBrain(brains[selectedIndex]);
|
|
462
|
+
setSelectedIndex(0);
|
|
463
|
+
setMode('keys');
|
|
464
|
+
} else if (input === 'q' || key.escape) {
|
|
465
|
+
exit();
|
|
466
|
+
}
|
|
467
|
+
} else if (mode === 'keys') {
|
|
468
|
+
// Handle delete confirmation
|
|
469
|
+
if (confirmingDelete) {
|
|
470
|
+
if (input === 'y') {
|
|
471
|
+
var keyToDelete = keys[selectedIndex];
|
|
472
|
+
if (keyToDelete && selectedBrain) {
|
|
473
|
+
setConfirmingDelete(false);
|
|
474
|
+
var scopePath = keyToDelete.scope === 'shared' ? 'shared' : 'user';
|
|
475
|
+
apiClient.fetch("/store/".concat(encodeURIComponent(selectedBrain), "/").concat(scopePath, "/").concat(encodeURIComponent(keyToDelete.key)), {
|
|
476
|
+
method: 'DELETE'
|
|
477
|
+
}).then(function() {
|
|
478
|
+
setDeleteMessage("Deleted: ".concat(keyToDelete.key));
|
|
479
|
+
setFetchVersion(function(v) {
|
|
480
|
+
return v + 1;
|
|
481
|
+
});
|
|
482
|
+
if (selectedIndex >= keys.length - 1) {
|
|
483
|
+
setSelectedIndex(Math.max(0, keys.length - 2));
|
|
484
|
+
}
|
|
485
|
+
});
|
|
486
|
+
}
|
|
487
|
+
} else if (input === 'n' || key.escape) {
|
|
488
|
+
setConfirmingDelete(false);
|
|
489
|
+
}
|
|
490
|
+
return;
|
|
491
|
+
}
|
|
492
|
+
// Handle clear confirmation
|
|
493
|
+
if (confirmingClear) {
|
|
494
|
+
if (input === 'y') {
|
|
495
|
+
if (selectedBrain) {
|
|
496
|
+
setConfirmingClear(false);
|
|
497
|
+
apiClient.fetch("/store/".concat(encodeURIComponent(selectedBrain)), {
|
|
498
|
+
method: 'DELETE'
|
|
499
|
+
}).then(function(res) {
|
|
500
|
+
return _async_to_generator(function() {
|
|
501
|
+
var data;
|
|
502
|
+
return _ts_generator(this, function(_state) {
|
|
503
|
+
switch(_state.label){
|
|
504
|
+
case 0:
|
|
505
|
+
return [
|
|
506
|
+
4,
|
|
507
|
+
res.json()
|
|
508
|
+
];
|
|
509
|
+
case 1:
|
|
510
|
+
data = _state.sent();
|
|
511
|
+
setDeleteMessage("Cleared ".concat(data.deleted, " keys"));
|
|
512
|
+
setFetchVersion(function(v) {
|
|
513
|
+
return v + 1;
|
|
514
|
+
});
|
|
515
|
+
setSelectedIndex(0);
|
|
516
|
+
return [
|
|
517
|
+
2
|
|
518
|
+
];
|
|
519
|
+
}
|
|
520
|
+
});
|
|
521
|
+
})();
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
} else if (input === 'n' || key.escape) {
|
|
525
|
+
setConfirmingClear(false);
|
|
526
|
+
}
|
|
527
|
+
return;
|
|
528
|
+
}
|
|
529
|
+
// Normal key list navigation
|
|
530
|
+
if ((key.upArrow || input === 'k') && keys.length > 0) {
|
|
531
|
+
setSelectedIndex(function(prev) {
|
|
532
|
+
return (prev - 1 + keys.length) % keys.length;
|
|
533
|
+
});
|
|
534
|
+
} else if ((key.downArrow || input === 'j') && keys.length > 0) {
|
|
535
|
+
setSelectedIndex(function(prev) {
|
|
536
|
+
return (prev + 1) % keys.length;
|
|
537
|
+
});
|
|
538
|
+
} else if (key.return && keys.length > 0) {
|
|
539
|
+
setSelectedKey(keys[selectedIndex]);
|
|
540
|
+
setMode('value');
|
|
541
|
+
} else if (input === 'd' && keys.length > 0) {
|
|
542
|
+
setConfirmingDelete(true);
|
|
543
|
+
} else if (input === 'c' && keys.length > 0) {
|
|
544
|
+
setConfirmingClear(true);
|
|
545
|
+
} else if (input === 'b' || key.escape) {
|
|
546
|
+
setSelectedBrain(null);
|
|
547
|
+
setSelectedIndex(0);
|
|
548
|
+
setMode('brains');
|
|
549
|
+
}
|
|
550
|
+
} else if (mode === 'value') {
|
|
551
|
+
// Value view - StateView handles j/k/space scrolling via isActive
|
|
552
|
+
if (input === 'b' || key.escape) {
|
|
553
|
+
setSelectedKey(null);
|
|
554
|
+
setValue(null);
|
|
555
|
+
setMode('keys');
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
};
|
|
559
|
+
// Stable callback that delegates to the ref - never changes identity,
|
|
560
|
+
// so ink's useInput useEffect won't need to re-register the listener.
|
|
561
|
+
var stableInputHandler = useCallback(function(input, key) {
|
|
562
|
+
inputHandlerRef.current(input, key);
|
|
563
|
+
}, []);
|
|
564
|
+
// Keyboard handling - uses stable callback to avoid stale closure issues
|
|
565
|
+
useInput(stableInputHandler, {
|
|
566
|
+
isActive: mode !== 'value'
|
|
567
|
+
});
|
|
568
|
+
// Adjust selectedIndex if list shrinks
|
|
569
|
+
useEffect(function() {
|
|
570
|
+
var listLength = mode === 'brains' ? brains.length : mode === 'keys' ? keys.length : 0;
|
|
571
|
+
if (listLength > 0 && selectedIndex >= listLength) {
|
|
572
|
+
setSelectedIndex(listLength - 1);
|
|
573
|
+
}
|
|
574
|
+
}, [
|
|
575
|
+
brains.length,
|
|
576
|
+
keys.length,
|
|
577
|
+
selectedIndex,
|
|
578
|
+
mode
|
|
579
|
+
]);
|
|
580
|
+
// Error state
|
|
581
|
+
if (error) {
|
|
582
|
+
return /*#__PURE__*/ React.createElement(ErrorComponent, {
|
|
583
|
+
error: error
|
|
584
|
+
});
|
|
585
|
+
}
|
|
586
|
+
// Loading state - skip when there's a delete message so it stays visible
|
|
587
|
+
if (loading && !deleteMessage) {
|
|
588
|
+
return /*#__PURE__*/ React.createElement(Box, null, /*#__PURE__*/ React.createElement(Text, null, "Loading..."));
|
|
589
|
+
}
|
|
590
|
+
// Value view
|
|
591
|
+
if (mode === 'value' && value) {
|
|
592
|
+
var stateObj = _type_of(value.value) === 'object' && value.value !== null ? value.value : {
|
|
593
|
+
value: value.value
|
|
594
|
+
};
|
|
595
|
+
var title = "".concat(selectedBrain, " / ").concat(value.key, " (").concat(value.scope, ")");
|
|
596
|
+
return /*#__PURE__*/ React.createElement(Box, {
|
|
597
|
+
flexDirection: "column"
|
|
598
|
+
}, /*#__PURE__*/ React.createElement(StateView, {
|
|
599
|
+
state: stateObj,
|
|
600
|
+
title: title,
|
|
601
|
+
scrollOffset: scrollOffset,
|
|
602
|
+
onScrollChange: setScrollOffset,
|
|
603
|
+
isActive: true
|
|
604
|
+
}), /*#__PURE__*/ React.createElement(Box, {
|
|
605
|
+
marginTop: 1
|
|
606
|
+
}, /*#__PURE__*/ React.createElement(Text, {
|
|
607
|
+
dimColor: true
|
|
608
|
+
}, "j/k scroll | space page | b back")));
|
|
609
|
+
}
|
|
610
|
+
// Keys view
|
|
611
|
+
if (mode === 'keys' && selectedBrain) {
|
|
612
|
+
if (keys.length === 0) {
|
|
613
|
+
return /*#__PURE__*/ React.createElement(Box, {
|
|
614
|
+
flexDirection: "column"
|
|
615
|
+
}, /*#__PURE__*/ React.createElement(Box, {
|
|
616
|
+
marginBottom: 1
|
|
617
|
+
}, /*#__PURE__*/ React.createElement(Text, {
|
|
618
|
+
bold: true,
|
|
619
|
+
color: "cyan"
|
|
620
|
+
}, "Store: ", selectedBrain)), deleteMessage && /*#__PURE__*/ React.createElement(Box, null, /*#__PURE__*/ React.createElement(Text, {
|
|
621
|
+
color: "green"
|
|
622
|
+
}, deleteMessage)), /*#__PURE__*/ React.createElement(Text, {
|
|
623
|
+
dimColor: true
|
|
624
|
+
}, "No keys found"), /*#__PURE__*/ React.createElement(Box, {
|
|
625
|
+
marginTop: 1
|
|
626
|
+
}, /*#__PURE__*/ React.createElement(Text, {
|
|
627
|
+
dimColor: true
|
|
628
|
+
}, "b back | q quit")));
|
|
629
|
+
}
|
|
630
|
+
var footer;
|
|
631
|
+
if (confirmingDelete) {
|
|
632
|
+
var keyEntry = keys[selectedIndex];
|
|
633
|
+
footer = 'Delete "'.concat(keyEntry === null || keyEntry === void 0 ? void 0 : keyEntry.key, '"? (y/n)');
|
|
634
|
+
} else if (confirmingClear) {
|
|
635
|
+
footer = 'Clear all keys for "'.concat(selectedBrain, '"? (y/n)');
|
|
636
|
+
} else {
|
|
637
|
+
footer = 'j/k select | Enter view | d delete | c clear all | b back';
|
|
638
|
+
}
|
|
639
|
+
return /*#__PURE__*/ React.createElement(Box, {
|
|
640
|
+
flexDirection: "column"
|
|
641
|
+
}, /*#__PURE__*/ React.createElement(Box, {
|
|
642
|
+
marginBottom: 1
|
|
643
|
+
}, /*#__PURE__*/ React.createElement(Text, {
|
|
644
|
+
bold: true,
|
|
645
|
+
color: "cyan"
|
|
646
|
+
}, "Store: ", selectedBrain, " (", keys.length, " keys)")), keys.map(function(entry, i) {
|
|
647
|
+
return /*#__PURE__*/ React.createElement(Box, {
|
|
648
|
+
key: "".concat(entry.scope, "-").concat(entry.key, "-").concat(entry.userId || '')
|
|
649
|
+
}, /*#__PURE__*/ React.createElement(Text, {
|
|
650
|
+
color: i === selectedIndex ? 'cyan' : undefined
|
|
651
|
+
}, i === selectedIndex ? '> ' : ' ', entry.key, /*#__PURE__*/ React.createElement(Text, {
|
|
652
|
+
dimColor: true
|
|
653
|
+
}, ' ', "[", entry.scope, entry.userId ? ":".concat(entry.userId) : '', "] ", entry.size, "B")));
|
|
654
|
+
}), deleteMessage && /*#__PURE__*/ React.createElement(Box, {
|
|
655
|
+
marginTop: 1
|
|
656
|
+
}, /*#__PURE__*/ React.createElement(Text, {
|
|
657
|
+
color: "green"
|
|
658
|
+
}, deleteMessage)), /*#__PURE__*/ React.createElement(Box, {
|
|
659
|
+
marginTop: 1
|
|
660
|
+
}, /*#__PURE__*/ React.createElement(Text, {
|
|
661
|
+
dimColor: true
|
|
662
|
+
}, footer)));
|
|
663
|
+
}
|
|
664
|
+
// Brains view (default)
|
|
665
|
+
if (brains.length === 0) {
|
|
666
|
+
return /*#__PURE__*/ React.createElement(Box, {
|
|
667
|
+
flexDirection: "column"
|
|
668
|
+
}, /*#__PURE__*/ React.createElement(Box, {
|
|
669
|
+
marginBottom: 1
|
|
670
|
+
}, /*#__PURE__*/ React.createElement(Text, {
|
|
671
|
+
bold: true,
|
|
672
|
+
color: "cyan"
|
|
673
|
+
}, "Store Explorer")), /*#__PURE__*/ React.createElement(Text, {
|
|
674
|
+
dimColor: true
|
|
675
|
+
}, "No brains with store data found"), /*#__PURE__*/ React.createElement(Box, {
|
|
676
|
+
marginTop: 1
|
|
677
|
+
}, /*#__PURE__*/ React.createElement(Text, {
|
|
678
|
+
dimColor: true
|
|
679
|
+
}, "Use .withStore() in your brain definition to persist data")));
|
|
680
|
+
}
|
|
681
|
+
return /*#__PURE__*/ React.createElement(Box, {
|
|
682
|
+
flexDirection: "column"
|
|
683
|
+
}, /*#__PURE__*/ React.createElement(Box, {
|
|
684
|
+
marginBottom: 1
|
|
685
|
+
}, /*#__PURE__*/ React.createElement(Text, {
|
|
686
|
+
bold: true,
|
|
687
|
+
color: "cyan"
|
|
688
|
+
}, "Store Explorer (", brains.length, " brains)")), brains.map(function(brain, i) {
|
|
689
|
+
return /*#__PURE__*/ React.createElement(Box, {
|
|
690
|
+
key: brain
|
|
691
|
+
}, /*#__PURE__*/ React.createElement(Text, {
|
|
692
|
+
color: i === selectedIndex ? 'cyan' : undefined
|
|
693
|
+
}, i === selectedIndex ? '> ' : ' ', brain));
|
|
694
|
+
}), /*#__PURE__*/ React.createElement(Box, {
|
|
695
|
+
marginTop: 1
|
|
696
|
+
}, /*#__PURE__*/ React.createElement(Text, {
|
|
697
|
+
dimColor: true
|
|
698
|
+
}, "j/k select | Enter explore | q quit")));
|
|
699
|
+
};
|
|
@@ -287,7 +287,7 @@ export var UsersCreate = function(param) {
|
|
|
287
287
|
marginTop: 1
|
|
288
288
|
}, /*#__PURE__*/ React.createElement(Text, {
|
|
289
289
|
dimColor: true
|
|
290
|
-
}, "Add a key with: px users ", data.id, "
|
|
290
|
+
}, "Add a key with: px users keys add ", data.id, " ~/.ssh/id_rsa.pub")));
|
|
291
291
|
}
|
|
292
292
|
return null;
|
|
293
293
|
};
|
|
@@ -67,7 +67,7 @@ export var UsersKeysList = function(param) {
|
|
|
67
67
|
marginTop: 1
|
|
68
68
|
}, /*#__PURE__*/ React.createElement(Text, {
|
|
69
69
|
dimColor: true
|
|
70
|
-
}, 'Tip: Add a key with "px users ', userId, '
|
|
70
|
+
}, 'Tip: Add a key with "px users keys add ', userId, ' ~/.ssh/id_rsa.pub"')));
|
|
71
71
|
}
|
|
72
72
|
var sortedKeys = _to_consumable_array(data.keys).sort(function(a, b) {
|
|
73
73
|
return b.addedAt - a.addedAt;
|
package/dist/src/hooks/useApi.js
CHANGED
|
@@ -514,7 +514,10 @@ export function useApiPost(endpoint, defaultOptions) {
|
|
|
514
514
|
apiClient.fetch(endpoint, _object_spread_props(_object_spread({
|
|
515
515
|
method: 'POST'
|
|
516
516
|
}, defaultOptions, options), {
|
|
517
|
-
|
|
517
|
+
headers: _object_spread({
|
|
518
|
+
'Content-Type': 'application/json'
|
|
519
|
+
}, defaultOptions === null || defaultOptions === void 0 ? void 0 : defaultOptions.headers, options === null || options === void 0 ? void 0 : options.headers),
|
|
520
|
+
body: body != null ? JSON.stringify(body) : undefined
|
|
518
521
|
}))
|
|
519
522
|
];
|
|
520
523
|
case 1:
|
package/dist/types/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAK5D,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,KAAK,GAAG,CAAC;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAoBD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,UAAU,4BA67C3C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/commands/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,qBAAa,YAAY;IACvB,OAAO,IAAI,KAAK,CAAC,YAAY;CAG9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule-create.d.ts","sourceRoot":"","sources":["../../../src/components/schedule-create.tsx"],"names":[],"mappings":"AAKA,UAAU,mBAAmB;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAYD,eAAO,MAAM,cAAc,GAAI,gCAAgC,mBAAmB,
|
|
1
|
+
{"version":3,"file":"schedule-create.d.ts","sourceRoot":"","sources":["../../../src/components/schedule-create.tsx"],"names":[],"mappings":"AAKA,UAAU,mBAAmB;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAYD,eAAO,MAAM,cAAc,GAAI,gCAAgC,mBAAmB,mDA6EjF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule-timezone.d.ts","sourceRoot":"","sources":["../../../src/components/schedule-timezone.tsx"],"names":[],"mappings":"AAKA,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"schedule-timezone.d.ts","sourceRoot":"","sources":["../../../src/components/schedule-timezone.tsx"],"names":[],"mappings":"AAKA,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAuGD,eAAO,MAAM,gBAAgB,GAAI,cAAc,qBAAqB,4CAqBnE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secret-bulk.d.ts","sourceRoot":"","sources":["../../../src/components/secret-bulk.tsx"],"names":[],"mappings":"AAQA,UAAU,eAAe;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAOD,eAAO,MAAM,UAAU,GAAI,sBAA+B,eAAe,
|
|
1
|
+
{"version":3,"file":"secret-bulk.d.ts","sourceRoot":"","sources":["../../../src/components/secret-bulk.tsx"],"names":[],"mappings":"AAQA,UAAU,eAAe;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAOD,eAAO,MAAM,UAAU,GAAI,sBAA+B,eAAe,mDAuGxE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secret-create.d.ts","sourceRoot":"","sources":["../../../src/components/secret-create.tsx"],"names":[],"mappings":"AAKA,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD,eAAO,MAAM,YAAY,GAAI,iBAAiB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"secret-create.d.ts","sourceRoot":"","sources":["../../../src/components/secret-create.tsx"],"names":[],"mappings":"AAKA,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD,eAAO,MAAM,YAAY,GAAI,iBAAiB,iBAAiB,mDA0E9D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-explorer.d.ts","sourceRoot":"","sources":["../../../src/components/store-explorer.tsx"],"names":[],"mappings":"AA0CA,eAAO,MAAM,aAAa,+CA8ZzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useApi.d.ts","sourceRoot":"","sources":["../../../src/hooks/useApi.ts"],"names":[],"mappings":"AAiFA,wBAAgB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;;;;eAIjD,MAAM;iBACJ,MAAM;kBACL,MAAM;;EAkDnB;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,GAAG;;;;eAIzD,MAAM;iBACJ,MAAM;kBACL,MAAM;;qBAIF,GAAG,YAAY,GAAG;
|
|
1
|
+
{"version":3,"file":"useApi.d.ts","sourceRoot":"","sources":["../../../src/hooks/useApi.ts"],"names":[],"mappings":"AAiFA,wBAAgB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;;;;eAIjD,MAAM;iBACJ,MAAM;kBACL,MAAM;;EAkDnB;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,GAAG;;;;eAIzD,MAAM;iBACJ,MAAM;kBACL,MAAM;;qBAIF,GAAG,YAAY,GAAG;EAkEnC;AAED,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM;;;eAGtC,MAAM;iBACJ,MAAM;kBACL,MAAM;;wBAIC,MAAM,YAAY,GAAG;EAyDzC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@positronic/cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.72",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
"clean": "rm -rf tsconfig.tsbuildinfo dist node_modules"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@positronic/core": "^0.0.
|
|
27
|
-
"@positronic/spec": "^0.0.
|
|
28
|
-
"@positronic/template-new-project": "^0.0.
|
|
26
|
+
"@positronic/core": "^0.0.72",
|
|
27
|
+
"@positronic/spec": "^0.0.72",
|
|
28
|
+
"@positronic/template-new-project": "^0.0.72",
|
|
29
29
|
"caz": "^2.0.0",
|
|
30
30
|
"chokidar": "^3.6.0",
|
|
31
31
|
"dotenv": "^16.4.7",
|