@happyvertical/smrt-core 0.54.2 → 0.54.4
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 -1
- package/README.md +8 -0
- package/agents/change-feed.md +7 -12
- package/agents/generators.md +13 -0
- package/agents/object-runtime.md +8 -0
- package/agents/schema-paths.md +14 -0
- package/dist/__typechecks__/collection-read-plan.d.ts +2 -2
- package/dist/__typechecks__/collection-read-plan.d.ts.map +1 -1
- package/dist/audit-context.d.ts +4 -0
- package/dist/audit-context.d.ts.map +1 -0
- package/dist/audit-context.js +16 -0
- package/dist/audit-context.js.map +1 -0
- package/dist/audit.d.ts +34 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +63 -0
- package/dist/audit.js.map +1 -0
- package/dist/browser.d.ts +19 -18
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +4 -3
- package/dist/cascade.d.ts +1 -1
- package/dist/cascade.d.ts.map +1 -1
- package/dist/cascade.js +10 -7
- package/dist/cascade.js.map +1 -1
- package/dist/change-feed.js +1 -1
- package/dist/child-accessors.d.ts +1 -1
- package/dist/child-accessors.d.ts.map +1 -1
- package/dist/collection-read-plan.d.ts +3 -3
- package/dist/collection-read-plan.d.ts.map +1 -1
- package/dist/collection.d.ts +13 -6
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +59 -4
- package/dist/collection.js.map +1 -1
- package/dist/data-query.d.ts +1 -1
- package/dist/data-query.d.ts.map +1 -1
- package/dist/embedded-write-queue.d.ts +2 -0
- package/dist/embedded-write-queue.d.ts.map +1 -1
- package/dist/embedded-write-queue.js +12 -5
- package/dist/embedded-write-queue.js.map +1 -1
- package/dist/embeddings/index.d.ts +5 -5
- package/dist/embeddings/index.d.ts.map +1 -1
- package/dist/embeddings/provider.d.ts +1 -1
- package/dist/embeddings/provider.d.ts.map +1 -1
- package/dist/embeddings/storage.d.ts +1 -1
- package/dist/embeddings/storage.d.ts.map +1 -1
- package/dist/generated-collection-access.d.ts +3 -3
- package/dist/generated-collection-access.d.ts.map +1 -1
- package/dist/generators/changes-route.js +1 -1
- package/dist/generators/index.d.ts +12 -12
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/mcp-runtime-template.d.ts +2 -0
- package/dist/generators/mcp-runtime-template.d.ts.map +1 -1
- package/dist/generators/mcp-runtime-template.js +18 -16
- package/dist/generators/mcp-runtime-template.js.map +1 -1
- package/dist/generators/mcp-tool-name.d.ts +6 -0
- package/dist/generators/mcp-tool-name.d.ts.map +1 -1
- package/dist/generators/mcp-tool-name.js.map +1 -1
- package/dist/generators/mcp.d.ts +34 -1
- package/dist/generators/mcp.d.ts.map +1 -1
- package/dist/generators/mcp.js +148 -110
- package/dist/generators/mcp.js.map +1 -1
- package/dist/generators/rest.d.ts +4 -4
- package/dist/generators/rest.d.ts.map +1 -1
- package/dist/generators/rest.js +16 -7
- package/dist/generators/rest.js.map +1 -1
- package/dist/hierarchical.d.ts +2 -2
- package/dist/hierarchical.d.ts.map +1 -1
- package/dist/index.d.ts +68 -66
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -7
- package/dist/junction.d.ts +31 -12
- package/dist/junction.d.ts.map +1 -1
- package/dist/junction.js +31 -12
- package/dist/junction.js.map +1 -1
- package/dist/knowledge.js +1 -1
- package/dist/knowledge.js.map +1 -1
- package/dist/manifest/index.d.ts +7 -7
- package/dist/manifest/index.d.ts.map +1 -1
- package/dist/manifest/manifest-loader.d.ts.map +1 -1
- package/dist/manifest/manifest-loader.js +1 -1
- package/dist/manifest/manifest-loader.js.map +1 -1
- package/dist/manifest/static-manifest.d.ts.map +1 -1
- package/dist/manifest/static-manifest.js +106 -9
- package/dist/manifest/static-manifest.js.map +1 -1
- package/dist/manifest/store.d.ts +8 -0
- package/dist/manifest/store.d.ts.map +1 -1
- package/dist/manifest/store.js +12 -2
- package/dist/manifest/store.js.map +1 -1
- package/dist/manifest.json +119 -9
- package/dist/migrations/differ.d.ts +3 -3
- package/dist/migrations/differ.d.ts.map +1 -1
- package/dist/migrations/differ.js +8 -4
- package/dist/migrations/differ.js.map +1 -1
- package/dist/object.d.ts +8 -7
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +19 -7
- package/dist/object.js.map +1 -1
- package/dist/polymorphic-association.d.ts +1 -1
- package/dist/polymorphic-association.d.ts.map +1 -1
- package/dist/prebuild/index.d.ts +1 -1
- package/dist/prebuild/index.d.ts.map +1 -1
- package/dist/query-bounds.d.ts +1 -1
- package/dist/query-bounds.d.ts.map +1 -1
- package/dist/registry/cache-config.d.ts +1 -1
- package/dist/registry/cache-config.d.ts.map +1 -1
- package/dist/registry/class-registration.d.ts +1 -1
- package/dist/registry/class-registration.d.ts.map +1 -1
- package/dist/registry/class-registration.js +75 -10
- package/dist/registry/class-registration.js.map +1 -1
- package/dist/registry/collection-resolution.d.ts +3 -3
- package/dist/registry/collection-resolution.d.ts.map +1 -1
- package/dist/registry/collection-resolution.js +2 -1
- package/dist/registry/collection-resolution.js.map +1 -1
- package/dist/registry/collision-policy.d.ts +8 -0
- package/dist/registry/collision-policy.d.ts.map +1 -1
- package/dist/registry/collision-policy.js +2 -2
- package/dist/registry/collision-policy.js.map +1 -1
- package/dist/registry/embedding-manager.d.ts +1 -1
- package/dist/registry/embedding-manager.d.ts.map +1 -1
- package/dist/registry/framework-base-classes.d.ts.map +1 -1
- package/dist/registry/framework-base-classes.js +2 -1
- package/dist/registry/framework-base-classes.js.map +1 -1
- package/dist/registry/index.d.ts +6 -6
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/inheritance-resolver.d.ts +2 -2
- package/dist/registry/inheritance-resolver.d.ts.map +1 -1
- package/dist/registry/manifest-field-merge.d.ts +1 -1
- package/dist/registry/manifest-field-merge.d.ts.map +1 -1
- package/dist/registry/name-resolver.d.ts +1 -1
- package/dist/registry/name-resolver.d.ts.map +1 -1
- package/dist/registry/qualified-name-aliases.d.ts +1 -1
- package/dist/registry/qualified-name-aliases.d.ts.map +1 -1
- package/dist/registry/relationship-graph.d.ts +1 -1
- package/dist/registry/relationship-graph.d.ts.map +1 -1
- package/dist/registry/runtime-overrides.d.ts +1 -1
- package/dist/registry/runtime-overrides.d.ts.map +1 -1
- package/dist/registry/schema-builder.d.ts.map +1 -1
- package/dist/registry/schema-builder.js +33 -4
- package/dist/registry/schema-builder.js.map +1 -1
- package/dist/registry/shared-state.d.ts +9 -3
- package/dist/registry/shared-state.d.ts.map +1 -1
- package/dist/registry/shared-state.js +12 -1
- package/dist/registry/shared-state.js.map +1 -1
- package/dist/registry/types.d.ts +11 -5
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/registry/validator.d.ts +1 -1
- package/dist/registry/validator.d.ts.map +1 -1
- package/dist/registry.d.ts +19 -13
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +25 -3
- package/dist/registry.js.map +1 -1
- package/dist/relationship-loader.d.ts +1 -1
- package/dist/relationship-loader.d.ts.map +1 -1
- package/dist/runtime/client.d.ts +1 -1
- package/dist/runtime/client.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +5 -5
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/server.d.ts +1 -1
- package/dist/runtime/server.d.ts.map +1 -1
- package/dist/scanner/manifest-generator.d.ts.map +1 -1
- package/dist/scanner/manifest-generator.js +5 -1
- package/dist/scanner/manifest-generator.js.map +1 -1
- package/dist/scanner/types.d.ts +8 -0
- package/dist/scanner/types.d.ts.map +1 -1
- package/dist/scanner/types.js.map +1 -1
- package/dist/schema/ddl/duckdb-strategy.d.ts.map +1 -1
- package/dist/schema/ddl/duckdb-strategy.js +1 -0
- package/dist/schema/ddl/duckdb-strategy.js.map +1 -1
- package/dist/schema/ddl/null-equal-index.d.ts.map +1 -1
- package/dist/schema/ddl/null-equal-index.js +4 -2
- package/dist/schema/ddl/null-equal-index.js.map +1 -1
- package/dist/schema/ddl/types.d.ts +1 -1
- package/dist/schema/ddl/types.d.ts.map +1 -1
- package/dist/schema/generator.d.ts +3 -0
- package/dist/schema/generator.d.ts.map +1 -1
- package/dist/schema/generator.js +38 -0
- package/dist/schema/generator.js.map +1 -1
- package/dist/smrt-knowledge.json +74 -20
- package/dist/sync/apply.d.ts +2 -0
- package/dist/sync/apply.d.ts.map +1 -1
- package/dist/sync/apply.js +7 -3
- package/dist/sync/apply.js.map +1 -1
- package/dist/utils/scanner-module.d.ts +9 -0
- package/dist/utils/scanner-module.d.ts.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/vite-plugin/changes-route.d.ts +1 -1
- package/dist/vite-plugin/changes-route.d.ts.map +1 -1
- package/dist/vite-plugin/events-route.d.ts +1 -1
- package/dist/vite-plugin/events-route.d.ts.map +1 -1
- package/dist/vite-plugin/index.d.ts +14 -0
- package/dist/vite-plugin/index.d.ts.map +1 -1
- package/dist/vite-plugin/index.js +58 -18
- package/dist/vite-plugin/index.js.map +1 -1
- package/dist/vite-plugin/package-stamp.d.ts +41 -0
- package/dist/vite-plugin/package-stamp.d.ts.map +1 -0
- package/dist/vite-plugin/package-stamp.js +33 -0
- package/dist/vite-plugin/package-stamp.js.map +1 -0
- package/dist/vite-plugin/sveltekit-generator.d.ts +1 -1
- package/dist/vite-plugin/sveltekit-generator.d.ts.map +1 -1
- package/dist/vite-plugin/sveltekit-generator.js +5 -3
- package/dist/vite-plugin/sveltekit-generator.js.map +1 -1
- package/dist/vite-plugin/sync-apply-route.d.ts +1 -1
- package/dist/vite-plugin/sync-apply-route.d.ts.map +1 -1
- package/dist/vite-plugin/sync-apply-route.js +10 -0
- package/dist/vite-plugin/sync-apply-route.js.map +1 -1
- package/dist/vite-plugin.js +2 -2
- package/package.json +10 -10
package/dist/object.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { AITextCompletionOptions, AITool } from '@happyvertical/ai';
|
|
2
|
-
import type { SmrtClassOptions } from
|
|
3
|
-
import { SmrtClass } from
|
|
4
|
-
import { type DatabaseErrorClassification } from
|
|
5
|
-
import { type EvaluateOptions, type EvaluationResult } from
|
|
6
|
-
import type { GenerateEmbeddingsOptions } from
|
|
7
|
-
import { type ToolCall, type ToolCallResult } from
|
|
2
|
+
import type { SmrtClassOptions } from "./class.js";
|
|
3
|
+
import { SmrtClass } from "./class.js";
|
|
4
|
+
import { type DatabaseErrorClassification } from "./db-errors.js";
|
|
5
|
+
import { type EvaluateOptions, type EvaluationResult } from "./decisions.js";
|
|
6
|
+
import type { GenerateEmbeddingsOptions } from "./embeddings/types.js";
|
|
7
|
+
import { type ToolCall, type ToolCallResult } from "./tools/tool-executor.js";
|
|
8
8
|
/** Optional optimistic-concurrency guard for persisted-object saves. */
|
|
9
9
|
export interface SmrtSaveOptions {
|
|
10
10
|
/**
|
|
@@ -831,6 +831,7 @@ export declare class SmrtObject extends SmrtClass {
|
|
|
831
831
|
* (plain INSERT) or `'upsert'` (natural-key upsert, identity adopted).
|
|
832
832
|
*/
|
|
833
833
|
private writeNaturalKeyRow;
|
|
834
|
+
private scopePartialConflictFilter;
|
|
834
835
|
/**
|
|
835
836
|
* Refuse a natural-key collision with a row owned by someone else. Every
|
|
836
837
|
* ownership column the stored row carries is compared; one the save leaves
|
|
@@ -1369,7 +1370,7 @@ export declare class SmrtObject extends SmrtClass {
|
|
|
1369
1370
|
* registered field metadata. Falls back to convention (`<class>_id`) when
|
|
1370
1371
|
* `sourceKey` / `targetKey` are not explicitly set.
|
|
1371
1372
|
*/
|
|
1372
|
-
protected resolveManyToManyJoin(fieldName: string, relationship: import(
|
|
1373
|
+
protected resolveManyToManyJoin(fieldName: string, relationship: import("./registry.js").RelationshipMetadata): Promise<{
|
|
1373
1374
|
through: string;
|
|
1374
1375
|
sourceColumn: string;
|
|
1375
1376
|
targetColumn: string;
|
package/dist/object.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAYzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"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"}
|
package/dist/object.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { classifyDatabaseError, classifyDialectMessage } from "./db-errors.js";
|
|
2
|
+
import { isEmbeddedDatabase, isPostgresDatabase, usesEmbeddedRevisionFallback, withEmbeddedWriteQueue, withEmbeddedWriteTransaction } from "./embedded-write-queue.js";
|
|
2
3
|
import { DatabaseError, ErrorUtils, RuntimeError, SmrtError, TenantIsolationError, ValidationError } from "./errors.js";
|
|
3
4
|
import { toSnakeCase } from "./utils/naming.js";
|
|
4
5
|
import { buildCascadePlan, cascadeReferencesTo, runCascadeDelete } from "./cascade.js";
|
|
5
6
|
import { broadcastCacheInvalidation, hasCrossProcessCacheInterest, invalidateCollectionCache, resolveDbCacheKey } from "./collection-cache.js";
|
|
6
|
-
import { isEmbeddedDatabase, isPostgresDatabase, usesEmbeddedRevisionFallback, withEmbeddedWriteQueue, withEmbeddedWriteTransaction } from "./embedded-write-queue.js";
|
|
7
7
|
import { GlobalInterceptors, createInterceptorContext, resolveGetStringFilter } from "./interceptors.js";
|
|
8
8
|
import { detectEngine } from "./schema/ddl/index.js";
|
|
9
9
|
import { CHANGE_FEED_WAS_PERSISTED_KEY, recordInstanceChange } from "./change-feed.js";
|
|
@@ -11,14 +11,14 @@ import { assertFiniteUnitInterval } from "./decisions.js";
|
|
|
11
11
|
import { SmrtClass } from "./class.js";
|
|
12
12
|
import { EmbeddingProvider } from "./embeddings/provider.js";
|
|
13
13
|
import { EmbeddingStorage } from "./embeddings/storage.js";
|
|
14
|
+
import { resolveOneToManyInverse, resolveRelationshipTargetName } from "./relationship-loader.js";
|
|
15
|
+
import { verifyPersistenceTable } from "./schema/table-verifier.js";
|
|
16
|
+
import { fieldsFromClass, tableNameFromClass } from "./utils.js";
|
|
14
17
|
import { ContentHasher } from "./embeddings/hash.js";
|
|
15
18
|
import { getBoxedPrimitiveKind, isRawJSON } from "./plain-json.js";
|
|
16
19
|
import { isBatchSafeValidator } from "./registry/validator.js";
|
|
17
|
-
import { resolveOneToManyInverse, resolveRelationshipTargetName } from "./relationship-loader.js";
|
|
18
20
|
import { postgresRevisionCondition } from "./revision-guard.js";
|
|
19
|
-
import { verifyPersistenceTable } from "./schema/table-verifier.js";
|
|
20
21
|
import { executeToolCall } from "./tools/tool-executor.js";
|
|
21
|
-
import { fieldsFromClass, tableNameFromClass } from "./utils.js";
|
|
22
22
|
import { ObjectRegistry } from "./registry.js";
|
|
23
23
|
import { createLogger } from "@happyvertical/logger";
|
|
24
24
|
import { buildWhere } from "@happyvertical/sql";
|
|
@@ -1261,6 +1261,7 @@ var SmrtObject = class SmrtObject extends SmrtClass {
|
|
|
1261
1261
|
}
|
|
1262
1262
|
const columns = prepared[0] ? Object.keys(prepared[0].data) : [];
|
|
1263
1263
|
const conflict = prepared[0]?.conflictColumns ?? [];
|
|
1264
|
+
if (ObjectRegistry.getConflictPredicate(first.getResolvedQualifiedName())) return false;
|
|
1264
1265
|
const identities = /* @__PURE__ */ new Set();
|
|
1265
1266
|
const ownershipColumns = SmrtObject.ownershipColumnsFor(first.getResolvedQualifiedName());
|
|
1266
1267
|
if ([...ownershipColumns].some((column) => columns.includes(column) && !conflict.includes(column)) || columns.length * added.length > 900 || prepared.some((entry) => {
|
|
@@ -1538,7 +1539,7 @@ var SmrtObject = class SmrtObject extends SmrtClass {
|
|
|
1538
1539
|
}
|
|
1539
1540
|
if (writePlan.type === "updateById") this.setMetaType(writePlan.qualifiedMetaType);
|
|
1540
1541
|
} else if (this._insertOnly && !this._persisted || insertUnderFreshSlug) await this.db.insert(this.tableName, data);
|
|
1541
|
-
else await this.db.upsert(this.tableName, upsertConflictColumns, data);
|
|
1542
|
+
else await this.db.upsert(this.tableName, ObjectRegistry.getConflictPredicate(this.getResolvedQualifiedName()) ? ["id"] : upsertConflictColumns, data);
|
|
1542
1543
|
} catch (error) {
|
|
1543
1544
|
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}`);
|
|
1544
1545
|
}
|
|
@@ -1689,6 +1690,7 @@ var SmrtObject = class SmrtObject extends SmrtClass {
|
|
|
1689
1690
|
if (conflictColumns.length === 0 || conflictColumns.length === 1 && conflictColumns[0] === "id" || !conflictColumns.every((column) => Object.hasOwn(data, column)) || !conflictColumns.some((column) => data[column] == null)) return;
|
|
1690
1691
|
const filter = {};
|
|
1691
1692
|
for (const column of conflictColumns) filter[column] = data[column] ?? null;
|
|
1693
|
+
this.scopePartialConflictFilter(filter, data);
|
|
1692
1694
|
const existing = await this.readNaturalKeyRow(filter);
|
|
1693
1695
|
if (existing && existing.id !== data.id) {
|
|
1694
1696
|
const column = conflictColumns.find((name) => data[name] != null) ?? conflictColumns[0];
|
|
@@ -1772,6 +1774,7 @@ var SmrtObject = class SmrtObject extends SmrtClass {
|
|
|
1772
1774
|
const value = data[column];
|
|
1773
1775
|
filter[column] = value === void 0 ? null : value;
|
|
1774
1776
|
}
|
|
1777
|
+
this.scopePartialConflictFilter(filter, data);
|
|
1775
1778
|
return filter;
|
|
1776
1779
|
};
|
|
1777
1780
|
const atomic = isPostgresDatabase(this.db) && conflictColumns.every((column) => data[column] != null);
|
|
@@ -1785,7 +1788,7 @@ var SmrtObject = class SmrtObject extends SmrtClass {
|
|
|
1785
1788
|
const existing = await this.readNaturalKeyRow(conflictFilter);
|
|
1786
1789
|
if (!existing) {
|
|
1787
1790
|
if (atomic) continue;
|
|
1788
|
-
return derived ? "insert" : "upsert";
|
|
1791
|
+
return derived || ObjectRegistry.getConflictPredicate(this.getResolvedQualifiedName()) ? "insert" : "upsert";
|
|
1789
1792
|
}
|
|
1790
1793
|
if (derived) {
|
|
1791
1794
|
await this.moveToFreeDerivedSlug(data, conflictFilter, attempt > 0);
|
|
@@ -1806,6 +1809,13 @@ var SmrtObject = class SmrtObject extends SmrtClass {
|
|
|
1806
1809
|
}
|
|
1807
1810
|
throw DatabaseError.queryFailed(`INSERT INTO ${this.tableName} (natural key)`, /* @__PURE__ */ new Error("The natural key kept colliding with concurrent writes; retry the save."));
|
|
1808
1811
|
}
|
|
1812
|
+
scopePartialConflictFilter(filter, data) {
|
|
1813
|
+
const className = this.getResolvedQualifiedName();
|
|
1814
|
+
const overrides = ObjectRegistry.getSTIConflictOverrides(className);
|
|
1815
|
+
if (!overrides.length) return;
|
|
1816
|
+
if (overrides.includes(className)) filter._meta_type = data._meta_type;
|
|
1817
|
+
else filter["_meta_type not in"] = overrides;
|
|
1818
|
+
}
|
|
1809
1819
|
/**
|
|
1810
1820
|
* Refuse a natural-key collision with a row owned by someone else. Every
|
|
1811
1821
|
* ownership column the stored row carries is compared; one the save leaves
|
|
@@ -1846,7 +1856,9 @@ var SmrtObject = class SmrtObject extends SmrtClass {
|
|
|
1846
1856
|
values.push(value === null ? null : value instanceof Date ? value.toISOString() : Buffer.isBuffer(value) || ArrayBuffer.isView(value) ? value : typeof value === "object" ? JSON.stringify(value) : value);
|
|
1847
1857
|
}
|
|
1848
1858
|
const placeholders = values.map((_, index) => `$${index + 1}`).join(", ");
|
|
1849
|
-
|
|
1859
|
+
const predicate = ObjectRegistry.getConflictPredicate(this.getResolvedQualifiedName());
|
|
1860
|
+
const conflictWhere = predicate ? ` WHERE ${predicate}` : "";
|
|
1861
|
+
return ((await this.db.query(`INSERT INTO ${quote(this.tableName)} (${columns.join(", ")}) VALUES (${placeholders}) ON CONFLICT (${conflictColumns.map(quote).join(", ")})${conflictWhere} DO NOTHING RETURNING ${quote("id")}`, ...values))?.rows?.length ?? 0) > 0;
|
|
1850
1862
|
}
|
|
1851
1863
|
/**
|
|
1852
1864
|
* Moves a NEW object's taken derived slug to the first free `<base>-2` …
|