@ibgib/web-gib 0.0.63 → 0.0.65
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 +4 -0
- package/dist/AUTO-GENERATED-version.d.mts +1 -1
- package/dist/AUTO-GENERATED-version.mjs +1 -1
- package/dist/api/commands/ibgib/get-ibgibs.mjs +4 -4
- package/dist/api/commands/ibgib/get-ibgibs.mjs.map +1 -1
- package/dist/identity/device-delegate-helper.mjs +5 -5
- package/dist/identity/device-delegate-helper.mjs.map +1 -1
- package/dist/identity/keystone-sync-service.mjs +3 -3
- package/dist/identity/keystone-sync-service.mjs.map +1 -1
- package/dist/index.d.mts +4 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +6 -0
- package/dist/index.mjs.map +1 -1
- package/dist/storage/storage-helpers.web.mjs +1 -1
- package/dist/storage/storage-helpers.web.mjs.map +1 -1
- package/dist/ui/component/identity/add-device/add-device.d.mts.map +1 -1
- package/dist/ui/component/identity/add-device/add-device.mjs +1 -1
- package/dist/ui/component/identity/add-device/add-device.mjs.map +1 -1
- package/dist/ui/component/identity/identity-header/identity-header.d.mts.map +1 -1
- package/dist/ui/component/identity/identity-header/identity-header.mjs +4 -4
- package/dist/ui/component/identity/identity-header/identity-header.mjs.map +1 -1
- package/dist/ui/component/identity/keystone-details/keystone-details.mjs +2 -2
- package/dist/ui/component/identity/keystone-details/keystone-details.mjs.map +1 -1
- package/dist/ui/component/privacy-policy/index.d.mts +11 -0
- package/dist/ui/component/privacy-policy/index.d.mts.map +1 -0
- package/dist/ui/component/privacy-policy/index.mjs +16 -0
- package/dist/ui/component/privacy-policy/index.mjs.map +1 -0
- package/dist/ui/component/privacy-policy/privacy-policy.css +263 -0
- package/dist/ui/component/privacy-policy/privacy-policy.d.mts +46 -0
- package/dist/ui/component/privacy-policy/privacy-policy.d.mts.map +1 -0
- package/dist/ui/component/privacy-policy/privacy-policy.html +27 -0
- package/dist/ui/component/privacy-policy/privacy-policy.mjs +128 -0
- package/dist/ui/component/privacy-policy/privacy-policy.mjs.map +1 -0
- package/dist/ui/ui-constants.d.mts +4 -0
- package/dist/ui/ui-constants.d.mts.map +1 -1
- package/dist/ui/ui-constants.mjs +6 -0
- package/dist/ui/ui-constants.mjs.map +1 -1
- package/dist/witness/agent/gemini/gemini-helpers.mjs +4 -4
- package/dist/witness/agent/gemini/gemini-helpers.mjs.map +1 -1
- package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-constants.d.mts +7 -0
- package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-constants.d.mts.map +1 -0
- package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-constants.mjs +7 -0
- package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-constants.mjs.map +1 -0
- package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-types.d.mts +24 -0
- package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-types.d.mts.map +1 -0
- package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-types.mjs +23 -0
- package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-types.mjs.map +1 -0
- package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.d.mts +85 -0
- package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.d.mts.map +1 -0
- package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.mjs +343 -0
- package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.mjs.map +1 -0
- package/package.json +5 -5
- package/src/AUTO-GENERATED-version.mts +1 -1
- package/src/api/commands/ibgib/get-ibgibs.mts +4 -4
- package/src/helpers.mts +1 -1
- package/src/helpers.web.respec.mts +41 -10
- package/src/identity/device-delegate-helper.mts +5 -5
- package/src/identity/keystone-sync-service.mts +3 -3
- package/src/index.mts +8 -0
- package/src/storage/storage-helpers.web.mts +1 -1
- package/src/ui/component/identity/add-device/add-device.mts +5 -4
- package/src/ui/component/identity/identity-header/identity-header.mts +4 -3
- package/src/ui/component/identity/keystone-details/keystone-details.mts +2 -2
- package/src/ui/component/privacy-policy/index.mts +18 -0
- package/src/ui/component/privacy-policy/privacy-policy.css +263 -0
- package/src/ui/component/privacy-policy/privacy-policy.html +27 -0
- package/src/ui/component/privacy-policy/privacy-policy.mts +168 -0
- package/src/ui/ui-constants.mts +7 -0
- package/src/witness/agent/gemini/gemini-helpers.mts +4 -4
- package/src/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-constants.mts +8 -0
- package/src/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-types.mts +53 -0
- package/src/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.mts +424 -0
- package/src/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.respec.mts +305 -0
- package/tools/auto-generated-agent-skills/skills/ibgib-create-app/SKILL.md +65 -39
- package/tools/auto-generated-agent-skills/skills/ibgib-create-client-app/SKILL.md +51 -0
- package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/SKILL.md +26 -22
- package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/generate-id.js +1 -1
- package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-witness → ibgib-create-client-app-witness}/SKILL.md +11 -7
- package/tools/auto-generated-agent-skills/skills/ibgib-create-client-identity/SKILL.md +78 -0
- package/tools/auto-generated-agent-skills/skills/ibgib-create-client-shell/SKILL.md +42 -0
- package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-server → ibgib-create-server-app}/SKILL.md +6 -6
- package/tools/auto-generated-agent-skills/skills/ibgib-create-server-app/templates/Dockerfile.template +14 -0
- package/tools/auto-generated-agent-skills/skills/ibgib-create-server-app/templates/docker-compose.yml.template +33 -0
- package/tools/auto-generated-agent-skills/skills/ibgib-create-server-app/templates/server.mts.template +97 -0
- package/tools/auto-generated-agent-skills/skills/ibgib-create-server-app/templates/tsconfig.server.json.template +29 -0
- package/tools/auto-generated-agent-skills/skills/ibgib-implementation-plan/SKILL.md +11 -5
- package/tsconfig.json +2 -2
- package/dist/api/commands/command-service.respec.d.mts +0 -7
- package/dist/api/commands/command-service.respec.d.mts.map +0 -1
- package/dist/api/commands/command-service.respec.mjs +0 -66
- package/dist/api/commands/command-service.respec.mjs.map +0 -1
- package/dist/assumptions.respec.d.mts +0 -2
- package/dist/assumptions.respec.d.mts.map +0 -1
- package/dist/assumptions.respec.mjs +0 -41
- package/dist/assumptions.respec.mjs.map +0 -1
- package/dist/helpers.web.respec.d.mts +0 -2
- package/dist/helpers.web.respec.d.mts.map +0 -1
- package/dist/helpers.web.respec.mjs +0 -12
- package/dist/helpers.web.respec.mjs.map +0 -1
- package/dist/identity/device-delegate.respec.d.mts +0 -2
- package/dist/identity/device-delegate.respec.d.mts.map +0 -1
- package/dist/identity/device-delegate.respec.mjs +0 -106
- package/dist/identity/device-delegate.respec.mjs.map +0 -1
- package/dist/identity/passkey.respec.d.mts +0 -2
- package/dist/identity/passkey.respec.d.mts.map +0 -1
- package/dist/identity/passkey.respec.mjs +0 -169
- package/dist/identity/passkey.respec.mjs.map +0 -1
- package/dist/spec-helper.node.respec.d.mts +0 -13
- package/dist/spec-helper.node.respec.d.mts.map +0 -1
- package/dist/spec-helper.node.respec.mjs +0 -50
- package/dist/spec-helper.node.respec.mjs.map +0 -1
- package/dist/util/device-helper.respec.d.mts +0 -2
- package/dist/util/device-helper.respec.d.mts.map +0 -1
- package/dist/util/device-helper.respec.mjs +0 -83
- package/dist/util/device-helper.respec.mjs.map +0 -1
- package/tools/auto-generated-agent-skills/skills/ibgib-create-shell/SKILL.md +0 -40
- /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/generate-version-file.js +0 -0
- /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/templates/bootstrap.mts.template +0 -0
- /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/templates/constants.mts.template +0 -0
- /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/templates/declarations.d.ts.template +0 -0
- /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/templates/helpers.web.mts.template +0 -0
- /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/templates/index.html.template +0 -0
- /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/templates/index.mts.template +0 -0
- /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/templates/script.mts.template +0 -0
- /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/templates/types.mts.template +0 -0
- /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-witness → ibgib-create-client-app-witness}/templates/api/function-infos.web.mts.template +0 -0
- /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-witness → ibgib-create-client-app-witness}/templates/witness/app/app-v1.mts.template +0 -0
- /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-witness → ibgib-create-client-app-witness}/templates/witness/app/constants.mts.template +0 -0
- /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-witness → ibgib-create-client-app-witness}/templates/witness/app/helper.mts.template +0 -0
- /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-witness → ibgib-create-client-app-witness}/templates/witness/app/types.mts.template +0 -0
- /package/tools/auto-generated-agent-skills/skills/{ibgib-create-shell → ibgib-create-client-shell}/templates/ui/shell/shell-constants.mts.template +0 -0
- /package/tools/auto-generated-agent-skills/skills/{ibgib-create-shell → ibgib-create-client-shell}/templates/ui/shell/shell-service.mts.template +0 -0
- /package/tools/auto-generated-agent-skills/skills/{ibgib-create-shell → ibgib-create-client-shell}/templates/ui/shell/shell-types.mts.template +0 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ibgib-create-client-identity
|
|
3
|
+
description: Scaffolds drop-in Keystone identity UI Web Components registration and remote Hub sync wiring for an ibgib client application.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill: ibgib-create-client-identity
|
|
7
|
+
|
|
8
|
+
## What This Skill Does
|
|
9
|
+
|
|
10
|
+
This skill wires prebuilt Keystone identity UI components and symmetric peer sync into an `ibgib` client application. Downstream applications do not need to build custom authentication screens, passkey genesis flows, or device management dialogs.
|
|
11
|
+
|
|
12
|
+
This skill automates:
|
|
13
|
+
1. **Component Registration**: Registering all native Web Components from `@ibgib/web-gib/dist/ui/component/identity/index.mjs` in `bootstrap.mts`.
|
|
14
|
+
2. **HTML Integration**: Embedding `<ibgib-identity-manager>`, `<ibgib-keystone-creator>`, `<ibgib-keystone-details>`, or `<ibgib-identity-header>` into the application shell.
|
|
15
|
+
3. **Hub Sync Wiring**: Initializing `SyncWebsocketPeer_V1` and `KeystoneSyncService` using `APP_CONFIG.hubUrl`.
|
|
16
|
+
|
|
17
|
+
For complete architectural details, refer to [`docs/IBGIB_CLIENT_APPS_GUIDE.md`](../../../docs/IBGIB_CLIENT_APPS_GUIDE.md).
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Pre-Requisites
|
|
22
|
+
- Ensure `ibgib-create-client-app-core` and `ibgib-create-client-app-witness` have been scaffolded.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Integration Steps
|
|
27
|
+
|
|
28
|
+
### 1. Register Components in `bootstrap.mts`
|
|
29
|
+
Add the following import and invocation to `src/bootstrap.mts` (or `src/client/bootstrap.mts`):
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
import { registerIdentityComponents } from '@ibgib/web-gib/dist/ui/component/identity/index.mjs';
|
|
33
|
+
|
|
34
|
+
// Inside your bootstrap / init function:
|
|
35
|
+
registerIdentityComponents();
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 2. Embed Identity Elements in DOM / Shell Template
|
|
39
|
+
Add identity components to `index.html` or inside your main component's HTML template:
|
|
40
|
+
|
|
41
|
+
```html
|
|
42
|
+
<!-- Header Identity Badge -->
|
|
43
|
+
<header class="app-header">
|
|
44
|
+
<h1>{{APP_HUMAN_NAME}}</h1>
|
|
45
|
+
<ibgib-identity-header></ibgib-identity-header>
|
|
46
|
+
</header>
|
|
47
|
+
|
|
48
|
+
<!-- Main Identity View (shown in Settings or Auth Modal) -->
|
|
49
|
+
<section id="identity-section" class="hidden">
|
|
50
|
+
<ibgib-identity-manager></ibgib-identity-manager>
|
|
51
|
+
</section>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 3. Initialize Remote Hub Sync Service
|
|
55
|
+
In `bootstrap.mts` (or an `identity-sync.mts` helper), wire up symmetric sync:
|
|
56
|
+
|
|
57
|
+
```typescript
|
|
58
|
+
import { KeystoneSyncService, SyncWebsocketPeer_V1 } from '@ibgib/web-gib';
|
|
59
|
+
import { APP_CONFIG } from './config.mjs';
|
|
60
|
+
|
|
61
|
+
export async function initHubSync({ metaspace, localSpace }: { metaspace: any, localSpace: any }) {
|
|
62
|
+
const wsUrl = APP_CONFIG.hubUrl.replace(/^http/, 'ws') + '/api/sync';
|
|
63
|
+
|
|
64
|
+
const peerWitness = new SyncWebsocketPeer_V1({
|
|
65
|
+
url: wsUrl,
|
|
66
|
+
metaspace,
|
|
67
|
+
localSpace
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
const syncService = new KeystoneSyncService({
|
|
71
|
+
peerWitness,
|
|
72
|
+
metaspace,
|
|
73
|
+
localSpace
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
return syncService;
|
|
77
|
+
}
|
|
78
|
+
```
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ibgib-create-client-shell
|
|
3
|
+
description: Scaffolds the foundational UI Shell for an ibgib client app. Generates the shell service, constants, and types required for UI management and component registration.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill: ibgib-create-client-shell
|
|
7
|
+
|
|
8
|
+
## What This Skill Does
|
|
9
|
+
|
|
10
|
+
This skill scaffolds the UI Shell architecture for an `ibgib` client application. The Shell Service acts as a singleton on `globalThis` that manages DOM interactions, handles shell-specific events (e.g. burger menus, window resizing), and coordinates UI activation once the Metaspace and App Witness are initialized.
|
|
11
|
+
|
|
12
|
+
For full architectural context, refer to [`docs/IBGIB_CLIENT_APPS_GUIDE.md`](../../../docs/IBGIB_CLIENT_APPS_GUIDE.md).
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Parameters (Tokens)
|
|
17
|
+
- `{{APP_NAME}}`: kebab-case (e.g. `test-app`)
|
|
18
|
+
- `{{APP_DIR_NAME}}`: folder name (e.g. `test-app`)
|
|
19
|
+
- `{{APP_CLASSNAME_PREFIX}}`: PascalCase (e.g. `TestApp`)
|
|
20
|
+
- `{{APP_CLASSNAME}}`: e.g. `TestAppApp_V1`
|
|
21
|
+
- `{{APP_HUMAN_NAME}}`: e.g. `Test App`
|
|
22
|
+
- `{{APP_VAR_NAME}}`: camelCase (e.g. `testApp`)
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Output Files
|
|
27
|
+
The skill generates:
|
|
28
|
+
1. `src/ui/shell/{{APP_DIR_NAME}}-shell-service.mts` (or `src/client/ui/shell/...`)
|
|
29
|
+
2. `src/ui/shell/{{APP_DIR_NAME}}-shell-constants.mts`
|
|
30
|
+
3. `src/ui/shell/{{APP_DIR_NAME}}-shell-types.mts`
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Usage Instructions
|
|
35
|
+
1. Ensure the `src/ui/shell` (or `src/client/ui/shell`) directory exists.
|
|
36
|
+
2. Generate the shell service, constants, and types from templates in `templates/ui/shell/`.
|
|
37
|
+
3. Update `script.mts` to import and call the shell factory:
|
|
38
|
+
```typescript
|
|
39
|
+
import { get{{APP_CLASSNAME_PREFIX}}ShellSvc } from "./ui/shell/{{APP_DIR_NAME}}-shell-service.mjs";
|
|
40
|
+
get{{APP_CLASSNAME_PREFIX}}ShellSvc();
|
|
41
|
+
```
|
|
42
|
+
4. Update `bootstrap.mts` to invoke `get{{APP_CLASSNAME_PREFIX}}ShellSvc().onEngineReady()` inside the `onReady` lifecycle hook.
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: ibgib-create-app
|
|
2
|
+
name: ibgib-create-server-app
|
|
3
3
|
description: Scaffolds the backend Node.js server for an ibgib full-stack application using serve-gib from @ibgib/node-gib, including WebSocket sync upgrade, Traefik Docker Compose, and server TypeScript configuration.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Skill: ibgib-create-app
|
|
6
|
+
# Skill: ibgib-create-server-app
|
|
7
7
|
|
|
8
8
|
## What This Skill Does
|
|
9
9
|
|
|
10
|
-
Generates the backend server infrastructure for a full-stack
|
|
10
|
+
Generates the backend server infrastructure for an `ibgib` server application or the server backend of a full-stack project. This includes:
|
|
11
11
|
- **`src/server/server.mts`**: Node.js HTTP/WebSocket server utilizing `serve-gib`, `getStandardServeGibHandlers()`, and `SyncUpgradeHandler`.
|
|
12
12
|
- **`tsconfig.server.json`**: TypeScript compiler configuration targeted for Node.js ESNext.
|
|
13
13
|
- **`Dockerfile`**: Lightweight Alpine container packaging the bundled server and static client SPA.
|
|
14
|
-
- **`docker-compose.yml`**: Local multi-container orchestration behind the Traefik reverse proxy with automatic local HTTPS.
|
|
14
|
+
- **`docker-compose.yml`**: Local multi-container orchestration behind the Traefik reverse proxy with automatic local HTTPS (`*.localhost` and `local.ibgib.space` SSO loopback).
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
For architectural context, refer to [`docs/IBGIB_SERVER_APPS_GUIDE.md`](../../../docs/IBGIB_SERVER_APPS_GUIDE.md).
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
@@ -34,7 +34,7 @@ This skill is invoked during the scaffolding of **Full-Stack (Archetype A)** app
|
|
|
34
34
|
## Generation Steps
|
|
35
35
|
|
|
36
36
|
### 1. Confirm token values
|
|
37
|
-
Derive tokens from the developer's inputs and generate fresh UUIDs using `node .agents/skills/ibgib-create-app-core/generate-id.js`.
|
|
37
|
+
Derive tokens from the developer's inputs and generate fresh UUIDs using `node .agents/skills/ibgib-create-client-app-core/generate-id.js`.
|
|
38
38
|
|
|
39
39
|
### 2. Generate files
|
|
40
40
|
Apply token substitutions to templates in `templates/` and write to the target application directory:
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
FROM node:22-alpine
|
|
2
|
+
WORKDIR /app
|
|
3
|
+
|
|
4
|
+
# The server is bundled into a single zero-dependency ESM file via esbuild
|
|
5
|
+
COPY dist/server ./server
|
|
6
|
+
|
|
7
|
+
# Client SPA (served as static files by the node server)
|
|
8
|
+
COPY dist/client ./client
|
|
9
|
+
|
|
10
|
+
ENV PORT={{PORT}}
|
|
11
|
+
ENV DATA_DIR=/data/{{APP_DIR_NAME}}-space
|
|
12
|
+
|
|
13
|
+
EXPOSE {{PORT}}
|
|
14
|
+
CMD ["node", "server/server.mjs"]
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
version: '3.8'
|
|
2
|
+
|
|
3
|
+
services:
|
|
4
|
+
# ==========================================
|
|
5
|
+
# {{APP_NAME_UPPER}} SERVICE
|
|
6
|
+
# ==========================================
|
|
7
|
+
{{APP_DIR_NAME}}:
|
|
8
|
+
build: ./apps/{{APP_DIR_NAME}}
|
|
9
|
+
restart: unless-stopped
|
|
10
|
+
volumes:
|
|
11
|
+
- ./apps/{{APP_DIR_NAME}}/.data:/data/{{APP_DIR_NAME}}-space
|
|
12
|
+
- ./apps/{{APP_DIR_NAME}}/dist/client:/app/client
|
|
13
|
+
- ./apps/{{APP_DIR_NAME}}/dist/server:/app/server
|
|
14
|
+
environment:
|
|
15
|
+
- PORT={{PORT}}
|
|
16
|
+
- DATA_DIR=/data/{{APP_DIR_NAME}}-space
|
|
17
|
+
- KEYSTONE_PROFILE_SOVEREIGN_PRIMARY=${KEYSTONE_PROFILE_SOVEREIGN_PRIMARY}
|
|
18
|
+
- KEYSTONE_PROFILE_SOVEREIGN_SYNC=${KEYSTONE_PROFILE_SOVEREIGN_SYNC}
|
|
19
|
+
- KEYSTONE_PROFILE_CUSTODIAN_PRIMARY=${KEYSTONE_PROFILE_CUSTODIAN_PRIMARY}
|
|
20
|
+
- KEYSTONE_PROFILE_CUSTODIAN_SYNC=${KEYSTONE_PROFILE_CUSTODIAN_SYNC}
|
|
21
|
+
- EMAIL_MODE=${EMAIL_MODE}
|
|
22
|
+
- SSO_SERVER_KDF_SECRET=${SSO_SERVER_KDF_SECRET}
|
|
23
|
+
- SESSION_SECRET=${SESSION_SECRET}
|
|
24
|
+
- GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}
|
|
25
|
+
- GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET}
|
|
26
|
+
- GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID}
|
|
27
|
+
- GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET}
|
|
28
|
+
labels:
|
|
29
|
+
- "traefik.enable=true"
|
|
30
|
+
- "traefik.http.routers.{{APP_DIR_NAME}}.rule=Host(`{{LOCAL_DOMAIN}}`) || Host(`local.ibgib.space`)"
|
|
31
|
+
- "traefik.http.routers.{{APP_DIR_NAME}}.entrypoints=websecure"
|
|
32
|
+
- "traefik.http.routers.{{APP_DIR_NAME}}.tls=true"
|
|
33
|
+
- "traefik.http.services.{{APP_DIR_NAME}}.loadbalancer.server.port={{PORT}}"
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module server
|
|
3
|
+
*
|
|
4
|
+
* Native Node.js HTTP & WebSocket server for {{APP_NAME}} — using serve-gib from @ibgib/node-gib.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { createServer } from 'node:http';
|
|
8
|
+
import { join, dirname } from 'node:path';
|
|
9
|
+
import { fileURLToPath } from 'node:url';
|
|
10
|
+
|
|
11
|
+
import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
12
|
+
import {
|
|
13
|
+
ServeGib_V1,
|
|
14
|
+
ErrorHandler,
|
|
15
|
+
SyncUpgradeHandler,
|
|
16
|
+
canHandleWsUpgrade,
|
|
17
|
+
handleWsEchoUpgrade,
|
|
18
|
+
getStandardServeGibHandlers,
|
|
19
|
+
} from '@ibgib/node-gib/dist/serve-gib/index.mjs';
|
|
20
|
+
|
|
21
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
22
|
+
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
// Config
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
|
|
27
|
+
const PORT = parseInt(process.env.PORT ?? '{{PORT}}', 10);
|
|
28
|
+
const DATA_DIR = process.env.DATA_DIR ?? join(__dirname, '{{DATA_DIR_REL}}');
|
|
29
|
+
const CLIENT_DIR = join(__dirname, '../client');
|
|
30
|
+
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
// Main
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
|
|
35
|
+
async function main(): Promise<void> {
|
|
36
|
+
const lc = '[{{APP_NAME}} server]';
|
|
37
|
+
try {
|
|
38
|
+
console.log(`${lc} starting...`);
|
|
39
|
+
console.log(`${lc} dataDir: ${DATA_DIR}`);
|
|
40
|
+
|
|
41
|
+
const custodianPrimaryProfile = (process.env.KEYSTONE_PROFILE_CUSTODIAN_PRIMARY || '').trim();
|
|
42
|
+
if (!custodianPrimaryProfile) {
|
|
43
|
+
throw new Error(`${lc} Fatal Error: KEYSTONE_PROFILE_CUSTODIAN_PRIMARY environment variable is missing or blank. (E: {{APP_UUID}})`);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const isProdEnv = process.env.NODE_ENV === 'production';
|
|
47
|
+
if (isProdEnv && !custodianPrimaryProfile.endsWith('.prod')) {
|
|
48
|
+
throw new Error(`${lc} Security Violation: Non-production keystone profile '${custodianPrimaryProfile}' is prohibited when NODE_ENV=production. (E: {{APP_UUID}})`);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
console.log(`${lc} KEYSTONE_PROFILE_CUSTODIAN_PRIMARY: ${custodianPrimaryProfile} (I: {{APP_UUID}})`);
|
|
52
|
+
|
|
53
|
+
if (custodianPrimaryProfile.endsWith('.dev')) {
|
|
54
|
+
console.warn(`\n==========================================================\n⚠️ WARNING: CUSTODIAN KEYSTONE PROFILE IS SET TO DEVELOPMENT ('${custodianPrimaryProfile}')!\nCUSTODIAL KEYSTONES WILL USE LOW-SECURITY DEV PARAMETERS.\nFOR LOCAL TESTING ONLY — DO NOT USE FOR REAL SECRETS OR PRODUCTION DATA!\n==========================================================\n (W: {{APP_UUID}})`);
|
|
55
|
+
} else if (custodianPrimaryProfile.endsWith('.staging')) {
|
|
56
|
+
console.info(`${lc} ℹ️ STAGING CUSTODIAN KEYSTONE PROFILE ACTIVE ('${custodianPrimaryProfile}')`);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const syncUpgradeHandler = new SyncUpgradeHandler();
|
|
60
|
+
|
|
61
|
+
// Initialize serve-gib using standard handler preset from @ibgib/node-gib
|
|
62
|
+
const serveGib = new ServeGib_V1({
|
|
63
|
+
port: PORT,
|
|
64
|
+
dataDir: DATA_DIR,
|
|
65
|
+
handlers: getStandardServeGibHandlers({ clientDir: CLIENT_DIR }),
|
|
66
|
+
errorHandler: new ErrorHandler()
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
const server = createServer(async (req, res) => {
|
|
70
|
+
await serveGib.handleRequest(req, res);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
// WebSocket upgrade handling for symmetric sync
|
|
74
|
+
server.on('upgrade', async (req, socket, head) => {
|
|
75
|
+
const reqCtx = await serveGib.prepareContext(req);
|
|
76
|
+
|
|
77
|
+
const isSync = await syncUpgradeHandler.handleUpgrade(reqCtx, socket as any, head);
|
|
78
|
+
|
|
79
|
+
if (!isSync && canHandleWsUpgrade(req)) {
|
|
80
|
+
handleWsEchoUpgrade(req, socket as any, head);
|
|
81
|
+
} else if (!isSync) {
|
|
82
|
+
socket.write('HTTP/1.1 404 Not Found\r\n\r\n');
|
|
83
|
+
socket.destroy();
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
server.listen(PORT, '0.0.0.0', () => {
|
|
88
|
+
console.log(`${lc} listening on http://0.0.0.0:${PORT}`);
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
} catch (error) {
|
|
92
|
+
console.error(`${lc} fatal: ${extractErrorMsg(error)}`);
|
|
93
|
+
process.exit(1);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
main();
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../tsconfig.base.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"declaration": false,
|
|
5
|
+
"declarationMap": false,
|
|
6
|
+
"sourceMap": false,
|
|
7
|
+
"rootDir": "./src",
|
|
8
|
+
"composite": false,
|
|
9
|
+
"outDir": "./dist/server",
|
|
10
|
+
"module": "ESNext",
|
|
11
|
+
"lib": [
|
|
12
|
+
"ES2022",
|
|
13
|
+
"ES2023"
|
|
14
|
+
],
|
|
15
|
+
"types": ["node"]
|
|
16
|
+
},
|
|
17
|
+
"include": [
|
|
18
|
+
"src/server/**/*.ts",
|
|
19
|
+
"src/server/**/*.mts",
|
|
20
|
+
"src/server/**/*.d.ts",
|
|
21
|
+
"src/common/**/*.ts",
|
|
22
|
+
"src/common/**/*.mts"
|
|
23
|
+
],
|
|
24
|
+
"exclude": [
|
|
25
|
+
"node_modules",
|
|
26
|
+
"**/*.respec.mts",
|
|
27
|
+
"./dist/**/*"
|
|
28
|
+
]
|
|
29
|
+
}
|
|
@@ -36,7 +36,10 @@ Every `[what]_IMPLEMENTATION.md` file MUST follow this high-level structure, ada
|
|
|
36
36
|
|
|
37
37
|
## 🛠️ Build Chain & Environment Setup
|
|
38
38
|
|
|
39
|
-
* **Workspace Build Chain**:
|
|
39
|
+
* **Workspace Build Chain**:
|
|
40
|
+
* **Local Library Iteration**: When modifying code in a lower-level library (e.g. `libs/core-gib`), run its specific build and test commands (e.g. `npm run build:core-gib` and `npm run test:core-gib`).
|
|
41
|
+
* **Downstream Chain Propagation**: After local library changes pass, you MUST propagate changes to downstream dependents by running the appropriate chain build command (e.g. `npm run chain:build:core-gib` or `npm run chain:build:web-gib`).
|
|
42
|
+
* **Application Builds**: Build and run downstream applications with `npm run build:[app]` or `npm run watch:[app]` (e.g. `npm run build:space-gib`).
|
|
40
43
|
* **Environment Configuration**: Required `.env` variables, port settings, or hardware/OS constraints.
|
|
41
44
|
|
|
42
45
|
---
|
|
@@ -57,7 +60,7 @@ Break the work into small, incremental, independently verifiable steps:
|
|
|
57
60
|
|
|
58
61
|
### Step 1: [Component / Sub-system Name]
|
|
59
62
|
- [ ] **1.1 [Sub-task Title]**: Description of changes.
|
|
60
|
-
- Linked files: [`basename.mts`](
|
|
63
|
+
- Linked files: [`basename.mts`](relative/path/to/file.mts#L10-L30)
|
|
61
64
|
- [ ] **1.2 [Sub-task Title]**: Description of changes.
|
|
62
65
|
|
|
63
66
|
### Step 2: [Next Phase / Integration]
|
|
@@ -68,9 +71,12 @@ Break the work into small, incremental, independently verifiable steps:
|
|
|
68
71
|
## 🧪 Testing & Verification Strategy
|
|
69
72
|
|
|
70
73
|
> [!IMPORTANT]
|
|
71
|
-
> Always review and follow [`docs/RESPEC_GIB_GUIDANCE.md`](
|
|
74
|
+
> Always review and follow [`docs/RESPEC_GIB_GUIDANCE.md`](../../../docs/RESPEC_GIB_GUIDANCE.md) for respec testing patterns, including the strict use of `ifWeMight` blocks, avoiding artificial delays, and proper error handling.
|
|
72
75
|
|
|
73
|
-
|
|
76
|
+
> [!TIP]
|
|
77
|
+
> **Tester Subagents Mandate**: All test execution and log analysis should be delegated to a dedicated **Tester Subagent** spawned with the protocol in [`docs/TESTER_TEMPLATE.md`](../../../docs/TESTER_TEMPLATE.md). The tester subagent reads `RESPEC_GIB_GUIDANCE.md`, runs the canonical test command, and returns only the isolated failure points and stack traces to keep the primary conversation clean.
|
|
78
|
+
|
|
79
|
+
* **Unit & Integration Tests**: `respec-gib` test commands (`npm run test:core-gib`, `npm run test:vcs-gib`) and specific `ifWeMight` focus instructions.
|
|
74
80
|
* **Manual & E2E Checks**: Step-by-step verification steps in browser or CLI environment.
|
|
75
81
|
|
|
76
82
|
---
|
|
@@ -94,7 +100,7 @@ _note: these are not PRs proper, because we're not using git. This is just to co
|
|
|
94
100
|
|
|
95
101
|
## Best Practices & Guidelines
|
|
96
102
|
|
|
97
|
-
1. **Explicit File Links**: Always use clickable file links using
|
|
103
|
+
1. **Explicit File Links**: Always use clickable file links using relative file paths (e.g. `[filename.mts](relative/path/to/file.mts)` or `[filename.mts#L10-L20](relative/path/to/file.mts#L10-L20)`).
|
|
98
104
|
2. **Incremental Updates**: Update task checkboxes (`- [ ]` $\to$ `- [x]`) and add journal entries in real-time as tasks progress.
|
|
99
105
|
3. **Strict Casing & Naming**: Maintain consistency with `ibgib` conventions (flatcase inner tokens, kebab-case component IDs, explicit transform names like `fork`, `mut8`, `rel8`).
|
|
100
106
|
4. **Preserve Context**: When starting a new conversation prompt for a sub-task, reference the corresponding `[what]_IMPLEMENTATION.md` file so any agent can instantly regain full architectural context.
|
package/tsconfig.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-service.respec.d.mts","sourceRoot":"","sources":["../../../src/api/commands/command-service.respec.mts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module command-service respec, not quite a real respec atow (01/2025).
|
|
3
|
-
* convert later when doing better testing. for now, just import the test function
|
|
4
|
-
* and run it to test.
|
|
5
|
-
*/
|
|
6
|
-
export {};
|
|
7
|
-
// import { RenderableHandle } from '../../render/render-one-file.mjs';
|
|
8
|
-
// import { renderableCreateFunctionInfo } from './renderable/create-renderables.mjs';
|
|
9
|
-
// import { renderableDestroyFunctionInfo } from './renderable/destroy-renderable.mts';
|
|
10
|
-
// import { renderableUpdateFunctionInfo } from './renderable/update-renderable.mts';
|
|
11
|
-
// /**
|
|
12
|
-
// * @function testCommandService - A test function to demonstrate using the command service.
|
|
13
|
-
// * @returns {Promise<void>}
|
|
14
|
-
// */
|
|
15
|
-
// export async function testCommandService(): Promise<void> {
|
|
16
|
-
// console.log('>>> Starting testCommandService...');
|
|
17
|
-
// // 1. Create a renderable
|
|
18
|
-
// let createHandle: RenderableHandle | undefined;
|
|
19
|
-
// try {
|
|
20
|
-
// const renderableCreateViaCmd = renderableCreateFunctionInfo.fnViaCmd;
|
|
21
|
-
// // createHandle = (await renderableCreateViaCmd({
|
|
22
|
-
// const resCreate = await renderableCreateViaCmd(
|
|
23
|
-
// {
|
|
24
|
-
// cmd: 'Renderable',
|
|
25
|
-
// initialStates: [{
|
|
26
|
-
// isVisible: true,
|
|
27
|
-
// color: { r: 1, g: 0, b: 0, a: 1 }, // Red
|
|
28
|
-
// position: { x: 10, y: 10, z: 0 },
|
|
29
|
-
// scale: { x: 1, y: 1 },
|
|
30
|
-
// geometry: { type: 'rect', parameters: { type: 'rect', width: 50, height: 50 } },
|
|
31
|
-
// }],
|
|
32
|
-
// });
|
|
33
|
-
// createHandle = resCreate.at(0);
|
|
34
|
-
// console.log(`testCommandService: Created renderable with handle ${createHandle.uuid}`);
|
|
35
|
-
// } catch (error) {
|
|
36
|
-
// console.error('testCommandService: Error creating renderable:', error);
|
|
37
|
-
// return;
|
|
38
|
-
// }
|
|
39
|
-
// if (!createHandle) {
|
|
40
|
-
// console.error('testCommandService: Error creating renderable - handle is undefined. (E: 6548f5560b07137bd683cb713a4fcc24)');
|
|
41
|
-
// return;
|
|
42
|
-
// }
|
|
43
|
-
// // 2. Update the renderable after a short delay
|
|
44
|
-
// await new Promise(resolve => setTimeout(resolve, 2000));
|
|
45
|
-
// try {
|
|
46
|
-
// const renderableUpdateViaCmd = renderableUpdateFunctionInfo.fnViaCmd;
|
|
47
|
-
// await renderableUpdateViaCmd({
|
|
48
|
-
// handle: createHandle,
|
|
49
|
-
// updatedState: { color: { r: 0, g: 1, b: 0, a: 1 }, position: { x: 100, y: 100, z: 0 } }, // Green, moved
|
|
50
|
-
// });
|
|
51
|
-
// console.log(`testCommandService: Updated renderable with handle ${createHandle.uuid}`);
|
|
52
|
-
// } catch (error) {
|
|
53
|
-
// console.error('testCommandService: Error updating renderable:', error);
|
|
54
|
-
// }
|
|
55
|
-
// // 3. Destroy the renderable after another short delay
|
|
56
|
-
// await new Promise(resolve => setTimeout(resolve, 2000));
|
|
57
|
-
// try {
|
|
58
|
-
// const renderableDestroyViaCmd = renderableDestroyFunctionInfo.fnViaCmd;
|
|
59
|
-
// await renderableDestroyViaCmd({ handle: createHandle });
|
|
60
|
-
// console.log(`testCommandService: Destroyed renderable with handle ${createHandle.uuid}`);
|
|
61
|
-
// } catch (error) {
|
|
62
|
-
// console.error('testCommandService: Error destroying renderable:', error);
|
|
63
|
-
// }
|
|
64
|
-
// console.log('>>> Finished testCommandService.');
|
|
65
|
-
// }
|
|
66
|
-
//# sourceMappingURL=command-service.respec.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-service.respec.mjs","sourceRoot":"","sources":["../../../src/api/commands/command-service.respec.mts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,uEAAuE;AACvE,sFAAsF;AACtF,uFAAuF;AACvF,qFAAqF;AAErF,MAAM;AACN,8FAA8F;AAC9F,8BAA8B;AAC9B,MAAM;AACN,8DAA8D;AAC9D,yDAAyD;AAEzD,gCAAgC;AAChC,sDAAsD;AACtD,YAAY;AACZ,gFAAgF;AAChF,4DAA4D;AAC5D,0DAA0D;AAC1D,gBAAgB;AAChB,qCAAqC;AACrC,oCAAoC;AACpC,uCAAuC;AACvC,gEAAgE;AAChE,wDAAwD;AACxD,6CAA6C;AAC7C,uGAAuG;AACvG,sBAAsB;AACtB,kBAAkB;AAElB,0CAA0C;AAC1C,kGAAkG;AAClG,wBAAwB;AACxB,kFAAkF;AAClF,kBAAkB;AAClB,QAAQ;AAER,2BAA2B;AAC3B,uIAAuI;AACvI,kBAAkB;AAClB,QAAQ;AAER,sDAAsD;AACtD,+DAA+D;AAC/D,YAAY;AACZ,gFAAgF;AAChF,yCAAyC;AACzC,oCAAoC;AACpC,uHAAuH;AACvH,cAAc;AACd,kGAAkG;AAClG,wBAAwB;AACxB,kFAAkF;AAClF,QAAQ;AAER,6DAA6D;AAC7D,+DAA+D;AAC/D,YAAY;AACZ,kFAAkF;AAClF,mEAAmE;AACnE,oGAAoG;AACpG,wBAAwB;AACxB,oFAAoF;AACpF,QAAQ;AAER,uDAAuD;AACvD,IAAI"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assumptions.respec.d.mts","sourceRoot":"","sources":["../src/assumptions.respec.mts"],"names":[],"mappings":""}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { ifWe, iReckon, respecfully } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
|
|
2
|
-
const maam = `[${import.meta.url}]`, sir = maam;
|
|
3
|
-
/**
|
|
4
|
-
* wrapper that uses crypto.subtle under the hood (i.e. doesn't hash using ts-gib)
|
|
5
|
-
*
|
|
6
|
-
* notes:
|
|
7
|
-
*
|
|
8
|
-
* * i did in fact copy this from ts-gib though, but we're testing simply that the
|
|
9
|
-
* context (node/browser/whatever) has this since it's integral to all things ibgib.
|
|
10
|
-
*/
|
|
11
|
-
async function cryptoSubtleHash({ s, algorithm = 'SHA-256', }) {
|
|
12
|
-
let { subtle } = globalThis.crypto;
|
|
13
|
-
if (!s) {
|
|
14
|
-
throw new Error(`[${cryptoSubtleHash.name}] s is required`);
|
|
15
|
-
}
|
|
16
|
-
if (!algorithm) {
|
|
17
|
-
throw new Error(`[${cryptoSubtleHash.name}] algorithm is required`);
|
|
18
|
-
}
|
|
19
|
-
try {
|
|
20
|
-
const msgUint8 = new TextEncoder().encode(s);
|
|
21
|
-
const buffer = await subtle.digest(algorithm, msgUint8);
|
|
22
|
-
const asArray = Array.from(new Uint8Array(buffer));
|
|
23
|
-
return asArray.map(b => b.toString(16).padStart(2, '0')).join('');
|
|
24
|
-
}
|
|
25
|
-
catch (e) {
|
|
26
|
-
console.error(e.message ?? e);
|
|
27
|
-
throw e;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
await respecfully(sir, `non-ts-gib isomorphic crypto hashing`, async () => {
|
|
31
|
-
await ifWe(sir, `should digest simple string consistently using crypto.subtle directly `, async () => {
|
|
32
|
-
let h = await cryptoSubtleHash({ s: '42' });
|
|
33
|
-
iReckon(sir, h).asTo('42').isGonnaBe('73475cb40a568e8da8a045ced110137e159f890ac4da883b6b17dc651b3a8049');
|
|
34
|
-
});
|
|
35
|
-
await ifWe(sir, `should digest simple stringified ibgib consistently using crypto.subtle directly `, async () => {
|
|
36
|
-
let ibgib = { ib: 'ib', gib: 'gib' };
|
|
37
|
-
let h = await cryptoSubtleHash({ s: JSON.stringify(ibgib) }); // doesn't use ts-gib but consistent stringifying json is important
|
|
38
|
-
iReckon(sir, h).asTo('ib^gib').isGonnaBe('cbad0694a257358c044611ea1fa88ace71a01a9b8409d2354d0387d8043f7671');
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
//# sourceMappingURL=assumptions.respec.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assumptions.respec.mjs","sourceRoot":"","sources":["../src/assumptions.respec.mts"],"names":[],"mappings":"AAAA,OAAO,EACsB,IAAI,EAElB,OAAO,EAAE,WAAW,EAClC,MAAM,kDAAkD,CAAC;AAC1D,MAAM,IAAI,GAAG,IAAI,OAAO,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;AAGhD;;;;;;;GAOG;AACH,KAAK,UAAU,gBAAgB,CAAC,EAC5B,CAAC,EACD,SAAS,GAAG,SAAS,GAIxB;IACG,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC;IACnC,IAAI,CAAC,CAAC,EAAE,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,IAAI,gBAAgB,CAAC,IAAI,iBAAiB,CAAC,CAAA;IAAC,CAAC;IACvE,IAAI,CAAC,SAAS,EAAE,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,IAAI,gBAAgB,CAAC,IAAI,yBAAyB,CAAC,CAAA;IAAC,CAAC;IACvF,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,CAAC;IACZ,CAAC;AACL,CAAC;AAED,MAAM,WAAW,CAAC,GAAG,EAAE,sCAAsC,EAAE,KAAK,IAAI,EAAE;IAEtE,MAAM,IAAI,CAAC,GAAG,EAAE,wEAAwE,EAAE,KAAK,IAAI,EAAE;QACjG,IAAI,CAAC,GAAG,MAAM,gBAAgB,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,kEAAkE,CAAC,CAAC;IAC7G,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,GAAG,EAAE,mFAAmF,EAAE,KAAK,IAAI,EAAE;QAC5G,IAAI,KAAK,GAAa,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QAC/C,IAAI,CAAC,GAAG,MAAM,gBAAgB,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,mEAAmE;QACjI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,kEAAkE,CAAC,CAAC;IACjH,CAAC,CAAC,CAAC;AAEP,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.web.respec.d.mts","sourceRoot":"","sources":["../src/helpers.web.respec.mts"],"names":[],"mappings":""}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
const maam = `[${import.meta.url}]`, sir = maam;
|
|
2
|
-
export {};
|
|
3
|
-
// import { storageDBExists } from './helpers.web.mjs';
|
|
4
|
-
//todo: do these tests once we get web testing going (this won't work in node)
|
|
5
|
-
// await respecfully(sir, `indexeddb storage`, async () => {
|
|
6
|
-
// await ifWe(sir, `storageDBExists`, async () => {
|
|
7
|
-
// const randomName = pickRandom_Letters({ count: 7 });
|
|
8
|
-
// const dbExists = await storageDBExists({ name: randomName });
|
|
9
|
-
// iReckon(sir, dbExists).isGonnaBeFalse();
|
|
10
|
-
// });
|
|
11
|
-
// });
|
|
12
|
-
//# sourceMappingURL=helpers.web.respec.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.web.respec.mjs","sourceRoot":"","sources":["../src/helpers.web.respec.mts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAG,IAAI,OAAO,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;;AAEhD,uDAAuD;AAEvD,8EAA8E;AAE9E,4DAA4D;AAE5D,uDAAuD;AACvD,+DAA+D;AAC/D,wEAAwE;AACxE,mDAAmD;AACnD,UAAU;AACV,MAAM"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"device-delegate.respec.d.mts","sourceRoot":"","sources":["../../src/identity/device-delegate.respec.mts"],"names":[],"mappings":""}
|