@eclipse-lyra/extension-pglite 0.0.0 → 0.7.21

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.js CHANGED
@@ -4,7 +4,7 @@ extensionRegistry.registerExtension({
4
4
  id: pkg.name,
5
5
  name: "PGlite",
6
6
  description: "In-browser PostgreSQL via PGlite",
7
- loader: () => import("./pglite-extension-yHA6J1XM.js"),
7
+ loader: () => import("./pglite-extension-CIxtTI_y.js"),
8
8
  icon: "database"
9
9
  });
10
10
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
1
  import { promptDialog, toastError, toastInfo, appSettings, contributionRegistry } from "@eclipse-lyra/core";
2
- import { PGlite } from "/home/ekaraca/appspace/node_modules/@electric-sql/pglite/dist/index.js";
2
+ import { PGlite } from "/home/runner/work/core/core/node_modules/@electric-sql/pglite/dist/index.js";
3
3
  const PGLITE_DB_SETTING_KEY = "pglite.databases";
4
4
  const DB_NAME_REGEX = /^[a-zA-Z0-9_.-]+$/;
5
5
  async function getDatabaseNames() {
@@ -115,4 +115,4 @@ function activate() {
115
115
  export {
116
116
  activate as default
117
117
  };
118
- //# sourceMappingURL=pglite-extension-yHA6J1XM.js.map
118
+ //# sourceMappingURL=pglite-extension-CIxtTI_y.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pglite-extension-yHA6J1XM.js","sources":["../src/pglite-sqldatabase.ts","../src/pglite-extension.ts"],"sourcesContent":["import { PGlite } from '@electric-sql/pglite';\nimport type {\n SqlAdapterContribution,\n SqlConnectionInfo,\n SqlDatabase,\n} from '@eclipse-lyra/extension-sqleditor';\nimport {\n appSettings,\n toastError,\n toastInfo,\n promptDialog,\n} from '@eclipse-lyra/core';\nconst PGLITE_DB_SETTING_KEY = 'pglite.databases';\nconst DB_NAME_REGEX = /^[a-zA-Z0-9_.-]+$/;\n\nasync function getDatabaseNames(): Promise<string[]> {\n const stored = await appSettings.get(PGLITE_DB_SETTING_KEY);\n if (!Array.isArray(stored)) return [];\n return stored.filter((name): name is string => typeof name === 'string').sort();\n}\n\nasync function saveDatabaseNames(names: string[]): Promise<void> {\n await appSettings.set(PGLITE_DB_SETTING_KEY, [...new Set(names)].sort());\n}\n\nclass PgliteSqlDatabase implements SqlDatabase {\n readonly engineId = 'pglite';\n\n private db: PGlite | null = null;\n private currentId: string | null = null;\n\n get currentConnectionId(): string | null {\n return this.currentId;\n }\n\n async listConnections(): Promise<SqlConnectionInfo[]> {\n const names = await getDatabaseNames();\n return [\n {\n id: null,\n label: 'In-memory',\n isDefault: true,\n },\n ...names.map((name) => ({\n id: name,\n label: name,\n })),\n ];\n }\n\n async selectConnection(id: string | null): Promise<void> {\n if (this.db && this.currentId === id) return;\n if (this.db && this.db.close) {\n await this.db.close();\n }\n this.db = null;\n if (id === null) {\n this.db = new PGlite();\n this.currentId = null;\n } else {\n this.db = new PGlite(`idb://${id}`);\n this.currentId = id;\n }\n }\n\n async runQuery(sql: string): Promise<{ columns: string[]; rows: unknown[][] }> {\n if (!this.db) {\n await this.selectConnection(null);\n }\n if (!this.db) {\n return { columns: [], rows: [] };\n }\n const result = await this.db.query(sql);\n const rows = Array.isArray(result.rows) ? (result.rows as Record<string, unknown>[]) : [];\n if (!rows.length) return { columns: [], rows: [] };\n const columns = Object.keys(rows[0]);\n const matrix = rows.map((row) => columns.map((c) => row[c]));\n return { columns, rows: matrix };\n }\n\n async close(): Promise<void> {\n if (!this.db) return;\n await this.db.close?.();\n this.db = null;\n this.currentId = null;\n }\n\n async createConnection(): Promise<SqlConnectionInfo | null> {\n const raw = await promptDialog('New PGlite database name', '');\n if (raw == null) return null;\n const name = raw.trim();\n if (!name) {\n toastError('Name cannot be empty');\n return null;\n }\n if (!DB_NAME_REGEX.test(name)) {\n toastError('Name may only contain letters, numbers, and . _ -');\n return null;\n }\n const existing = await getDatabaseNames();\n if (existing.includes(name)) {\n toastError(`Database \"${name}\" already exists`);\n return null;\n }\n await saveDatabaseNames([...existing, name]);\n toastInfo(`Database \"${name}\" created`);\n return {\n id: name,\n label: name,\n isDefault: false,\n };\n }\n\n async deleteConnection(id: string): Promise<void> {\n if (!id) return;\n const names = await getDatabaseNames();\n if (!names.includes(id)) return;\n const next = names.filter((n) => n !== id);\n await saveDatabaseNames(next);\n if (this.currentId === id) {\n await this.close();\n }\n }\n}\n\nexport const pgliteSqlAdapterContribution: SqlAdapterContribution = {\n id: 'pglite',\n label: 'PostgreSQL (PGlite)',\n icon: 'database',\n loader: async () => new PgliteSqlDatabase(),\n};\n\n","import { contributionRegistry } from '@eclipse-lyra/core';\nimport { pgliteSqlAdapterContribution } from './pglite-sqldatabase';\n\nexport default function activate() {\n contributionRegistry.registerContribution('system.sqladapters', pgliteSqlAdapterContribution);\n}\n\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pglite-extension-CIxtTI_y.js","sources":["../src/pglite-sqldatabase.ts","../src/pglite-extension.ts"],"sourcesContent":["import { PGlite } from '@electric-sql/pglite';\nimport type {\n SqlAdapterContribution,\n SqlConnectionInfo,\n SqlDatabase,\n} from '@eclipse-lyra/extension-sqleditor';\nimport {\n appSettings,\n toastError,\n toastInfo,\n promptDialog,\n} from '@eclipse-lyra/core';\nconst PGLITE_DB_SETTING_KEY = 'pglite.databases';\nconst DB_NAME_REGEX = /^[a-zA-Z0-9_.-]+$/;\n\nasync function getDatabaseNames(): Promise<string[]> {\n const stored = await appSettings.get(PGLITE_DB_SETTING_KEY);\n if (!Array.isArray(stored)) return [];\n return stored.filter((name): name is string => typeof name === 'string').sort();\n}\n\nasync function saveDatabaseNames(names: string[]): Promise<void> {\n await appSettings.set(PGLITE_DB_SETTING_KEY, [...new Set(names)].sort());\n}\n\nclass PgliteSqlDatabase implements SqlDatabase {\n readonly engineId = 'pglite';\n\n private db: PGlite | null = null;\n private currentId: string | null = null;\n\n get currentConnectionId(): string | null {\n return this.currentId;\n }\n\n async listConnections(): Promise<SqlConnectionInfo[]> {\n const names = await getDatabaseNames();\n return [\n {\n id: null,\n label: 'In-memory',\n isDefault: true,\n },\n ...names.map((name) => ({\n id: name,\n label: name,\n })),\n ];\n }\n\n async selectConnection(id: string | null): Promise<void> {\n if (this.db && this.currentId === id) return;\n if (this.db && this.db.close) {\n await this.db.close();\n }\n this.db = null;\n if (id === null) {\n this.db = new PGlite();\n this.currentId = null;\n } else {\n this.db = new PGlite(`idb://${id}`);\n this.currentId = id;\n }\n }\n\n async runQuery(sql: string): Promise<{ columns: string[]; rows: unknown[][] }> {\n if (!this.db) {\n await this.selectConnection(null);\n }\n if (!this.db) {\n return { columns: [], rows: [] };\n }\n const result = await this.db.query(sql);\n const rows = Array.isArray(result.rows) ? (result.rows as Record<string, unknown>[]) : [];\n if (!rows.length) return { columns: [], rows: [] };\n const columns = Object.keys(rows[0]);\n const matrix = rows.map((row) => columns.map((c) => row[c]));\n return { columns, rows: matrix };\n }\n\n async close(): Promise<void> {\n if (!this.db) return;\n await this.db.close?.();\n this.db = null;\n this.currentId = null;\n }\n\n async createConnection(): Promise<SqlConnectionInfo | null> {\n const raw = await promptDialog('New PGlite database name', '');\n if (raw == null) return null;\n const name = raw.trim();\n if (!name) {\n toastError('Name cannot be empty');\n return null;\n }\n if (!DB_NAME_REGEX.test(name)) {\n toastError('Name may only contain letters, numbers, and . _ -');\n return null;\n }\n const existing = await getDatabaseNames();\n if (existing.includes(name)) {\n toastError(`Database \"${name}\" already exists`);\n return null;\n }\n await saveDatabaseNames([...existing, name]);\n toastInfo(`Database \"${name}\" created`);\n return {\n id: name,\n label: name,\n isDefault: false,\n };\n }\n\n async deleteConnection(id: string): Promise<void> {\n if (!id) return;\n const names = await getDatabaseNames();\n if (!names.includes(id)) return;\n const next = names.filter((n) => n !== id);\n await saveDatabaseNames(next);\n if (this.currentId === id) {\n await this.close();\n }\n }\n}\n\nexport const pgliteSqlAdapterContribution: SqlAdapterContribution = {\n id: 'pglite',\n label: 'PostgreSQL (PGlite)',\n icon: 'database',\n loader: async () => new PgliteSqlDatabase(),\n};\n\n","import { contributionRegistry } from '@eclipse-lyra/core';\nimport { pgliteSqlAdapterContribution } from './pglite-sqldatabase';\n\nexport default function activate() {\n contributionRegistry.registerContribution('system.sqladapters', pgliteSqlAdapterContribution);\n}\n\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eclipse-lyra/extension-pglite",
3
- "version": "0.0.0",
3
+ "version": "0.7.21",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",