@happyvertical/smrt-core 0.56.0 → 0.56.2
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/AGENTS.md +6 -0
- package/agents/browser-entry.md +5 -0
- package/agents/generators.md +61 -0
- package/agents/object-runtime.md +17 -0
- package/dist/browser.d.ts +2 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +3 -1
- package/dist/cookbook/engine/commands.d.ts.map +1 -1
- package/dist/cookbook/engine/commands.js +12 -0
- package/dist/cookbook/engine/commands.js.map +1 -1
- package/dist/cookbook/engine/defaults.d.ts.map +1 -1
- package/dist/cookbook/engine/defaults.js +8 -0
- package/dist/cookbook/engine/defaults.js.map +1 -1
- package/dist/cookbook/engine/document.d.ts +4 -0
- package/dist/cookbook/engine/document.d.ts.map +1 -1
- package/dist/cookbook/engine/document.js +11 -3
- package/dist/cookbook/engine/document.js.map +1 -1
- package/dist/cookbook/engine/engine.d.ts.map +1 -1
- package/dist/cookbook/engine/engine.js +3 -1
- package/dist/cookbook/engine/engine.js.map +1 -1
- package/dist/cookbook/engine/schemas.d.ts.map +1 -1
- package/dist/cookbook/engine/schemas.js +8 -0
- package/dist/cookbook/engine/schemas.js.map +1 -1
- package/dist/cookbook/engine/types.d.ts +5 -1
- package/dist/cookbook/engine/types.d.ts.map +1 -1
- package/dist/cookbook/engine/types.js.map +1 -1
- package/dist/generators/index.d.ts +1 -0
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/index.js +2 -1
- package/dist/generators/mcp-runtime-template.d.ts +3 -0
- package/dist/generators/mcp-runtime-template.d.ts.map +1 -1
- package/dist/generators/mcp-runtime-template.js +30 -4
- package/dist/generators/mcp-runtime-template.js.map +1 -1
- package/dist/generators/mcp.d.ts +5 -0
- package/dist/generators/mcp.d.ts.map +1 -1
- package/dist/generators/mcp.js +78 -7
- package/dist/generators/mcp.js.map +1 -1
- package/dist/generators.js +2 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/interceptors.d.ts +7 -0
- package/dist/interceptors.d.ts.map +1 -1
- package/dist/interceptors.js +15 -1
- package/dist/interceptors.js.map +1 -1
- package/dist/manifest/browser-capability.generated.d.ts.map +1 -1
- package/dist/manifest/browser-capability.generated.js +47 -5
- package/dist/manifest/browser-capability.generated.js.map +1 -1
- package/dist/manifest/index.js +1 -1
- package/dist/manifest/manifest-loader.d.ts.map +1 -1
- package/dist/manifest/manifest-loader.js +1 -2
- package/dist/manifest/manifest-loader.js.map +1 -1
- package/dist/manifest/static-manifest.js +1 -1
- package/dist/manifest/static-manifest.js.map +1 -1
- package/dist/manifest/store.js +1 -1
- package/dist/manifest.json +1 -1
- package/dist/mcp-serializer.d.ts +38 -0
- package/dist/mcp-serializer.d.ts.map +1 -0
- package/dist/mcp-serializer.js +60 -0
- package/dist/mcp-serializer.js.map +1 -0
- package/dist/object.d.ts +1 -0
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +44 -13
- package/dist/object.js.map +1 -1
- package/dist/registry/collection-exposure.d.ts +99 -0
- package/dist/registry/collection-exposure.d.ts.map +1 -0
- package/dist/registry/collection-exposure.js +135 -0
- package/dist/registry/collection-exposure.js.map +1 -0
- package/dist/registry/types.d.ts +13 -0
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/registry.d.ts +8 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +76 -3
- package/dist/registry.js.map +1 -1
- package/dist/scanner/manifest-generator.d.ts +14 -0
- package/dist/scanner/manifest-generator.d.ts.map +1 -1
- package/dist/scanner/manifest-generator.js +66 -13
- package/dist/scanner/manifest-generator.js.map +1 -1
- package/dist/smrt-knowledge.json +13 -11
- package/dist/utils/import-project-vite.js +1 -1
- package/dist/utils/import-workspace-module.js +1 -1
- package/dist/utils/sha256.js +2 -2
- package/dist/vite-plugin/dev-plane-route.js +1 -1
- package/dist/vite-plugin/import-build-aware.js +1 -1
- package/dist/vite-plugin/index.js +2 -2
- package/dist/vite-plugin/resources-route.js +1 -1
- package/dist/vite-plugin/sveltekit-generator.d.ts.map +1 -1
- package/dist/vite-plugin/sveltekit-generator.js +5 -1
- package/dist/vite-plugin/sveltekit-generator.js.map +1 -1
- package/package.json +16 -10
- package/dist/node_modules/.pnpm/@noble_hashes@2.4.0/node_modules/@noble/hashes/_md.js +0 -169
- package/dist/node_modules/.pnpm/@noble_hashes@2.4.0/node_modules/@noble/hashes/_md.js.map +0 -1
- package/dist/node_modules/.pnpm/@noble_hashes@2.4.0/node_modules/@noble/hashes/_u64.js +0 -13
- package/dist/node_modules/.pnpm/@noble_hashes@2.4.0/node_modules/@noble/hashes/_u64.js.map +0 -1
- package/dist/node_modules/.pnpm/@noble_hashes@2.4.0/node_modules/@noble/hashes/sha2.js +0 -198
- package/dist/node_modules/.pnpm/@noble_hashes@2.4.0/node_modules/@noble/hashes/sha2.js.map +0 -1
- package/dist/node_modules/.pnpm/@noble_hashes@2.4.0/node_modules/@noble/hashes/utils.js +0 -243
- package/dist/node_modules/.pnpm/@noble_hashes@2.4.0/node_modules/@noble/hashes/utils.js.map +0 -1
- package/dist/node_modules/.pnpm/balanced-match@4.0.4/node_modules/balanced-match/dist/esm/index.js +0 -51
- package/dist/node_modules/.pnpm/balanced-match@4.0.4/node_modules/balanced-match/dist/esm/index.js.map +0 -1
- package/dist/node_modules/.pnpm/brace-expansion@5.0.11/node_modules/brace-expansion/dist/esm/index.js +0 -202
- package/dist/node_modules/.pnpm/brace-expansion@5.0.11/node_modules/brace-expansion/dist/esm/index.js.map +0 -1
- package/dist/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/assert-valid-pattern.js +0 -10
- package/dist/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/assert-valid-pattern.js.map +0 -1
- package/dist/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/ast.js +0 -514
- package/dist/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/ast.js.map +0 -1
- package/dist/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/brace-expressions.js +0 -124
- package/dist/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/brace-expressions.js.map +0 -1
- package/dist/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/escape.js +0 -21
- package/dist/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/escape.js.map +0 -1
- package/dist/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/index.js +0 -629
- package/dist/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/index.js.map +0 -1
- package/dist/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/unescape.js +0 -28
- package/dist/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/unescape.js.map +0 -1
package/dist/manifest.json
CHANGED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { PublicJsonOptions, SmrtObject } from './object.js';
|
|
2
|
+
/** A named module export that projects an admitted MCP `get` result. */
|
|
3
|
+
export type McpGetSerializer = (item: SmrtObject, options: PublicJsonOptions) => unknown | Promise<unknown>;
|
|
4
|
+
/** Package-owned location of an MCP `get` result serializer. */
|
|
5
|
+
export interface McpGetSerializerReference {
|
|
6
|
+
importPath: string;
|
|
7
|
+
exportName: string;
|
|
8
|
+
}
|
|
9
|
+
export interface McpGetSerializerResolveOptions {
|
|
10
|
+
/**
|
|
11
|
+
* Module URL that owns a relative serializer reference. Omit only when the
|
|
12
|
+
* resolver itself owns that relative reference.
|
|
13
|
+
*/
|
|
14
|
+
parentUrl?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Qualified registry key of the model that declared the serializer. Its
|
|
17
|
+
* loaded module is the default anchor for resolving a bare package.
|
|
18
|
+
*/
|
|
19
|
+
ownerRegistryKey?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Explicit application module URL for a host that resolves a serializer
|
|
22
|
+
* outside a registered MCP model.
|
|
23
|
+
*/
|
|
24
|
+
consumerAnchorUrl?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Resolve a serializer package from the running application's module graph.
|
|
28
|
+
*
|
|
29
|
+
* Model packages own serializer implementations but do not become dependencies
|
|
30
|
+
* of core or generic consumers such as Chat. Bare specifiers first use the
|
|
31
|
+
* active runtime module graph so workspace aliases keep one constructor
|
|
32
|
+
* identity. When the package is absent from Core's dependency graph, resolution
|
|
33
|
+
* continues from the module that registered the owning model (or an explicit
|
|
34
|
+
* host anchor), with ESM export conditions. Relative and URL references keep
|
|
35
|
+
* their declaring module's ordinary dynamic-import behavior.
|
|
36
|
+
*/
|
|
37
|
+
export declare function resolveMcpGetSerializer(reference: McpGetSerializerReference, options?: McpGetSerializerResolveOptions): Promise<McpGetSerializer>;
|
|
38
|
+
//# sourceMappingURL=mcp-serializer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-serializer.d.ts","sourceRoot":"","sources":["../src/mcp-serializer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGjE,wEAAwE;AACxE,MAAM,MAAM,gBAAgB,GAAG,CAC7B,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,iBAAiB,KACvB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhC,gEAAgE;AAChE,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,8BAA8B;IAC7C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAqCD;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,yBAAyB,EACpC,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC,gBAAgB,CAAC,CA+C3B"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { ObjectRegistry } from "./registry.js";
|
|
2
|
+
import { isAbsolute } from "node:path";
|
|
3
|
+
import { pathToFileURL } from "node:url";
|
|
4
|
+
import { resolve as resolve$1 } from "import-meta-resolve";
|
|
5
|
+
//#region src/mcp-serializer.ts
|
|
6
|
+
function resolvesFromConsumer(importPath) {
|
|
7
|
+
return !importPath.startsWith(".") && !isAbsolute(importPath) && !importPath.startsWith("file:") && !importPath.startsWith("data:") && !importPath.startsWith("node:");
|
|
8
|
+
}
|
|
9
|
+
function isUnresolvedPackage(error, importPath) {
|
|
10
|
+
if (!(error instanceof Error) || error.code !== "ERR_MODULE_NOT_FOUND") return false;
|
|
11
|
+
const packageName = importPath.startsWith("@") ? importPath.split("/").slice(0, 2).join("/") : importPath.split("/")[0];
|
|
12
|
+
return error.message.includes(`'${packageName}'`);
|
|
13
|
+
}
|
|
14
|
+
function registeredModuleUrl(ownerRegistryKey) {
|
|
15
|
+
if (!ownerRegistryKey) return void 0;
|
|
16
|
+
const sourceFilePath = ObjectRegistry.getClass(ownerRegistryKey)?.sourceFilePath;
|
|
17
|
+
if (!sourceFilePath) return void 0;
|
|
18
|
+
if (sourceFilePath.startsWith("file:")) return sourceFilePath;
|
|
19
|
+
return isAbsolute(sourceFilePath) ? pathToFileURL(sourceFilePath).href : void 0;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Resolve a serializer package from the running application's module graph.
|
|
23
|
+
*
|
|
24
|
+
* Model packages own serializer implementations but do not become dependencies
|
|
25
|
+
* of core or generic consumers such as Chat. Bare specifiers first use the
|
|
26
|
+
* active runtime module graph so workspace aliases keep one constructor
|
|
27
|
+
* identity. When the package is absent from Core's dependency graph, resolution
|
|
28
|
+
* continues from the module that registered the owning model (or an explicit
|
|
29
|
+
* host anchor), with ESM export conditions. Relative and URL references keep
|
|
30
|
+
* their declaring module's ordinary dynamic-import behavior.
|
|
31
|
+
*/
|
|
32
|
+
async function resolveMcpGetSerializer(reference, options = {}) {
|
|
33
|
+
let module;
|
|
34
|
+
let missingPackageError;
|
|
35
|
+
if (resolvesFromConsumer(reference.importPath)) try {
|
|
36
|
+
module = await import(reference.importPath);
|
|
37
|
+
} catch (error) {
|
|
38
|
+
if (!isUnresolvedPackage(error, reference.importPath)) throw error;
|
|
39
|
+
missingPackageError = error;
|
|
40
|
+
}
|
|
41
|
+
if (!module) {
|
|
42
|
+
const consumerAnchorUrl = options.consumerAnchorUrl ?? registeredModuleUrl(options.ownerRegistryKey);
|
|
43
|
+
let resolvedImportPath;
|
|
44
|
+
if (resolvesFromConsumer(reference.importPath)) {
|
|
45
|
+
if (!consumerAnchorUrl) throw missingPackageError ?? /* @__PURE__ */ new Error(`MCP get serializer '${reference.importPath}' requires a registered model or host module anchor`);
|
|
46
|
+
resolvedImportPath = resolve$1(reference.importPath, consumerAnchorUrl);
|
|
47
|
+
} else resolvedImportPath = resolve$1(reference.importPath, options.parentUrl ?? import.meta.url);
|
|
48
|
+
module = await import(
|
|
49
|
+
/* @vite-ignore */
|
|
50
|
+
resolvedImportPath
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
const serializer = module[reference.exportName];
|
|
54
|
+
if (typeof serializer !== "function") throw new Error(`MCP get serializer '${reference.exportName}' was not exported by '${reference.importPath}'`);
|
|
55
|
+
return serializer;
|
|
56
|
+
}
|
|
57
|
+
//#endregion
|
|
58
|
+
export { resolveMcpGetSerializer };
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=mcp-serializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-serializer.js","names":[],"sources":["../src/mcp-serializer.ts"],"sourcesContent":["import { isAbsolute } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport { resolve as resolveImport } from 'import-meta-resolve';\nimport type { PublicJsonOptions, SmrtObject } from './object.js';\nimport { ObjectRegistry } from './registry.js';\n\n/** A named module export that projects an admitted MCP `get` result. */\nexport type McpGetSerializer = (\n item: SmrtObject,\n options: PublicJsonOptions,\n) => unknown | Promise<unknown>;\n\n/** Package-owned location of an MCP `get` result serializer. */\nexport interface McpGetSerializerReference {\n importPath: string;\n exportName: string;\n}\n\nexport interface McpGetSerializerResolveOptions {\n /**\n * Module URL that owns a relative serializer reference. Omit only when the\n * resolver itself owns that relative reference.\n */\n parentUrl?: string;\n\n /**\n * Qualified registry key of the model that declared the serializer. Its\n * loaded module is the default anchor for resolving a bare package.\n */\n ownerRegistryKey?: string;\n\n /**\n * Explicit application module URL for a host that resolves a serializer\n * outside a registered MCP model.\n */\n consumerAnchorUrl?: string;\n}\n\nfunction resolvesFromConsumer(importPath: string): boolean {\n return (\n !importPath.startsWith('.') &&\n !isAbsolute(importPath) &&\n !importPath.startsWith('file:') &&\n !importPath.startsWith('data:') &&\n !importPath.startsWith('node:')\n );\n}\n\nfunction isUnresolvedPackage(error: unknown, importPath: string): boolean {\n if (\n !(error instanceof Error) ||\n (error as Error & { code?: string }).code !== 'ERR_MODULE_NOT_FOUND'\n )\n return false;\n const packageName = importPath.startsWith('@')\n ? importPath.split('/').slice(0, 2).join('/')\n : importPath.split('/')[0];\n return error.message.includes(`'${packageName}'`);\n}\n\nfunction registeredModuleUrl(\n ownerRegistryKey: string | undefined,\n): string | undefined {\n if (!ownerRegistryKey) return undefined;\n const sourceFilePath =\n ObjectRegistry.getClass(ownerRegistryKey)?.sourceFilePath;\n if (!sourceFilePath) return undefined;\n if (sourceFilePath.startsWith('file:')) return sourceFilePath;\n return isAbsolute(sourceFilePath)\n ? pathToFileURL(sourceFilePath).href\n : undefined;\n}\n\n/**\n * Resolve a serializer package from the running application's module graph.\n *\n * Model packages own serializer implementations but do not become dependencies\n * of core or generic consumers such as Chat. Bare specifiers first use the\n * active runtime module graph so workspace aliases keep one constructor\n * identity. When the package is absent from Core's dependency graph, resolution\n * continues from the module that registered the owning model (or an explicit\n * host anchor), with ESM export conditions. Relative and URL references keep\n * their declaring module's ordinary dynamic-import behavior.\n */\nexport async function resolveMcpGetSerializer(\n reference: McpGetSerializerReference,\n options: McpGetSerializerResolveOptions = {},\n): Promise<McpGetSerializer> {\n let module: Record<string, unknown> | undefined;\n let missingPackageError: unknown;\n if (resolvesFromConsumer(reference.importPath)) {\n try {\n module = (await import(reference.importPath)) as Record<string, unknown>;\n } catch (error) {\n if (!isUnresolvedPackage(error, reference.importPath)) throw error;\n missingPackageError = error;\n }\n }\n if (!module) {\n const consumerAnchorUrl =\n options.consumerAnchorUrl ??\n registeredModuleUrl(options.ownerRegistryKey);\n let resolvedImportPath: string;\n if (resolvesFromConsumer(reference.importPath)) {\n if (!consumerAnchorUrl) {\n throw (\n missingPackageError ??\n new Error(\n `MCP get serializer '${reference.importPath}' requires a registered model or host module anchor`,\n )\n );\n }\n resolvedImportPath = resolveImport(\n reference.importPath,\n consumerAnchorUrl,\n );\n } else {\n resolvedImportPath = resolveImport(\n reference.importPath,\n options.parentUrl ?? import.meta.url,\n );\n }\n module = (await import(/* @vite-ignore */ resolvedImportPath)) as Record<\n string,\n unknown\n >;\n }\n const serializer = module[reference.exportName];\n if (typeof serializer !== 'function') {\n throw new Error(\n `MCP get serializer '${reference.exportName}' was not exported by '${reference.importPath}'`,\n );\n }\n return serializer as McpGetSerializer;\n}\n"],"mappings":";;;;;AAsCA,SAAS,qBAAqB,YAA6B;CACzD,OACE,CAAC,WAAW,WAAW,GAAG,KAC1B,CAAC,WAAW,UAAU,KACtB,CAAC,WAAW,WAAW,OAAO,KAC9B,CAAC,WAAW,WAAW,OAAO,KAC9B,CAAC,WAAW,WAAW,OAAO;AAElC;AAEA,SAAS,oBAAoB,OAAgB,YAA6B;CACxE,IACE,EAAE,iBAAiB,UAClB,MAAoC,SAAS,wBAE9C,OAAO;CACT,MAAM,cAAc,WAAW,WAAW,GAAG,IACzC,WAAW,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAC1C,WAAW,MAAM,GAAG,CAAC,CAAC;CAC1B,OAAO,MAAM,QAAQ,SAAS,IAAI,YAAY,EAAE;AAClD;AAEA,SAAS,oBACP,kBACoB;CACpB,IAAI,CAAC,kBAAkB,OAAO,KAAA;CAC9B,MAAM,iBACJ,eAAe,SAAS,gBAAgB,CAAC,EAAE;CAC7C,IAAI,CAAC,gBAAgB,OAAO,KAAA;CAC5B,IAAI,eAAe,WAAW,OAAO,GAAG,OAAO;CAC/C,OAAO,WAAW,cAAc,IAC5B,cAAc,cAAc,CAAC,CAAC,OAC9B,KAAA;AACN;;;;;;;;;;;;AAaA,eAAsB,wBACpB,WACA,UAA0C,CAAC,GAChB;CAC3B,IAAI;CACJ,IAAI;CACJ,IAAI,qBAAqB,UAAU,UAAU,GAC3C,IAAI;EACF,SAAU,MAAM,OAAO,UAAU;CACnC,SAAS,OAAO;EACd,IAAI,CAAC,oBAAoB,OAAO,UAAU,UAAU,GAAG,MAAM;EAC7D,sBAAsB;CACxB;CAEF,IAAI,CAAC,QAAQ;EACX,MAAM,oBACJ,QAAQ,qBACR,oBAAoB,QAAQ,gBAAgB;EAC9C,IAAI;EACJ,IAAI,qBAAqB,UAAU,UAAU,GAAG;GAC9C,IAAI,CAAC,mBACH,MACE,uCACA,IAAI,MACF,uBAAuB,UAAU,WAAW,oDAC9C;GAGJ,qBAAqB,UACnB,UAAU,YACV,iBACF;EACF,OACE,qBAAqB,UACnB,UAAU,YACV,QAAQ,aAAa,OAAO,KAAK,GACnC;EAEF,SAAU,MAAM;;GAA0B;;CAI5C;CACA,MAAM,aAAa,OAAO,UAAU;CACpC,IAAI,OAAO,eAAe,YACxB,MAAM,IAAI,MACR,uBAAuB,UAAU,WAAW,yBAAyB,UAAU,WAAW,EAC5F;CAEF,OAAO;AACT"}
|
package/dist/object.d.ts
CHANGED
|
@@ -783,6 +783,7 @@ export declare class SmrtObject extends SmrtClass {
|
|
|
783
783
|
* its owner checked, under the same embedded write queue; the conflict
|
|
784
784
|
* columns it matched are never assigned, exactly as in the upsert.
|
|
785
785
|
*/
|
|
786
|
+
private guardedWriteFilter;
|
|
786
787
|
private writeNaturalKeyUpsert;
|
|
787
788
|
/**
|
|
788
789
|
* One id-targeted `UPDATE` on native DuckDB (see {@link buildDuckDbIdUpdate}
|
package/dist/object.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"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"}
|
package/dist/object.js
CHANGED
|
@@ -1538,6 +1538,7 @@ var SmrtObject = class SmrtObject extends SmrtClass {
|
|
|
1538
1538
|
let naturalKeyWrite = "upsert";
|
|
1539
1539
|
const adopted = {};
|
|
1540
1540
|
await withEmbeddedWriteQueue(this.db, serializeEmbeddedWrite, async () => {
|
|
1541
|
+
const writeGuard = GlobalInterceptors.executeWriteGuard(this, interceptorContext);
|
|
1541
1542
|
if (naturalKeyUpsert) {
|
|
1542
1543
|
naturalKeyWrite = await this.writeNaturalKeyRow(data, upsertConflictColumns, adopted);
|
|
1543
1544
|
if (naturalKeyWrite === "done") return;
|
|
@@ -1550,16 +1551,16 @@ var SmrtObject = class SmrtObject extends SmrtClass {
|
|
|
1550
1551
|
let current = null;
|
|
1551
1552
|
if (useEmbeddedRevisionFallback) {
|
|
1552
1553
|
current = this.isPositivelyNativeDuckDb() ? await this.getCanonicalPersistedRow({ id: data.id }) : await this.db.get(this.tableName, { id: data.id });
|
|
1553
|
-
if (!current || !this.revisionsEqual(current.updated_at, revisionGuard)) {
|
|
1554
|
+
if (!current || !this.revisionsEqual(current.updated_at, revisionGuard) || writeGuard && !await this.db.get(this.tableName, this.guardedWriteFilter({ id: data.id }, writeGuard))) {
|
|
1554
1555
|
revisionMatched = false;
|
|
1555
1556
|
return;
|
|
1556
1557
|
}
|
|
1557
1558
|
}
|
|
1558
|
-
const updateResult = useEmbeddedRevisionFallback ? await this.writeEmbeddedRevisionRow(data, current) : await this.db.update(this.tableName, {
|
|
1559
|
+
const updateResult = useEmbeddedRevisionFallback ? await this.writeEmbeddedRevisionRow(data, current) : await this.db.update(this.tableName, this.guardedWriteFilter({
|
|
1559
1560
|
id: data.id,
|
|
1560
1561
|
...revisionGuard !== void 0 ? this.revisionPredicate(revisionGuard) : {}
|
|
1561
|
-
}, updateData);
|
|
1562
|
-
if (revisionGuard !== void 0 && updateResult.affected !== 1) {
|
|
1562
|
+
}, writeGuard), updateData);
|
|
1563
|
+
if ((revisionGuard !== void 0 || writeGuard !== void 0) && updateResult.affected !== 1) {
|
|
1563
1564
|
revisionMatched = false;
|
|
1564
1565
|
return;
|
|
1565
1566
|
}
|
|
@@ -1567,7 +1568,7 @@ var SmrtObject = class SmrtObject extends SmrtClass {
|
|
|
1567
1568
|
} else if (this._insertOnly && !this._persisted || insertUnderFreshSlug) await this.db.insert(this.tableName, data);
|
|
1568
1569
|
else {
|
|
1569
1570
|
const naturalKeyConflictColumns = ObjectRegistry.getConflictPredicate(this.getResolvedQualifiedName()) ? ["id"] : upsertConflictColumns;
|
|
1570
|
-
await this.writeNaturalKeyUpsert(data, naturalKeyConflictColumns, adopted.existing ?? null);
|
|
1571
|
+
await this.writeNaturalKeyUpsert(data, naturalKeyConflictColumns, adopted.existing ?? null, writeGuard);
|
|
1571
1572
|
}
|
|
1572
1573
|
} catch (error) {
|
|
1573
1574
|
throw this.toTypedWriteError(error, writePlan.type === "updateById" || revisionGuard !== void 0 ? `UPDATE ${this.tableName} (id-targeted)` : this._insertOnly && !this._persisted || insertUnderFreshSlug ? `INSERT INTO ${this.tableName}` : `UPSERT INTO ${this.tableName}`);
|
|
@@ -1606,24 +1607,26 @@ var SmrtObject = class SmrtObject extends SmrtClass {
|
|
|
1606
1607
|
async claimRevision(expectedUpdatedAt) {
|
|
1607
1608
|
const className = this.getResolvedClassName();
|
|
1608
1609
|
if (!this._persisted || !this.id) throw RuntimeError.invalidState("A revision claim requires a persisted object", { className });
|
|
1609
|
-
|
|
1610
|
+
const interceptorContext = createInterceptorContext(className, "save", void 0, void 0, this.getResolvedQualifiedName());
|
|
1611
|
+
await GlobalInterceptors.executeBeforeSave(this, interceptorContext);
|
|
1610
1612
|
const updatedAt = this.nextRevisionTimestamp(expectedUpdatedAt);
|
|
1611
1613
|
let result;
|
|
1612
1614
|
let revisionMatched = true;
|
|
1613
1615
|
const useEmbeddedRevisionFallback = usesEmbeddedRevisionFallback(this.db);
|
|
1614
1616
|
await withEmbeddedWriteQueue(this.db, useEmbeddedRevisionFallback, async () => {
|
|
1617
|
+
const writeGuard = GlobalInterceptors.executeWriteGuard(this, interceptorContext);
|
|
1615
1618
|
let current = null;
|
|
1616
1619
|
if (useEmbeddedRevisionFallback) {
|
|
1617
1620
|
current = await this.getCanonicalPersistedRow({ id: this.id });
|
|
1618
|
-
if (!current || !this.revisionsEqual(current.updated_at, expectedUpdatedAt)) {
|
|
1621
|
+
if (!current || !this.revisionsEqual(current.updated_at, expectedUpdatedAt) || writeGuard && !await this.db.get(this.tableName, this.guardedWriteFilter({ id: this.id }, writeGuard))) {
|
|
1619
1622
|
revisionMatched = false;
|
|
1620
1623
|
return;
|
|
1621
1624
|
}
|
|
1622
1625
|
}
|
|
1623
|
-
if (!useEmbeddedRevisionFallback) result = await this.db.update(this.tableName, {
|
|
1626
|
+
if (!useEmbeddedRevisionFallback) result = await this.db.update(this.tableName, this.guardedWriteFilter({
|
|
1624
1627
|
id: this.id,
|
|
1625
1628
|
...this.revisionPredicate(expectedUpdatedAt)
|
|
1626
|
-
}, { updated_at: updatedAt.toISOString() });
|
|
1629
|
+
}, writeGuard), { updated_at: updatedAt.toISOString() });
|
|
1627
1630
|
else if (this.isPositivelyNativeDuckDb()) result = await this.updateDuckDbRowById(this.id, { updated_at: updatedAt.toISOString() });
|
|
1628
1631
|
else result = await this.db.upsert(this.tableName, ["id"], {
|
|
1629
1632
|
...current,
|
|
@@ -1726,7 +1729,28 @@ var SmrtObject = class SmrtObject extends SmrtClass {
|
|
|
1726
1729
|
* its owner checked, under the same embedded write queue; the conflict
|
|
1727
1730
|
* columns it matched are never assigned, exactly as in the upsert.
|
|
1728
1731
|
*/
|
|
1729
|
-
|
|
1732
|
+
guardedWriteFilter(filter, guard) {
|
|
1733
|
+
for (const [key, value] of Object.entries(guard ?? {})) if (Object.hasOwn(filter, key) && JSON.stringify(filter[key]) !== JSON.stringify(value)) throw new Error("Mandatory write predicate conflicts with write identity");
|
|
1734
|
+
return {
|
|
1735
|
+
...filter,
|
|
1736
|
+
...guard
|
|
1737
|
+
};
|
|
1738
|
+
}
|
|
1739
|
+
async writeNaturalKeyUpsert(data, conflictColumns, existing, writeGuard) {
|
|
1740
|
+
if (writeGuard) {
|
|
1741
|
+
const stored = existing;
|
|
1742
|
+
if (!stored) return this.db.insert(this.tableName, data);
|
|
1743
|
+
const unchanged = await this.unchangedIndexedColumnsOf(data, stored);
|
|
1744
|
+
const assignments = Object.fromEntries(Object.entries(data).filter(([column]) => column !== "id" && !unchanged.has(column) && !conflictColumns.includes(column)));
|
|
1745
|
+
const filter = this.guardedWriteFilter({ id: stored.id }, writeGuard);
|
|
1746
|
+
let result;
|
|
1747
|
+
if (this.isPositivelyNativeDuckDb()) {
|
|
1748
|
+
if (!await this.db.get(this.tableName, filter)) throw new Error("Mandatory write predicate denied mutation");
|
|
1749
|
+
result = await this.updateDuckDbRowById(stored.id, assignments);
|
|
1750
|
+
} else result = await this.db.update(this.tableName, filter, assignments);
|
|
1751
|
+
if (result.affected !== 1) throw new Error("Mandatory write predicate denied mutation");
|
|
1752
|
+
return result;
|
|
1753
|
+
}
|
|
1730
1754
|
const unchanged = await this.unchangedIndexedColumnsOf(data, existing);
|
|
1731
1755
|
if (!existing || unchanged.size === 0 || existing.id == null) return this.db.upsert(this.tableName, conflictColumns, data);
|
|
1732
1756
|
const assignments = {};
|
|
@@ -2700,6 +2724,7 @@ var SmrtObject = class SmrtObject extends SmrtClass {
|
|
|
2700
2724
|
await this.verifyStorageReady();
|
|
2701
2725
|
const embeddedRevisionGuard = expectedUpdatedAt !== void 0 && usesEmbeddedRevisionFallback(this.db);
|
|
2702
2726
|
const { affectedTables, affectedTableClasses } = await withEmbeddedWriteQueue(this.db, isEmbeddedDatabase(this.db), async () => {
|
|
2727
|
+
const writeGuard = GlobalInterceptors.executeWriteGuard(this, interceptorContext);
|
|
2703
2728
|
if (embeddedRevisionGuard) {
|
|
2704
2729
|
const current = await this.getCanonicalPersistedRow({ id: this.id });
|
|
2705
2730
|
if (!current || !this.revisionsEqual(current.updated_at, expectedUpdatedAt)) throw new RuntimeError(`Revision conflict while deleting ${className}`, "RUNTIME_REVISION_CONFLICT", {
|
|
@@ -2712,11 +2737,17 @@ var SmrtObject = class SmrtObject extends SmrtClass {
|
|
|
2712
2737
|
tableName: this.tableName,
|
|
2713
2738
|
id: this.id
|
|
2714
2739
|
}, async (db) => {
|
|
2715
|
-
const
|
|
2740
|
+
const filter = this.guardedWriteFilter({
|
|
2716
2741
|
id: this.id,
|
|
2717
2742
|
...expectedUpdatedAt !== void 0 && !embeddedRevisionGuard ? this.revisionPredicate(expectedUpdatedAt) : {}
|
|
2718
|
-
});
|
|
2719
|
-
|
|
2743
|
+
}, writeGuard);
|
|
2744
|
+
let affected;
|
|
2745
|
+
if (writeGuard) {
|
|
2746
|
+
const { sql, values } = buildWhere(filter, 1, isPostgresDatabase(this.db) ? "postgres" : this.isNativeDuckDb() ? "duckdb" : "sqlite");
|
|
2747
|
+
const table = `"${this.tableName.replaceAll("\"", "\"\"")}"`;
|
|
2748
|
+
affected = (await db.query(`DELETE FROM ${table} ${sql} RETURNING id`, ...values)).rows.length;
|
|
2749
|
+
} else affected = (await db.delete(this.tableName, filter)).affected;
|
|
2750
|
+
if ((expectedUpdatedAt !== void 0 || writeGuard !== void 0) && affected !== 1) throw new RuntimeError(`Revision conflict while deleting ${className}`, "RUNTIME_REVISION_CONFLICT", {
|
|
2720
2751
|
className,
|
|
2721
2752
|
id: this.id
|
|
2722
2753
|
});
|