-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #430 from coasys/centralized-all
Test branch: centralized agent and file language
- Loading branch information
Showing
24 changed files
with
717 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
dist/ | ||
node_modules/ | ||
target/ | ||
.hc | ||
.cargo | ||
*.log | ||
*.dna | ||
build/* | ||
*.js | ||
*.js.map | ||
!*.config.icons.js | ||
!*.config.js | ||
!dna.js | ||
build/dna.js | ||
!*-ui.js |
11 changes: 11 additions & 0 deletions
11
bootstrap-languages/centralized-agent-language/ConstructorIcon.svelte
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
<svelte:options tag={null}/> | ||
|
||
<script lang="ts"> | ||
export let commitExpression | ||
</script> | ||
|
||
<div> | ||
</div> | ||
|
||
<style lang="scss"> | ||
</style> |
83 changes: 83 additions & 0 deletions
83
bootstrap-languages/centralized-agent-language/Icon.svelte
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
<svelte:options tag={null}/> | ||
|
||
<script lang="ts"> | ||
import type { Expression } from "@perspect3vism/ad4m"; | ||
import { Literal, Perspective } from "@perspect3vism/ad4m"; | ||
import emailValidator from 'email-validator' | ||
import md5 from 'md5' | ||
export let expression: Expression | ||
let did | ||
let email | ||
let firstName | ||
let lastName | ||
async function update() { | ||
let perspective = new Perspective(expression.data.perspective.links) | ||
did = expression.data.did | ||
try { | ||
firstName = Literal.fromUrl(await perspective.getSingleTarget({source: did, predicate: 'foaf://givenName'})).get() | ||
}catch(e) { | ||
firstName = undefined | ||
} | ||
try { | ||
lastName = Literal.fromUrl(await perspective.getSingleTarget({source: did, predicate: 'foaf://familyName'})).get() | ||
}catch(e) { | ||
lastName = undefined | ||
} | ||
try { | ||
email = Literal.fromUrl(await perspective.getSingleTarget({source: did, predicate: 'foaf://mbox'})).get() | ||
}catch(e) { | ||
email = undefined | ||
} | ||
} | ||
$: if(expression) update() | ||
</script> | ||
|
||
<div class="container"> | ||
|
||
<div class="text"> | ||
<h1>{did}</h1> | ||
<h2>{firstName} {lastName}</h2> | ||
<h2>{email}</h2> | ||
</div> | ||
|
||
{#if emailValidator.validate(email) } | ||
<img src="http://www.gravatar.com/avatar/{md5(email)}?s=360" alt="gravatar" class="image"> | ||
{/if} | ||
</div> | ||
|
||
|
||
<style> | ||
h1 { | ||
width: 100%; | ||
word-break: break-all; | ||
} | ||
.container { | ||
color: white; | ||
width: 400px; | ||
height: 300px; | ||
text-shadow: black; | ||
} | ||
.text { | ||
position: absolute; | ||
left: 0; | ||
right: 0; | ||
top: 0; | ||
bottom: 0; | ||
z-index: 3; | ||
} | ||
.image { | ||
position: absolute; | ||
left: 0; | ||
right: 0; | ||
top: 0; | ||
bottom: 0; | ||
} | ||
</style> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# centrazlied-agent-language | ||
|
||
A ad4m language to store Agent data associated with DID's in a centralized server |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
import type { Address, Agent, Expression, PublicSharing, LanguageContext, HolochainLanguageDelegate, ExpressionAdapter, AgentService } from "https://esm.sh/@perspect3vism/[email protected]"; | ||
import axiod from "https://deno.land/x/axiod/mod.ts"; | ||
|
||
export default class ExpressionAdapterImpl implements ExpressionAdapter { | ||
#agent: AgentService; | ||
putAdapter: PublicSharing | ||
|
||
constructor(context: LanguageContext) { | ||
this.#agent = context.agent; | ||
this.putAdapter = new Sharing(context) | ||
} | ||
|
||
async get(did: Address): Promise<Expression> { | ||
console.log("Getting expression with did", did); | ||
|
||
const data = await axiod.get("https://socket.ad4m.dev/agent", { | ||
params: { | ||
did | ||
} | ||
}); | ||
|
||
return data.data.expression | ||
}; | ||
} | ||
|
||
class Sharing implements PublicSharing { | ||
#agent: AgentService; | ||
|
||
constructor(context: LanguageContext) { | ||
this.#agent = context.agent; | ||
} | ||
|
||
async createPublic(content: Agent): Promise<Address> { | ||
|
||
if(!content['did'] || !content['perspective'] || !content['perspective'].links) | ||
throw "Content must be an Agent object" | ||
|
||
const agent = content as Agent | ||
if(agent.did != this.#agent.did) | ||
throw "Can't set Agent Expression for foreign DID - only for self" | ||
|
||
if(!agent.directMessageLanguage) | ||
agent.directMessageLanguage = undefined | ||
|
||
agent.perspective!.links.forEach(link => { | ||
delete link.proof.valid | ||
delete link.proof.invalid | ||
}) | ||
|
||
const expression = this.#agent.createSignedExpression(agent); | ||
|
||
await axiod.post("https://socket.ad4m.dev/agent", { | ||
data: { | ||
did: agent.did, | ||
expression | ||
} | ||
}); | ||
|
||
return agent.did | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
import * as esbuild from "https://deno.land/x/[email protected]/mod.js"; | ||
// Import the WASM build on platforms where running subprocesses is not | ||
// permitted, such as Deno Deploy, or when running without `--allow-run`. | ||
// import * as esbuild from "https://deno.land/x/[email protected]/wasm.js"; | ||
|
||
import { denoPlugins } from "https://deno.land/x/[email protected]/mod.ts"; | ||
|
||
const result = await esbuild.build({ | ||
plugins: [...denoPlugins()], | ||
entryPoints: ['index.ts'], | ||
outfile: 'build/bundle.js', | ||
bundle: true, | ||
platform: 'node', | ||
target: 'deno1.32.4', | ||
format: 'esm', | ||
globalName: 'centralized.agent.language', | ||
charset: 'ascii', | ||
legalComments: 'inline' | ||
}); | ||
console.log(result.outputFiles); | ||
|
||
esbuild.stop(); |
13 changes: 13 additions & 0 deletions
13
bootstrap-languages/centralized-agent-language/expressionUI.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
import type { ExpressionUI } from "@perspect3vism/ad4m"; | ||
import Icon from './build/Icon.js' | ||
import ConstructorIcon from './build/ConstructorIcon.js' | ||
|
||
export class UI implements ExpressionUI { | ||
icon(): string { | ||
return Icon | ||
} | ||
|
||
constructorIcon(): string { | ||
return ConstructorIcon | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
import type { Address, Language, LanguageContext, HolochainLanguageDelegate, Interaction } from "https://esm.sh/@perspect3vism/[email protected]"; | ||
import ExpressionAdapter from "./adapter.ts"; | ||
import Icon from "./build/Icon.js"; | ||
import ConstructorIcon from "./build/ConstructorIcon.js"; | ||
import { UI } from "./build/expressionUI.js"; | ||
|
||
function iconFor(expression: Address): string { | ||
return Icon as unknown as string; | ||
} | ||
|
||
function constructorIcon(): string { | ||
return ConstructorIcon as unknown as string; | ||
} | ||
|
||
function interactions(expression: Address): Interaction[] { | ||
return []; | ||
} | ||
|
||
//!@ad4m-template-variable | ||
export const name = "centralized-agent-expression-store"; | ||
|
||
export default async function create(context: LanguageContext): Promise<Language> { | ||
const expressionAdapter = new ExpressionAdapter(context); | ||
const expressionUI = new UI(); | ||
|
||
return { | ||
name, | ||
expressionAdapter, | ||
iconFor, | ||
constructorIcon, | ||
interactions, | ||
expressionUI, | ||
} as Language; | ||
} |
45 changes: 45 additions & 0 deletions
45
bootstrap-languages/centralized-agent-language/package.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
{ | ||
"name": "@perspect3vism/centralized-agent-language", | ||
"version": "0.7.1", | ||
"description": "AD4M Language implementation for Holochain profile DNA", | ||
"main": "index.js", | ||
"scripts": { | ||
"test-disabled": "echo \"No agent language integration tests\"", | ||
"rollup-icons": "rollup -c rollup.config.icons.js", | ||
"rollup-expression-ui": "rollup -c rollup.config.expression-ui.js", | ||
"build": "run-script-os", | ||
"build:linux": "pnpm run build:common", | ||
"build:macos": "pnpm run build:common", | ||
"build:windows": "pnpm run build:common", | ||
"build:common": "pnpm run rollup-icons && pnpm run rollup-expression-ui && deno run --allow-all esbuild.ts" | ||
}, | ||
"author": "", | ||
"license": "ISC", | ||
"devDependencies": { | ||
"@perspect3vism/ad4m": "*", | ||
"@perspect3vism/rollup-plugin-dna": "^0.0.2", | ||
"@rollup/plugin-commonjs": "^17.0.0", | ||
"@rollup/plugin-json": "^4.1.0", | ||
"@rollup/plugin-node-resolve": "^8.0.0", | ||
"@rollup/plugin-typescript": "^11.1.0", | ||
"@tsconfig/svelte": "^1.0.0", | ||
"@types/node": "^18.0.0", | ||
"rollup": "^2.3.4", | ||
"rollup-plugin-postcss": "^4.0.0", | ||
"rollup-plugin-string": "^3.0.0", | ||
"rollup-plugin-svelte": "^6.0.0", | ||
"rollup-plugin-terser": "^7.0.0", | ||
"run-script-os": "^1.1.6", | ||
"svelte": "^3.0.0", | ||
"svelte-check": "^1.0.0", | ||
"svelte-preprocess": "^4.0.0", | ||
"tslib": "^2.0.0", | ||
"typescript": "^4.2.4", | ||
"xmlhttprequest": "^1.8.0" | ||
}, | ||
"dependencies": { | ||
"email-validator": "^2.0.4", | ||
"md5": "^2.3.0", | ||
"postcss": "^8.2.1" | ||
} | ||
} |
25 changes: 25 additions & 0 deletions
25
bootstrap-languages/centralized-agent-language/rollup.config.expression-ui.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
import { string } from "rollup-plugin-string"; | ||
import typescript from '@rollup/plugin-typescript'; | ||
|
||
export default { | ||
input: "expressionUI.ts", | ||
external: [], | ||
output: { | ||
sourcemap: true, | ||
format: "esm", | ||
name: "AgentExpressionUI", | ||
file: "build/expressionUI.js", | ||
interop: "esModule", | ||
globals: {}, | ||
}, | ||
external: [], | ||
plugins: [ | ||
string({ | ||
include: "build/*.js", | ||
}), | ||
typescript({include: "expressionUI.ts"}), | ||
], | ||
watch: { | ||
clearScreen: false, | ||
}, | ||
}; |
Oops, something went wrong.