Initial commit: AS4/411 directory and discovery service for Sankofa Marketplace
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
0
examples/.gitkeep
Normal file
0
examples/.gitkeep
Normal file
30
examples/as4-gateway-sidecar/index.js
Normal file
30
examples/as4-gateway-sidecar/index.js
Normal 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);
|
||||
1
examples/as4-gateway-sidecar/package.json
Normal file
1
examples/as4-gateway-sidecar/package.json
Normal 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:*"}}
|
||||
39
examples/embedded-library/index.js
Normal file
39
examples/embedded-library/index.js
Normal 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");
|
||||
10
examples/embedded-library/package.json
Normal file
10
examples/embedded-library/package.json
Normal 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:*"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user