@aravinthan_p/appnest-app-sdk-utils 0.0.1

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,163 @@
1
+ # Appnest SDK Functions — Developer Reference
2
+
3
+ This document is the **single source of truth** for the Appnest custom SDK functions. Use it for **code generation**, auto-completion, and integration in your app.
4
+
5
+ **For code generation:** This file is self-contained. All function signatures, parameters, types, and constraints are below; no other MD files are required to generate code that calls these SDK functions.
6
+
7
+ **Do not add `@aravinthan_p/appnest-app-sdk-utils` (or `appnest-app-sdk-utils`) to `app-backend/package.json`.** The SDK is provided by the AppNest platform at runtime. Your backend code should `require('@aravinthan_p/appnest-app-sdk-utils')` (or the package name configured by the platform) without listing it as a dependency.
8
+
9
+ ---
10
+
11
+ ## Import
12
+
13
+ ```javascript
14
+ const AppnestFunctions = require('appnest-app-sdk-utils');
15
+ // or from path:
16
+ // const AppnestFunctions = require('<path-to-sdk>/appnestFunctions');
17
+
18
+ const { $db, $file, $http, $next, $schedule, getTraceId } = AppnestFunctions;
19
+ ```
20
+
21
+ ---
22
+
23
+ ## Quick reference
24
+
25
+ | Module | Purpose | Main APIs / Methods |
26
+ |------------|----------------------------|----------------------|
27
+ | **$db** | Key/value storage | `get`, `create`, `update`, `delete`; typed: `string`, `number`, `list`, `map`, `boolean` (each with get/create/update/delete and type-specific ops) |
28
+ | **$http** | Outbound HTTP requests | `request({ url, method, headers, body, query })` |
29
+ | **$file** | File storage (signed URLs) | `getUploadUrl`, `getDownloadUrl`, `delete`, `list`, `exists` |
30
+ | **$next** | Invoke another function | `run({ functionName, payload, delay })` |
31
+ | **$schedule** | Scheduled jobs | `create`, `get`, `update`, `pause`, `resume`, `delete` |
32
+ | **getTraceId** | Request trace ID | `getTraceId()` → string (for logging/correlation) |
33
+
34
+ ---
35
+
36
+ ## Module details (per-function docs)
37
+
38
+ Each module has a dedicated MD file with full signatures, parameters, and examples. Paths are relative to `appnestFunctions/`:
39
+
40
+ | Module | Doc file | Summary |
41
+ |-----------|------------------------|--------|
42
+ | **$db** | [dbFunction/db.MD](dbFunction/db.MD) | Key/value by type: STRING, NUMBER, LIST, MAP, BOOLEAN. Common param: `key` (string). |
43
+ | **$http** | [httpFunction/http.MD](httpFunction/http.MD) | `$http.request({ url, method, headers, body, query })`. Methods: GET, POST, PUT, DELETE, PATCH. Use `<%=iparams.<key>%>` for manifest params; use `<%=user_oauth.access_token%>` in headers for platform's access_token (e.g. OAuth or API auth); framework replaces at runtime. |
44
+ | **$file** | [fileFunction/file.MD](fileFunction/file.MD) | `getUploadUrl`, `getDownloadUrl`, `delete`, `list`, `exists`. Params: `path`, `visibility` (optional). |
45
+ | **$next** | [nextFunction/next.MD](nextFunction/next.MD) | `$next.run({ functionName, payload, delay })`. Delay in seconds. |
46
+ | **$schedule** | [scheduleFunction/schedule.MD](scheduleFunction/schedule.MD) | Types: ONE_TIME, CRON, RECURRING. `name`, `type`, `data` required; type-specific: `runAt`, `cronExpression`, or `repeat`. |
47
+
48
+ ---
49
+
50
+ ## Code reference — function signatures & param details
51
+
52
+ All functions return `Promise<{ data, status }>` unless noted.
53
+
54
+ ---
55
+
56
+ ### $db
57
+
58
+ **Common param for all $db methods:** `key` (string, required, non-empty, max 1000 chars).
59
+
60
+ | Function | Params | Types / constraints |
61
+ |----------|--------|----------------------|
62
+ | `$db.get({ key })` | key | string |
63
+ | `$db.create({ key })` | key | string |
64
+ | `$db.update({ key, value })` | key, value | key: string; value: string |
65
+ | `$db.delete({ key })` | key | string |
66
+ | `$db.string.get({ key })` | key | string |
67
+ | `$db.string.create({ key, value })` | key, value | key: string; value: string |
68
+ | `$db.string.update({ key, value })` | key, value | string, string |
69
+ | `$db.string.delete({ key })` | key | string |
70
+ | `$db.number.get({ key })` | key | string |
71
+ | `$db.number.create({ key, value })` | key, value | key: string; value: number |
72
+ | `$db.number.update({ key, value })` | key, value | string, number |
73
+ | `$db.number.delete({ key })` | key | string |
74
+ | `$db.number.increment({ key })` | key | string |
75
+ | `$db.number.decrement({ key })` | key | string |
76
+ | `$db.list.get({ key })` | key | string |
77
+ | `$db.list.create({ key, value })` | key, value | key: string; value: array |
78
+ | `$db.list.update({ key, value })` | key, value | string, array |
79
+ | `$db.list.append({ key, value })` | key, value | string, array |
80
+ | `$db.list.prepend({ key, value })` | key, value | string, array |
81
+ | `$db.list.updateItemAtIndex({ key, value, index })` | key, value, index | string, array, number |
82
+ | `$db.list.removeItemAtIndex({ key, index })` | key, index | string, number |
83
+ | `$db.map.get({ key })` | key | string |
84
+ | `$db.map.create({ key, value })` | key, value | key: string; value: object (JSON-serializable) |
85
+ | `$db.map.update({ key, value })` | key, value | string, object |
86
+ | `$db.map.delete({ key })` | key | string |
87
+ | `$db.boolean.get({ key })` | key | string |
88
+ | `$db.boolean.create({ key, value })` | key, value | key: string; value: boolean |
89
+ | `$db.boolean.update({ key, value })` | key, value | string, boolean |
90
+ | `$db.boolean.delete({ key })` | key | string |
91
+
92
+ ---
93
+
94
+ ### $http
95
+
96
+ | Function | Params | Types / constraints |
97
+ |----------|--------|----------------------|
98
+ | `$http.request({ url, query, method, headers, body })` | url, query, method, headers, body | **url** (string, required): must start with `http://` or `https://`, max 2048 chars. **method** (string, required): `GET` \| `POST` \| `PUT` \| `DELETE` \| `PATCH`. **headers** (object, required): string key/value, max 1000 keys, each value max 1000 chars. **body** (object, required): same. **query** (object, required): same. **Runtime replacement:** Use `<%=iparams.<key>%>` for manifest params; use `<%=user_oauth.access_token%>` in headers for platform's access_token (e.g. OAuth or API auth); AppNest framework replaces at runtime. See [http.MD](httpFunction/http.MD). |
99
+
100
+ ---
101
+
102
+ ### $file
103
+
104
+ **Common params:** `path` (string, required), `visibility` (string, optional, default `"PUBLIC"`: `"PUBLIC"` \| `"PRIVATE"`).
105
+
106
+ | Function | Params | Notes |
107
+ |----------|--------|--------|
108
+ | `$file.getUploadUrl({ path, visibility })` | path, visibility | Signed URL for upload. |
109
+ | `$file.getDownloadUrl({ path, visibility })` | path, visibility | Signed URL for download/read. |
110
+ | `$file.delete({ path, visibility })` | path, visibility | Delete file at path. |
111
+ | `$file.list({ path, visibility })` | path, visibility | List objects under path. |
112
+ | `$file.exists({ path, visibility })` | path, visibility | Check if file exists. |
113
+
114
+ ---
115
+
116
+ ### $next
117
+
118
+ | Function | Params | Types / constraints |
119
+ |----------|--------|----------------------|
120
+ | `$next.run({ functionName, payload, delay })` | functionName, payload, delay | **functionName** (string, required). **payload** (object, required). **delay** (number, optional, default 0): seconds before execution, >= 0. |
121
+
122
+ ---
123
+
124
+ ### $schedule
125
+
126
+ **Common for create/update:** `name` (string, required, max 30), `type` (string, required: `ONE_TIME` \| `CRON` \| `RECURRING`), `data` (object, required, at least one key).
127
+
128
+ | Function | Params | Types / constraints |
129
+ |----------|--------|----------------------|
130
+ | `$schedule.create({ name, type, data, runAt? \| cronExpression? \| repeat? })` | name, type, data + type-specific | **ONE_TIME:** `runAt` (string, required, valid date e.g. ISO 8601). **CRON:** `cronExpression` (string, required). **RECURRING:** `repeat: { frequency, timeUnit }` — frequency (integer >= 1; >= 10 if timeUnit is MINUTES), timeUnit: `MINUTES` \| `HOURS` \| `DAYS` \| `WEEKS` \| `MONTHS` \| `YEARS`. |
131
+ | `$schedule.get({ name, type })` | name, type | name: string; type: ONE_TIME \| CRON \| RECURRING |
132
+ | `$schedule.update({ name, type, data, runAt? \| cronExpression? \| repeat? })` | same as create | Same type-specific rules as create. |
133
+ | `$schedule.pause({ name, type })` | name, type | string, string |
134
+ | `$schedule.resume({ name, type })` | name, type | string, string |
135
+ | `$schedule.delete({ name, type })` | name, type | string, string |
136
+
137
+ ---
138
+
139
+ ### getTraceId
140
+
141
+ | Function | Params | Return |
142
+ |----------|--------|--------|
143
+ | `getTraceId()` | none | string (trace ID for logging/correlation) |
144
+
145
+ ---
146
+
147
+ ## Usage in handlers
148
+
149
+ Typical pattern inside a Lambda or handler:
150
+
151
+ ```javascript
152
+ const { $db, $http, $file, $next, $schedule, getTraceId } = require('appnest-app-sdk-utils');
153
+
154
+ exports.myHandler = async (event, context) => {
155
+ const traceId = getTraceId();
156
+ // Use $db, $http, $file, $next, $schedule as needed
157
+ const row = await $db.string.get({ key: 'config' });
158
+ await $http.request({ url: 'https://api.example.com', method: 'GET', headers: {}, body: {}, query: {} });
159
+ await $next.run({ functionName: 'otherFn', payload: { id: 1 }, delay: 0 });
160
+ };
161
+ ```
162
+
163
+ **Code generation:** Use this single file as the only input; it contains all SDK function names, signatures, and param details needed to generate correct calls to `$db`, `$http`, `$file`, `$next`, `$schedule`, and `getTraceId`.
@@ -0,0 +1,161 @@
1
+ # $db — Key/Value Database SDK
2
+
3
+ The `$db` module provides typed key/value storage operations. Use the namespaced APIs (`$db.string`, `$db.number`, `$db.list`, `$db.map`, `$db.boolean`) for full create/update support.
4
+
5
+ ---
6
+
7
+ ## Import / Usage
8
+
9
+ ```javascript
10
+ const { $db } = require('<path-to-sdk>/appnestFunctions');
11
+ // or from appnest-app-sdk-utils
12
+ const { $db } = require('appnest-app-sdk-utils');
13
+ ```
14
+
15
+ ---
16
+
17
+ ## Common Rules
18
+
19
+ | Parameter | Type | Required | Constraints |
20
+ |----------|--------|----------|--------------------------------------|
21
+ | `key` | string | yes | Non-empty, max 1000 characters |
22
+
23
+ **Return shape:** `Promise<{ data, status }>`
24
+
25
+ ---
26
+
27
+ ## Data Types
28
+
29
+ | Type | Description |
30
+ |----------|--------------------------------|
31
+ | STRING | string value |
32
+ | NUMBER | number value |
33
+ | LIST | array value |
34
+ | MAP | JSON object (non-array) |
35
+ | BOOLEAN | boolean value |
36
+
37
+ ---
38
+
39
+ ## Top-level (string-oriented)
40
+
41
+ | Method | Signature | Description |
42
+ |--------|-----------|-------------|
43
+ | get | `$db.get({ key })` | Get value by key (string) |
44
+ | create | `$db.create({ key })` | Create key (string; for full control use `$db.string.create`) |
45
+ | update | `$db.update({ key, value })` | Update string value |
46
+ | delete | `$db.delete({ key })` | Delete by key |
47
+
48
+ **Example:**
49
+
50
+ ```javascript
51
+ const result = await $db.get({ key: 'welcome' });
52
+ await $db.update({ key: 'welcome', value: 'hello' });
53
+ await $db.delete({ key: 'welcome' });
54
+ ```
55
+
56
+ ---
57
+
58
+ ## $db.string
59
+
60
+ | Method | Signature | Parameters |
61
+ |--------|-----------|------------|
62
+ | get | `$db.string.get({ key })` | `key` (string, required) |
63
+ | create | `$db.string.create({ key, value })` | `key`, `value` (string, required) |
64
+ | update | `$db.string.update({ key, value })` | `key`, `value` (string, required) |
65
+ | delete | `$db.string.delete({ key })` | `key` (string, required) |
66
+
67
+ **Example:**
68
+
69
+ ```javascript
70
+ await $db.string.create({ key: 'welcome', value: 'hello' });
71
+ const res = await $db.string.get({ key: 'welcome' });
72
+ await $db.string.update({ key: 'welcome', value: 'hello world' });
73
+ await $db.string.delete({ key: 'welcome' });
74
+ ```
75
+
76
+ ---
77
+
78
+ ## $db.number
79
+
80
+ | Method | Signature | Parameters |
81
+ |-----------|-----------|------------|
82
+ | get | `$db.number.get({ key })` | `key` (string, required) |
83
+ | create | `$db.number.create({ key, value })` | `key`, `value` (number, required) |
84
+ | update | `$db.number.update({ key, value })` | `key`, `value` (number, required) |
85
+ | delete | `$db.number.delete({ key })` | `key` (string, required) |
86
+ | increment | `$db.number.increment({ key })` | `key` (string, required) |
87
+ | decrement | `$db.number.decrement({ key })` | `key` (string, required) |
88
+
89
+ **Example:**
90
+
91
+ ```javascript
92
+ await $db.number.create({ key: 'counter', value: 0 });
93
+ const res = await $db.number.get({ key: 'counter' });
94
+ await $db.number.increment({ key: 'counter' });
95
+ await $db.number.decrement({ key: 'counter' });
96
+ await $db.number.delete({ key: 'counter' });
97
+ ```
98
+
99
+ ---
100
+
101
+ ## $db.list
102
+
103
+ | Method | Signature | Parameters |
104
+ |-------------------|-----------|------------|
105
+ | get | `$db.list.get({ key })` | `key` (string, required) |
106
+ | create | `$db.list.create({ key, value })` | `key`, `value` (array, required) |
107
+ | update | `$db.list.update({ key, value })` | `key`, `value` (array, required) |
108
+ | append | `$db.list.append({ key, value })` | `key`, `value` (array, required) |
109
+ | prepend | `$db.list.prepend({ key, value })` | `key`, `value` (array, required) |
110
+ | updateItemAtIndex | `$db.list.updateItemAtIndex({ key, value, index })` | `key`, `value` (array), `index` (number, required) |
111
+ | removeItemAtIndex | `$db.list.removeItemAtIndex({ key, index })` | `key`, `index` (number, required) |
112
+
113
+ **Example:**
114
+
115
+ ```javascript
116
+ await $db.list.create({ key: 'logs', value: [] });
117
+ await $db.list.append({ key: 'logs', value: ['entry-1'] });
118
+ const res = await $db.list.get({ key: 'logs' });
119
+ await $db.list.removeItemAtIndex({ key: 'logs', index: 0 });
120
+ await $db.delete({ key: 'logs' });
121
+ ```
122
+
123
+ ---
124
+
125
+ ## $db.map
126
+
127
+ | Method | Signature | Parameters |
128
+ |--------|-----------|------------|
129
+ | get | `$db.map.get({ key })` | `key` (string, required) |
130
+ | create | `$db.map.create({ key, value })` | `key`, `value` (object, required, JSON-serializable) |
131
+ | update | `$db.map.update({ key, value })` | `key`, `value` (object, required) |
132
+ | delete | `$db.map.delete({ key })` | `key` (string, required) |
133
+
134
+ **Example:**
135
+
136
+ ```javascript
137
+ await $db.map.create({ key: 'profile', value: { name: 'Ava', age: 28 } });
138
+ const res = await $db.map.get({ key: 'profile' });
139
+ await $db.map.update({ key: 'profile', value: { name: 'Ava', age: 29 } });
140
+ await $db.map.delete({ key: 'profile' });
141
+ ```
142
+
143
+ ---
144
+
145
+ ## $db.boolean
146
+
147
+ | Method | Signature | Parameters |
148
+ |--------|-----------|------------|
149
+ | get | `$db.boolean.get({ key })` | `key` (string, required) |
150
+ | create | `$db.boolean.create({ key, value })` | `key`, `value` (boolean, required) |
151
+ | update | `$db.boolean.update({ key, value })` | `key`, `value` (boolean, required) |
152
+ | delete | `$db.boolean.delete({ key })` | `key` (string, required) |
153
+
154
+ **Example:**
155
+
156
+ ```javascript
157
+ await $db.boolean.create({ key: 'isActive', value: true });
158
+ const res = await $db.boolean.get({ key: 'isActive' });
159
+ await $db.boolean.update({ key: 'isActive', value: false });
160
+ await $db.boolean.delete({ key: 'isActive' });
161
+ ```