@databricks/appkit 0.15.0 → 0.17.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/_virtual/_rolldown/runtime.js +2 -0
- package/dist/app/index.d.ts.map +1 -1
- package/dist/appkit/package.js +1 -1
- package/dist/cache/index.d.ts +1 -1
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cli/commands/plugin/add-resource/add-resource.js +10 -4
- package/dist/cli/commands/plugin/add-resource/add-resource.js.map +1 -1
- package/dist/cli/commands/plugin/create/scaffold.js +10 -16
- package/dist/cli/commands/plugin/create/scaffold.js.map +1 -1
- package/dist/cli/commands/plugin/list/list.js +44 -26
- package/dist/cli/commands/plugin/list/list.js.map +1 -1
- package/dist/cli/commands/plugin/manifest-resolve.js +57 -0
- package/dist/cli/commands/plugin/manifest-resolve.js.map +1 -0
- package/dist/cli/commands/plugin/sync/sync.js +121 -71
- package/dist/cli/commands/plugin/sync/sync.js.map +1 -1
- package/dist/cli/commands/plugin/trusted-js-manifest.js +28 -0
- package/dist/cli/commands/plugin/trusted-js-manifest.js.map +1 -0
- package/dist/cli/commands/plugin/validate/validate.js +32 -14
- package/dist/cli/commands/plugin/validate/validate.js.map +1 -1
- package/dist/connectors/genie/client.d.ts +4 -0
- package/dist/connectors/genie/client.js +33 -16
- package/dist/connectors/genie/client.js.map +1 -1
- package/dist/connectors/genie/defaults.js +2 -1
- package/dist/connectors/genie/defaults.js.map +1 -1
- package/dist/connectors/genie/index.d.ts +3 -0
- package/dist/connectors/genie/types.d.ts +1 -0
- package/dist/connectors/genie/types.d.ts.map +1 -1
- package/dist/connectors/lakebase/index.d.ts +2 -3
- package/dist/connectors/lakebase/index.d.ts.map +1 -1
- package/dist/connectors/lakebase/index.js.map +1 -1
- package/dist/connectors/lakebase-v1/client.js +1 -1
- package/dist/context/execution-context.d.ts +0 -1
- package/dist/context/execution-context.d.ts.map +1 -1
- package/dist/context/index.d.ts +3 -0
- package/dist/context/service-context.d.ts +1 -1
- package/dist/context/service-context.d.ts.map +1 -1
- package/dist/context/user-context.d.ts +1 -2
- package/dist/context/user-context.d.ts.map +1 -1
- package/dist/core/appkit.d.ts +2 -1
- package/dist/core/appkit.d.ts.map +1 -1
- package/dist/core/index.d.ts +1 -0
- package/dist/errors/authentication.d.ts +0 -1
- package/dist/errors/authentication.d.ts.map +1 -1
- package/dist/errors/base.d.ts.map +1 -1
- package/dist/errors/configuration.d.ts +0 -1
- package/dist/errors/configuration.d.ts.map +1 -1
- package/dist/errors/connection.d.ts +0 -1
- package/dist/errors/connection.d.ts.map +1 -1
- package/dist/errors/execution.d.ts +0 -1
- package/dist/errors/execution.d.ts.map +1 -1
- package/dist/errors/initialization.d.ts +0 -1
- package/dist/errors/initialization.d.ts.map +1 -1
- package/dist/errors/server.d.ts +0 -1
- package/dist/errors/server.d.ts.map +1 -1
- package/dist/errors/tunnel.d.ts +0 -1
- package/dist/errors/tunnel.d.ts.map +1 -1
- package/dist/errors/validation.d.ts +0 -1
- package/dist/errors/validation.d.ts.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/plugin/dev-reader.d.ts +5 -4
- package/dist/plugin/dev-reader.d.ts.map +1 -1
- package/dist/plugin/index.d.ts +4 -0
- package/dist/plugin/plugin.d.ts +3 -1
- package/dist/plugin/plugin.d.ts.map +1 -1
- package/dist/plugin/to-plugin.d.ts +1 -1
- package/dist/plugin/to-plugin.d.ts.map +1 -1
- package/dist/plugins/analytics/analytics.d.ts +5 -2
- package/dist/plugins/analytics/analytics.d.ts.map +1 -1
- package/dist/plugins/analytics/analytics.js +2 -2
- package/dist/plugins/analytics/analytics.js.map +1 -1
- package/dist/plugins/analytics/index.d.ts +2 -0
- package/dist/plugins/analytics/index.js +0 -1
- package/dist/plugins/analytics/manifest.js +30 -18
- package/dist/plugins/analytics/manifest.js.map +1 -1
- package/dist/plugins/analytics/types.d.ts +1 -0
- package/dist/plugins/analytics/types.d.ts.map +1 -1
- package/dist/plugins/genie/genie.d.ts +4 -1
- package/dist/plugins/genie/genie.d.ts.map +1 -1
- package/dist/plugins/genie/genie.js +10 -6
- package/dist/plugins/genie/genie.js.map +1 -1
- package/dist/plugins/genie/index.d.ts +4 -0
- package/dist/plugins/genie/index.js +0 -1
- package/dist/plugins/genie/manifest.js +37 -8
- package/dist/plugins/genie/manifest.js.map +1 -1
- package/dist/plugins/genie/types.d.ts +2 -0
- package/dist/plugins/genie/types.d.ts.map +1 -1
- package/dist/plugins/index.d.ts +13 -0
- package/dist/plugins/index.js +0 -4
- package/dist/plugins/lakebase/index.d.ts +2 -0
- package/dist/plugins/lakebase/index.js +0 -1
- package/dist/plugins/lakebase/lakebase.d.ts +14 -12
- package/dist/plugins/lakebase/lakebase.d.ts.map +1 -1
- package/dist/plugins/lakebase/lakebase.js +2 -2
- package/dist/plugins/lakebase/lakebase.js.map +1 -1
- package/dist/plugins/lakebase/manifest.js +14 -8
- package/dist/plugins/lakebase/manifest.js.map +1 -1
- package/dist/plugins/lakebase/types.d.ts +1 -1
- package/dist/plugins/lakebase/types.d.ts.map +1 -1
- package/dist/plugins/server/index.d.ts +7 -9
- package/dist/plugins/server/index.d.ts.map +1 -1
- package/dist/plugins/server/index.js +2 -2
- package/dist/plugins/server/index.js.map +1 -1
- package/dist/plugins/server/manifest.js +36 -18
- package/dist/plugins/server/manifest.js.map +1 -1
- package/dist/plugins/server/types.d.ts +2 -0
- package/dist/plugins/server/types.d.ts.map +1 -1
- package/dist/registry/index.d.ts +4 -0
- package/dist/registry/manifest-loader.d.ts +1 -1
- package/dist/registry/manifest-loader.d.ts.map +1 -1
- package/dist/registry/resource-registry.d.ts +1 -1
- package/dist/registry/resource-registry.d.ts.map +1 -1
- package/dist/registry/types.d.ts +1 -4
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/registry/types.generated.d.ts +1 -1
- package/dist/registry/types.generated.d.ts.map +1 -1
- package/dist/registry/types.generated.js.map +1 -1
- package/dist/shared/src/cache.d.ts +1 -1
- package/dist/shared/src/cache.d.ts.map +1 -1
- package/dist/shared/src/execute.d.ts +1 -1
- package/dist/shared/src/execute.d.ts.map +1 -1
- package/dist/shared/src/genie.d.ts +6 -0
- package/dist/shared/src/genie.d.ts.map +1 -1
- package/dist/shared/src/index.d.ts +7 -0
- package/dist/shared/src/plugin.d.ts +2 -3
- package/dist/shared/src/plugin.d.ts.map +1 -1
- package/dist/shared/src/sql/helpers.d.ts +0 -1
- package/dist/shared/src/sql/helpers.d.ts.map +1 -1
- package/dist/shared/src/sql/types.d.ts.map +1 -1
- package/dist/shared/src/tunnel.d.ts +1 -1
- package/dist/shared/src/tunnel.d.ts.map +1 -1
- package/dist/stream/arrow-stream-processor.d.ts +1 -0
- package/dist/stream/buffers.d.ts +1 -0
- package/dist/stream/index.d.ts +3 -0
- package/dist/stream/stream-manager.d.ts +1 -0
- package/dist/stream/stream-manager.d.ts.map +1 -1
- package/dist/stream/types.d.ts +3 -0
- package/dist/telemetry/config.d.ts +1 -0
- package/dist/telemetry/index.d.ts +4 -0
- package/dist/telemetry/instrumentations.d.ts +1 -0
- package/dist/telemetry/telemetry-manager.d.ts +4 -0
- package/dist/telemetry/telemetry-provider.d.ts +6 -0
- package/dist/telemetry/types.d.ts.map +1 -1
- package/dist/type-generator/cache.js +10 -12
- package/dist/type-generator/cache.js.map +1 -1
- package/dist/type-generator/index.js +2 -2
- package/dist/type-generator/index.js.map +1 -1
- package/dist/type-generator/query-registry.js +165 -52
- package/dist/type-generator/query-registry.js.map +1 -1
- package/dist/type-generator/spinner.js +5 -1
- package/dist/type-generator/spinner.js.map +1 -1
- package/dist/type-generator/vite-plugin.d.ts +0 -1
- package/dist/type-generator/vite-plugin.d.ts.map +1 -1
- package/dist/type-generator/vite-plugin.js +2 -2
- package/dist/type-generator/vite-plugin.js.map +1 -1
- package/docs/api/appkit-ui/genie/GenieChatMessageList.md +7 -5
- package/docs/development/project-setup.md +1 -1
- package/docs/plugins/plugin-management.md +16 -2
- package/package.json +3 -1
- package/dist/plugins/analytics/manifest.json +0 -36
- package/dist/plugins/genie/manifest.json +0 -43
- package/dist/plugins/lakebase/manifest.json +0 -12
- package/dist/plugins/server/manifest.json +0 -36
- /package/dist/plugins/server/remote-tunnel/{denied.html → denied.html/denied.html} +0 -0
- /package/dist/plugins/server/remote-tunnel/{index.html → index.html/index.html} +0 -0
- /package/dist/plugins/server/remote-tunnel/{wait.html → wait.html/wait.html} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","names":[],"sources":["../../../../../src/cli/commands/plugin/validate/validate.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport process from \"node:process\";\nimport { Command } from \"commander\";\nimport {\n detectSchemaType,\n formatValidationErrors,\n validateManifest,\n validateTemplateManifest,\n} from \"./validate-manifest\";\n\nfunction resolveManifestPaths(paths: string[]
|
|
1
|
+
{"version":3,"file":"validate.js","names":[],"sources":["../../../../../src/cli/commands/plugin/validate/validate.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport process from \"node:process\";\nimport { Command } from \"commander\";\nimport {\n loadManifestFromFile,\n type ResolvedManifest,\n resolveManifestInDir,\n} from \"../manifest-resolve\";\nimport {\n detectSchemaType,\n formatValidationErrors,\n validateManifest,\n validateTemplateManifest,\n} from \"./validate-manifest\";\n\nfunction resolveManifestPaths(\n paths: string[],\n cwd: string,\n allowJsManifest: boolean,\n): ResolvedManifest[] {\n const out: ResolvedManifest[] = [];\n for (const p of paths) {\n const resolved = path.resolve(cwd, p);\n if (!fs.existsSync(resolved)) {\n console.error(`Path not found: ${p}`);\n continue;\n }\n const stat = fs.statSync(resolved);\n if (stat.isDirectory()) {\n let found = false;\n const pluginResolved = resolveManifestInDir(resolved, {\n allowJsManifest,\n });\n if (pluginResolved) {\n out.push(pluginResolved);\n found = true;\n }\n const templateManifest = path.join(resolved, \"appkit.plugins.json\");\n if (fs.existsSync(templateManifest)) {\n out.push({ path: templateManifest, type: \"json\" });\n found = true;\n }\n if (!found) {\n console.error(\n `No ${allowJsManifest ? \"manifest.json, manifest.js, or\" : \"manifest.json or\"} appkit.plugins.json in directory: ${p}`,\n );\n }\n } else {\n const ext = path.extname(resolved).toLowerCase();\n if (!allowJsManifest && (ext === \".js\" || ext === \".cjs\")) {\n console.error(\n `JS manifest provided but disabled by default: ${p}. Re-run with --allow-js-manifest to opt in.`,\n );\n continue;\n }\n out.push({\n path: resolved,\n type: ext === \".js\" || ext === \".cjs\" ? \"js\" : \"json\",\n });\n }\n }\n return out;\n}\n\nasync function runPluginValidate(\n paths: string[],\n options: { allowJsManifest?: boolean },\n): Promise<void> {\n const cwd = process.cwd();\n const allowJsManifest = Boolean(options.allowJsManifest);\n if (allowJsManifest) {\n console.warn(\n \"Warning: --allow-js-manifest executes manifest.js/manifest.cjs files. Only use with trusted code.\",\n );\n }\n const toValidate = paths.length > 0 ? paths : [\".\"];\n const manifestPaths = resolveManifestPaths(toValidate, cwd, allowJsManifest);\n\n if (manifestPaths.length === 0) {\n console.error(\"No manifest files to validate.\");\n process.exit(1);\n }\n\n let hasFailure = false;\n for (const { path: manifestPath, type } of manifestPaths) {\n let obj: unknown;\n try {\n obj = await loadManifestFromFile(manifestPath, type, { allowJsManifest });\n } catch (err) {\n console.error(`✗ ${manifestPath}`);\n console.error(` ${err instanceof Error ? err.message : String(err)}`);\n hasFailure = true;\n continue;\n }\n\n const schemaType = detectSchemaType(obj);\n const result =\n schemaType === \"template-plugins\"\n ? validateTemplateManifest(obj)\n : validateManifest(obj);\n\n const relativePath = path.relative(cwd, manifestPath);\n if (result.valid) {\n console.log(`✓ ${relativePath}`);\n } else {\n console.error(`✗ ${relativePath}`);\n if (result.errors?.length) {\n console.error(formatValidationErrors(result.errors, obj));\n }\n hasFailure = true;\n }\n }\n\n process.exit(hasFailure ? 1 : 0);\n}\n\nexport const pluginValidateCommand = new Command(\"validate\")\n .description(\n \"Validate plugin manifest(s) or template manifests against their JSON schema\",\n )\n .argument(\n \"[paths...]\",\n \"Paths to manifest.json or appkit.plugins.json (or plugin directories); use --allow-js-manifest to include manifest.js\",\n )\n .option(\n \"--allow-js-manifest\",\n \"Allow reading manifest.js/manifest.cjs (executes code; use only with trusted plugins)\",\n )\n .action((paths: string[], opts: { allowJsManifest?: boolean }) =>\n runPluginValidate(paths, opts).catch((err) => {\n console.error(err);\n process.exit(1);\n }),\n );\n"],"mappings":";;;;;;;;AAgBA,SAAS,qBACP,OACA,KACA,iBACoB;CACpB,MAAM,MAA0B,EAAE;AAClC,MAAK,MAAM,KAAK,OAAO;EACrB,MAAM,WAAW,KAAK,QAAQ,KAAK,EAAE;AACrC,MAAI,CAAC,GAAG,WAAW,SAAS,EAAE;AAC5B,WAAQ,MAAM,mBAAmB,IAAI;AACrC;;AAGF,MADa,GAAG,SAAS,SAAS,CACzB,aAAa,EAAE;GACtB,IAAI,QAAQ;GACZ,MAAM,iBAAiB,qBAAqB,UAAU,EACpD,iBACD,CAAC;AACF,OAAI,gBAAgB;AAClB,QAAI,KAAK,eAAe;AACxB,YAAQ;;GAEV,MAAM,mBAAmB,KAAK,KAAK,UAAU,sBAAsB;AACnE,OAAI,GAAG,WAAW,iBAAiB,EAAE;AACnC,QAAI,KAAK;KAAE,MAAM;KAAkB,MAAM;KAAQ,CAAC;AAClD,YAAQ;;AAEV,OAAI,CAAC,MACH,SAAQ,MACN,MAAM,kBAAkB,mCAAmC,mBAAmB,qCAAqC,IACpH;SAEE;GACL,MAAM,MAAM,KAAK,QAAQ,SAAS,CAAC,aAAa;AAChD,OAAI,CAAC,oBAAoB,QAAQ,SAAS,QAAQ,SAAS;AACzD,YAAQ,MACN,iDAAiD,EAAE,8CACpD;AACD;;AAEF,OAAI,KAAK;IACP,MAAM;IACN,MAAM,QAAQ,SAAS,QAAQ,SAAS,OAAO;IAChD,CAAC;;;AAGN,QAAO;;AAGT,eAAe,kBACb,OACA,SACe;CACf,MAAM,MAAM,QAAQ,KAAK;CACzB,MAAM,kBAAkB,QAAQ,QAAQ,gBAAgB;AACxD,KAAI,gBACF,SAAQ,KACN,oGACD;CAGH,MAAM,gBAAgB,qBADH,MAAM,SAAS,IAAI,QAAQ,CAAC,IAAI,EACI,KAAK,gBAAgB;AAE5E,KAAI,cAAc,WAAW,GAAG;AAC9B,UAAQ,MAAM,iCAAiC;AAC/C,UAAQ,KAAK,EAAE;;CAGjB,IAAI,aAAa;AACjB,MAAK,MAAM,EAAE,MAAM,cAAc,UAAU,eAAe;EACxD,IAAI;AACJ,MAAI;AACF,SAAM,MAAM,qBAAqB,cAAc,MAAM,EAAE,iBAAiB,CAAC;WAClE,KAAK;AACZ,WAAQ,MAAM,KAAK,eAAe;AAClC,WAAQ,MAAM,KAAK,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI,GAAG;AACtE,gBAAa;AACb;;EAIF,MAAM,SADa,iBAAiB,IAAI,KAEvB,qBACX,yBAAyB,IAAI,GAC7B,iBAAiB,IAAI;EAE3B,MAAM,eAAe,KAAK,SAAS,KAAK,aAAa;AACrD,MAAI,OAAO,MACT,SAAQ,IAAI,KAAK,eAAe;OAC3B;AACL,WAAQ,MAAM,KAAK,eAAe;AAClC,OAAI,OAAO,QAAQ,OACjB,SAAQ,MAAM,uBAAuB,OAAO,QAAQ,IAAI,CAAC;AAE3D,gBAAa;;;AAIjB,SAAQ,KAAK,aAAa,IAAI,EAAE;;AAGlC,MAAa,wBAAwB,IAAI,QAAQ,WAAW,CACzD,YACC,8EACD,CACA,SACC,cACA,wHACD,CACA,OACC,uBACA,wFACD,CACA,QAAQ,OAAiB,SACxB,kBAAkB,OAAO,KAAK,CAAC,OAAO,QAAQ;AAC5C,SAAQ,MAAM,IAAI;AAClB,SAAQ,KAAK,EAAE;EACf,CACH"}
|
|
@@ -69,20 +69,17 @@ var GenieConnector = class {
|
|
|
69
69
|
return messageWaiter.wait(waitOptions);
|
|
70
70
|
}
|
|
71
71
|
async listConversationMessages(workspaceClient, spaceId, conversationId, options) {
|
|
72
|
-
const
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
pageToken = response.next_page_token;
|
|
84
|
-
} while (pageToken && allMessages.length < maxMessages);
|
|
85
|
-
return allMessages.slice(0, maxMessages).reverse().map(toMessageResponse);
|
|
72
|
+
const pageSize = options?.pageSize ?? genieConnectorDefaults.initialPageSize;
|
|
73
|
+
const response = await workspaceClient.genie.listConversationMessages({
|
|
74
|
+
space_id: spaceId,
|
|
75
|
+
conversation_id: conversationId,
|
|
76
|
+
page_size: pageSize,
|
|
77
|
+
...options?.pageToken ? { page_token: options.pageToken } : {}
|
|
78
|
+
});
|
|
79
|
+
return {
|
|
80
|
+
messages: (response.messages ?? []).reverse().map(toMessageResponse),
|
|
81
|
+
nextPageToken: response.next_page_token ?? null
|
|
82
|
+
};
|
|
86
83
|
}
|
|
87
84
|
async getMessageAttachmentQueryResult(workspaceClient, spaceId, conversationId, messageId, attachmentId, _signal) {
|
|
88
85
|
return (await workspaceClient.genie.getMessageAttachmentQueryResult({
|
|
@@ -147,11 +144,21 @@ var GenieConnector = class {
|
|
|
147
144
|
async *streamConversation(workspaceClient, spaceId, conversationId, options) {
|
|
148
145
|
const includeQueryResults = options?.includeQueryResults !== false;
|
|
149
146
|
try {
|
|
150
|
-
const messageResponses = await this.listConversationMessages(workspaceClient, spaceId, conversationId
|
|
147
|
+
const { messages: messageResponses, nextPageToken } = await this.listConversationMessages(workspaceClient, spaceId, conversationId, {
|
|
148
|
+
pageSize: options?.pageSize,
|
|
149
|
+
pageToken: options?.pageToken
|
|
150
|
+
});
|
|
151
151
|
for (const messageResponse of messageResponses) yield {
|
|
152
152
|
type: "message_result",
|
|
153
153
|
message: messageResponse
|
|
154
154
|
};
|
|
155
|
+
yield {
|
|
156
|
+
type: "history_info",
|
|
157
|
+
conversationId,
|
|
158
|
+
spaceId,
|
|
159
|
+
nextPageToken,
|
|
160
|
+
loadedCount: messageResponses.length
|
|
161
|
+
};
|
|
155
162
|
if (includeQueryResults) {
|
|
156
163
|
const queryAttachments = [];
|
|
157
164
|
for (const msg of messageResponses) for (const att of msg.attachments ?? []) if (att.query?.statementId && att.attachmentId) queryAttachments.push({
|
|
@@ -197,10 +204,20 @@ var GenieConnector = class {
|
|
|
197
204
|
};
|
|
198
205
|
}
|
|
199
206
|
async getConversation(workspaceClient, spaceId, conversationId) {
|
|
207
|
+
const allMessages = [];
|
|
208
|
+
let pageToken;
|
|
209
|
+
do {
|
|
210
|
+
const { messages, nextPageToken } = await this.listConversationMessages(workspaceClient, spaceId, conversationId, {
|
|
211
|
+
pageSize: genieConnectorDefaults.pageSize,
|
|
212
|
+
pageToken
|
|
213
|
+
});
|
|
214
|
+
allMessages.push(...messages);
|
|
215
|
+
pageToken = nextPageToken ?? void 0;
|
|
216
|
+
} while (pageToken && allMessages.length < this.config.maxMessages);
|
|
200
217
|
return {
|
|
201
218
|
conversationId,
|
|
202
219
|
spaceId,
|
|
203
|
-
messages:
|
|
220
|
+
messages: allMessages.slice(0, this.config.maxMessages)
|
|
204
221
|
};
|
|
205
222
|
}
|
|
206
223
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","names":[],"sources":["../../../src/connectors/genie/client.ts"],"sourcesContent":["import type { WorkspaceClient } from \"@databricks/sdk-experimental\";\nimport * as SDK from \"@databricks/sdk-experimental\";\nimport type { GenieMessage } from \"@databricks/sdk-experimental/dist/apis/dashboards\";\nimport type { Waiter } from \"@databricks/sdk-experimental/dist/wait\";\nimport { createLogger } from \"../../logging\";\nimport { genieConnectorDefaults } from \"./defaults\";\nimport { pollWaiter } from \"./poll-waiter\";\nimport type {\n GenieAttachmentResponse,\n GenieConversationHistoryResponse,\n GenieMessageResponse,\n GenieStreamEvent,\n} from \"./types\";\n\nconst { TimeUnits } = SDK;\nconst Time = SDK.Time ?? (SDK as any).default.Time;\n\nconst logger = createLogger(\"connectors:genie\");\n\ntype CreateMessageWaiter = Waiter<GenieMessage, GenieMessage>;\n\nexport interface GenieConnectorConfig {\n timeout?: number;\n maxMessages?: number;\n}\n\nfunction mapAttachments(message: GenieMessage): GenieAttachmentResponse[] {\n return (\n message.attachments?.map((att) => ({\n attachmentId: att.attachment_id,\n query: att.query\n ? {\n title: att.query.title,\n description: att.query.description,\n query: att.query.query,\n statementId: att.query.statement_id,\n }\n : undefined,\n text: att.text ? { content: att.text.content } : undefined,\n suggestedQuestions: att.suggested_questions?.questions,\n })) ?? []\n );\n}\n\nfunction toMessageResponse(message: GenieMessage): GenieMessageResponse {\n return {\n messageId: message.message_id,\n conversationId: message.conversation_id,\n spaceId: message.space_id,\n status: message.status ?? \"COMPLETED\",\n content: message.content,\n attachments: mapAttachments(message),\n error: message.error?.error,\n };\n}\n\nexport class GenieConnector {\n private readonly config: Required<GenieConnectorConfig>;\n\n constructor(config: GenieConnectorConfig = {}) {\n this.config = {\n timeout: config.timeout ?? genieConnectorDefaults.timeout,\n maxMessages: config.maxMessages ?? genieConnectorDefaults.maxMessages,\n };\n }\n\n async startMessage(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n content: string,\n conversationId: string | undefined,\n ): Promise<{\n messageWaiter: CreateMessageWaiter;\n conversationId: string;\n messageId: string;\n }> {\n if (conversationId) {\n const waiter = await workspaceClient.genie.createMessage({\n space_id: spaceId,\n conversation_id: conversationId,\n content,\n });\n return {\n messageWaiter: waiter,\n conversationId,\n messageId: waiter.message_id ?? \"\",\n };\n }\n const start = await workspaceClient.genie.startConversation({\n space_id: spaceId,\n content,\n });\n return {\n messageWaiter: start as unknown as CreateMessageWaiter,\n conversationId: start.conversation_id,\n messageId: start.message_id,\n };\n }\n\n async waitForMessage(\n messageWaiter: CreateMessageWaiter,\n options?: { timeout?: number },\n ): Promise<GenieMessage> {\n const timeout = options?.timeout ?? this.config.timeout;\n const waitOptions =\n timeout > 0 ? { timeout: new Time(timeout, TimeUnits.milliseconds) } : {};\n return messageWaiter.wait(waitOptions);\n }\n\n async listConversationMessages(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n conversationId: string,\n options?: { maxMessages?: number },\n ): Promise<GenieMessageResponse[]> {\n const maxMessages = options?.maxMessages ?? this.config.maxMessages;\n const allMessages: GenieMessage[] = [];\n let pageToken: string | undefined;\n\n do {\n const response = await workspaceClient.genie.listConversationMessages({\n space_id: spaceId,\n conversation_id: conversationId,\n page_size: genieConnectorDefaults.pageSize,\n ...(pageToken ? { page_token: pageToken } : {}),\n });\n\n if (response.messages) {\n allMessages.push(...response.messages);\n }\n\n pageToken = response.next_page_token;\n } while (pageToken && allMessages.length < maxMessages);\n\n return allMessages.slice(0, maxMessages).reverse().map(toMessageResponse);\n }\n\n async getMessageAttachmentQueryResult(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n conversationId: string,\n messageId: string,\n attachmentId: string,\n _signal?: AbortSignal,\n ): Promise<unknown> {\n const response =\n await workspaceClient.genie.getMessageAttachmentQueryResult({\n space_id: spaceId,\n conversation_id: conversationId,\n message_id: messageId,\n attachment_id: attachmentId,\n });\n return response.statement_response;\n }\n\n async *streamSendMessage(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n content: string,\n conversationId: string | undefined,\n options?: { timeout?: number },\n ): AsyncGenerator<GenieStreamEvent> {\n try {\n const {\n messageWaiter,\n conversationId: resultConversationId,\n messageId: resultMessageId,\n } = await this.startMessage(\n workspaceClient,\n spaceId,\n content,\n conversationId,\n );\n\n yield {\n type: \"message_start\",\n conversationId: resultConversationId,\n messageId: resultMessageId,\n spaceId,\n };\n\n const timeout =\n options?.timeout != null ? options.timeout : this.config.timeout;\n const waitOptions =\n timeout > 0\n ? { timeout: new Time(timeout, TimeUnits.milliseconds) }\n : {};\n\n let completedMessage!: GenieMessage;\n for await (const event of pollWaiter(messageWaiter, waitOptions)) {\n if (event.type === \"progress\" && event.value.status) {\n yield { type: \"status\", status: event.value.status };\n } else if (event.type === \"completed\") {\n completedMessage = event.value;\n }\n }\n\n const messageResponse = toMessageResponse(completedMessage);\n yield { type: \"message_result\", message: messageResponse };\n\n yield* this.emitQueryResults(\n workspaceClient,\n spaceId,\n resultConversationId,\n messageResponse.messageId,\n messageResponse,\n );\n } catch (error) {\n logger.error(\"Genie message error: %O\", error);\n yield {\n type: \"error\",\n error: error instanceof Error ? error.message : \"Genie request failed\",\n };\n }\n }\n\n private async *emitQueryResults(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n conversationId: string,\n messageId: string,\n messageResponse: GenieMessageResponse,\n ): AsyncGenerator<\n Extract<GenieStreamEvent, { type: \"query_result\" } | { type: \"error\" }>\n > {\n const attachments = messageResponse.attachments ?? [];\n for (const att of attachments) {\n if (!att.query?.statementId || !att.attachmentId) continue;\n try {\n const data = await this.getMessageAttachmentQueryResult(\n workspaceClient,\n spaceId,\n conversationId,\n messageId,\n att.attachmentId,\n );\n yield {\n type: \"query_result\",\n attachmentId: att.attachmentId,\n statementId: att.query.statementId,\n data,\n };\n } catch (error) {\n logger.error(\n \"Failed to fetch query result for attachment %s: %O\",\n att.attachmentId,\n error,\n );\n yield {\n type: \"error\",\n error: `Failed to fetch query result for attachment ${att.attachmentId}`,\n };\n }\n }\n }\n\n async *streamConversation(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n conversationId: string,\n options?: { includeQueryResults?: boolean },\n ): AsyncGenerator<GenieStreamEvent> {\n const includeQueryResults = options?.includeQueryResults !== false;\n\n try {\n const messageResponses = await this.listConversationMessages(\n workspaceClient,\n spaceId,\n conversationId,\n );\n\n for (const messageResponse of messageResponses) {\n yield { type: \"message_result\", message: messageResponse };\n }\n\n if (includeQueryResults) {\n const queryAttachments: Array<{\n messageId: string;\n attachmentId: string;\n statementId: string;\n }> = [];\n\n for (const msg of messageResponses) {\n for (const att of msg.attachments ?? []) {\n if (att.query?.statementId && att.attachmentId) {\n queryAttachments.push({\n messageId: msg.messageId,\n attachmentId: att.attachmentId,\n statementId: att.query.statementId,\n });\n }\n }\n }\n\n const results = await Promise.allSettled(\n queryAttachments.map(async (att) => {\n const data = await this.getMessageAttachmentQueryResult(\n workspaceClient,\n spaceId,\n conversationId,\n att.messageId,\n att.attachmentId,\n );\n return {\n attachmentId: att.attachmentId,\n statementId: att.statementId,\n data,\n };\n }),\n );\n\n for (const result of results) {\n if (result.status === \"fulfilled\") {\n yield {\n type: \"query_result\",\n attachmentId: result.value.attachmentId,\n statementId: result.value.statementId,\n data: result.value.data,\n };\n } else {\n logger.error(\"Failed to fetch query result: %O\", result.reason);\n yield {\n type: \"error\",\n error:\n result.reason instanceof Error\n ? result.reason.message\n : \"Failed to fetch query result\",\n };\n }\n }\n }\n } catch (error) {\n logger.error(\"Genie getConversation error: %O\", error);\n yield {\n type: \"error\",\n error:\n error instanceof Error\n ? error.message\n : \"Failed to fetch conversation\",\n };\n }\n }\n\n async sendMessage(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n content: string,\n conversationId: string | undefined,\n ): Promise<GenieMessageResponse> {\n const { messageWaiter, conversationId: resultConversationId } =\n await this.startMessage(\n workspaceClient,\n spaceId,\n content,\n conversationId,\n );\n const completedMessage = await this.waitForMessage(messageWaiter);\n const messageResponse = toMessageResponse(completedMessage);\n return {\n ...messageResponse,\n conversationId: resultConversationId,\n };\n }\n\n async getConversation(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n conversationId: string,\n ): Promise<GenieConversationHistoryResponse> {\n const messages = await this.listConversationMessages(\n workspaceClient,\n spaceId,\n conversationId,\n );\n return {\n conversationId,\n spaceId,\n messages,\n };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","names":[],"sources":["../../../src/connectors/genie/client.ts"],"sourcesContent":["import type { WorkspaceClient } from \"@databricks/sdk-experimental\";\nimport * as SDK from \"@databricks/sdk-experimental\";\nimport type { GenieMessage } from \"@databricks/sdk-experimental/dist/apis/dashboards\";\nimport type { Waiter } from \"@databricks/sdk-experimental/dist/wait\";\nimport { createLogger } from \"../../logging\";\nimport { genieConnectorDefaults } from \"./defaults\";\nimport { pollWaiter } from \"./poll-waiter\";\nimport type {\n GenieAttachmentResponse,\n GenieConversationHistoryResponse,\n GenieMessageResponse,\n GenieStreamEvent,\n} from \"./types\";\n\nconst { TimeUnits } = SDK;\nconst Time = SDK.Time ?? (SDK as any).default.Time;\n\nconst logger = createLogger(\"connectors:genie\");\n\ntype CreateMessageWaiter = Waiter<GenieMessage, GenieMessage>;\n\nexport interface GenieConnectorConfig {\n timeout?: number;\n maxMessages?: number;\n}\n\nfunction mapAttachments(message: GenieMessage): GenieAttachmentResponse[] {\n return (\n message.attachments?.map((att) => ({\n attachmentId: att.attachment_id,\n query: att.query\n ? {\n title: att.query.title,\n description: att.query.description,\n query: att.query.query,\n statementId: att.query.statement_id,\n }\n : undefined,\n text: att.text ? { content: att.text.content } : undefined,\n suggestedQuestions: att.suggested_questions?.questions,\n })) ?? []\n );\n}\n\nfunction toMessageResponse(message: GenieMessage): GenieMessageResponse {\n return {\n messageId: message.message_id,\n conversationId: message.conversation_id,\n spaceId: message.space_id,\n status: message.status ?? \"COMPLETED\",\n content: message.content,\n attachments: mapAttachments(message),\n error: message.error?.error,\n };\n}\n\nexport class GenieConnector {\n private readonly config: Required<GenieConnectorConfig>;\n\n constructor(config: GenieConnectorConfig = {}) {\n this.config = {\n timeout: config.timeout ?? genieConnectorDefaults.timeout,\n maxMessages: config.maxMessages ?? genieConnectorDefaults.maxMessages,\n };\n }\n\n async startMessage(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n content: string,\n conversationId: string | undefined,\n ): Promise<{\n messageWaiter: CreateMessageWaiter;\n conversationId: string;\n messageId: string;\n }> {\n if (conversationId) {\n const waiter = await workspaceClient.genie.createMessage({\n space_id: spaceId,\n conversation_id: conversationId,\n content,\n });\n return {\n messageWaiter: waiter,\n conversationId,\n messageId: waiter.message_id ?? \"\",\n };\n }\n const start = await workspaceClient.genie.startConversation({\n space_id: spaceId,\n content,\n });\n return {\n messageWaiter: start as unknown as CreateMessageWaiter,\n conversationId: start.conversation_id,\n messageId: start.message_id,\n };\n }\n\n async waitForMessage(\n messageWaiter: CreateMessageWaiter,\n options?: { timeout?: number },\n ): Promise<GenieMessage> {\n const timeout = options?.timeout ?? this.config.timeout;\n const waitOptions =\n timeout > 0 ? { timeout: new Time(timeout, TimeUnits.milliseconds) } : {};\n return messageWaiter.wait(waitOptions);\n }\n\n async listConversationMessages(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n conversationId: string,\n options?: { pageSize?: number; pageToken?: string },\n ): Promise<{\n messages: GenieMessageResponse[];\n nextPageToken: string | null;\n }> {\n const pageSize =\n options?.pageSize ?? genieConnectorDefaults.initialPageSize;\n\n const response = await workspaceClient.genie.listConversationMessages({\n space_id: spaceId,\n conversation_id: conversationId,\n page_size: pageSize,\n ...(options?.pageToken ? { page_token: options.pageToken } : {}),\n });\n\n const messages = (response.messages ?? []).reverse().map(toMessageResponse);\n\n return {\n messages,\n nextPageToken: response.next_page_token ?? null,\n };\n }\n\n async getMessageAttachmentQueryResult(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n conversationId: string,\n messageId: string,\n attachmentId: string,\n _signal?: AbortSignal,\n ): Promise<unknown> {\n const response =\n await workspaceClient.genie.getMessageAttachmentQueryResult({\n space_id: spaceId,\n conversation_id: conversationId,\n message_id: messageId,\n attachment_id: attachmentId,\n });\n return response.statement_response;\n }\n\n async *streamSendMessage(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n content: string,\n conversationId: string | undefined,\n options?: { timeout?: number },\n ): AsyncGenerator<GenieStreamEvent> {\n try {\n const {\n messageWaiter,\n conversationId: resultConversationId,\n messageId: resultMessageId,\n } = await this.startMessage(\n workspaceClient,\n spaceId,\n content,\n conversationId,\n );\n\n yield {\n type: \"message_start\",\n conversationId: resultConversationId,\n messageId: resultMessageId,\n spaceId,\n };\n\n const timeout =\n options?.timeout != null ? options.timeout : this.config.timeout;\n const waitOptions =\n timeout > 0\n ? { timeout: new Time(timeout, TimeUnits.milliseconds) }\n : {};\n\n let completedMessage!: GenieMessage;\n for await (const event of pollWaiter(messageWaiter, waitOptions)) {\n if (event.type === \"progress\" && event.value.status) {\n yield { type: \"status\", status: event.value.status };\n } else if (event.type === \"completed\") {\n completedMessage = event.value;\n }\n }\n\n const messageResponse = toMessageResponse(completedMessage);\n yield { type: \"message_result\", message: messageResponse };\n\n yield* this.emitQueryResults(\n workspaceClient,\n spaceId,\n resultConversationId,\n messageResponse.messageId,\n messageResponse,\n );\n } catch (error) {\n logger.error(\"Genie message error: %O\", error);\n yield {\n type: \"error\",\n error: error instanceof Error ? error.message : \"Genie request failed\",\n };\n }\n }\n\n private async *emitQueryResults(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n conversationId: string,\n messageId: string,\n messageResponse: GenieMessageResponse,\n ): AsyncGenerator<\n Extract<GenieStreamEvent, { type: \"query_result\" } | { type: \"error\" }>\n > {\n const attachments = messageResponse.attachments ?? [];\n for (const att of attachments) {\n if (!att.query?.statementId || !att.attachmentId) continue;\n try {\n const data = await this.getMessageAttachmentQueryResult(\n workspaceClient,\n spaceId,\n conversationId,\n messageId,\n att.attachmentId,\n );\n yield {\n type: \"query_result\",\n attachmentId: att.attachmentId,\n statementId: att.query.statementId,\n data,\n };\n } catch (error) {\n logger.error(\n \"Failed to fetch query result for attachment %s: %O\",\n att.attachmentId,\n error,\n );\n yield {\n type: \"error\",\n error: `Failed to fetch query result for attachment ${att.attachmentId}`,\n };\n }\n }\n }\n\n async *streamConversation(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n conversationId: string,\n options?: {\n includeQueryResults?: boolean;\n pageSize?: number;\n pageToken?: string;\n },\n ): AsyncGenerator<GenieStreamEvent> {\n const includeQueryResults = options?.includeQueryResults !== false;\n\n try {\n const { messages: messageResponses, nextPageToken } =\n await this.listConversationMessages(\n workspaceClient,\n spaceId,\n conversationId,\n { pageSize: options?.pageSize, pageToken: options?.pageToken },\n );\n\n for (const messageResponse of messageResponses) {\n yield { type: \"message_result\", message: messageResponse };\n }\n\n yield {\n type: \"history_info\",\n conversationId,\n spaceId,\n nextPageToken,\n loadedCount: messageResponses.length,\n };\n\n if (includeQueryResults) {\n const queryAttachments: Array<{\n messageId: string;\n attachmentId: string;\n statementId: string;\n }> = [];\n\n for (const msg of messageResponses) {\n for (const att of msg.attachments ?? []) {\n if (att.query?.statementId && att.attachmentId) {\n queryAttachments.push({\n messageId: msg.messageId,\n attachmentId: att.attachmentId,\n statementId: att.query.statementId,\n });\n }\n }\n }\n\n const results = await Promise.allSettled(\n queryAttachments.map(async (att) => {\n const data = await this.getMessageAttachmentQueryResult(\n workspaceClient,\n spaceId,\n conversationId,\n att.messageId,\n att.attachmentId,\n );\n return {\n attachmentId: att.attachmentId,\n statementId: att.statementId,\n data,\n };\n }),\n );\n\n for (const result of results) {\n if (result.status === \"fulfilled\") {\n yield {\n type: \"query_result\",\n attachmentId: result.value.attachmentId,\n statementId: result.value.statementId,\n data: result.value.data,\n };\n } else {\n logger.error(\"Failed to fetch query result: %O\", result.reason);\n yield {\n type: \"error\",\n error:\n result.reason instanceof Error\n ? result.reason.message\n : \"Failed to fetch query result\",\n };\n }\n }\n }\n } catch (error) {\n logger.error(\"Genie getConversation error: %O\", error);\n yield {\n type: \"error\",\n error:\n error instanceof Error\n ? error.message\n : \"Failed to fetch conversation\",\n };\n }\n }\n\n async sendMessage(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n content: string,\n conversationId: string | undefined,\n ): Promise<GenieMessageResponse> {\n const { messageWaiter, conversationId: resultConversationId } =\n await this.startMessage(\n workspaceClient,\n spaceId,\n content,\n conversationId,\n );\n const completedMessage = await this.waitForMessage(messageWaiter);\n const messageResponse = toMessageResponse(completedMessage);\n return {\n ...messageResponse,\n conversationId: resultConversationId,\n };\n }\n\n async getConversation(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n conversationId: string,\n ): Promise<GenieConversationHistoryResponse> {\n const allMessages: GenieMessageResponse[] = [];\n let pageToken: string | undefined;\n\n do {\n const { messages, nextPageToken } = await this.listConversationMessages(\n workspaceClient,\n spaceId,\n conversationId,\n {\n pageSize: genieConnectorDefaults.pageSize,\n pageToken,\n },\n );\n allMessages.push(...messages);\n pageToken = nextPageToken ?? undefined;\n } while (pageToken && allMessages.length < this.config.maxMessages);\n\n return {\n conversationId,\n spaceId,\n messages: allMessages.slice(0, this.config.maxMessages),\n };\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","names":[],"sources":["../../../src/connectors/genie/defaults.ts"],"sourcesContent":["export const genieConnectorDefaults = {\n /** Genie waiter timeout in ms. 0 = indefinite. */\n timeout: 120_000,\n /** Max messages to fetch when listing a conversation. */\n maxMessages: 200,\n /** Default page size for listConversationMessages. */\n pageSize: 100,\n} as const;\n"],"mappings":";AAAA,MAAa,yBAAyB;CAEpC,SAAS;CAET,aAAa;CAEb,UAAU;
|
|
1
|
+
{"version":3,"file":"defaults.js","names":[],"sources":["../../../src/connectors/genie/defaults.ts"],"sourcesContent":["export const genieConnectorDefaults = {\n /** Genie waiter timeout in ms. 0 = indefinite. */\n timeout: 120_000,\n /** Max messages to fetch when listing a conversation. */\n maxMessages: 200,\n /** Default page size for listConversationMessages. */\n pageSize: 100,\n /** Default page size for initial conversation load (lazy loading). */\n initialPageSize: 20,\n} as const;\n"],"mappings":";AAAA,MAAa,yBAAyB;CAEpC,SAAS;CAET,aAAa;CAEb,UAAU;CAEV,iBAAiB;CAClB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/connectors/genie/types.ts"],"
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/connectors/genie/types.ts"],"mappings":";;;;UAUiB,gCAAA;EACf,cAAA;EACA,OAAA;EACA,QAAA,EAAU,oBAAA;AAAA"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { DatabaseCredential, GenerateDatabaseCredentialRequest, LakebasePoolConfig, LakebasePoolConfig as LakebasePoolConfig$1, RequestedClaims, RequestedClaimsPermissionSet, RequestedResource, generateDatabaseCredential, getLakebaseOrmConfig, getLakebasePgConfig, getUsernameWithApiLookup, getWorkspaceClient } from "@databricks/lakebase";
|
|
2
|
-
import
|
|
2
|
+
import { Pool } from "pg";
|
|
3
3
|
|
|
4
4
|
//#region src/connectors/lakebase/index.d.ts
|
|
5
|
-
|
|
6
5
|
/**
|
|
7
6
|
* Create a Lakebase pool with appkit's logger integration.
|
|
8
7
|
* Telemetry automatically uses appkit's OpenTelemetry configuration via global registry.
|
|
@@ -10,7 +9,7 @@ import pg from "pg";
|
|
|
10
9
|
* @param config - Lakebase pool configuration
|
|
11
10
|
* @returns PostgreSQL pool with appkit integration
|
|
12
11
|
*/
|
|
13
|
-
declare function createLakebasePool$1(config?: Partial<LakebasePoolConfig>):
|
|
12
|
+
declare function createLakebasePool$1(config?: Partial<LakebasePoolConfig>): Pool;
|
|
14
13
|
//#endregion
|
|
15
14
|
export { type DatabaseCredential, type GenerateDatabaseCredentialRequest, type LakebasePoolConfig$1 as LakebasePoolConfig, type RequestedClaims, RequestedClaimsPermissionSet, type RequestedResource, createLakebasePool$1 as createLakebasePool, generateDatabaseCredential, getLakebaseOrmConfig, getLakebasePgConfig, getUsernameWithApiLookup, getWorkspaceClient };
|
|
16
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/connectors/lakebase/index.ts"],"
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/connectors/lakebase/index.ts"],"mappings":";;;;;;AAcA;;;;;iBAAgB,oBAAA,CAAmB,MAAA,GAAS,OAAA,CAAQ,kBAAA,IAAsB,IAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["createLakebasePool","createLakebasePoolBase"],"sources":["../../../src/connectors/lakebase/index.ts"],"sourcesContent":["import {\n createLakebasePool as createLakebasePoolBase,\n type LakebasePoolConfig,\n} from \"@databricks/lakebase\";\nimport type
|
|
1
|
+
{"version":3,"file":"index.js","names":["createLakebasePool","createLakebasePoolBase"],"sources":["../../../src/connectors/lakebase/index.ts"],"sourcesContent":["import {\n createLakebasePool as createLakebasePoolBase,\n type LakebasePoolConfig,\n} from \"@databricks/lakebase\";\nimport type { Pool } from \"pg\";\nimport { createLogger } from \"@/logging/logger\";\n\n/**\n * Create a Lakebase pool with appkit's logger integration.\n * Telemetry automatically uses appkit's OpenTelemetry configuration via global registry.\n *\n * @param config - Lakebase pool configuration\n * @returns PostgreSQL pool with appkit integration\n */\nexport function createLakebasePool(config?: Partial<LakebasePoolConfig>): Pool {\n const logger = createLogger(\"connectors:lakebase\");\n\n return createLakebasePoolBase({\n ...config,\n logger,\n });\n}\n\n// Re-export everything else from lakebase\nexport {\n createTokenRefreshCallback,\n type DatabaseCredential,\n type DriverTelemetry,\n type GenerateDatabaseCredentialRequest,\n generateDatabaseCredential,\n getLakebaseOrmConfig,\n getLakebasePgConfig,\n getUsernameWithApiLookup,\n getWorkspaceClient,\n type LakebasePoolConfig,\n type Logger,\n type RequestedClaims,\n RequestedClaimsPermissionSet,\n type RequestedResource,\n type TokenRefreshDeps,\n} from \"@databricks/lakebase\";\n"],"mappings":";;;;;;;;;;;AAcA,SAAgBA,qBAAmB,QAA4C;CAC7E,MAAM,SAAS,aAAa,sBAAsB;AAElD,QAAOC,mBAAuB;EAC5B,GAAG;EACH;EACD,CAAC"}
|
|
@@ -3,7 +3,7 @@ import "../../telemetry/index.js";
|
|
|
3
3
|
import "../../context/index.js";
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
5
5
|
import "@databricks/sdk-experimental";
|
|
6
|
-
import
|
|
6
|
+
import "pg";
|
|
7
7
|
|
|
8
8
|
//#region src/connectors/lakebase-v1/client.ts
|
|
9
9
|
const logger = createLogger("connectors:lakebase-v1");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-context.d.ts","names":[],"sources":["../../src/context/execution-context.ts"],"
|
|
1
|
+
{"version":3,"file":"execution-context.d.ts","names":[],"sources":["../../src/context/execution-context.ts"],"mappings":";;;;;;;;;;;;iBAmCgB,mBAAA,CAAA,GAAuB,gBAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import "./user-context.js";
|
|
1
2
|
import { WorkspaceClient } from "@databricks/sdk-experimental";
|
|
2
3
|
|
|
3
4
|
//#region src/context/service-context.d.ts
|
|
4
|
-
|
|
5
5
|
/**
|
|
6
6
|
* Service context holds the service principal client and shared resources.
|
|
7
7
|
* This is initialized once at app startup and shared across all requests.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-context.d.ts","names":[],"sources":["../../src/context/service-context.ts"],"
|
|
1
|
+
{"version":3,"file":"service-context.d.ts","names":[],"sources":["../../src/context/service-context.ts"],"mappings":";;;;;;AAqBA;;UAAiB,mBAAA;EAEP;EAAR,MAAA,EAAQ,eAAA;EAMK;EAJb,aAAA;EAIoB;EAFpB,WAAA,GAAc,OAAA;EAJN;EAMR,WAAA,EAAa,OAAA;AAAA"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { ServiceContextState } from "./service-context.js";
|
|
2
2
|
|
|
3
3
|
//#region src/context/user-context.d.ts
|
|
4
|
-
|
|
5
4
|
/**
|
|
6
5
|
* User execution context extends the service context with user-specific data.
|
|
7
6
|
* Created on-demand when asUser(req) is called.
|
|
@@ -25,5 +24,5 @@ interface UserContext {
|
|
|
25
24
|
*/
|
|
26
25
|
type ExecutionContext = ServiceContextState | UserContext;
|
|
27
26
|
//#endregion
|
|
28
|
-
export { ExecutionContext };
|
|
27
|
+
export { ExecutionContext, UserContext };
|
|
29
28
|
//# sourceMappingURL=user-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-context.d.ts","names":[],"sources":["../../src/context/user-context.ts"],"
|
|
1
|
+
{"version":3,"file":"user-context.d.ts","names":[],"sources":["../../src/context/user-context.ts"],"mappings":";;;;;AAMA;;UAAiB,WAAA;EAEP;EAAR,MAAA,EAAQ,mBAAA;EAQK;EANb,MAAA;EAMoB;EAJpB,QAAA;EAJQ;EAMR,WAAA,GAAc,OAAA;EAFd;EAIA,WAAA,EAAa,OAAA;EAFC;EAId,aAAA;AAAA;;;;KAMU,gBAAA,GAAmB,mBAAA,GAAsB,WAAA"}
|
package/dist/core/appkit.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { PluginConstructor, PluginData, PluginMap } from "../shared/src/plugin.js";
|
|
2
2
|
import { CacheConfig } from "../shared/src/cache.js";
|
|
3
|
+
import "../shared/src/index.js";
|
|
3
4
|
import { TelemetryConfig } from "../telemetry/types.js";
|
|
5
|
+
import "../telemetry/index.js";
|
|
4
6
|
import { WorkspaceClient } from "@databricks/sdk-experimental";
|
|
5
7
|
|
|
6
8
|
//#region src/core/appkit.d.ts
|
|
7
|
-
|
|
8
9
|
/**
|
|
9
10
|
* Bootstraps AppKit with the provided configuration.
|
|
10
11
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appkit.d.ts","names":[],"sources":["../../src/core/appkit.ts"],"
|
|
1
|
+
{"version":3,"file":"appkit.d.ts","names":[],"sources":["../../src/core/appkit.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmOsB,SAAA,WACV,UAAA,CAAW,iBAAA,qBAAA,CAErB,MAAA;EACE,OAAA,GAAU,CAAA;EACV,SAAA,GAAY,eAAA;EACZ,KAAA,GAAQ,WAAA;EACR,MAAA,GAAS,eAAA;AAAA,IAEV,OAAA,CAAQ,SAAA,CAAU,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import { createApp } from "./appkit.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authentication.d.ts","names":[],"sources":["../../src/errors/authentication.ts"],"
|
|
1
|
+
{"version":3,"file":"authentication.d.ts","names":[],"sources":["../../src/errors/authentication.ts"],"mappings":";;;;;AAYA;;;;;;;;cAAa,mBAAA,SAA4B,WAAA;EAAA,SAC9B,IAAA;EAAA,SACA,UAAA;EAAA,SACA,WAAA;EAH8B;;;EAAA,OAQhC,YAAA,CAAa,SAAA,YAA6B,mBAAA;EAA1C;;;EAAA,OASA,aAAA,CAAA,GAAiB,mBAAA;EAAA;;;EAAA,OAUjB,iBAAA,CACL,QAAA,UACA,KAAA,GAAQ,KAAA,GACP,mBAAA;EADD;;;EAAA,OAWK,gBAAA,CAAiB,KAAA,GAAQ,KAAA,GAAQ,mBAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","names":[],"sources":["../../src/errors/base.ts"],"
|
|
1
|
+
{"version":3,"file":"base.d.ts","names":[],"sources":["../../src/errors/base.ts"],"mappings":";;AAgCA;;;;;;;;;;;;;;;;;;;;uBAAsB,WAAA,SAAoB,KAAA;EAkB1B;EAAA,kBAhBI,IAAA;EAgBW;EAAA,kBAbX,UAAA;EAahB;EAAA,kBAVgB,WAAA;EA2BR;EAAA,SAxBD,KAAA,GAAQ,KAAA;EAmDT;EAAA,SAhDC,OAAA,GAAU,MAAA;cAGjB,OAAA,UACA,OAAA;IAAY,KAAA,GAAQ,KAAA;IAAO,OAAA,GAAU,MAAA;EAAA;;;;;EAiBvC,MAAA,CAAA,GAAU,MAAA;;;;EAgBV,QAAA,CAAA;;;;UAWQ,eAAA;;;;UAwBA,gBAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.d.ts","names":[],"sources":["../../src/errors/configuration.ts"],"
|
|
1
|
+
{"version":3,"file":"configuration.d.ts","names":[],"sources":["../../src/errors/configuration.ts"],"mappings":";;;;;AAYA;;;;;;;;cAAa,kBAAA,SAA2B,WAAA;EAAA,SAC7B,IAAA;EAAA,SACA,UAAA;EAAA,SACA,WAAA;EADA;;;EAAA,OAMF,aAAA,CAAc,OAAA,WAAkB,kBAAA;EAAA;;;EAAA,OAUhC,gBAAA,CAAiB,QAAA,UAAkB,IAAA,YAAgB,kBAAA;EAAA;;;EAAA,OAUnD,iBAAA,CACL,OAAA,UACA,OAAA,YACC,kBAAA;EAAA;;;EAAA,OAUI,sBAAA,CAAuB,KAAA,WAAgB,kBAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","names":[],"sources":["../../src/errors/connection.ts"],"
|
|
1
|
+
{"version":3,"file":"connection.d.ts","names":[],"sources":["../../src/errors/connection.ts"],"mappings":";;;;;AAYA;;;;;;;;cAAa,eAAA,SAAwB,WAAA;EAAA,SAC1B,IAAA;EAAA,SACA,UAAA;EAAA,SACA,WAAA;EAH0B;;;EAAA,OAQ5B,WAAA,CAAY,KAAA,GAAQ,KAAA,GAAQ,eAAA;EAP1B;;;EAAA,OAcF,iBAAA,CAAkB,KAAA,GAAQ,KAAA,GAAQ,eAAA;EAPd;;;EAAA,OAcpB,SAAA,CAAU,SAAA,UAAmB,KAAA,GAAQ,KAAA,GAAQ,eAAA;EAPnB;;;EAAA,OAgB1B,UAAA,CAAW,OAAA,UAAiB,KAAA,GAAQ,KAAA,GAAQ,eAAA;EATlC;;;EAAA,OAmBV,iBAAA,CAAkB,UAAA,UAAoB,IAAA,YAAgB,eAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.d.ts","names":[],"sources":["../../src/errors/execution.ts"],"
|
|
1
|
+
{"version":3,"file":"execution.d.ts","names":[],"sources":["../../src/errors/execution.ts"],"mappings":";;;;;AAYA;;;;;;;;cAAa,cAAA,SAAuB,WAAA;EAAA,SACzB,IAAA;EAAA,SACA,UAAA;EAAA,SACA,WAAA;EAFA;;;EAAA,OAOF,eAAA,CAAgB,YAAA,YAAwB,cAAA;EAAxB;;;EAAA,OAUhB,QAAA,CAAA,GAAY,cAAA;EAOZ;;;EAAA,OAAA,aAAA,CAAA,GAAiB,cAAA;EASY;;;EAAA,OAA7B,YAAA,CAAa,KAAA,WAAgB,cAAA;EASgB;;;EAAA,OAA7C,WAAA,CAAY,QAAA,WAAmB,cAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialization.d.ts","names":[],"sources":["../../src/errors/initialization.ts"],"
|
|
1
|
+
{"version":3,"file":"initialization.d.ts","names":[],"sources":["../../src/errors/initialization.ts"],"mappings":";;;;;AAYA;;;;;;;;cAAa,mBAAA,SAA4B,WAAA;EAAA,SAC9B,IAAA;EAAA,SACA,UAAA;EAAA,SACA,WAAA;EAFA;;;EAAA,OAOF,cAAA,CACL,WAAA,UACA,IAAA,YACC,mBAAA;EAFD;;;EAAA,OAcK,WAAA,CAAY,SAAA,UAAmB,KAAA,GAAQ,KAAA,GAAQ,mBAAA;EAAnC;;;EAAA,OAUZ,eAAA,CAAgB,KAAA,GAAQ,KAAA,GAAQ,mBAAA;AAAA"}
|
package/dist/errors/server.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","names":[],"sources":["../../src/errors/server.ts"],"
|
|
1
|
+
{"version":3,"file":"server.d.ts","names":[],"sources":["../../src/errors/server.ts"],"mappings":";;;;;AAYA;;;;;;;;cAAa,WAAA,SAAoB,WAAA;EAAA,SACtB,IAAA;EAAA,SACA,UAAA;EAAA,SACA,WAAA;EADA;;;EAAA,OAMF,iBAAA,CAAkB,SAAA,WAAoB,WAAA;EAAA;;;EAAA,OAStC,UAAA,CAAA,GAAc,WAAA;EASQ;;;EAAA,OAAtB,kBAAA,CAAA,GAAsB,WAAA;EAOuC;;;EAAA,OAA7D,uBAAA,CAAwB,aAAA,aAA0B,WAAA;AAAA"}
|
package/dist/errors/tunnel.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel.d.ts","names":[],"sources":["../../src/errors/tunnel.ts"],"
|
|
1
|
+
{"version":3,"file":"tunnel.d.ts","names":[],"sources":["../../src/errors/tunnel.ts"],"mappings":";;;;;AAYA;;;;;;;;cAAa,WAAA,SAAoB,WAAA;EAAA,SACtB,IAAA;EAAA,SACA,UAAA;EAAA,SACA,WAAA;EAHsB;;;EAAA,OAQxB,mBAAA,CAAA,GAAuB,WAAA;EAAvB;;;EAAA,OASA,YAAA,CAAA,GAAgB,WAAA;EAOhB;;;EAAA,OAAA,WAAA,CAAY,IAAA,UAAc,KAAA,GAAQ,KAAA,GAAQ,WAAA;EAAA;;;EAAA,OAU1C,UAAA,CAAW,WAAA,UAAqB,KAAA,GAAQ,KAAA,GAAQ,WAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","names":[],"sources":["../../src/errors/validation.ts"],"
|
|
1
|
+
{"version":3,"file":"validation.d.ts","names":[],"sources":["../../src/errors/validation.ts"],"mappings":";;;;;AAYA;;;;;;;;cAAa,eAAA,SAAwB,WAAA;EAAA,SAC1B,IAAA;EAAA,SACA,UAAA;EAAA,SACA,WAAA;EAAA;;;EAAA,OAKF,YAAA,CAAa,SAAA,WAAoB,eAAA;EAWjC;;;;;EAAA,OAAA,YAAA,CACL,SAAA,UACA,KAAA,WACA,QAAA,YACC,eAAA;EAgBmB;;;EAAA,OAAf,cAAA,CAAe,IAAA,aAAiB,eAAA;AAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,12 +2,15 @@ import { BasePluginConfig, IAppRouter, ToPlugin } from "./shared/src/plugin.js";
|
|
|
2
2
|
import { CacheConfig } from "./shared/src/cache.js";
|
|
3
3
|
import { StreamExecutionSettings } from "./shared/src/execute.js";
|
|
4
4
|
import { isSQLTypeMarker, sql } from "./shared/src/sql/helpers.js";
|
|
5
|
+
import "./shared/src/index.js";
|
|
5
6
|
import { CacheManager } from "./cache/index.js";
|
|
6
7
|
import { DatabaseCredential, GenerateDatabaseCredentialRequest, LakebasePoolConfig, RequestedClaims, RequestedClaimsPermissionSet, RequestedResource, createLakebasePool, generateDatabaseCredential, getLakebaseOrmConfig, getLakebasePgConfig, getUsernameWithApiLookup, getWorkspaceClient } from "./connectors/lakebase/index.js";
|
|
7
8
|
import { getExecutionContext } from "./context/execution-context.js";
|
|
9
|
+
import "./context/index.js";
|
|
8
10
|
import { ITelemetry, TelemetryConfig } from "./telemetry/types.js";
|
|
9
11
|
import { Counter, Histogram, SeverityNumber, Span, SpanStatusCode } from "./telemetry/index.js";
|
|
10
12
|
import { createApp } from "./core/appkit.js";
|
|
13
|
+
import "./core/index.js";
|
|
11
14
|
import { AppKitError } from "./errors/base.js";
|
|
12
15
|
import { AuthenticationError } from "./errors/authentication.js";
|
|
13
16
|
import { ConfigurationError } from "./errors/configuration.js";
|
|
@@ -19,13 +22,16 @@ import { TunnelError } from "./errors/tunnel.js";
|
|
|
19
22
|
import { ValidationError } from "./errors/validation.js";
|
|
20
23
|
import { Plugin } from "./plugin/plugin.js";
|
|
21
24
|
import { toPlugin } from "./plugin/to-plugin.js";
|
|
22
|
-
import
|
|
25
|
+
import "./plugin/index.js";
|
|
23
26
|
import { ResourcePermission, ResourceType } from "./registry/types.generated.js";
|
|
24
27
|
import { ConfigSchema, PluginManifest, ResourceEntry, ResourceFieldEntry, ResourceRequirement, ValidationResult } from "./registry/types.js";
|
|
25
28
|
import { getPluginManifest, getResourceRequirements } from "./registry/manifest-loader.js";
|
|
26
29
|
import { ResourceRegistry } from "./registry/resource-registry.js";
|
|
30
|
+
import "./registry/index.js";
|
|
31
|
+
import { analytics } from "./plugins/analytics/analytics.js";
|
|
27
32
|
import { genie } from "./plugins/genie/genie.js";
|
|
28
33
|
import { lakebase } from "./plugins/lakebase/lakebase.js";
|
|
29
34
|
import { server } from "./plugins/server/index.js";
|
|
35
|
+
import "./plugins/index.js";
|
|
30
36
|
import { appKitTypesPlugin } from "./type-generator/vite-plugin.js";
|
|
31
37
|
export { AppKitError, AuthenticationError, type BasePluginConfig, type CacheConfig, CacheManager, type ConfigSchema, ConfigurationError, ConnectionError, type Counter, type DatabaseCredential, ExecutionError, type GenerateDatabaseCredentialRequest, type Histogram, type IAppRouter, type ITelemetry, InitializationError, type LakebasePoolConfig, Plugin, type PluginManifest, type RequestedClaims, RequestedClaimsPermissionSet, type RequestedResource, type ResourceEntry, type ResourceFieldEntry, type ResourcePermission, ResourceRegistry, type ResourceRequirement, ResourceType, ServerError, SeverityNumber, type Span, SpanStatusCode, type StreamExecutionSettings, type TelemetryConfig, type ToPlugin, TunnelError, ValidationError, type ValidationResult, analytics, appKitTypesPlugin, createApp, createLakebasePool, generateDatabaseCredential, genie, getExecutionContext, getLakebaseOrmConfig, getLakebasePgConfig, getPluginManifest, getResourceRequirements, getUsernameWithApiLookup, getWorkspaceClient, isSQLTypeMarker, lakebase, server, sql, toPlugin };
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { TunnelConnection } from "../shared/src/tunnel.js";
|
|
2
|
-
import
|
|
2
|
+
import "../shared/src/index.js";
|
|
3
|
+
import * as express$1 from "express";
|
|
3
4
|
|
|
4
5
|
//#region src/plugin/dev-reader.d.ts
|
|
5
|
-
type TunnelConnectionGetter = (req:
|
|
6
|
+
type TunnelConnectionGetter = (req: express$1.Request) => TunnelConnection | null;
|
|
6
7
|
/**
|
|
7
8
|
* This class is used to read files from the local filesystem in dev mode
|
|
8
9
|
* through the WebSocket tunnel.
|
|
@@ -13,8 +14,8 @@ declare class DevFileReader {
|
|
|
13
14
|
private constructor();
|
|
14
15
|
static getInstance(): DevFileReader;
|
|
15
16
|
registerTunnelGetter(getter: TunnelConnectionGetter): void;
|
|
16
|
-
readFile(filePath: string, req:
|
|
17
|
-
readdir(dirPath: string, req:
|
|
17
|
+
readFile(filePath: string, req: express$1.Request): Promise<string>;
|
|
18
|
+
readdir(dirPath: string, req: express$1.Request): Promise<string[]>;
|
|
18
19
|
}
|
|
19
20
|
//#endregion
|
|
20
21
|
export { DevFileReader };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-reader.d.ts","names":[],"sources":["../../src/plugin/dev-reader.ts"],"
|
|
1
|
+
{"version":3,"file":"dev-reader.d.ts","names":[],"sources":["../../src/plugin/dev-reader.ts"],"mappings":";;;;;KAQK,sBAAA,IACH,GAAA,EADyB,SAAA,CACF,OAAA,KACpB,gBAAA;;;;AAT0C;cAelC,aAAA;EAAA,eACI,QAAA;EAAA,QACP,mBAAA;EAAA,QAED,WAAA,CAAA;EAAA,OAEA,WAAA,CAAA,GAAe,aAAA;EA+BtB,oBAAA,CAAqB,MAAA,EAAQ,sBAAA;EAIvB,QAAA,CACJ,QAAA,UACA,GAAA,EANiD,SAAA,CAM1B,OAAA,GACtB,OAAA;EA+BG,OAAA,CACJ,OAAA,UACA,GAAA,EAjCQ,SAAA,CAiCe,OAAA,GACtB,OAAA;AAAA"}
|
package/dist/plugin/plugin.d.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { BasePlugin, BasePluginConfig, IAppResponse, PluginEndpointMap, PluginPhase, RouteConfig } from "../shared/src/plugin.js";
|
|
2
2
|
import { PluginExecutionSettings, StreamExecuteHandler, StreamExecutionSettings } from "../shared/src/execute.js";
|
|
3
|
+
import "../shared/src/index.js";
|
|
3
4
|
import { CacheManager } from "../cache/index.js";
|
|
4
5
|
import { ITelemetry } from "../telemetry/types.js";
|
|
6
|
+
import "../telemetry/index.js";
|
|
5
7
|
import { AppManager } from "../app/index.js";
|
|
6
8
|
import { StreamManager } from "../stream/stream-manager.js";
|
|
9
|
+
import "../stream/index.js";
|
|
7
10
|
import { DevFileReader } from "./dev-reader.js";
|
|
8
11
|
import express from "express";
|
|
9
12
|
|
|
10
13
|
//#region src/plugin/plugin.d.ts
|
|
11
|
-
|
|
12
14
|
/**
|
|
13
15
|
* Base abstract class for creating AppKit plugins.
|
|
14
16
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","names":[],"sources":["../../src/plugin/plugin.ts"],"
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","names":[],"sources":["../../src/plugin/plugin.ts"],"mappings":";;;;;;;;;;;;;;;;;;;AAiJA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAAsB,MAAA,iBACJ,gBAAA,GAAmB,gBAAA,aACxB,UAAA;EAAA,UAyBW,MAAA,EAAQ,OAAA;EAAA,UAvBpB,OAAA;EAAA,UACA,KAAA,EAAO,YAAA;EAAA,UACP,GAAA,EAAK,UAAA;EAAA,UACL,aAAA,EAAe,aAAA;EAAA,UACf,aAAA,EAAe,aAAA;EAAA,UACf,SAAA,EAAW,UAAA;EA4MW;EAAA,QAzMxB,mBAAA;EAyMN;;;;;;EAAA,OAjMK,KAAA,EAAO,WAAA;EAyNa;;;EApN3B,IAAA;cAEsB,MAAA,EAAQ,OAAA;EAW9B,YAAA,CAAa,CAAA,EAAG,OAAA,CAAQ,MAAA;EAIlB,KAAA,CAAA,GAAK,OAAA;EAEX,YAAA,CAAA,GAAgB,iBAAA;EAIhB,qBAAA,CAAA;EA6MQ;;;;;;;;;;;;;;;;;;;;;;;;;EAhLR,OAAA,CAAA;;;;;;;;;;EAaA,MAAA,CAAO,GAAA,EAAK,OAAA,CAAQ,OAAA;;;;;;UAuCZ,uBAAA;EAAA,UAqBQ,aAAA,GAAA,CACd,GAAA,EAAK,YAAA,EACL,EAAA,EAAI,oBAAA,CAAqB,CAAA,GACzB,OAAA,EAAS,uBAAA,EACT,OAAA,YAAgB,OAAA;EAAA,UA0DF,OAAA,GAAA,CACd,EAAA,GAAK,MAAA,GAAS,WAAA,KAAgB,OAAA,CAAQ,CAAA,GACtC,OAAA,EAAS,uBAAA,EACT,OAAA,YACC,OAAA,CAAQ,CAAA;EAAA,UAqBD,gBAAA,CAAiB,IAAA,UAAc,IAAA;EAAA,UAI/B,KAAA,YAAA,CACR,MAAA,EAAQ,OAAA,CAAQ,MAAA,EAChB,MAAA,EAAQ,WAAA;EAAA,QAUF,qBAAA;EAAA,QAaA,kBAAA;EAAA,QAqCM,wBAAA;EAAA,QAqBN,iBAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to-plugin.d.ts","names":[],"sources":["../../src/plugin/to-plugin.ts"],"
|
|
1
|
+
{"version":3,"file":"to-plugin.d.ts","names":[],"sources":["../../src/plugin/to-plugin.ts"],"mappings":";;;;;;;iBAKgB,QAAA,wBAAA,CACd,MAAA,EAAQ,CAAA,EACR,IAAA,EAAM,CAAA,GACL,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAA"}
|