Initial commit: AS4/411 directory and discovery service for Sankofa Marketplace
Some checks failed
CI / lint (push) Has been cancelled
CI / build (push) Has been cancelled

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
defiQUG
2026-02-08 08:44:20 -08:00
commit c24ae925cf
109 changed files with 7222 additions and 0 deletions

0
examples/.gitkeep Normal file
View File

View File

@@ -0,0 +1,30 @@
import { Resolver, InMemoryResolveCache } from "@as4-411/resolver";
import { InMemoryDirectoryStore } from "@as4-411/storage";
const store = new InMemoryDirectoryStore();
store.addTenant({ id: "t1", name: "Example Tenant" });
store.addParticipant({ id: "p1", tenantId: "t1", name: "Example Participant" });
store.addIdentifier({
id: "i1",
participantId: "p1",
identifier_type: "as4.partyId",
value: "0088:123456789",
priority: 1,
});
store.addEndpoint({
id: "e1",
participantId: "p1",
protocol: "as4",
address: "https://example.com/as4",
profile: "peppol-as4",
priority: 1,
status: "active",
});
const resolver = new Resolver({ store, cache: new InMemoryResolveCache() });
const result = await resolver.resolve({
identifiers: [{ type: "as4.partyId", value: "0088:123456789" }],
tenant: "t1",
});
console.log("Sidecar resolve OK. Directives:", result.directives.length);
console.log("Target URL:", result.directives[0]?.target_address);

View File

@@ -0,0 +1 @@
{"name":"example-as4-gateway-sidecar","type":"module","private":true,"dependencies":{"@as4-411/core":"workspace:*","@as4-411/resolver":"workspace:*","@as4-411/storage":"workspace:*"}}

View File

@@ -0,0 +1,39 @@
/**
* Example: embedded library usage.
* Imports core + resolver + in-memory store; no REST API. Resolution runs in-process.
*/
import { Resolver, InMemoryResolveCache } from "@as4-411/resolver";
import { InMemoryDirectoryStore } from "@as4-411/storage";
const store = new InMemoryDirectoryStore();
store.addTenant({ id: "default", name: "Default" });
store.addParticipant({ id: "local-1", tenantId: "default", name: "Local Participant" });
store.addIdentifier({
id: "id-1",
participantId: "local-1",
identifier_type: "e164",
value: "+15551234567",
priority: 1,
});
store.addEndpoint({
id: "ep-1",
participantId: "local-1",
protocol: "https",
address: "https://local.example.com/receive",
priority: 1,
status: "active",
});
const resolver = new Resolver({
store,
cache: new InMemoryResolveCache(),
defaultTtlSeconds: 60,
});
const result = await resolver.resolve({
identifiers: [{ type: "e164", value: "+15551234567" }],
tenant: "default",
});
console.log("Embedded resolve:", result.directives.length, "directive(s)");
console.log(result.directives[0]?.target_address ?? "none");

View File

@@ -0,0 +1,10 @@
{
"name": "example-embedded-library",
"type": "module",
"private": true,
"dependencies": {
"@as4-411/core": "workspace:*",
"@as4-411/resolver": "workspace:*",
"@as4-411/storage": "workspace:*"
}
}