oraku-sdk 1.0.0

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.
@@ -0,0 +1,18 @@
1
+ import type { ActivityEvent, EngagementFilter, EngagementPullOptions, ProjectSettings, ProjectCron, OrakuConfig } from './types';
2
+ export declare class OrakuSDK {
3
+ private apiUrl;
4
+ private apiKey;
5
+ project: {
6
+ setSettings: (settings: ProjectSettings) => Promise<void>;
7
+ setCron: (cron: ProjectCron) => Promise<void>;
8
+ };
9
+ constructor(config: OrakuConfig);
10
+ private headers;
11
+ loadInformation(rows: ActivityEvent[]): Promise<void>;
12
+ generateEngagementPulls(filter: EngagementFilter, type: 'notifications', options?: EngagementPullOptions): Promise<string[]>;
13
+ private setSettings;
14
+ private setCron;
15
+ }
16
+ export default OrakuSDK;
17
+ export type { ActivityEvent, EngagementFilter, EngagementPullOptions, ProjectSettings, ProjectCron, OrakuConfig };
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,WAAW,EACX,WAAW,EACZ,MAAM,SAAS,CAAA;AAEhB,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,MAAM,CAAQ;IAEtB,OAAO,EAAE;QACP,WAAW,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QACzD,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAC9C,CAAA;gBAEW,MAAM,EAAE,WAAW;IAU/B,OAAO,CAAC,OAAO;IAOT,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IASrD,uBAAuB,CAC3B,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,eAAe,EACrB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,MAAM,EAAE,CAAC;YAiBN,WAAW;YASX,OAAO;CAQtB;AAED,eAAe,QAAQ,CAAA;AACvB,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OrakuSDK = void 0;
4
+ class OrakuSDK {
5
+ constructor(config) {
6
+ this.apiUrl = config.apiUrl.replace(/\/$/, '');
7
+ this.apiKey = config.apiKey;
8
+ this.project = {
9
+ setSettings: (settings) => this.setSettings(settings),
10
+ setCron: (cron) => this.setCron(cron)
11
+ };
12
+ }
13
+ headers() {
14
+ return {
15
+ 'Content-Type': 'application/json',
16
+ 'x-api-key': this.apiKey
17
+ };
18
+ }
19
+ async loadInformation(rows) {
20
+ const res = await fetch(`${this.apiUrl}/ingest`, {
21
+ method: 'POST',
22
+ headers: this.headers(),
23
+ body: JSON.stringify({ events: rows })
24
+ });
25
+ if (!res.ok)
26
+ throw new Error(`loadInformation failed: ${res.status}`);
27
+ }
28
+ async generateEngagementPulls(filter, type, options = {}) {
29
+ const params = new URLSearchParams();
30
+ if (filter.externalRef)
31
+ params.set('externalRef', filter.externalRef);
32
+ if (filter.category)
33
+ params.set('category', filter.category);
34
+ if (options.limit)
35
+ params.set('limit', String(options.limit));
36
+ params.set('type', type);
37
+ const res = await fetch(`${this.apiUrl}/notifications?${params.toString()}`, {
38
+ method: 'GET',
39
+ headers: this.headers()
40
+ });
41
+ if (!res.ok)
42
+ throw new Error(`generateEngagementPulls failed: ${res.status}`);
43
+ const data = await res.json();
44
+ return data.notifications;
45
+ }
46
+ async setSettings(settings) {
47
+ const res = await fetch(`${this.apiUrl}/project/settings`, {
48
+ method: 'POST',
49
+ headers: this.headers(),
50
+ body: JSON.stringify(settings)
51
+ });
52
+ if (!res.ok)
53
+ throw new Error(`setSettings failed: ${res.status}`);
54
+ }
55
+ async setCron(cron) {
56
+ const res = await fetch(`${this.apiUrl}/project/cron`, {
57
+ method: 'POST',
58
+ headers: this.headers(),
59
+ body: JSON.stringify(cron)
60
+ });
61
+ if (!res.ok)
62
+ throw new Error(`setCron failed: ${res.status}`);
63
+ }
64
+ }
65
+ exports.OrakuSDK = OrakuSDK;
66
+ exports.default = OrakuSDK;
67
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export interface ActivityEvent {
2
+ externalRef?: string;
3
+ category?: string;
4
+ subcategory?: string;
5
+ log?: string;
6
+ createdAt?: string;
7
+ meta?: Record<string, unknown>;
8
+ }
9
+ export interface EngagementFilter {
10
+ externalRef?: string;
11
+ category?: string;
12
+ }
13
+ export interface EngagementPullOptions {
14
+ limit?: number;
15
+ }
16
+ export interface ProjectSettings {
17
+ webhookUrl: string;
18
+ webhookAuthKey?: string;
19
+ }
20
+ export interface ProjectCron {
21
+ cron: string;
22
+ type: 'daily' | 'weekly' | 'monthly';
23
+ }
24
+ export interface OrakuConfig {
25
+ apiUrl: string;
26
+ apiKey: string;
27
+ }
28
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAA;CACrC;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "oraku-sdk",
3
+ "version": "1.0.0",
4
+ "description": "SDK for the Oraku engagement engine",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "tsc",
9
+ "build:watch": "tsc --watch"
10
+ },
11
+ "keywords": [],
12
+ "author": "",
13
+ "license": "ISC",
14
+ "devDependencies": {
15
+ "typescript": "^5.9.3"
16
+ }
17
+ }
package/src/index.ts ADDED
@@ -0,0 +1,86 @@
1
+ import type {
2
+ ActivityEvent,
3
+ EngagementFilter,
4
+ EngagementPullOptions,
5
+ ProjectSettings,
6
+ ProjectCron,
7
+ OrakuConfig
8
+ } from './types'
9
+
10
+ export class OrakuSDK {
11
+ private apiUrl: string
12
+ private apiKey: string
13
+
14
+ project: {
15
+ setSettings: (settings: ProjectSettings) => Promise<void>
16
+ setCron: (cron: ProjectCron) => Promise<void>
17
+ }
18
+
19
+ constructor(config: OrakuConfig) {
20
+ this.apiUrl = config.apiUrl.replace(/\/$/, '')
21
+ this.apiKey = config.apiKey
22
+
23
+ this.project = {
24
+ setSettings: (settings) => this.setSettings(settings),
25
+ setCron: (cron) => this.setCron(cron)
26
+ }
27
+ }
28
+
29
+ private headers() {
30
+ return {
31
+ 'Content-Type': 'application/json',
32
+ 'x-api-key': this.apiKey
33
+ }
34
+ }
35
+
36
+ async loadInformation(rows: ActivityEvent[]): Promise<void> {
37
+ const res = await fetch(`${this.apiUrl}/ingest`, {
38
+ method: 'POST',
39
+ headers: this.headers(),
40
+ body: JSON.stringify({ events: rows })
41
+ })
42
+ if (!res.ok) throw new Error(`loadInformation failed: ${res.status}`)
43
+ }
44
+
45
+ async generateEngagementPulls(
46
+ filter: EngagementFilter,
47
+ type: 'notifications',
48
+ options: EngagementPullOptions = {}
49
+ ): Promise<string[]> {
50
+ const params = new URLSearchParams()
51
+ if (filter.externalRef) params.set('externalRef', filter.externalRef)
52
+ if (filter.category) params.set('category', filter.category)
53
+ if (options.limit) params.set('limit', String(options.limit))
54
+ params.set('type', type)
55
+
56
+ const res = await fetch(`${this.apiUrl}/notifications?${params.toString()}`, {
57
+ method: 'GET',
58
+ headers: this.headers()
59
+ })
60
+ if (!res.ok) throw new Error(`generateEngagementPulls failed: ${res.status}`)
61
+
62
+ const data = await res.json() as { notifications: string[] }
63
+ return data.notifications
64
+ }
65
+
66
+ private async setSettings(settings: ProjectSettings): Promise<void> {
67
+ const res = await fetch(`${this.apiUrl}/project/settings`, {
68
+ method: 'POST',
69
+ headers: this.headers(),
70
+ body: JSON.stringify(settings)
71
+ })
72
+ if (!res.ok) throw new Error(`setSettings failed: ${res.status}`)
73
+ }
74
+
75
+ private async setCron(cron: ProjectCron): Promise<void> {
76
+ const res = await fetch(`${this.apiUrl}/project/cron`, {
77
+ method: 'POST',
78
+ headers: this.headers(),
79
+ body: JSON.stringify(cron)
80
+ })
81
+ if (!res.ok) throw new Error(`setCron failed: ${res.status}`)
82
+ }
83
+ }
84
+
85
+ export default OrakuSDK
86
+ export type { ActivityEvent, EngagementFilter, EngagementPullOptions, ProjectSettings, ProjectCron, OrakuConfig }
package/src/types.ts ADDED
@@ -0,0 +1,32 @@
1
+ export interface ActivityEvent {
2
+ externalRef?: string
3
+ category?: string
4
+ subcategory?: string
5
+ log?: string
6
+ createdAt?: string
7
+ meta?: Record<string, unknown>
8
+ }
9
+
10
+ export interface EngagementFilter {
11
+ externalRef?: string
12
+ category?: string
13
+ }
14
+
15
+ export interface EngagementPullOptions {
16
+ limit?: number
17
+ }
18
+
19
+ export interface ProjectSettings {
20
+ webhookUrl: string
21
+ webhookAuthKey?: string
22
+ }
23
+
24
+ export interface ProjectCron {
25
+ cron: string
26
+ type: 'daily' | 'weekly' | 'monthly'
27
+ }
28
+
29
+ export interface OrakuConfig {
30
+ apiUrl: string
31
+ apiKey: string
32
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "module": "commonjs",
5
+ "lib": ["ES2020", "dom"],
6
+ "outDir": "./dist",
7
+ "rootDir": "./src",
8
+ "strict": true,
9
+ "declaration": true,
10
+ "declarationMap": true,
11
+ "sourceMap": true,
12
+ "esModuleInterop": true
13
+ },
14
+ "include": ["src"]
15
+ }