@learncard/create-http-bridge 1.1.82 → 1.1.83
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/CHANGELOG.md +8 -0
- package/dist/index.js +133 -169
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @learncard/create-http-bridge
|
|
2
2
|
|
|
3
|
+
## 1.1.83
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [[`e70c1671`](https://github.com/learningeconomy/LearnCard/commit/e70c1671213712527d0df447ff25ba7f101f94ae), [`e70c1671`](https://github.com/learningeconomy/LearnCard/commit/e70c1671213712527d0df447ff25ba7f101f94ae), [`587736f`](https://github.com/learningeconomy/LearnCard/commit/587736fd8e562d17b9dfbfcd058572c133367c02), [`e70c1671`](https://github.com/learningeconomy/LearnCard/commit/e70c1671213712527d0df447ff25ba7f101f94ae)]:
|
|
8
|
+
- @learncard/types@5.5.1
|
|
9
|
+
- @learncard/init@1.2.20
|
|
10
|
+
|
|
3
11
|
## 1.1.82
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
package/dist/index.js
CHANGED
|
@@ -66,21 +66,15 @@ var __objRest$2 = (source, exclude) => {
|
|
|
66
66
|
const FullScreenBox = React__default["default"].forwardRef(function FullScreenBox2(_a, ref) {
|
|
67
67
|
var _b = _a, { children } = _b, props = __objRest$2(_b, ["children"]);
|
|
68
68
|
const [width, height] = useStdOutDimensions__default["default"]();
|
|
69
|
-
return
|
|
70
|
-
|
|
71
|
-
height: Math.min(height - 1, 50)
|
|
72
|
-
|
|
73
|
-
ref
|
|
74
|
-
}), children);
|
|
69
|
+
return (
|
|
70
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
71
|
+
/* @__PURE__ */ React__default["default"].createElement(ink.Box, __spreadProps$2(__spreadValues$3({ width: Math.min(width, 150), height: Math.min(height - 1, 50) }, props), { ref }), children)
|
|
72
|
+
);
|
|
75
73
|
});
|
|
76
74
|
|
|
77
75
|
const banner = figlet__default["default"].textSync("Learn Card", "Big Money-ne");
|
|
78
76
|
const Banner = () => {
|
|
79
|
-
return /* @__PURE__ */ React__default["default"].createElement(ink.Box, {
|
|
80
|
-
marginBottom: 4
|
|
81
|
-
}, /* @__PURE__ */ React__default["default"].createElement(Gradient__default["default"], {
|
|
82
|
-
colors: ["cyan", "green"]
|
|
83
|
-
}, /* @__PURE__ */ React__default["default"].createElement(ink.Text, null, banner)));
|
|
77
|
+
return /* @__PURE__ */ React__default["default"].createElement(ink.Box, { marginBottom: 4 }, /* @__PURE__ */ React__default["default"].createElement(Gradient__default["default"], { colors: ["cyan", "green"] }, /* @__PURE__ */ React__default["default"].createElement(ink.Text, null, banner)));
|
|
84
78
|
};
|
|
85
79
|
|
|
86
80
|
var __defProp$2 = Object.defineProperty;
|
|
@@ -204,18 +198,10 @@ var __objRest$1 = (source, exclude) => {
|
|
|
204
198
|
const Input = React__default["default"].forwardRef(function Input2(_a, ref) {
|
|
205
199
|
var _b = _a, { disabled = false, autoFocus = false, focusId, prompt, value, onChange, onSubmit } = _b, props = __objRest$1(_b, ["disabled", "autoFocus", "focusId", "prompt", "value", "onChange", "onSubmit"]);
|
|
206
200
|
const { isFocused } = ink.useFocus({ autoFocus, id: focusId, isActive: !disabled });
|
|
207
|
-
return
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
}, /* @__PURE__ */ React__default["default"].createElement(ink.Text, {
|
|
212
|
-
color: "blueBright"
|
|
213
|
-
}, prompt)), /* @__PURE__ */ React__default["default"].createElement(TextInput__default["default"], {
|
|
214
|
-
value,
|
|
215
|
-
onChange,
|
|
216
|
-
focus: isFocused,
|
|
217
|
-
onSubmit
|
|
218
|
-
}));
|
|
201
|
+
return (
|
|
202
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
203
|
+
/* @__PURE__ */ React__default["default"].createElement(ink.Box, __spreadValues$1({ ref }, props), /* @__PURE__ */ React__default["default"].createElement(ink.Box, { marginRight: 1 }, /* @__PURE__ */ React__default["default"].createElement(ink.Text, { color: "blueBright" }, prompt)), /* @__PURE__ */ React__default["default"].createElement(TextInput__default["default"], { value, onChange, focus: isFocused, onSubmit }))
|
|
204
|
+
);
|
|
219
205
|
});
|
|
220
206
|
|
|
221
207
|
var __defProp = Object.defineProperty;
|
|
@@ -263,24 +249,29 @@ const RawButton = React__default["default"].forwardRef(function RawButton2(_a, r
|
|
|
263
249
|
onClick();
|
|
264
250
|
}
|
|
265
251
|
});
|
|
266
|
-
return
|
|
267
|
-
|
|
268
|
-
|
|
252
|
+
return (
|
|
253
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
254
|
+
/* @__PURE__ */ React__default["default"].createElement(ink.Box, __spreadValues(__spreadProps(__spreadValues({}, props), { ref }), isFocused ? focusedProps : {}), children)
|
|
255
|
+
);
|
|
269
256
|
});
|
|
270
257
|
const Button = React__default["default"].forwardRef(function Button2(_c, ref) {
|
|
271
258
|
var _d = _c, { children } = _d, props = __objRest(_d, ["children"]);
|
|
272
|
-
return /* @__PURE__ */ React__default["default"].createElement(
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
259
|
+
return /* @__PURE__ */ React__default["default"].createElement(
|
|
260
|
+
RawButton,
|
|
261
|
+
__spreadProps(__spreadValues({
|
|
262
|
+
height: 3,
|
|
263
|
+
width: 15,
|
|
264
|
+
borderStyle: "round",
|
|
265
|
+
justifyContent: "center",
|
|
266
|
+
alignItems: "center",
|
|
267
|
+
focusedProps: {
|
|
268
|
+
borderColor: "cyan"
|
|
269
|
+
}
|
|
270
|
+
}, props), {
|
|
271
|
+
ref
|
|
272
|
+
}),
|
|
273
|
+
/* @__PURE__ */ React__default["default"].createElement(ink.Text, null, children)
|
|
274
|
+
);
|
|
284
275
|
});
|
|
285
276
|
|
|
286
277
|
const generateRandomSeed = () => crypto__default["default"].randomBytes(32).toString("hex");
|
|
@@ -288,61 +279,50 @@ const generateRandomSeed = () => crypto__default["default"].randomBytes(32).toSt
|
|
|
288
279
|
const Form = ({ state, setState, onSubmit, onCancel }) => {
|
|
289
280
|
const { focus } = ink.useFocusManager();
|
|
290
281
|
const updateSlice = curriedStateSlice(setState);
|
|
291
|
-
return /* @__PURE__ */ React__default["default"].createElement(
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
flexDirection: "column",
|
|
300
|
-
alignItems: "center"
|
|
301
|
-
}, /* @__PURE__ */ React__default["default"].createElement(ink.Box, {
|
|
302
|
-
marginBottom: 2,
|
|
303
|
-
padding: 1,
|
|
304
|
-
flexDirection: "column",
|
|
305
|
-
borderStyle: "round"
|
|
306
|
-
}, /* @__PURE__ */ React__default["default"].createElement(Input, {
|
|
307
|
-
disabled: true,
|
|
308
|
-
focusId: "name",
|
|
309
|
-
prompt: "Name:",
|
|
310
|
-
value: state.name,
|
|
311
|
-
onChange: updateSlice("name"),
|
|
312
|
-
onSubmit: () => focus("editName")
|
|
313
|
-
}), /* @__PURE__ */ React__default["default"].createElement(Input, {
|
|
314
|
-
marginTop: 1,
|
|
315
|
-
disabled: true,
|
|
316
|
-
focusId: "seed",
|
|
317
|
-
prompt: "Seed:",
|
|
318
|
-
value: state.seed,
|
|
319
|
-
onChange: updateSlice("seed"),
|
|
320
|
-
onSubmit: () => focus("editSeed")
|
|
321
|
-
})), /* @__PURE__ */ React__default["default"].createElement(Button, {
|
|
322
|
-
autoFocus: true,
|
|
323
|
-
focusId: "editName",
|
|
324
|
-
onClick: () => focus("name"),
|
|
325
|
-
width: 25
|
|
326
|
-
}, "Edit Name"), /* @__PURE__ */ React__default["default"].createElement(Button, {
|
|
327
|
-
onClick: () => updateSlice("seed", generateRandomSeed()),
|
|
328
|
-
width: 25
|
|
329
|
-
}, "Generate Random Seed"), /* @__PURE__ */ React__default["default"].createElement(Button, {
|
|
330
|
-
focusId: "editSeed",
|
|
331
|
-
onClick: () => {
|
|
332
|
-
updateSlice("seed", "");
|
|
333
|
-
focus("seed");
|
|
282
|
+
return /* @__PURE__ */ React__default["default"].createElement(
|
|
283
|
+
ink.Box,
|
|
284
|
+
{
|
|
285
|
+
flexGrow: 1,
|
|
286
|
+
flexDirection: "column",
|
|
287
|
+
padding: 2,
|
|
288
|
+
borderStyle: "round",
|
|
289
|
+
borderColor: "yellow"
|
|
334
290
|
},
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
291
|
+
/* @__PURE__ */ React__default["default"].createElement(ink.Box, { flexGrow: 1, flexDirection: "column", alignItems: "center" }, /* @__PURE__ */ React__default["default"].createElement(ink.Box, { marginBottom: 2, padding: 1, flexDirection: "column", borderStyle: "round" }, /* @__PURE__ */ React__default["default"].createElement(
|
|
292
|
+
Input,
|
|
293
|
+
{
|
|
294
|
+
disabled: true,
|
|
295
|
+
focusId: "name",
|
|
296
|
+
prompt: "Name:",
|
|
297
|
+
value: state.name,
|
|
298
|
+
onChange: updateSlice("name"),
|
|
299
|
+
onSubmit: () => focus("editName")
|
|
300
|
+
}
|
|
301
|
+
), /* @__PURE__ */ React__default["default"].createElement(
|
|
302
|
+
Input,
|
|
303
|
+
{
|
|
304
|
+
marginTop: 1,
|
|
305
|
+
disabled: true,
|
|
306
|
+
focusId: "seed",
|
|
307
|
+
prompt: "Seed:",
|
|
308
|
+
value: state.seed,
|
|
309
|
+
onChange: updateSlice("seed"),
|
|
310
|
+
onSubmit: () => focus("editSeed")
|
|
311
|
+
}
|
|
312
|
+
)), /* @__PURE__ */ React__default["default"].createElement(Button, { autoFocus: true, focusId: "editName", onClick: () => focus("name"), width: 25 }, "Edit Name"), /* @__PURE__ */ React__default["default"].createElement(Button, { onClick: () => updateSlice("seed", generateRandomSeed()), width: 25 }, "Generate Random Seed"), /* @__PURE__ */ React__default["default"].createElement(
|
|
313
|
+
Button,
|
|
314
|
+
{
|
|
315
|
+
focusId: "editSeed",
|
|
316
|
+
onClick: () => {
|
|
317
|
+
updateSlice("seed", "");
|
|
318
|
+
focus("seed");
|
|
319
|
+
},
|
|
320
|
+
width: 25
|
|
321
|
+
},
|
|
322
|
+
"Enter Custom Seed"
|
|
323
|
+
)),
|
|
324
|
+
/* @__PURE__ */ React__default["default"].createElement(ink.Box, { height: 5, width: "100%", padding: 2, justifyContent: "space-between" }, /* @__PURE__ */ React__default["default"].createElement(Button, { onClick: onSubmit }, "Ok"), /* @__PURE__ */ React__default["default"].createElement(Button, { onClick: onCancel }, "Cancel"))
|
|
325
|
+
);
|
|
346
326
|
};
|
|
347
327
|
|
|
348
328
|
const git = simpleGit__default["default"]();
|
|
@@ -354,23 +334,21 @@ const Cloning = ({ path, onFinished }) => {
|
|
|
354
334
|
console.error(error);
|
|
355
335
|
});
|
|
356
336
|
}, []);
|
|
357
|
-
return /* @__PURE__ */ React__default["default"].createElement(
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
type: "material"
|
|
369
|
-
|
|
370
|
-
name: "rainbow"
|
|
371
|
-
|
|
372
|
-
type: "material"
|
|
373
|
-
}))));
|
|
337
|
+
return /* @__PURE__ */ React__default["default"].createElement(
|
|
338
|
+
ink.Box,
|
|
339
|
+
{
|
|
340
|
+
flexGrow: 1,
|
|
341
|
+
flexDirection: "column",
|
|
342
|
+
justifyContent: "center",
|
|
343
|
+
alignItems: "center",
|
|
344
|
+
padding: 2,
|
|
345
|
+
borderStyle: "round",
|
|
346
|
+
borderColor: "yellow"
|
|
347
|
+
},
|
|
348
|
+
/* @__PURE__ */ React__default["default"].createElement(Gradient__default["default"], { name: "rainbow" }, /* @__PURE__ */ React__default["default"].createElement(ink.Text, null, /* @__PURE__ */ React__default["default"].createElement(Spinner__default["default"], { type: "material" }))),
|
|
349
|
+
/* @__PURE__ */ React__default["default"].createElement(ink.Text, null, "Cloning into ", path, "..."),
|
|
350
|
+
/* @__PURE__ */ React__default["default"].createElement(Gradient__default["default"], { name: "rainbow" }, /* @__PURE__ */ React__default["default"].createElement(ink.Text, null, /* @__PURE__ */ React__default["default"].createElement(Spinner__default["default"], { type: "material" })))
|
|
351
|
+
);
|
|
374
352
|
};
|
|
375
353
|
|
|
376
354
|
const Info = ({ path }) => {
|
|
@@ -383,38 +361,28 @@ const Info = ({ path }) => {
|
|
|
383
361
|
};
|
|
384
362
|
checkForBinaries();
|
|
385
363
|
}, []);
|
|
386
|
-
return /* @__PURE__ */ React__default["default"].createElement(
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
code: "npm i -g pnpm # must use pnpm!",
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
language: "bash"
|
|
407
|
-
|
|
408
|
-
color: "green"
|
|
409
|
-
}, "$ "), /* @__PURE__ */ React__default["default"].createElement(SyntaxHighlight__default["default"], {
|
|
410
|
-
code: "pnpm i",
|
|
411
|
-
language: "bash"
|
|
412
|
-
})), /* @__PURE__ */ React__default["default"].createElement(ink.Text, null, /* @__PURE__ */ React__default["default"].createElement(ink.Text, {
|
|
413
|
-
color: "green"
|
|
414
|
-
}, "$ "), /* @__PURE__ */ React__default["default"].createElement(SyntaxHighlight__default["default"], {
|
|
415
|
-
code: "pnpm serverless-deploy",
|
|
416
|
-
language: "bash"
|
|
417
|
-
}))));
|
|
364
|
+
return /* @__PURE__ */ React__default["default"].createElement(
|
|
365
|
+
ink.Box,
|
|
366
|
+
{
|
|
367
|
+
flexGrow: 1,
|
|
368
|
+
flexDirection: "column",
|
|
369
|
+
justifyContent: "center",
|
|
370
|
+
alignItems: "center",
|
|
371
|
+
padding: 2,
|
|
372
|
+
borderStyle: "round",
|
|
373
|
+
borderColor: "yellow"
|
|
374
|
+
},
|
|
375
|
+
/* @__PURE__ */ React__default["default"].createElement(ink.Text, null, "Success!"),
|
|
376
|
+
/* @__PURE__ */ React__default["default"].createElement(ink.Text, null, "Your new Learn Card HTTP Bridge is ready to deploy!"),
|
|
377
|
+
aws ? /* @__PURE__ */ React__default["default"].createElement(ink.Text, null, "To deploy, run the following commands:") : /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, /* @__PURE__ */ React__default["default"].createElement(ink.Text, null, "It looks like you might not have serverless/AWS set up yet!"), /* @__PURE__ */ React__default["default"].createElement(ink.Text, null, "Please review the instructions at https://www.serverless.com/framework/docs/tutorial if you have any issues deploying the Learn Card HTTP Bridge!"), /* @__PURE__ */ React__default["default"].createElement(ink.Text, null, "After you're all set up, run the following commands to deploy the Learn Card HTTP Bridge!")),
|
|
378
|
+
/* @__PURE__ */ React__default["default"].createElement(ink.Box, { borderStyle: "round", flexDirection: "column" }, !pnpm && /* @__PURE__ */ React__default["default"].createElement(ink.Text, null, /* @__PURE__ */ React__default["default"].createElement(ink.Text, { color: "green" }, "$ "), /* @__PURE__ */ React__default["default"].createElement(SyntaxHighlight__default["default"], { code: "npm i -g pnpm # must use pnpm!", language: "bash" })), /* @__PURE__ */ React__default["default"].createElement(ink.Text, null, /* @__PURE__ */ React__default["default"].createElement(ink.Text, { color: "green" }, "$ "), /* @__PURE__ */ React__default["default"].createElement(
|
|
379
|
+
SyntaxHighlight__default["default"],
|
|
380
|
+
{
|
|
381
|
+
code: `cd ${path}/packages/learn-card-bridge-http`,
|
|
382
|
+
language: "bash"
|
|
383
|
+
}
|
|
384
|
+
)), /* @__PURE__ */ React__default["default"].createElement(ink.Text, null, /* @__PURE__ */ React__default["default"].createElement(ink.Text, { color: "green" }, "$ "), /* @__PURE__ */ React__default["default"].createElement(SyntaxHighlight__default["default"], { code: "pnpm i", language: "bash" })), /* @__PURE__ */ React__default["default"].createElement(ink.Text, null, /* @__PURE__ */ React__default["default"].createElement(ink.Text, { color: "green" }, "$ "), /* @__PURE__ */ React__default["default"].createElement(SyntaxHighlight__default["default"], { code: "pnpm serverless-deploy", language: "bash" })))
|
|
385
|
+
);
|
|
418
386
|
};
|
|
419
387
|
|
|
420
388
|
const randomSeed = generateRandomSeed();
|
|
@@ -433,35 +401,33 @@ const App = ({ name = "LearnCardHTTPBridge" }) => {
|
|
|
433
401
|
setStep("info");
|
|
434
402
|
};
|
|
435
403
|
const COMPONENTS = {
|
|
436
|
-
form: /* @__PURE__ */ React__default["default"].createElement(
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
}),
|
|
446
|
-
info: /* @__PURE__ */ React__default["default"].createElement(Info, {
|
|
447
|
-
path: state.name
|
|
448
|
-
})
|
|
404
|
+
form: /* @__PURE__ */ React__default["default"].createElement(
|
|
405
|
+
Form,
|
|
406
|
+
{
|
|
407
|
+
state,
|
|
408
|
+
setState,
|
|
409
|
+
onSubmit: () => setStep("cloning"),
|
|
410
|
+
onCancel: () => app.exit()
|
|
411
|
+
}
|
|
412
|
+
),
|
|
413
|
+
cloning: /* @__PURE__ */ React__default["default"].createElement(Cloning, { path: state.name, onFinished: postClone }),
|
|
414
|
+
info: /* @__PURE__ */ React__default["default"].createElement(Info, { path: state.name })
|
|
449
415
|
};
|
|
450
|
-
return /* @__PURE__ */ React__default["default"].createElement(
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
height: "100%"
|
|
460
|
-
|
|
416
|
+
return /* @__PURE__ */ React__default["default"].createElement(
|
|
417
|
+
FullScreenBox,
|
|
418
|
+
{
|
|
419
|
+
flexDirection: "column",
|
|
420
|
+
justifyContent: "center",
|
|
421
|
+
alignItems: "center",
|
|
422
|
+
borderStyle: "double",
|
|
423
|
+
borderColor: "green"
|
|
424
|
+
},
|
|
425
|
+
/* @__PURE__ */ React__default["default"].createElement(ink.Box, { flexDirection: "column", padding: 2, height: "100%" }, /* @__PURE__ */ React__default["default"].createElement(Banner, null), COMPONENTS[step])
|
|
426
|
+
);
|
|
461
427
|
};
|
|
462
428
|
|
|
463
429
|
var name = "@learncard/create-http-bridge";
|
|
464
|
-
var version = "1.1.
|
|
430
|
+
var version = "1.1.83";
|
|
465
431
|
var description = "Instantly create and deploy a Learn Card Bridge HTTP API via AWS Lambda!";
|
|
466
432
|
var main = "dist/index.js";
|
|
467
433
|
var bin = "dist/index.js";
|
|
@@ -529,7 +495,5 @@ var packageJson = {
|
|
|
529
495
|
|
|
530
496
|
commander.program.version(packageJson.version).argument("[name]").action(async (name) => {
|
|
531
497
|
console.clear();
|
|
532
|
-
ink.render(/* @__PURE__ */ React__default["default"].createElement(App, {
|
|
533
|
-
name
|
|
534
|
-
}));
|
|
498
|
+
ink.render(/* @__PURE__ */ React__default["default"].createElement(App, { name }));
|
|
535
499
|
}).parse(process.argv);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@learncard/create-http-bridge",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.83",
|
|
4
4
|
"description": "Instantly create and deploy a Learn Card Bridge HTTP API via AWS Lambda!",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": "dist/index.js",
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"simple-git": "^3.9.0",
|
|
31
31
|
"use-immer": "^0.7.0",
|
|
32
32
|
"zod": "^3.20.2",
|
|
33
|
-
"@learncard/
|
|
34
|
-
"@learncard/
|
|
33
|
+
"@learncard/init": "1.2.20",
|
|
34
|
+
"@learncard/types": "5.5.1"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/aws-lambda": "^8.10.106",
|