@gettersethya/mira-dashboard 0.1.0-alpha.1 → 0.1.0-alpha.13
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/README.md +65 -0
- package/dist/src/api/auth.d.ts +2 -10
- package/dist/src/api/auth.d.ts.map +1 -1
- package/dist/src/api/auth.js +20 -43
- package/dist/src/api/auth.js.map +1 -1
- package/dist/src/api/config.d.ts +1 -1
- package/dist/src/api/config.d.ts.map +1 -1
- package/dist/src/api/config.js +0 -2
- package/dist/src/api/config.js.map +1 -1
- package/dist/src/api/crons.d.ts +6 -0
- package/dist/src/api/crons.d.ts.map +1 -0
- package/dist/src/api/crons.js +22 -0
- package/dist/src/api/crons.js.map +1 -0
- package/dist/src/api/register.d.ts.map +1 -1
- package/dist/src/api/register.js +3 -1
- package/dist/src/api/register.js.map +1 -1
- package/dist/src/api/superadmin.d.ts +3 -3
- package/dist/src/api/superadmin.d.ts.map +1 -1
- package/dist/src/api/superadmin.js +0 -4
- package/dist/src/api/superadmin.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/router.d.ts +1 -2
- package/dist/src/router.d.ts.map +1 -1
- package/dist/src/router.js +28 -6
- package/dist/src/router.js.map +1 -1
- package/dist/src/superadmin.d.ts +19 -2
- package/dist/src/superadmin.d.ts.map +1 -1
- package/dist/src/superadmin.js +8 -6
- package/dist/src/superadmin.js.map +1 -1
- package/package.json +3 -3
package/README.md
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# @gettersethya/mira-dashboard
|
|
2
|
+
|
|
3
|
+
> **Early pre-alpha.** Breaking changes may occur without notice.
|
|
4
|
+
|
|
5
|
+
Admin dashboard plugin for [Mira](https://github.com/gettersethya/mira). A SvelteKit SPA at `/_dashboard/` providing collection CRUD, log/span viewer, config display, superadmin management, and cron job monitoring.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @gettersethya/mira-dashboard
|
|
11
|
+
# or
|
|
12
|
+
pnpm add @gettersethya/mira-dashboard
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
`@gettersethya/mira` is a required peer dependency.
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
import { LocalFileStorage, Mira, NodePlatform, SqliteDatabase } from "@gettersethya/mira"
|
|
21
|
+
import { MiraDashboard } from "@gettersethya/mira-dashboard"
|
|
22
|
+
import { Posts, Users } from "./collections.js"
|
|
23
|
+
|
|
24
|
+
const app = Mira.builder()
|
|
25
|
+
.platform(NodePlatform)
|
|
26
|
+
.database(SqliteDatabase({ filename: "mira.db" }))
|
|
27
|
+
.storage(LocalFileStorage({ directory: "./uploads" }))
|
|
28
|
+
.collections([Users, Posts])
|
|
29
|
+
.build()
|
|
30
|
+
|
|
31
|
+
app.extend(MiraDashboard).serve()
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
On first boot the dashboard prints a one-time registration URL to stdout:
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
[dashboard] Register at: http://localhost:8080/_dashboard/register?token=<token>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Open that URL to create the first superadmin account. Once registered, subsequent boots print the login URL.
|
|
41
|
+
|
|
42
|
+
## Features
|
|
43
|
+
|
|
44
|
+
- **Collection browser** — list, create, edit, and delete records with a record editor
|
|
45
|
+
- **Logs and span viewer** — works best with `makeSqliteTelemetryLayer` from `@gettersethya/mira`
|
|
46
|
+
- **App config display** — view the current `AppConfig` from the `_config` table
|
|
47
|
+
- **Superadmin management** — create, list, and delete superadmin accounts
|
|
48
|
+
- **Cron job monitoring** — list all registered cron jobs with their current status and trigger manual runs
|
|
49
|
+
|
|
50
|
+
### Cron API
|
|
51
|
+
|
|
52
|
+
The dashboard exposes two cron endpoints:
|
|
53
|
+
|
|
54
|
+
| Method | Path | Description |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| `GET` | `/_dashboard/api/crons` | List all cron jobs with name, status, last run info |
|
|
57
|
+
| `POST` | `/_dashboard/api/crons/:name/run` | Trigger immediate execution of a cron job by name |
|
|
58
|
+
|
|
59
|
+
## Superadmin collection
|
|
60
|
+
|
|
61
|
+
The dashboard registers a `SuperAdminCollection` under the name `_superadmins` — an `AuthCollection` with deny-all rules. This collection is separate from your app's own user collection and is only accessible via the dashboard UI.
|
|
62
|
+
|
|
63
|
+
## Audit hooks
|
|
64
|
+
|
|
65
|
+
The dashboard plugin registers audit hooks that log record create/update/delete operations and cron success/error events via `Effect.log`.
|
package/dist/src/api/auth.d.ts
CHANGED
|
@@ -6,17 +6,9 @@ declare const DashboardUnauthorizedError_base: new <A extends Record<string, any
|
|
|
6
6
|
} & Readonly<A>;
|
|
7
7
|
export declare class DashboardUnauthorizedError extends DashboardUnauthorizedError_base<{}> {
|
|
8
8
|
}
|
|
9
|
-
export type DashboardJwtPayload = {
|
|
10
|
-
readonly sub: string;
|
|
11
|
-
readonly email: string;
|
|
12
|
-
readonly role: string;
|
|
13
|
-
readonly col: string;
|
|
14
|
-
};
|
|
15
|
-
export declare function signDashboardJwt(payload: DashboardJwtPayload, secret: string): Effect.Effect<string, DashboardUnauthorizedError, never>;
|
|
16
9
|
export declare const requireDashboardAuth: Effect.Effect<{
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
readonly role: string;
|
|
10
|
+
sub: string;
|
|
11
|
+
col: string;
|
|
20
12
|
}, DashboardUnauthorizedError, HttpServerRequest.HttpServerRequest | AppConfig>;
|
|
21
13
|
export {};
|
|
22
14
|
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/api/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/api/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,MAAM,EAAoB,MAAM,QAAQ,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAa,MAAM,oBAAoB,CAAA;;;;AAEzD,qBAAa,0BAA2B,SAAQ,gCAA+C,EAAE,CAAC;CAAG;AAiBrG,eAAO,MAAM,oBAAoB;;;+EAuB0B,CAAA"}
|
package/dist/src/api/auth.js
CHANGED
|
@@ -1,56 +1,33 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Data, Effect, Redacted, Schema } from "effect";
|
|
1
|
+
import { Data, Effect, Redacted } from "effect";
|
|
3
2
|
import { HttpServerRequest } from "@effect/platform";
|
|
4
|
-
import { AppConfig } from "@gettersethya/mira";
|
|
3
|
+
import { AppConfig, verifyJwt } from "@gettersethya/mira";
|
|
5
4
|
export class DashboardUnauthorizedError extends Data.TaggedError("DashboardUnauthorizedError") {
|
|
6
5
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
.sign(encoder.encode(secret));
|
|
16
|
-
},
|
|
17
|
-
catch: () => new DashboardUnauthorizedError()
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
const VerifyDashboardJwtSchema = Schema.Struct({
|
|
21
|
-
sub: Schema.String,
|
|
22
|
-
email: Schema.String,
|
|
23
|
-
role: Schema.String
|
|
24
|
-
});
|
|
25
|
-
function verifyDashboardJwt(token, secret) {
|
|
26
|
-
return Effect.gen(function* () {
|
|
27
|
-
const { payload } = yield* Effect.tryPromise({
|
|
28
|
-
try: async () => {
|
|
29
|
-
const encoder = new TextEncoder();
|
|
30
|
-
return await jose.jwtVerify(token, encoder.encode(secret));
|
|
31
|
-
},
|
|
32
|
-
catch: () => new DashboardUnauthorizedError()
|
|
33
|
-
});
|
|
34
|
-
const result = yield* Schema.decodeUnknown(VerifyDashboardJwtSchema)({
|
|
35
|
-
sub: payload.sub,
|
|
36
|
-
email: payload["email"],
|
|
37
|
-
role: payload["role"]
|
|
38
|
-
}).pipe(Effect.catchTag("ParseError", () => new DashboardUnauthorizedError()));
|
|
39
|
-
return result;
|
|
40
|
-
});
|
|
6
|
+
function extractToken(req) {
|
|
7
|
+
const auth = req.headers["authorization"];
|
|
8
|
+
if (typeof auth === "string") {
|
|
9
|
+
const m = auth.match(/^Bearer\s+(.+)$/i);
|
|
10
|
+
if (m !== null)
|
|
11
|
+
return m[1];
|
|
12
|
+
}
|
|
13
|
+
return req.cookies["mira_token"] ?? null;
|
|
41
14
|
}
|
|
15
|
+
const annotateCurrentSpan = (key, value) => Effect.currentSpan.pipe(Effect.tap((span) => Effect.sync(() => span.attribute(key, value))), Effect.ignore);
|
|
42
16
|
export const requireDashboardAuth = Effect.gen(function* () {
|
|
43
17
|
const req = yield* HttpServerRequest.HttpServerRequest;
|
|
44
|
-
const
|
|
45
|
-
if (
|
|
18
|
+
const token = extractToken(req);
|
|
19
|
+
if (token === null) {
|
|
20
|
+
yield* annotateCurrentSpan("auth.result", "anonymous");
|
|
46
21
|
return yield* new DashboardUnauthorizedError();
|
|
47
22
|
}
|
|
48
|
-
const token = authHeader.slice(7);
|
|
49
23
|
const config = yield* AppConfig;
|
|
50
|
-
const payload = yield*
|
|
51
|
-
if (payload.
|
|
24
|
+
const payload = yield* verifyJwt(token, Redacted.value(config.jwtSecret)).pipe(Effect.catchAll(() => new DashboardUnauthorizedError()));
|
|
25
|
+
if (payload.col !== "_superadmin") {
|
|
26
|
+
yield* annotateCurrentSpan("auth.result", "invalid_token");
|
|
52
27
|
return yield* new DashboardUnauthorizedError();
|
|
53
28
|
}
|
|
29
|
+
yield* annotateCurrentSpan("auth.result", "authenticated");
|
|
30
|
+
yield* annotateCurrentSpan("auth.collection", "_superadmin");
|
|
54
31
|
return payload;
|
|
55
|
-
});
|
|
32
|
+
}).pipe(Effect.withSpan("http.auth", { kind: "internal" }));
|
|
56
33
|
//# sourceMappingURL=auth.js.map
|
package/dist/src/api/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/api/auth.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/api/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAU,MAAM,QAAQ,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEzD,MAAM,OAAO,0BAA2B,SAAQ,IAAI,CAAC,WAAW,CAAC,4BAA4B,CAAK;CAAG;AAErG,SAAS,YAAY,CAAC,GAAwC;IAC5D,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;IACzC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;QACxC,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7B,CAAC;IACD,OAAO,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,IAAI,CAAA;AAC1C,CAAC;AAED,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE,CACzD,MAAM,CAAC,WAAW,CAAC,IAAI,CACrB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAChF,MAAM,CAAC,MAAM,CACd,CAAA;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACtD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC,iBAAiB,CAAA;IACtD,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;IAE/B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,KAAK,CAAC,CAAC,mBAAmB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QACtD,OAAO,KAAK,CAAC,CAAC,IAAI,0BAA0B,EAAE,CAAA;IAChD,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,SAAS,CAAA;IAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAC5E,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,0BAA0B,EAAE,CAAC,CACxD,CAAA;IAED,IAAI,OAAO,CAAC,GAAG,KAAK,aAAa,EAAE,CAAC;QAClC,KAAK,CAAC,CAAC,mBAAmB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAA;QAC1D,OAAO,KAAK,CAAC,CAAC,IAAI,0BAA0B,EAAE,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,CAAC,mBAAmB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAA;IAC1D,KAAK,CAAC,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAA;IAE5D,OAAO,OAAO,CAAA;AAChB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA"}
|
package/dist/src/api/config.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
import { HttpServerResponse } from "@effect/platform";
|
|
3
3
|
import { AppConfig } from "@gettersethya/mira";
|
|
4
|
-
export declare const configRoute: Effect.Effect<HttpServerResponse.HttpServerResponse,
|
|
4
|
+
export declare const configRoute: Effect.Effect<HttpServerResponse.HttpServerResponse, never, AppConfig>;
|
|
5
5
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/api/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAY,MAAM,QAAQ,CAAA;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/api/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAY,MAAM,QAAQ,CAAA;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C,eAAO,MAAM,WAAW,wEAetB,CAAA"}
|
package/dist/src/api/config.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { Effect, Redacted } from "effect";
|
|
2
2
|
import { HttpServerResponse } from "@effect/platform";
|
|
3
3
|
import { AppConfig } from "@gettersethya/mira";
|
|
4
|
-
import { requireDashboardAuth } from "./auth.js";
|
|
5
4
|
export const configRoute = Effect.gen(function* () {
|
|
6
|
-
yield* requireDashboardAuth;
|
|
7
5
|
const config = yield* AppConfig;
|
|
8
6
|
const allConfig = {
|
|
9
7
|
appName: config.appName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/api/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/api/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,SAAS,CAAA;IAE/B,MAAM,SAAS,GAA4B;QACzC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,SAAS,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK;QAC/D,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAA;IAED,OAAO,kBAAkB,CAAC,UAAU,CAAC;QACnC,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;KAC7B,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { HttpRouter, HttpServerResponse } from "@effect/platform";
|
|
3
|
+
import { CronService } from "@gettersethya/mira";
|
|
4
|
+
export declare const cronsRoute: Effect.Effect<HttpServerResponse.HttpServerResponse, never, CronService>;
|
|
5
|
+
export declare const cronRunNowRoute: Effect.Effect<HttpServerResponse.HttpServerResponse, never, HttpRouter.RouteContext | CronService>;
|
|
6
|
+
//# sourceMappingURL=crons.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crons.d.ts","sourceRoot":"","sources":["../../../src/api/crons.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,EAAE,WAAW,EAAqB,MAAM,oBAAoB,CAAA;AAEnE,eAAO,MAAM,UAAU,0EAerB,CAAA;AAEF,eAAO,MAAM,eAAe,oGAa3B,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { HttpRouter, HttpServerResponse } from "@effect/platform";
|
|
3
|
+
import { CronService } from "@gettersethya/mira";
|
|
4
|
+
export const cronsRoute = Effect.gen(function* () {
|
|
5
|
+
const cronService = yield* CronService;
|
|
6
|
+
const states = yield* cronService.getAll();
|
|
7
|
+
return HttpServerResponse.unsafeJson(states.map((s) => ({
|
|
8
|
+
name: s.name,
|
|
9
|
+
description: s.description ?? null,
|
|
10
|
+
status: s.status,
|
|
11
|
+
lastRunAt: s.lastRunAt ? s.lastRunAt.toISOString() : null,
|
|
12
|
+
lastStatus: s.lastStatus ?? null,
|
|
13
|
+
lastDurationMs: s.lastDurationMs ?? null,
|
|
14
|
+
lastError: s.lastError !== undefined ? String(s.lastError) : null
|
|
15
|
+
})));
|
|
16
|
+
});
|
|
17
|
+
export const cronRunNowRoute = Effect.flatMap(HttpRouter.RouteContext, (routeCtx) => Effect.gen(function* () {
|
|
18
|
+
const name = routeCtx.params["name"] ?? "";
|
|
19
|
+
const cronService = yield* CronService;
|
|
20
|
+
return yield* cronService.runNow(name).pipe(Effect.as(HttpServerResponse.empty({ status: 204 })), Effect.catchTag("CronNotFoundError", (_) => Effect.succeed(HttpServerResponse.unsafeJson({ error: "not_found" }, { status: 404 }))));
|
|
21
|
+
}));
|
|
22
|
+
//# sourceMappingURL=crons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crons.js","sourceRoot":"","sources":["../../../src/api/crons.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,EAAE,WAAW,EAAqB,MAAM,oBAAoB,CAAA;AAEnE,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,WAAW,CAAA;IACtC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,CAAA;IAE1C,OAAO,kBAAkB,CAAC,UAAU,CAClC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;QAClC,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;QACzD,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI;QAChC,cAAc,EAAE,CAAC,CAAC,cAAc,IAAI,IAAI;QACxC,SAAS,EAAE,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;KAClE,CAAC,CAAC,CACJ,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE,CAClF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IAE1C,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,WAAW,CAAA;IAEtC,OAAO,KAAK,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CACzC,MAAM,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EACpD,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAoB,EAAE,EAAE,CAC5D,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CACvF,CACF,CAAA;AACH,CAAC,CAAC,CACH,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/api/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAgB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/api/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAgB,MAAM,oBAAoB,CAAA;AAapE,eAAO,MAAM,aAAa,4SA6BxB,CAAA"}
|
package/dist/src/api/register.js
CHANGED
|
@@ -6,6 +6,7 @@ import { SuperAdminCollection } from "../superadmin.js";
|
|
|
6
6
|
const RegisterBodySchema = Schema.Struct({
|
|
7
7
|
email: Schema.String,
|
|
8
8
|
password: Schema.String,
|
|
9
|
+
name: Schema.String,
|
|
9
10
|
token: Schema.String
|
|
10
11
|
});
|
|
11
12
|
const adminCtx = { headers: {}, query: {}, admin: true };
|
|
@@ -25,7 +26,8 @@ export const registerRoute = Effect.gen(function* () {
|
|
|
25
26
|
const hashedPassword = yield* hashPassword(body.password);
|
|
26
27
|
const record = yield* svc.create(SuperAdminCollection, {
|
|
27
28
|
email: body.email,
|
|
28
|
-
password: hashedPassword
|
|
29
|
+
password: hashedPassword,
|
|
30
|
+
name: body.name
|
|
29
31
|
}, adminCtx);
|
|
30
32
|
return HttpServerResponse.unsafeJson({ id: record["id"], email: record["email"] }, { status: 201 });
|
|
31
33
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/api/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAEvD,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM;CACrB,CAAC,CAAA;AAEF,MAAM,QAAQ,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAa,EAAE,CAAA;AAEjE,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC,iBAAiB,CAAA;IACtD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAA;IAC3F,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAA;IAEpC,IAAI,IAAI,CAAC,KAAK,KAAK,gBAAgB,EAAE,EAAE,CAAC;QACtC,OAAO,kBAAkB,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;IACnF,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,GAAG;SAC5B,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC;SAC7C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAA4C,EAAE,CAAC,CAAC,CAAC,CAAA;IAE9F,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,OAAO,kBAAkB,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;IAC1F,CAAC;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACzD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAC9B,oBAAoB,EACpB;QACE,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,cAAc;
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/api/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAEvD,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM;CACrB,CAAC,CAAA;AAEF,MAAM,QAAQ,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAa,EAAE,CAAA;AAEjE,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC,iBAAiB,CAAA;IACtD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAA;IAC3F,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAA;IAEpC,IAAI,IAAI,CAAC,KAAK,KAAK,gBAAgB,EAAE,EAAE,CAAC;QACtC,OAAO,kBAAkB,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;IACnF,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,GAAG;SAC5B,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC;SAC7C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAA4C,EAAE,CAAC,CAAC,CAAC,CAAA;IAE9F,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,OAAO,kBAAkB,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;IAC1F,CAAC;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACzD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAC9B,oBAAoB,EACpB;QACE,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,cAAc;QACxB,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,EACD,QAAQ,CACT,CAAA;IAED,OAAO,kBAAkB,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;AACrG,CAAC,CAAC,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
import { HttpRouter, HttpServerRequest, HttpServerResponse } from "@effect/platform";
|
|
3
3
|
import { CollectionService } from "@gettersethya/mira";
|
|
4
|
-
export declare const createSuperadminRoute: Effect.Effect<HttpServerResponse.HttpServerResponse, import("@gettersethya/mira").CollectionError | import("@effect/platform/HttpServerError").RequestError | import("effect/ParseResult").ParseError
|
|
5
|
-
export declare const listSuperadminsRoute: Effect.Effect<HttpServerResponse.HttpServerResponse, import("@gettersethya/mira").CollectionError
|
|
6
|
-
export declare const deleteSuperadminRoute: Effect.Effect<HttpServerResponse.HttpServerResponse,
|
|
4
|
+
export declare const createSuperadminRoute: Effect.Effect<HttpServerResponse.HttpServerResponse, import("@gettersethya/mira").CollectionError | import("@effect/platform/HttpServerError").RequestError | import("effect/ParseResult").ParseError, CollectionService | HttpServerRequest.HttpServerRequest | import("@gettersethya/mira").AuthService>;
|
|
5
|
+
export declare const listSuperadminsRoute: Effect.Effect<HttpServerResponse.HttpServerResponse, import("@gettersethya/mira").CollectionError, CollectionService>;
|
|
6
|
+
export declare const deleteSuperadminRoute: Effect.Effect<HttpServerResponse.HttpServerResponse, never, CollectionService | HttpRouter.RouteContext>;
|
|
7
7
|
//# sourceMappingURL=superadmin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"superadmin.d.ts","sourceRoot":"","sources":["../../../src/api/superadmin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACpF,OAAO,EAAE,iBAAiB,EAAgB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"superadmin.d.ts","sourceRoot":"","sources":["../../../src/api/superadmin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACpF,OAAO,EAAE,iBAAiB,EAAgB,MAAM,oBAAoB,CAAA;AAWpE,eAAO,MAAM,qBAAqB,4SAwBhC,CAAA;AAEF,eAAO,MAAM,oBAAoB,uHAW/B,CAAA;AAEF,eAAO,MAAM,qBAAqB,0GAsBjC,CAAA"}
|
|
@@ -2,7 +2,6 @@ import { Effect, Schema } from "effect";
|
|
|
2
2
|
import { HttpRouter, HttpServerRequest, HttpServerResponse } from "@effect/platform";
|
|
3
3
|
import { CollectionService, hashPassword } from "@gettersethya/mira";
|
|
4
4
|
import { Filter } from "@gettersethya/mira-client";
|
|
5
|
-
import { requireDashboardAuth } from "./auth.js";
|
|
6
5
|
import { SuperAdminCollection } from "../superadmin.js";
|
|
7
6
|
const CreateSuperadminSchema = Schema.Struct({
|
|
8
7
|
email: Schema.String,
|
|
@@ -10,7 +9,6 @@ const CreateSuperadminSchema = Schema.Struct({
|
|
|
10
9
|
});
|
|
11
10
|
const adminCtx = { headers: {}, query: {}, admin: true };
|
|
12
11
|
export const createSuperadminRoute = Effect.gen(function* () {
|
|
13
|
-
yield* requireDashboardAuth;
|
|
14
12
|
const req = yield* HttpServerRequest.HttpServerRequest;
|
|
15
13
|
const body = yield* req.json.pipe(Effect.flatMap(Schema.decodeUnknown(CreateSuperadminSchema)));
|
|
16
14
|
const svc = yield* CollectionService;
|
|
@@ -28,7 +26,6 @@ export const createSuperadminRoute = Effect.gen(function* () {
|
|
|
28
26
|
return HttpServerResponse.unsafeJson({ id: record["id"], email: record["email"] }, { status: 201 });
|
|
29
27
|
});
|
|
30
28
|
export const listSuperadminsRoute = Effect.gen(function* () {
|
|
31
|
-
yield* requireDashboardAuth;
|
|
32
29
|
const svc = yield* CollectionService;
|
|
33
30
|
const result = yield* svc.list(SuperAdminCollection, null, 500, adminCtx);
|
|
34
31
|
const items = result.items.map((r) => ({
|
|
@@ -39,7 +36,6 @@ export const listSuperadminsRoute = Effect.gen(function* () {
|
|
|
39
36
|
return HttpServerResponse.unsafeJson({ items }, { status: 200 });
|
|
40
37
|
});
|
|
41
38
|
export const deleteSuperadminRoute = Effect.flatMap(HttpRouter.RouteContext, (routeCtx) => Effect.gen(function* () {
|
|
42
|
-
yield* requireDashboardAuth;
|
|
43
39
|
const id = routeCtx.params["id"];
|
|
44
40
|
if (id === undefined) {
|
|
45
41
|
return HttpServerResponse.unsafeJson({ error: "not_found" }, { status: 404 });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"superadmin.js","sourceRoot":"","sources":["../../../src/api/superadmin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACpF,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"superadmin.js","sourceRoot":"","sources":["../../../src/api/superadmin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACpF,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAEvD,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM;CACxB,CAAC,CAAA;AAEF,MAAM,QAAQ,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAa,EAAE,CAAA;AAEjE,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACvD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC,iBAAiB,CAAA;IACtD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAA;IAC/F,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAA;IAEpC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,GAAG;SACxB,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnF,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAA4C,EAAE,CAAC,CAAC,CAAC,CAAA;IAE9F,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,kBAAkB,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;IACjF,CAAC;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACzD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAC9B,oBAAoB,EACpB;QACE,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,cAAc;KACzB,EACD,QAAQ,CACT,CAAA;IAED,OAAO,kBAAkB,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;AACrG,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACtD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAA;IACpC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;IAEzE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;KAC9B,CAAC,CAAC,CAAA;IAEH,OAAO,kBAAkB,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;AAClE,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE,CACxF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAChC,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,kBAAkB,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;IAC/E,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAA;IAEpC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CACzE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EACjC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAC9B,CAAA;IAED,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,OAAO,kBAAkB,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;IACrF,CAAC;IAED,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAE9F,OAAO,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;AAClD,CAAC,CAAC,CACH,CAAA"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MiraPlugin } from "@gettersethya/mira";
|
|
2
|
-
export declare const MiraDashboard: MiraPlugin
|
|
2
|
+
export declare const MiraDashboard: MiraPlugin<never>;
|
|
3
3
|
export { SuperAdminCollection } from "./superadmin.js";
|
|
4
4
|
export { getRegisterToken, setRegisterToken, generateRegisterToken } from "./superadmin.js";
|
|
5
5
|
export { makeDashboardRouter } from "./router.js";
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAgC,MAAM,oBAAoB,CAAA;AAI7E,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAgC,MAAM,oBAAoB,CAAA;AAI7E,eAAO,MAAM,aAAa,mBA6CxB,CAAA;AAEF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA"}
|
package/dist/src/index.js
CHANGED
|
@@ -30,6 +30,12 @@ export const MiraDashboard = MiraPlugin.define({
|
|
|
30
30
|
},
|
|
31
31
|
onRecordDeleteSuccess: {
|
|
32
32
|
handler: (ctx) => Effect.log(`[dashboard] audit: deleted ${String(ctx.result["id"])} in ${ctx.collection.name}`)
|
|
33
|
+
},
|
|
34
|
+
onCronSuccess: {
|
|
35
|
+
handler: (ctx) => Effect.log(`[dashboard] audit: cron "${ctx.name}" succeeded in ${ctx.durationMs}ms`)
|
|
36
|
+
},
|
|
37
|
+
onCronError: {
|
|
38
|
+
handler: (ctx) => Effect.log(`[dashboard] audit: cron "${ctx.name}" failed after ${ctx.durationMs}ms`)
|
|
33
39
|
}
|
|
34
40
|
});
|
|
35
41
|
export { SuperAdminCollection } from "./superadmin.js";
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAC7E,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAC/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC;IAC7C,WAAW,EAAE,CAAC,oBAAoB,CAAC;IAEnC,MAAM,EAAE,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAEnD,WAAW,EAAE,GAAG,EAAE,CAChB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,KAAK,GAAG,qBAAqB,EAAE,CAAA;QACrC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,SAAS,CAAA;QAC5B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAA;QACpC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,GAAG;aACvB,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;aAC5E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAErB,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAA;QAExD,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,gBAAgB,CAAC,KAAK,CAAC,CAAA;YACvB,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,GAAG,CAAC,cAAc,8BAA8B,KAAK,EAAE,CAAC,CAAA;QACxG,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,GAAG,CAAC,cAAc,cAAc,CAAC,CAAA;QAC5E,CAAC;IACH,CAAC,CAAC;IAEJ,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,uCAAuC,CAAC;IAElE,qBAAqB,EAAE;QACrB,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,8BAA8B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACjH;IAED,qBAAqB,EAAE;QACrB,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,8BAA8B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACjH;IAED,qBAAqB,EAAE;QACrB,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,8BAA8B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACjH;CACF,CAAC,CAAA;AAEF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/router.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { HttpRouter } from "@effect/platform";
|
|
2
2
|
import { FileSystem, Path } from "@effect/platform";
|
|
3
3
|
import type { AnyCollectionDef } from "@gettersethya/mira-client";
|
|
4
|
-
|
|
5
|
-
export declare function makeDashboardRouter(_collections: ReadonlyArray<AnyCollectionDef>): HttpRouter.HttpRouter<never, CollectionService | AuthService | FileSystem.FileSystem | Path.Path | AppConfig>;
|
|
4
|
+
export declare function makeDashboardRouter(_collections: ReadonlyArray<AnyCollectionDef>): HttpRouter.HttpRouter<never, import("@gettersethya/mira").CollectionService | import("@gettersethya/mira").AuthService | FileSystem.FileSystem | Path.Path | import("@gettersethya/mira").AppConfig | import("@gettersethya/mira").CronService>;
|
|
6
5
|
//# sourceMappingURL=router.d.ts.map
|
package/dist/src/router.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAyC,MAAM,kBAAkB,CAAA;AACpF,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAyC,MAAM,kBAAkB,CAAA;AACpF,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AA0GjE,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,aAAa,CAAC,gBAAgB,CAAC,mPAYhF"}
|
package/dist/src/router.js
CHANGED
|
@@ -5,8 +5,8 @@ import { bootstrapStatusRoute } from "./api/bootstrap-status.js";
|
|
|
5
5
|
import { registerRoute } from "./api/register.js";
|
|
6
6
|
import { createSuperadminRoute, listSuperadminsRoute, deleteSuperadminRoute } from "./api/superadmin.js";
|
|
7
7
|
import { configRoute } from "./api/config.js";
|
|
8
|
-
import {
|
|
9
|
-
import { DashboardUnauthorizedError } from "./api/auth.js";
|
|
8
|
+
import { cronsRoute, cronRunNowRoute } from "./api/crons.js";
|
|
9
|
+
import { DashboardUnauthorizedError, requireDashboardAuth } from "./api/auth.js";
|
|
10
10
|
function makeContentType(ext) {
|
|
11
11
|
const types = {
|
|
12
12
|
".html": "text/html",
|
|
@@ -22,7 +22,7 @@ function makeContentType(ext) {
|
|
|
22
22
|
};
|
|
23
23
|
return types[ext] ?? "application/octet-stream";
|
|
24
24
|
}
|
|
25
|
-
function wrapRoute(effect) {
|
|
25
|
+
function wrapRoute(operation, effect) {
|
|
26
26
|
return Effect.catchAllCause(effect, (cause) => {
|
|
27
27
|
const failure = Cause.failureOption(cause);
|
|
28
28
|
if (Option.isSome(failure)) {
|
|
@@ -32,10 +32,32 @@ function wrapRoute(effect) {
|
|
|
32
32
|
return Effect.succeed(HttpServerResponse.unsafeJson({ error: "bad_request" }, { status: 400 }));
|
|
33
33
|
}
|
|
34
34
|
return Effect.succeed(HttpServerResponse.unsafeJson({ error: "internal" }, { status: 500 }));
|
|
35
|
-
});
|
|
35
|
+
}).pipe(Effect.withSpan("http.handler", { kind: "server", attributes: { operation } }));
|
|
36
|
+
}
|
|
37
|
+
function wrapAuthRoute(operation, effect) {
|
|
38
|
+
return Effect.gen(function* () {
|
|
39
|
+
const authResult = yield* requireDashboardAuth.pipe(Effect.catchTag("DashboardUnauthorizedError", () => Effect.succeed(null)));
|
|
40
|
+
if (authResult === null) {
|
|
41
|
+
return HttpServerResponse.unsafeJson({ error: "unauthorized" }, { status: 401 });
|
|
42
|
+
}
|
|
43
|
+
yield* Effect.currentSpan.pipe(Effect.tap((span) => Effect.sync(() => {
|
|
44
|
+
span.attribute("auth.collection", authResult.col);
|
|
45
|
+
const parent = span.parent;
|
|
46
|
+
if (Option.isSome(parent) && parent.value._tag === "Span") {
|
|
47
|
+
parent.value.attribute("auth.collection", authResult.col);
|
|
48
|
+
}
|
|
49
|
+
})), Effect.ignore);
|
|
50
|
+
return yield* Effect.catchAllCause(effect, (cause) => {
|
|
51
|
+
const failure = Cause.failureOption(cause);
|
|
52
|
+
if (Option.isSome(failure)) {
|
|
53
|
+
return Effect.succeed(HttpServerResponse.unsafeJson({ error: "bad_request" }, { status: 400 }));
|
|
54
|
+
}
|
|
55
|
+
return Effect.succeed(HttpServerResponse.unsafeJson({ error: "internal" }, { status: 500 }));
|
|
56
|
+
});
|
|
57
|
+
}).pipe(Effect.withSpan("http.handler", { kind: "server", attributes: { operation } }));
|
|
36
58
|
}
|
|
37
59
|
function makeDashboardSpaRoute() {
|
|
38
|
-
const spaHandler = wrapRoute(Effect.gen(function* () {
|
|
60
|
+
const spaHandler = wrapRoute("dashboard_spa", Effect.gen(function* () {
|
|
39
61
|
const fs = yield* FileSystem.FileSystem;
|
|
40
62
|
const path = yield* Path.Path;
|
|
41
63
|
const req = yield* HttpServerRequest.HttpServerRequest;
|
|
@@ -61,6 +83,6 @@ function makeDashboardSpaRoute() {
|
|
|
61
83
|
return HttpRouter.empty.pipe(HttpRouter.get("/_dashboard", spaHandler), HttpRouter.get("/_dashboard/*", spaHandler));
|
|
62
84
|
}
|
|
63
85
|
export function makeDashboardRouter(_collections) {
|
|
64
|
-
return HttpRouter.empty.pipe(HttpRouter.get("/_dashboard/api/bootstrap-status", wrapRoute(bootstrapStatusRoute)), HttpRouter.post("/_dashboard/api/register", wrapRoute(registerRoute)), HttpRouter.post("/_dashboard/api/
|
|
86
|
+
return HttpRouter.empty.pipe(HttpRouter.get("/_dashboard/api/bootstrap-status", wrapRoute("bootstrap_status", bootstrapStatusRoute)), HttpRouter.post("/_dashboard/api/register", wrapRoute("register", registerRoute)), HttpRouter.post("/_dashboard/api/superadmin/create", wrapAuthRoute("superadmin_create", createSuperadminRoute)), HttpRouter.get("/_dashboard/api/superadmin", wrapAuthRoute("superadmin_list", listSuperadminsRoute)), HttpRouter.del("/_dashboard/api/superadmin/:id", wrapAuthRoute("superadmin_delete", deleteSuperadminRoute)), HttpRouter.get("/_dashboard/api/config", wrapAuthRoute("config", configRoute)), HttpRouter.get("/_dashboard/api/crons", wrapAuthRoute("crons_list", cronsRoute)), HttpRouter.post("/_dashboard/api/crons/:name/run", wrapAuthRoute("crons_run", cronRunNowRoute)), HttpRouter.concat(makeDashboardSpaRoute()));
|
|
65
87
|
}
|
|
66
88
|
//# sourceMappingURL=router.js.map
|
package/dist/src/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACpF,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/router.ts"],"names":[],"mappings":"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"}
|
package/dist/src/superadmin.d.ts
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export declare const SuperAdminCollection: import("@gettersethya/mira-client").AuthCollectionBuilder<{
|
|
2
|
+
name: import("@gettersethya/mira-client").FieldDef & {
|
|
3
|
+
kind: "text";
|
|
4
|
+
} & {
|
|
5
|
+
default: string;
|
|
6
|
+
} & {
|
|
7
|
+
error?: (kind: import("@gettersethya/mira-client").TextConstraintKind) => string | undefined;
|
|
8
|
+
} & {
|
|
9
|
+
view(): import("@gettersethya/mira-client").FieldDef & {
|
|
10
|
+
kind: "text";
|
|
11
|
+
} & {
|
|
12
|
+
default: string;
|
|
13
|
+
} & {
|
|
14
|
+
error?: (kind: import("@gettersethya/mira-client").TextConstraintKind) => string | undefined;
|
|
15
|
+
} & {
|
|
16
|
+
viewOnly: true;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
}>;
|
|
3
20
|
export declare function getRegisterToken(): string;
|
|
4
21
|
export declare function setRegisterToken(token: string): void;
|
|
5
22
|
export declare function generateRegisterToken(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"superadmin.d.ts","sourceRoot":"","sources":["../../src/superadmin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"superadmin.d.ts","sourceRoot":"","sources":["../../src/superadmin.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;EAQ9B,CAAA;AAIH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAI9C"}
|
package/dist/src/superadmin.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { AuthCollection } from "@gettersethya/mira-client";
|
|
2
|
-
export const SuperAdminCollection = AuthCollection.define("_superadmin", {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { AuthCollection, Field } from "@gettersethya/mira-client";
|
|
2
|
+
export const SuperAdminCollection = AuthCollection.define("_superadmin", {
|
|
3
|
+
name: Field.text({ default: "" })
|
|
4
|
+
}).rules((R) => ({
|
|
5
|
+
list: R.authCollection().eq(R.literal("_superadmin")),
|
|
6
|
+
view: R.authCollection().eq(R.literal("_superadmin")),
|
|
5
7
|
create: R.public(),
|
|
6
|
-
update: R.
|
|
7
|
-
delete: R.
|
|
8
|
+
update: R.authCollection().eq(R.literal("_superadmin")),
|
|
9
|
+
delete: R.authCollection().eq(R.literal("_superadmin"))
|
|
8
10
|
}));
|
|
9
11
|
let _registerToken = "";
|
|
10
12
|
export function getRegisterToken() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"superadmin.js","sourceRoot":"","sources":["../../src/superadmin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"superadmin.js","sourceRoot":"","sources":["../../src/superadmin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAEjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,cAAc,CAAC,MAAM,CAAC,aAAa,EAAE;IACvE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;CAClC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACf,IAAI,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACrD,IAAI,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACrD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,MAAM,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACvD,MAAM,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;CACxD,CAAC,CAAC,CAAA;AAEH,IAAI,cAAc,GAAG,EAAE,CAAA;AAEvB,MAAM,UAAU,gBAAgB;IAC9B,OAAO,cAAc,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,cAAc,GAAG,KAAK,CAAA;AACxB,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAA;IAC9B,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;IACtC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AACzC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gettersethya/mira-dashboard",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.13",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Admin dashboard plugin for Mira",
|
|
6
6
|
"author": "Getter Sethya",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"@tanstack/svelte-table": "^8.21.3",
|
|
21
21
|
"@tanstack/table-core": "^8.21.3",
|
|
22
22
|
"jose": "^6.2.3",
|
|
23
|
-
"@gettersethya/mira": "0.1.0-alpha.
|
|
24
|
-
"@gettersethya/mira
|
|
23
|
+
"@gettersethya/mira-client": "0.1.0-alpha.13",
|
|
24
|
+
"@gettersethya/mira": "0.1.0-alpha.13"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
27
|
"effect": ">=3.21"
|