@treeline-money/plugin-sdk 0.1.54 → 0.1.56
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 +72 -12
- package/dist/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -27,18 +27,43 @@ export interface PluginManifest {
|
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
29
|
* Permissions a plugin can request.
|
|
30
|
+
*
|
|
31
|
+
* Plugins automatically have full read/write access to their own schema (plugin_<id>).
|
|
32
|
+
* These permissions are for accessing tables OUTSIDE the plugin's own schema.
|
|
30
33
|
*/
|
|
31
34
|
export interface PluginPermissions {
|
|
32
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Tables this plugin can SELECT from (outside its own schema).
|
|
37
|
+
* Use "*" for unrestricted read access (e.g., query plugin).
|
|
38
|
+
*
|
|
39
|
+
* @example ["transactions", "accounts", "sys_balance_snapshots"]
|
|
40
|
+
*/
|
|
41
|
+
read?: string[];
|
|
42
|
+
/**
|
|
43
|
+
* Tables this plugin can explicitly write to (outside its own schema).
|
|
44
|
+
* Most plugins don't need this - they only write to their own schema.
|
|
45
|
+
*
|
|
46
|
+
* @example ["sys_transactions"] // tagging plugin modifies transaction tags
|
|
47
|
+
*/
|
|
48
|
+
write?: string[];
|
|
49
|
+
/**
|
|
50
|
+
* Optional schema name override.
|
|
51
|
+
* Default: plugin_<id with hyphens replaced by underscores>
|
|
52
|
+
*
|
|
53
|
+
* @example "plugin_cashflow" for plugin ID "treeline-cashflow"
|
|
54
|
+
*/
|
|
55
|
+
schemaName?: string;
|
|
33
56
|
tables?: {
|
|
34
|
-
/** Tables this plugin can SELECT from */
|
|
35
57
|
read?: string[];
|
|
36
|
-
/** Tables this plugin can INSERT/UPDATE/DELETE */
|
|
37
58
|
write?: string[];
|
|
38
|
-
/** Tables this plugin can CREATE/DROP (must match sys_plugin_{id}_* pattern) */
|
|
39
59
|
create?: string[];
|
|
40
60
|
};
|
|
41
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Query parameter type - supports primitives and arrays.
|
|
64
|
+
* Use with parameterized queries to prevent SQL injection.
|
|
65
|
+
*/
|
|
66
|
+
export type QueryParam = string | number | boolean | null | string[] | number[];
|
|
42
67
|
/**
|
|
43
68
|
* The SDK object passed to plugin views via props.
|
|
44
69
|
*
|
|
@@ -52,8 +77,11 @@ export interface PluginPermissions {
|
|
|
52
77
|
* }
|
|
53
78
|
* const { sdk }: Props = $props();
|
|
54
79
|
*
|
|
55
|
-
* // Query
|
|
56
|
-
* const transactions = await sdk.query(
|
|
80
|
+
* // Query with parameterized values (SAFE - recommended)
|
|
81
|
+
* const transactions = await sdk.query(
|
|
82
|
+
* 'SELECT * FROM transactions WHERE amount > ? AND description LIKE ?',
|
|
83
|
+
* [100, '%coffee%']
|
|
84
|
+
* );
|
|
57
85
|
*
|
|
58
86
|
* // Show a toast
|
|
59
87
|
* sdk.toast.success('Data loaded!');
|
|
@@ -63,19 +91,51 @@ export interface PluginPermissions {
|
|
|
63
91
|
export interface PluginSDK {
|
|
64
92
|
/**
|
|
65
93
|
* Execute a read-only SQL query against the database.
|
|
66
|
-
*
|
|
94
|
+
* Use parameterized queries (?) for user-provided values to prevent SQL injection.
|
|
95
|
+
*
|
|
96
|
+
* @param sql - SQL SELECT query with ? placeholders
|
|
97
|
+
* @param params - Optional array of values to bind to ? placeholders
|
|
67
98
|
* @returns Array of row objects
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* // Parameterized query (SAFE)
|
|
102
|
+
* const results = await sdk.query(
|
|
103
|
+
* 'SELECT * FROM transactions WHERE amount > ?',
|
|
104
|
+
* [100]
|
|
105
|
+
* );
|
|
68
106
|
*/
|
|
69
|
-
query: <T = Record<string, unknown>>(sql: string) => Promise<T[]>;
|
|
107
|
+
query: <T = Record<string, unknown>>(sql: string, params?: QueryParam[]) => Promise<T[]>;
|
|
70
108
|
/**
|
|
71
|
-
* Execute a write SQL query (INSERT/UPDATE/DELETE).
|
|
72
|
-
*
|
|
73
|
-
*
|
|
109
|
+
* Execute a write SQL query (INSERT/UPDATE/DELETE/CREATE/DROP).
|
|
110
|
+
* Plugins have full write access to their own schema (plugin_<id>).
|
|
111
|
+
* Use parameterized queries (?) for user-provided values to prevent SQL injection.
|
|
112
|
+
*
|
|
113
|
+
* @param sql - SQL write query with ? placeholders
|
|
114
|
+
* @param params - Optional array of values to bind to ? placeholders
|
|
74
115
|
* @returns Object with rowsAffected count
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* // Parameterized insert to own schema (SAFE)
|
|
119
|
+
* const schema = sdk.getSchemaName();
|
|
120
|
+
* await sdk.execute(
|
|
121
|
+
* `INSERT INTO ${schema}.goals (id, name) VALUES (?, ?)`,
|
|
122
|
+
* [crypto.randomUUID(), 'Emergency Fund']
|
|
123
|
+
* );
|
|
75
124
|
*/
|
|
76
|
-
execute: (sql: string) => Promise<{
|
|
125
|
+
execute: (sql: string, params?: QueryParam[]) => Promise<{
|
|
77
126
|
rowsAffected: number;
|
|
78
127
|
}>;
|
|
128
|
+
/**
|
|
129
|
+
* Get the schema name for this plugin.
|
|
130
|
+
* Tables should be created in this schema: `${sdk.getSchemaName()}.table_name`
|
|
131
|
+
*
|
|
132
|
+
* @returns The plugin's schema name (e.g., "plugin_goals", "plugin_budget")
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* const schema = sdk.getSchemaName(); // "plugin_goals"
|
|
136
|
+
* await sdk.execute(`CREATE TABLE IF NOT EXISTS ${schema}.goals (...)`);
|
|
137
|
+
*/
|
|
138
|
+
getSchemaName: () => string;
|
|
79
139
|
/**
|
|
80
140
|
* Toast notification methods.
|
|
81
141
|
*/
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAC;IAEX,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IAEb,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAEhB,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IAEpB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IAEf,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,uCAAuC;IACvC,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAED
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|