@askdb/introspect 0.3.0-beta.19 → 0.3.0-beta.20
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/README.md +17 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/kit/driver.d.ts +5 -0
- package/dist/kit/driver.d.ts.map +1 -1
- package/dist/kit/driver.js +30 -1
- package/dist/kit/driver.js.map +1 -1
- package/dist/registry.d.ts +46 -2
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +68 -3
- package/dist/registry.js.map +1 -1
- package/dist/render/render.d.ts +4 -2
- package/dist/render/render.d.ts.map +1 -1
- package/dist/render/render.js +7 -5
- package/dist/render/render.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -11,10 +11,13 @@ Engine-agnostic introspection orchestrator for AskDB. Defines the `Connector` co
|
|
|
11
11
|
pnpm add @askdb/introspect @askdb/core ai
|
|
12
12
|
# Plus an integration package for the engine you're targeting, e.g.:
|
|
13
13
|
pnpm add @askdb/postgres pg
|
|
14
|
-
# Or for Prisma schema-file introspection
|
|
15
|
-
pnpm
|
|
14
|
+
# Or for Prisma schema-file introspection (pnpm 11 must approve the @prisma/engines build;
|
|
15
|
+
# --allow-build needs pnpm 10.4 or later):
|
|
16
|
+
pnpm add --allow-build=@prisma/engines @askdb/prisma
|
|
16
17
|
```
|
|
17
18
|
|
|
19
|
+
See [the Prisma guide](https://askdb.tools/guides/integrations/prisma/#install) for other package managers.
|
|
20
|
+
|
|
18
21
|
## Programmatic usage
|
|
19
22
|
|
|
20
23
|
```ts
|
|
@@ -81,6 +84,18 @@ await introspect(input, { outDir: "./askdb", schemaId: "shop" }, { connector });
|
|
|
81
84
|
|
|
82
85
|
`ConnectorProviderAdapter` is `{ provider, createConnector(config), getTemplates?(), resolveConnection?(request), connectionLabelParts?(connection) }`. `resolveConnection` returns only the connection (or an error); the registry adds `sourceLabel`, which it always builds with `formatConnectionLabel` from the adapter's `connectionLabelParts` (host, port, database, or a file path). No adapter supplies label text, so `sourceLabel` is safe to display for any adapter; one without `connectionLabelParts` gets `configured <provider> connection` ([ADR 0011](https://github.com/Ygilany/AskDB/blob/main/docs/adrs/0011-connection-labels-from-parsed-parts.md)). See [Connector authoring](https://github.com/Ygilany/AskDB/blob/main/docs/integration/connectors.md#registering-with-askdb-hosts) for writing an adapter.
|
|
83
86
|
|
|
87
|
+
An engine package your users may not have installed registers as a **lazy entry**, `{ provider, load }`, where `load()` imports the package and returns its adapter. `hasProvider()` and `providers()` list it without loading. Call `await registry.load(provider)` once the engine is selected: it imports the package once, shares concurrent calls, retries after a failure, and checks the adapter's `provider`. Until then the other methods throw for that entry. The `askdb` CLI and Studio register `@askdb/prisma` this way, with `createOptionalDriverLoader` and `connectorPackageMissingMessage({ provider, packageName, allowBuilds })` for the install hint ([ADR 0008](https://github.com/Ygilany/AskDB/blob/main/docs/adrs/0008-engine-packages-and-connector-registry.md), 2026-11 amendment):
|
|
88
|
+
|
|
89
|
+
```ts
|
|
90
|
+
const registry = createConnectorRegistry([
|
|
91
|
+
postgresConnectorProvider,
|
|
92
|
+
{ provider: "prisma", load: async () => (await import("@askdb/prisma")).prismaConnectorProvider },
|
|
93
|
+
]);
|
|
94
|
+
await registry.load(engine); // a no-op for an adapter object
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
This bare `import()` surfaces Node's own module-not-found error when the package is missing. To give an install hint instead, wrap the import in `createOptionalDriverLoader`, as [Registering an engine that may not be installed](https://github.com/Ygilany/AskDB/blob/main/docs/integration/connectors.md#registering-an-engine-that-may-not-be-installed) shows.
|
|
98
|
+
|
|
84
99
|
### Engine kit (`@askdb/introspect/kit`)
|
|
85
100
|
|
|
86
101
|
The `@askdb/introspect/kit` subpath holds the engine-agnostic helpers every first-party engine package uses, so a new engine does not copy them:
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export type { SqlSchema, SqlNamespace, SqlTable, SqlColumn, SqlForeignKey, SqlForeignKeyAction, SqlUnique, SqlIndex, SqlCheck, SqlEnum, SqlSequence, SqlView, IntrospectionFilters, IntrospectionResult, IntrospectionWarning, SqlTemplate, SqlTemplateBundle, CatalogQueryResult, CatalogQueryRunner, Connector, } from "./types.js";
|
|
2
2
|
export type { RenderOptions, RenderResult, RenderBodyOptions, RenderBodyResult, } from "./render/types.js";
|
|
3
3
|
export { introspect, type IntrospectOptions, type IntrospectResult, } from "./introspect.js";
|
|
4
|
-
export { BUILT_IN_CONNECTOR_PROVIDERS, connectorProviderMissingMessage, createConnectorRegistry, type BuiltInConnectorProvider, type ConnectorConfig, type ConnectorConnection, type ConnectorConnectionRequest, type ConnectorConnectionResolution, type ConnectorConnectionResult, type ConnectorProviderAdapter, type ConnectorProviderAdapters, type ConnectorProviderId, type ConnectorRegistry, type ConnectorResult, type ConnectorRuntimeConfig, } from "./registry.js";
|
|
4
|
+
export { BUILT_IN_CONNECTOR_PROVIDERS, connectorPackageMissingMessage, connectorProviderMissingMessage, createConnectorRegistry, type BuiltInConnectorProvider, type ConnectorConfig, type ConnectorConnection, type ConnectorConnectionRequest, type ConnectorConnectionResolution, type ConnectorConnectionResult, type ConnectorProviderAdapter, type ConnectorProviderAdapters, type ConnectorProviderEntry, type ConnectorProviderId, type ConnectorRegistry, type ConnectorResult, type ConnectorRuntimeConfig, type LazyConnectorProviderAdapter, } from "./registry.js";
|
|
5
5
|
export { renderToSchemaV2, renderSchemaV2Body, isSchemaV2Json, toV2SchemaJson, compactPostgresType, } from "./render/render.js";
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,WAAW,EACX,OAAO,EACP,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,UAAU,EACV,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,EAC/B,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,WAAW,EACX,OAAO,EACP,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,UAAU,EACV,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,+BAA+B,EAC/B,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,GAClC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,mBAAmB,GACpB,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { introspect, } from "./introspect.js";
|
|
2
|
-
export { BUILT_IN_CONNECTOR_PROVIDERS, connectorProviderMissingMessage, createConnectorRegistry, } from "./registry.js";
|
|
2
|
+
export { BUILT_IN_CONNECTOR_PROVIDERS, connectorPackageMissingMessage, connectorProviderMissingMessage, createConnectorRegistry, } from "./registry.js";
|
|
3
3
|
export { renderToSchemaV2, renderSchemaV2Body, isSchemaV2Json, toV2SchemaJson, compactPostgresType, } from "./render/render.js";
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA8BA,OAAO,EACL,UAAU,GAGX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,EAC/B,uBAAuB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA8BA,OAAO,EACL,UAAU,GAGX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,+BAA+B,EAC/B,uBAAuB,GAexB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,mBAAmB,GACpB,MAAM,oBAAoB,CAAC"}
|
package/dist/kit/driver.d.ts
CHANGED
|
@@ -36,6 +36,11 @@ export type OptionalDriverLoader<T> = {
|
|
|
36
36
|
* carrying `missingMessage` when the peer is missing everywhere, and with an
|
|
37
37
|
* `AskDbError` naming the real failure (`cause` set) when the peer is
|
|
38
38
|
* installed but fails to load.
|
|
39
|
+
*
|
|
40
|
+
* Node 24 and later can keep a failed package lookup until the process exits,
|
|
41
|
+
* so a retry may still miss a peer installed after the first attempt. When
|
|
42
|
+
* the peer is on disk under `resolveFrom` but Node can't resolve it, the
|
|
43
|
+
* `AskDbError` says to restart the process instead of to install it.
|
|
39
44
|
*/
|
|
40
45
|
load(options?: DriverLoadOptions): Promise<T>;
|
|
41
46
|
};
|
package/dist/kit/driver.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/kit/driver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/kit/driver.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI;IAClC,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;OASG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/B,yFAAyF;IACzF,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI;IACpC;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC/C,CAAC;AA0DF;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,CA0DlG;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAQ3F;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAQ3F;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAE9D"}
|
package/dist/kit/driver.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AskDbError } from "@askdb/core";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
2
3
|
import { createRequire } from "node:module";
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
+
import { dirname, join } from "node:path";
|
|
4
5
|
import { pathToFileURL } from "node:url";
|
|
5
6
|
/**
|
|
6
7
|
* True when `cause` (or any error in its `cause` chain) is a Node module
|
|
@@ -34,6 +35,26 @@ function isModuleResolutionFailure(cause, packageName, specifier = packageName)
|
|
|
34
35
|
/** The driver resolves from neither the engine package nor `resolveFrom`. */
|
|
35
36
|
class DriverNotFoundError extends AggregateError {
|
|
36
37
|
}
|
|
38
|
+
/** Node can't resolve the driver, but it is on disk in `nodeModules` (see `OptionalDriverLoader.load`). */
|
|
39
|
+
class DriverUnresolvableError extends AggregateError {
|
|
40
|
+
nodeModules;
|
|
41
|
+
constructor(errors, nodeModules) {
|
|
42
|
+
super(errors, "Optional peer dependency is installed but does not resolve");
|
|
43
|
+
this.nodeModules = nodeModules;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The `node_modules` directory under `fromDir` or one of its parents that holds
|
|
48
|
+
* `packageName`, checked on disk rather than through Node's resolver.
|
|
49
|
+
*/
|
|
50
|
+
function nodeModulesHolding(fromDir, packageName) {
|
|
51
|
+
for (let dir = fromDir;; dir = dirname(dir)) {
|
|
52
|
+
if (existsSync(join(dir, "node_modules", packageName, "package.json")))
|
|
53
|
+
return join(dir, "node_modules");
|
|
54
|
+
if (dirname(dir) === dir)
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
37
58
|
/**
|
|
38
59
|
* Build a lazy, cached loader for an optional database-driver peer. Engine
|
|
39
60
|
* packages call this once at module scope, so each engine keeps its own cache.
|
|
@@ -58,6 +79,9 @@ export function createOptionalDriverLoader(spec) {
|
|
|
58
79
|
catch (projectCause) {
|
|
59
80
|
if (!isModuleResolutionFailure(projectCause, packageName, specifier))
|
|
60
81
|
throw projectCause;
|
|
82
|
+
const nodeModules = nodeModulesHolding(fromDir, packageName);
|
|
83
|
+
if (nodeModules)
|
|
84
|
+
throw new DriverUnresolvableError([cause, projectCause], nodeModules);
|
|
61
85
|
throw new DriverNotFoundError([cause, projectCause], `Unable to resolve optional \`${packageName}\` peer dependency`);
|
|
62
86
|
}
|
|
63
87
|
// Resolved in the project: any failure from here on is the installed
|
|
@@ -77,6 +101,11 @@ export function createOptionalDriverLoader(spec) {
|
|
|
77
101
|
// own, a native build error, …) reports that failure instead.
|
|
78
102
|
if (cause instanceof DriverNotFoundError)
|
|
79
103
|
throw new AskDbError(missingMessage, cause);
|
|
104
|
+
if (cause instanceof DriverUnresolvableError) {
|
|
105
|
+
throw new AskDbError(`\`${packageName}\` is in ${cause.nodeModules}, but Node can't load it in this process. ` +
|
|
106
|
+
"If it was installed while the process was running, restart the process: " +
|
|
107
|
+
"Node 24 and later can keep a failed package lookup until the process exits.", cause);
|
|
108
|
+
}
|
|
80
109
|
const detail = cause instanceof Error ? cause.message : String(cause);
|
|
81
110
|
throw new AskDbError(`The optional \`${packageName}\` peer dependency failed to load: ${detail}`, cause);
|
|
82
111
|
});
|
package/dist/kit/driver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.js","sourceRoot":"","sources":["../../src/kit/driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"driver.js","sourceRoot":"","sources":["../../src/kit/driver.ts"],"names":[],"mappings":"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"}
|
package/dist/registry.d.ts
CHANGED
|
@@ -112,11 +112,39 @@ export type ConnectorProviderAdapter = {
|
|
|
112
112
|
*/
|
|
113
113
|
connectionLabelParts?(connection: ConnectorConnection): ConnectionLabelParts | undefined;
|
|
114
114
|
};
|
|
115
|
-
|
|
115
|
+
/**
|
|
116
|
+
* A registered adapter that the registry imports on first use, for an engine
|
|
117
|
+
* package the host may not have installed (an optional peer):
|
|
118
|
+
*
|
|
119
|
+
* { provider: "prisma", load: async () => (await import("@askdb/prisma")).prismaConnectorProvider }
|
|
120
|
+
*
|
|
121
|
+
* `hasProvider()` and `providers()` answer from `provider` without loading.
|
|
122
|
+
* Call `registry.load(provider)` once the engine is selected; the other
|
|
123
|
+
* methods need the adapter and throw until it is loaded. `load()` errors reach
|
|
124
|
+
* the caller unchanged, so give a missing package its install hint in `load`
|
|
125
|
+
* (for example with `createOptionalDriverLoader` from `@askdb/introspect/kit`
|
|
126
|
+
* and `connectorPackageMissingMessage`).
|
|
127
|
+
*/
|
|
128
|
+
export type LazyConnectorProviderAdapter = {
|
|
129
|
+
provider: ConnectorProviderId;
|
|
130
|
+
load(): Promise<ConnectorProviderAdapter>;
|
|
131
|
+
};
|
|
132
|
+
/** An adapter, or a lazy entry that loads one on first use. */
|
|
133
|
+
export type ConnectorProviderEntry = ConnectorProviderAdapter | LazyConnectorProviderAdapter;
|
|
134
|
+
export type ConnectorProviderAdapters = readonly ConnectorProviderEntry[] | Readonly<Record<string, ConnectorProviderEntry | undefined>>;
|
|
116
135
|
export type ConnectorRegistry = {
|
|
136
|
+
/** True for a registered provider, lazy entries included (without loading them). */
|
|
117
137
|
hasProvider(provider: string): boolean;
|
|
118
|
-
/** Registered provider ids, in registration order. */
|
|
138
|
+
/** Registered provider ids, in registration order, lazy entries included (without loading them). */
|
|
119
139
|
providers(): ConnectorProviderId[];
|
|
140
|
+
/**
|
|
141
|
+
* The provider's adapter, loading a lazy entry on the first call. Concurrent
|
|
142
|
+
* calls share one `load()`; a failed load is retried on the next call. Call it
|
|
143
|
+
* once the engine is selected, before the methods below. Rejects when the
|
|
144
|
+
* provider is not registered, with the entry's own `load()` error, or when the
|
|
145
|
+
* loaded adapter's `provider` differs from the entry's.
|
|
146
|
+
*/
|
|
147
|
+
load(provider: string): Promise<ConnectorProviderAdapter>;
|
|
120
148
|
createConnector(config: ConnectorConfig): ConnectorResult;
|
|
121
149
|
/**
|
|
122
150
|
* Returns the catalog SQL template bundle for the given provider, or `undefined`
|
|
@@ -141,4 +169,20 @@ export type ConnectorRegistry = {
|
|
|
141
169
|
};
|
|
142
170
|
export declare function createConnectorRegistry(adapters: ConnectorProviderAdapters): ConnectorRegistry;
|
|
143
171
|
export declare function connectorProviderMissingMessage(provider: string): string;
|
|
172
|
+
/**
|
|
173
|
+
* The install hint the first-party hosts (the `askdb` CLI and Studio) give for a
|
|
174
|
+
* registered engine whose package isn't installed: a lazy entry's `load()`
|
|
175
|
+
* throws it when the package resolves from nowhere (see
|
|
176
|
+
* `createOptionalDriverLoader` in `@askdb/introspect/kit`). `allowBuilds` names
|
|
177
|
+
* the dependencies whose install scripts pnpm must approve (pnpm 11 exits 1 on
|
|
178
|
+
* an unapproved one); with any, the hint gives an npm command and the pnpm 10.4+
|
|
179
|
+
* `--allow-build` one. It suggests a one-off `askdb` command, and the `askdb`
|
|
180
|
+
* binary registers only the first-party engines, so a third-party host writes
|
|
181
|
+
* its own message.
|
|
182
|
+
*/
|
|
183
|
+
export declare function connectorPackageMissingMessage(input: {
|
|
184
|
+
provider: string;
|
|
185
|
+
packageName: string;
|
|
186
|
+
allowBuilds?: readonly string[];
|
|
187
|
+
}): string;
|
|
144
188
|
//# sourceMappingURL=registry.d.ts.map
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAErF,uEAAuE;AACvE,eAAO,MAAM,4BAA4B,iEAM/B,CAAC;AAEX,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AAErF;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,wBAAwB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAE3E;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,gGAAgG;IAChG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,mEAAmE;AACnE,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,qFAAqF;IACrF,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,GAAG,YAAY,GAAG,YAAY,CAAC,CAAC;AAE7F;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,mDAAmD;IACnD,OAAO,EAAE,sBAAsB,CAAC;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;CAC5C,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GACjC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,mBAAmB,CAAA;CAAE,GAC7C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC,qGAAqG;AACrG,MAAM,MAAM,6BAA6B,GACrC;IACE,EAAE,EAAE,IAAI,CAAC;IACT,UAAU,EAAE,mBAAmB,CAAC;IAChC;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CAAC;IAC1D,mFAAmF;IACnF,YAAY,CAAC,IAAI,iBAAiB,CAAC;IACnC;;;;;OAKG;IACH,iBAAiB,CAAC,CAAC,OAAO,EAAE,0BAA0B,GAAG,yBAAyB,CAAC;IACnF;;;;;;OAMG;IACH,oBAAoB,CAAC,CAAC,UAAU,EAAE,mBAAmB,GAAG,oBAAoB,GAAG,SAAS,CAAC;CAC1F,CAAC;AAEF,MAAM,MAAM,yBAAyB,GACjC,SAAS,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/registry.js
CHANGED
|
@@ -9,8 +9,23 @@ export const BUILT_IN_CONNECTOR_PROVIDERS = [
|
|
|
9
9
|
];
|
|
10
10
|
export function createConnectorRegistry(adapters) {
|
|
11
11
|
const byProvider = normalizeAdapters(adapters);
|
|
12
|
+
const loaded = new Map();
|
|
13
|
+
for (const [provider, entry] of byProvider) {
|
|
14
|
+
if (!isLazyEntry(entry))
|
|
15
|
+
loaded.set(provider, entry);
|
|
16
|
+
}
|
|
17
|
+
/** In-flight lazy loads, so concurrent callers share one `load()`. A failure clears its slot. */
|
|
18
|
+
const pending = new Map();
|
|
19
|
+
/** The loaded adapter; throws for a registered lazy entry that isn't loaded yet. */
|
|
20
|
+
function loadedAdapter(provider) {
|
|
21
|
+
const adapter = loaded.get(provider);
|
|
22
|
+
if (!adapter && byProvider.has(provider)) {
|
|
23
|
+
throw new Error(`Connector provider "${provider}" is not loaded yet. Call \`await registry.load("${provider}")\` first.`);
|
|
24
|
+
}
|
|
25
|
+
return adapter;
|
|
26
|
+
}
|
|
12
27
|
function adapterFor(provider) {
|
|
13
|
-
const adapter =
|
|
28
|
+
const adapter = loadedAdapter(provider);
|
|
14
29
|
if (!adapter)
|
|
15
30
|
throw new Error(connectorProviderMissingMessage(provider));
|
|
16
31
|
return adapter;
|
|
@@ -22,11 +37,36 @@ export function createConnectorRegistry(adapters) {
|
|
|
22
37
|
providers() {
|
|
23
38
|
return [...byProvider.keys()];
|
|
24
39
|
},
|
|
40
|
+
async load(provider) {
|
|
41
|
+
const ready = loaded.get(provider);
|
|
42
|
+
if (ready)
|
|
43
|
+
return ready;
|
|
44
|
+
const entry = byProvider.get(provider);
|
|
45
|
+
if (!entry || !isLazyEntry(entry))
|
|
46
|
+
throw new Error(connectorProviderMissingMessage(provider));
|
|
47
|
+
let promise = pending.get(provider);
|
|
48
|
+
if (!promise) {
|
|
49
|
+
// Deferred a tick so the slot is set before a synchronous throw from
|
|
50
|
+
// `load` settles it; `finally` frees it either way.
|
|
51
|
+
promise = Promise.resolve()
|
|
52
|
+
.then(() => entry.load())
|
|
53
|
+
.then((adapter) => {
|
|
54
|
+
if (adapter?.provider !== provider) {
|
|
55
|
+
throw new Error(`Connector provider adapter mismatch: the lazy entry "${provider}" loaded adapter "${adapter?.provider}".`);
|
|
56
|
+
}
|
|
57
|
+
loaded.set(provider, adapter);
|
|
58
|
+
return adapter;
|
|
59
|
+
})
|
|
60
|
+
.finally(() => pending.delete(provider));
|
|
61
|
+
pending.set(provider, promise);
|
|
62
|
+
}
|
|
63
|
+
return promise;
|
|
64
|
+
},
|
|
25
65
|
createConnector(config) {
|
|
26
66
|
return adapterFor(config.provider).createConnector(config);
|
|
27
67
|
},
|
|
28
68
|
getTemplates(provider) {
|
|
29
|
-
return
|
|
69
|
+
return loadedAdapter(provider)?.getTemplates?.();
|
|
30
70
|
},
|
|
31
71
|
resolveConnection(provider, request) {
|
|
32
72
|
const adapter = adapterFor(provider);
|
|
@@ -41,7 +81,7 @@ export function createConnectorRegistry(adapters) {
|
|
|
41
81
|
return { ...result, sourceLabel: labelFor(adapter, provider, result.connection) };
|
|
42
82
|
},
|
|
43
83
|
connectionLabel(provider, connection) {
|
|
44
|
-
return labelFor(
|
|
84
|
+
return labelFor(loadedAdapter(provider), provider, connection);
|
|
45
85
|
},
|
|
46
86
|
};
|
|
47
87
|
}
|
|
@@ -63,6 +103,28 @@ export function connectorProviderMissingMessage(provider) {
|
|
|
63
103
|
return (`Connector provider "${provider}" is not registered. ` +
|
|
64
104
|
`${install} and pass its connector provider adapter to createConnectorRegistry().`);
|
|
65
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* The install hint the first-party hosts (the `askdb` CLI and Studio) give for a
|
|
108
|
+
* registered engine whose package isn't installed: a lazy entry's `load()`
|
|
109
|
+
* throws it when the package resolves from nowhere (see
|
|
110
|
+
* `createOptionalDriverLoader` in `@askdb/introspect/kit`). `allowBuilds` names
|
|
111
|
+
* the dependencies whose install scripts pnpm must approve (pnpm 11 exits 1 on
|
|
112
|
+
* an unapproved one); with any, the hint gives an npm command and the pnpm 10.4+
|
|
113
|
+
* `--allow-build` one. It suggests a one-off `askdb` command, and the `askdb`
|
|
114
|
+
* binary registers only the first-party engines, so a third-party host writes
|
|
115
|
+
* its own message.
|
|
116
|
+
*/
|
|
117
|
+
export function connectorPackageMissingMessage(input) {
|
|
118
|
+
const { provider, packageName, allowBuilds = [] } = input;
|
|
119
|
+
// pnpm 10.4 is the first pnpm whose `add` takes `--allow-build`; npm runs install scripts.
|
|
120
|
+
const example = allowBuilds.length
|
|
121
|
+
? `\`npm install ${packageName}\`, or on pnpm 10.4 or later ` +
|
|
122
|
+
`\`pnpm add ${allowBuilds.map((name) => `--allow-build=${name} `).join("")}${packageName}\``
|
|
123
|
+
: `\`pnpm add ${packageName}\``;
|
|
124
|
+
return (`Engine "${provider}" needs the optional peer dependency \`${packageName}\`. ` +
|
|
125
|
+
`Install it in your project (e.g. ${example}) or include it in a one-off command ` +
|
|
126
|
+
`(\`npx -p askdb -p ${packageName} askdb ...\`).`);
|
|
127
|
+
}
|
|
66
128
|
function withoutBlankValues(explicit) {
|
|
67
129
|
if (explicit === undefined)
|
|
68
130
|
return undefined;
|
|
@@ -85,6 +147,9 @@ function normalizeAdapters(adapters) {
|
|
|
85
147
|
}
|
|
86
148
|
return byProvider;
|
|
87
149
|
}
|
|
150
|
+
function isLazyEntry(entry) {
|
|
151
|
+
return typeof entry.createConnector !== "function";
|
|
152
|
+
}
|
|
88
153
|
function isAdapterEntry(entry) {
|
|
89
154
|
return entry[1] !== undefined;
|
|
90
155
|
}
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAA6B,MAAM,gBAAgB,CAAC;AAGlF,uEAAuE;AACvE,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,UAAU;IACV,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,WAAW;CACH,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/render/render.d.ts
CHANGED
|
@@ -5,8 +5,10 @@ import type { RenderBodyOptions, RenderBodyResult, RenderOptions, RenderResult }
|
|
|
5
5
|
* Render a `SqlSchema` to a Schema v2 directory.
|
|
6
6
|
*
|
|
7
7
|
* Clean writes and ID-anchored re-introspection merges write `schema.json`
|
|
8
|
-
* only
|
|
9
|
-
*
|
|
8
|
+
* only, through `saveSchemaFile()` from `@askdb/core`: a symbolic link at
|
|
9
|
+
* `schema.json` is refused, and the file is replaced by a temp file renamed
|
|
10
|
+
* over it (ADR 0028). The describable layer (`tables/*.md`, `concepts.md`) is
|
|
11
|
+
* read only for orphan detection when `existingArtifactDir` is supplied.
|
|
10
12
|
*
|
|
11
13
|
* Determinism contract (requirements.md §5):
|
|
12
14
|
* - Schemas alphabetical at the source (the connector already produces
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/render/render.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/render/render.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,YAAY,EAGlB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAIV,SAAS,EAGV,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,aAAa,GACrB,YAAY,CAQd;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,iBAAiB,GACzB,gBAAgB,CAOlB;AA6CD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAOtD;AAuFD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,YAAY,CAyBd;AAiFD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,MAAM,CAaR"}
|
package/dist/render/render.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, readFileSync, readdirSync
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, readdirSync } from "node:fs";
|
|
2
2
|
import { join, resolve } from "node:path";
|
|
3
|
-
import { parseTableMarkdown, } from "@askdb/core";
|
|
3
|
+
import { parseTableMarkdown, saveSchemaFile, } from "@askdb/core";
|
|
4
4
|
/**
|
|
5
5
|
* Render a `SqlSchema` to a Schema v2 directory.
|
|
6
6
|
*
|
|
7
7
|
* Clean writes and ID-anchored re-introspection merges write `schema.json`
|
|
8
|
-
* only
|
|
9
|
-
*
|
|
8
|
+
* only, through `saveSchemaFile()` from `@askdb/core`: a symbolic link at
|
|
9
|
+
* `schema.json` is refused, and the file is replaced by a temp file renamed
|
|
10
|
+
* over it (ADR 0028). The describable layer (`tables/*.md`, `concepts.md`) is
|
|
11
|
+
* read only for orphan detection when `existingArtifactDir` is supplied.
|
|
10
12
|
*
|
|
11
13
|
* Determinism contract (requirements.md §5):
|
|
12
14
|
* - Schemas alphabetical at the source (the connector already produces
|
|
@@ -22,7 +24,7 @@ export function renderToSchemaV2(schema, options) {
|
|
|
22
24
|
const { body, warnings } = renderSchemaV2Body(schema, options);
|
|
23
25
|
mkdirSync(options.outDir, { recursive: true });
|
|
24
26
|
const schemaJsonPath = resolve(options.outDir, "schema.json");
|
|
25
|
-
|
|
27
|
+
saveSchemaFile(options.outDir, "schema.json", body);
|
|
26
28
|
return { schemaJsonPath, warnings };
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/render/render.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/render/render.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askdb/introspect",
|
|
3
|
-
"version": "0.3.0-beta.
|
|
3
|
+
"version": "0.3.0-beta.20",
|
|
4
4
|
"description": "AskDB schema introspection: engine-agnostic Connector contract + orchestrator + Schema v2 renderer. Integration packages (e.g. @askdb/postgres) supply connectors.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"askdb",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"node": ">=22.23.4"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@askdb/core": "1.0.0-beta.
|
|
48
|
+
"@askdb/core": "1.0.0-beta.46"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"typescript": "^6.0.3",
|