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.
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +67 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +28 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +17 -0
- package/src/index.ts +86 -0
- package/src/types.ts +32 -0
- package/tsconfig.json +15 -0
package/dist/index.d.ts
ADDED
|
@@ -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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"}
|
package/dist/types.d.ts
ADDED
|
@@ -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 @@
|
|
|
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
|
+
}
|