@researchdatabox/sails-hook-redbox-storage-mongo 5.0.4-beta.12498 → 5.0.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@researchdatabox/sails-hook-redbox-storage-mongo",
3
- "version": "5.0.4-beta.12498",
3
+ "version": "5.0.4",
4
4
  "description": "A MongoDB storage plugin for ReDBox.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -12,8 +12,7 @@
12
12
  "isHook": true,
13
13
  "hasModels": true,
14
14
  "hasServices": true,
15
- "hasConfig": true,
16
- "hasMigrations": true
15
+ "hasConfig": true
17
16
  },
18
17
  "repository": {
19
18
  "type": "git",
@@ -60,7 +59,7 @@
60
59
  "typescript": "5.9.3"
61
60
  },
62
61
  "dependencies": {
63
- "@researchdatabox/redbox-core": "5.0.4-beta.12498",
62
+ "@researchdatabox/redbox-core": "5.0.4",
64
63
  "json2csv": "5.0.7",
65
64
  "lodash": "4.18.1",
66
65
  "mongodb": "7.2.0",
@@ -1,5 +0,0 @@
1
- import type { RedboxMigration } from '@researchdatabox/redbox-core';
2
- export * from './recordRevisionBackfill';
3
- export declare const MigrationExports: RedboxMigration[];
4
- /** Synchronous registry consumed by the generated ReDBox migration shim. */
5
- export declare function registerRedboxMigrations(): RedboxMigration[];
@@ -1,26 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.MigrationExports = void 0;
18
- exports.registerRedboxMigrations = registerRedboxMigrations;
19
- const recordRevisionBackfill_1 = require("./recordRevisionBackfill");
20
- __exportStar(require("./recordRevisionBackfill"), exports);
21
- exports.MigrationExports = [recordRevisionBackfill_1.recordRevisionBackfillMigration];
22
- /** Synchronous registry consumed by the generated ReDBox migration shim. */
23
- function registerRedboxMigrations() {
24
- return exports.MigrationExports;
25
- }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWlncmF0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQVFBLDREQUVDO0FBVEQscUVBQTJFO0FBRTNFLDJEQUF5QztBQUU1QixRQUFBLGdCQUFnQixHQUFzQixDQUFDLHdEQUErQixDQUFDLENBQUM7QUFFckYsNEVBQTRFO0FBQzVFLFNBQWdCLHdCQUF3QjtJQUN0QyxPQUFPLHdCQUFnQixDQUFDO0FBQzFCLENBQUMifQ==
@@ -1,26 +0,0 @@
1
- import type { Db } from 'mongodb';
2
- import { type RedboxMigration } from '@researchdatabox/redbox-core';
3
- export declare const RECORD_REVISION_BACKFILL_MIGRATION_NAME = "@researchdatabox/sails-hook-redbox-storage-mongo:20260823T000000-backfill-record-revisions";
4
- export declare const RECORD_REVISION_BACKFILL_BATCH_SIZE = 500;
5
- export interface RecordRevisionBackfillStats {
6
- activeUpdated: number;
7
- tombstonesUpdated: number;
8
- batches: number;
9
- durationMs: number;
10
- }
11
- type MigrationLogger = Pick<Console, 'info' | 'error'>;
12
- interface BackfillOptions {
13
- batchSize?: number;
14
- now?: () => number;
15
- }
16
- /**
17
- * Restart-safe backfill. Only the new wrapper fields are written; record
18
- * metadata, workflow, authorization, lastSaveDate, and search documents are
19
- * deliberately absent from every update document.
20
- *
21
- * Each batch re-queries the documents that still need the backfill, so an
22
- * interrupted run resumes simply by being run again.
23
- */
24
- export declare function backfillRecordRevisions(db: Db, recordCollectionName: string, tombstoneCollectionName: string, logger: MigrationLogger, options?: BackfillOptions): Promise<RecordRevisionBackfillStats>;
25
- export declare const recordRevisionBackfillMigration: RedboxMigration;
26
- export {};
@@ -1,115 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.recordRevisionBackfillMigration = exports.RECORD_REVISION_BACKFILL_BATCH_SIZE = exports.RECORD_REVISION_BACKFILL_MIGRATION_NAME = void 0;
4
- exports.backfillRecordRevisions = backfillRecordRevisions;
5
- const redbox_core_1 = require("@researchdatabox/redbox-core");
6
- exports.RECORD_REVISION_BACKFILL_MIGRATION_NAME = '@researchdatabox/sails-hook-redbox-storage-mongo:20260823T000000-backfill-record-revisions';
7
- exports.RECORD_REVISION_BACKFILL_BATCH_SIZE = 500;
8
- /** Equality against `null` matches both a null value and an absent field. */
9
- const MISSING_REVISION = { revision: null };
10
- const MISSING_LIFECYCLE_STATE = { lifecycleState: null };
11
- const PENDING = {
12
- active: MISSING_REVISION,
13
- tombstone: { $or: [MISSING_REVISION, MISSING_LIFECYCLE_STATE] },
14
- };
15
- const SAFE_FAILURE_CODES = new Set([
16
- 'record-revision-backfill-no-progress',
17
- 'record-revision-backfill-invalid-batch-size',
18
- ]);
19
- function safeFailureCode(error) {
20
- const message = error instanceof Error ? error.message : '';
21
- return SAFE_FAILURE_CODES.has(message) ? message : 'record-revision-backfill-failed';
22
- }
23
- async function backfillCollection(collection, kind, batchSize) {
24
- const pending = PENDING[kind];
25
- let updated = 0;
26
- let batches = 0;
27
- for (;;) {
28
- const documents = await collection
29
- .find(pending, { projection: { _id: 1, revision: 1, lifecycleState: 1 } })
30
- .limit(batchSize)
31
- .toArray();
32
- if (documents.length === 0)
33
- break;
34
- const operations = documents.map(document => ({
35
- updateOne: {
36
- filter: { $and: [{ _id: document._id }, pending] },
37
- // Evaluate the fallback against the value present when Mongo applies
38
- // the update, not the earlier projected snapshot. This preserves a
39
- // revision or lifecycle state installed by a concurrent/resumed run
40
- // while still filling whichever sibling field remains absent.
41
- update: [
42
- {
43
- $set: {
44
- revision: { $ifNull: ['$revision', redbox_core_1.INITIAL_RECORD_REVISION] },
45
- ...(kind === 'tombstone' ? { lifecycleState: { $ifNull: ['$lifecycleState', 'deleted'] } } : {}),
46
- },
47
- },
48
- ],
49
- },
50
- }));
51
- const result = await collection.bulkWrite(operations, { ordered: false });
52
- updated += result.modifiedCount;
53
- batches += 1;
54
- // Guard against an unsupported dialect silently reporting success and
55
- // looping forever. Another idempotent runner may legitimately have won the
56
- // whole batch, so only a batch whose own documents are still pending is a
57
- // genuine failure to progress.
58
- if (result.modifiedCount === 0) {
59
- const stillPending = await collection.countDocuments({ $and: [{ _id: { $in: documents.map(document => document._id) } }, pending] }, { limit: 1 });
60
- if (stillPending > 0) {
61
- throw new Error('record-revision-backfill-no-progress');
62
- }
63
- }
64
- }
65
- return { updated, batches };
66
- }
67
- /**
68
- * Restart-safe backfill. Only the new wrapper fields are written; record
69
- * metadata, workflow, authorization, lastSaveDate, and search documents are
70
- * deliberately absent from every update document.
71
- *
72
- * Each batch re-queries the documents that still need the backfill, so an
73
- * interrupted run resumes simply by being run again.
74
- */
75
- async function backfillRecordRevisions(db, recordCollectionName, tombstoneCollectionName, logger, options = {}) {
76
- const now = options.now ?? Date.now;
77
- const start = now();
78
- const batchSize = options.batchSize ?? exports.RECORD_REVISION_BACKFILL_BATCH_SIZE;
79
- try {
80
- if (!Number.isSafeInteger(batchSize) || batchSize < 1 || batchSize > 10_000) {
81
- throw new TypeError('record-revision-backfill-invalid-batch-size');
82
- }
83
- const active = await backfillCollection(db.collection(recordCollectionName), 'active', batchSize);
84
- const tombstones = await backfillCollection(db.collection(tombstoneCollectionName), 'tombstone', batchSize);
85
- const stats = {
86
- activeUpdated: active.updated,
87
- tombstonesUpdated: tombstones.updated,
88
- batches: active.batches + tombstones.batches,
89
- durationMs: Math.max(0, now() - start),
90
- };
91
- logger.info(`Record revision backfill complete: active=${stats.activeUpdated}, tombstones=${stats.tombstonesUpdated}, ` +
92
- `batches=${stats.batches}, durationMs=${stats.durationMs}.`);
93
- return stats;
94
- }
95
- catch (error) {
96
- // The logged code stays bounded: a driver message can carry record detail,
97
- // so only this migration's own codes are echoed. The original error travels
98
- // as the thrown error's cause for the operator's stack trace.
99
- const durationMs = Math.max(0, now() - start);
100
- logger.error(`Record revision backfill failed: code=${safeFailureCode(error)}, durationMs=${durationMs}.`);
101
- throw new Error('record-revision-backfill-failed', { cause: error });
102
- }
103
- }
104
- exports.recordRevisionBackfillMigration = {
105
- name: exports.RECORD_REVISION_BACKFILL_MIGRATION_NAME,
106
- async up(params) {
107
- const sails = params?.context;
108
- if (!sails?.models?.record || !sails?.models?.deletedrecord) {
109
- throw new Error('record-revision-backfill-models-unavailable');
110
- }
111
- const db = sails.models.record.getDatastore().manager;
112
- await backfillRecordRevisions(db, sails.models.record.tableName, sails.models.deletedrecord.tableName, sails.log);
113
- },
114
- };
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkUmV2aXNpb25CYWNrZmlsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWdyYXRpb25zL3JlY29yZFJldmlzaW9uQmFja2ZpbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBeUdBLDBEQW9DQztBQTVJRCw4REFBNkY7QUFFaEYsUUFBQSx1Q0FBdUMsR0FDbEQsNEZBQTRGLENBQUM7QUFFbEYsUUFBQSxtQ0FBbUMsR0FBRyxHQUFHLENBQUM7QUFnQnZELDZFQUE2RTtBQUM3RSxNQUFNLGdCQUFnQixHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO0FBQzVDLE1BQU0sdUJBQXVCLEdBQUcsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFFekQsTUFBTSxPQUFPLEdBQXFEO0lBQ2hFLE1BQU0sRUFBRSxnQkFBZ0I7SUFDeEIsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsdUJBQXVCLENBQUMsRUFBRTtDQUNoRSxDQUFDO0FBRUYsTUFBTSxrQkFBa0IsR0FBd0IsSUFBSSxHQUFHLENBQUM7SUFDdEQsc0NBQXNDO0lBQ3RDLDZDQUE2QztDQUM5QyxDQUFDLENBQUM7QUFFSCxTQUFTLGVBQWUsQ0FBQyxLQUFjO0lBQ3JDLE1BQU0sT0FBTyxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM1RCxPQUFPLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxpQ0FBaUMsQ0FBQztBQUN2RixDQUFDO0FBRUQsS0FBSyxVQUFVLGtCQUFrQixDQUMvQixVQUFnQyxFQUNoQyxJQUE0QixFQUM1QixTQUFpQjtJQUVqQixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsSUFBSSxP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
@@ -1,14 +0,0 @@
1
- import 'reflect-metadata';
2
- import type { ContractJsonObject, RecordContractCompleteness, RecordContractFormat } from '@researchdatabox/redbox-core';
3
- export declare const RECORD_SCHEMA_DIGEST_PATTERN: RegExp;
4
- export declare class RecordSchemaArtifactClass {
5
- digest: string;
6
- document: ContractJsonObject;
7
- contractFormat: RecordContractFormat;
8
- completeness: RecordContractCompleteness;
9
- byteLength: number;
10
- createdAt: string;
11
- updatedAt: string;
12
- lastAccessedAt?: string;
13
- }
14
- export declare const RecordSchemaArtifactWLDef: import("@researchdatabox/redbox-core").WaterlineModelDefinition;
@@ -1,75 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.RecordSchemaArtifactWLDef = exports.RecordSchemaArtifactClass = exports.RECORD_SCHEMA_DIGEST_PATTERN = void 0;
13
- require("reflect-metadata");
14
- const redbox_core_1 = require("@researchdatabox/redbox-core");
15
- exports.RECORD_SCHEMA_DIGEST_PATTERN = /^[a-f0-9]{64}$/;
16
- let RecordSchemaArtifactClass = class RecordSchemaArtifactClass {
17
- digest;
18
- document;
19
- contractFormat;
20
- completeness;
21
- byteLength;
22
- createdAt;
23
- updatedAt;
24
- lastAccessedAt;
25
- };
26
- exports.RecordSchemaArtifactClass = RecordSchemaArtifactClass;
27
- __decorate([
28
- (0, redbox_core_1.Attr)({
29
- type: 'string',
30
- required: true,
31
- unique: true,
32
- validations: { regex: exports.RECORD_SCHEMA_DIGEST_PATTERN },
33
- }),
34
- __metadata("design:type", String)
35
- ], RecordSchemaArtifactClass.prototype, "digest", void 0);
36
- __decorate([
37
- (0, redbox_core_1.Attr)({ type: 'json', required: true }),
38
- __metadata("design:type", Object)
39
- ], RecordSchemaArtifactClass.prototype, "document", void 0);
40
- __decorate([
41
- (0, redbox_core_1.Attr)({
42
- type: 'string',
43
- required: true,
44
- isIn: [redbox_core_1.RECORD_CONTRACT_FORMAT_V1],
45
- }),
46
- __metadata("design:type", String)
47
- ], RecordSchemaArtifactClass.prototype, "contractFormat", void 0);
48
- __decorate([
49
- (0, redbox_core_1.Attr)({ type: 'string', required: true, isIn: ['complete', 'partial'] }),
50
- __metadata("design:type", String)
51
- ], RecordSchemaArtifactClass.prototype, "completeness", void 0);
52
- __decorate([
53
- (0, redbox_core_1.Attr)({ type: 'number', required: true, min: 1 }),
54
- __metadata("design:type", Number)
55
- ], RecordSchemaArtifactClass.prototype, "byteLength", void 0);
56
- __decorate([
57
- (0, redbox_core_1.Attr)({ type: 'string', columnType: 'datetime', autoCreatedAt: true }),
58
- __metadata("design:type", String)
59
- ], RecordSchemaArtifactClass.prototype, "createdAt", void 0);
60
- __decorate([
61
- (0, redbox_core_1.Attr)({ type: 'string', columnType: 'datetime', autoUpdatedAt: true }),
62
- __metadata("design:type", String)
63
- ], RecordSchemaArtifactClass.prototype, "updatedAt", void 0);
64
- __decorate([
65
- (0, redbox_core_1.Attr)({ type: 'string', columnType: 'datetime' }),
66
- __metadata("design:type", String)
67
- ], RecordSchemaArtifactClass.prototype, "lastAccessedAt", void 0);
68
- exports.RecordSchemaArtifactClass = RecordSchemaArtifactClass = __decorate([
69
- (0, redbox_core_1.Entity)('recordschemaartifact', {
70
- datastore: 'redboxStorage',
71
- indexes: [{ attributes: { digest: 1 }, unique: true }],
72
- })
73
- ], RecordSchemaArtifactClass);
74
- exports.RecordSchemaArtifactWLDef = (0, redbox_core_1.toWaterlineModelDef)(RecordSchemaArtifactClass);
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb3JkU2NoZW1hQXJ0aWZhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWxzL1JlY29yZFNjaGVtYUFydGlmYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDRCQUEwQjtBQUUxQiw4REFBNEc7QUFPL0YsUUFBQSw0QkFBNEIsR0FBRyxnQkFBZ0IsQ0FBQztBQU10RCxJQUFNLHlCQUF5QixHQUEvQixNQUFNLHlCQUF5QjtJQU83QixNQUFNLENBQVU7SUFHaEIsUUFBUSxDQUFzQjtJQU85QixjQUFjLENBQXdCO0lBR3RDLFlBQVksQ0FBOEI7SUFHMUMsVUFBVSxDQUFVO0lBR3BCLFNBQVMsQ0FBVTtJQUduQixTQUFTLENBQVU7SUFHbkIsY0FBYyxDQUFVO0NBQ2hDLENBQUE7QUFqQ1ksOERBQXlCO0FBTzdCO0lBTk4sSUFBQSxrQkFBSSxFQUFDO1FBQ0osSUFBSSxFQUFFLFFBQVE7UUFDZCxRQUFRLEVBQUUsSUFBSTtRQUNkLE1BQU0sRUFBRSxJQUFJO1FBQ1osV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFFLG9DQUE0QixFQUFFO0tBQ3JELENBQUM7O3lEQUNxQjtBQUdoQjtJQUROLElBQUEsa0JBQUksRUFBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDOzsyREFDRjtBQU85QjtJQUxOLElBQUEsa0JBQUksRUFBQztRQUNKLElBQUksRUFBRSxRQUFRO1FBQ2QsUUFBUSxFQUFFLElBQUk7UUFDZCxJQUFJLEVBQUUsQ0FBQyx1Q0FBeUIsQ0FBQztLQUNsQyxDQUFDOztpRUFDMkM7QUFHdEM7SUFETixJQUFBLGtCQUFJLEVBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUM7OytEQUN2QjtBQUcxQztJQUROLElBQUEsa0JBQUksRUFBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7OzZEQUN0QjtBQUdwQjtJQUROLElBQUEsa0JBQUksRUFBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUM7OzREQUM1QztBQUduQjtJQUROLElBQUEsa0JBQUksRUFBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUM7OzREQUM1QztBQUduQjtJQUROLElBQUEsa0JBQUksRUFBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDOztpRUFDbEI7b0NBaENwQix5QkFBeUI7SUFKckMsSUFBQSxvQkFBTSxFQUFDLHNCQUFzQixFQUFFO1FBQzlCLFNBQVMsRUFBRSxlQUFlO1FBQzFCLE9BQU8sRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztLQUN2RCxDQUFDO0dBQ1cseUJBQXlCLENBaUNyQztBQUVZLFFBQUEseUJBQXlCLEdBQUcsSUFBQSxpQ0FBbUIsRUFBQyx5QkFBeUIsQ0FBQyxDQUFDIn0=
@@ -1,25 +0,0 @@
1
- import 'reflect-metadata';
2
- import type { RecordContractSchemaKind } from '@researchdatabox/redbox-core';
3
- export declare const RECORD_SCHEMA_REFERENCE_KEY_PATTERN: RegExp;
4
- export declare class RecordSchemaReferenceClass {
5
- referenceKey: string;
6
- digest: string;
7
- kind: 'grant' | 'save' | 'pin';
8
- brand: string;
9
- portal: string;
10
- schemaKind: RecordContractSchemaKind;
11
- recordType: string;
12
- oid?: string;
13
- operation: string;
14
- owner?: string;
15
- purpose?: string;
16
- expiresAt?: string;
17
- createdAt: string;
18
- updatedAt: string;
19
- }
20
- /**
21
- * Runtime persistence enforces the discriminated rules that Waterline cannot:
22
- * create grants have no OID, update grants and saves require one, and only pins
23
- * may carry owner, purpose, or expiry fields.
24
- */
25
- export declare const RecordSchemaReferenceWLDef: import("@researchdatabox/redbox-core").WaterlineModelDefinition;
@@ -1,128 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.RecordSchemaReferenceWLDef = exports.RecordSchemaReferenceClass = exports.RECORD_SCHEMA_REFERENCE_KEY_PATTERN = void 0;
13
- require("reflect-metadata");
14
- const redbox_core_1 = require("@researchdatabox/redbox-core");
15
- const RecordSchemaArtifact_1 = require("./RecordSchemaArtifact");
16
- exports.RECORD_SCHEMA_REFERENCE_KEY_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,511}$/;
17
- let RecordSchemaReferenceClass = class RecordSchemaReferenceClass {
18
- referenceKey;
19
- digest;
20
- kind;
21
- brand;
22
- portal;
23
- schemaKind;
24
- recordType;
25
- oid;
26
- operation;
27
- owner;
28
- purpose;
29
- expiresAt;
30
- createdAt;
31
- updatedAt;
32
- };
33
- exports.RecordSchemaReferenceClass = RecordSchemaReferenceClass;
34
- __decorate([
35
- (0, redbox_core_1.Attr)({
36
- type: 'string',
37
- required: true,
38
- unique: true,
39
- validations: { regex: exports.RECORD_SCHEMA_REFERENCE_KEY_PATTERN },
40
- }),
41
- __metadata("design:type", String)
42
- ], RecordSchemaReferenceClass.prototype, "referenceKey", void 0);
43
- __decorate([
44
- (0, redbox_core_1.Attr)({
45
- type: 'string',
46
- required: true,
47
- validations: { regex: RecordSchemaArtifact_1.RECORD_SCHEMA_DIGEST_PATTERN },
48
- }),
49
- __metadata("design:type", String)
50
- ], RecordSchemaReferenceClass.prototype, "digest", void 0);
51
- __decorate([
52
- (0, redbox_core_1.Attr)({ type: 'string', required: true, isIn: ['grant', 'save', 'pin'] }),
53
- __metadata("design:type", String)
54
- ], RecordSchemaReferenceClass.prototype, "kind", void 0);
55
- __decorate([
56
- (0, redbox_core_1.Attr)({ type: 'string', required: true, validations: { maxLength: 512 } }),
57
- __metadata("design:type", String)
58
- ], RecordSchemaReferenceClass.prototype, "brand", void 0);
59
- __decorate([
60
- (0, redbox_core_1.Attr)({ type: 'string', required: true, validations: { maxLength: 512 } }),
61
- __metadata("design:type", String)
62
- ], RecordSchemaReferenceClass.prototype, "portal", void 0);
63
- __decorate([
64
- (0, redbox_core_1.Attr)({ type: 'string', required: true, isIn: ['create', 'update'] }),
65
- __metadata("design:type", String)
66
- ], RecordSchemaReferenceClass.prototype, "schemaKind", void 0);
67
- __decorate([
68
- (0, redbox_core_1.Attr)({ type: 'string', required: true, validations: { maxLength: 512 } }),
69
- __metadata("design:type", String)
70
- ], RecordSchemaReferenceClass.prototype, "recordType", void 0);
71
- __decorate([
72
- (0, redbox_core_1.Attr)({ type: 'string', validations: { maxLength: 512 } }),
73
- __metadata("design:type", String)
74
- ], RecordSchemaReferenceClass.prototype, "oid", void 0);
75
- __decorate([
76
- (0, redbox_core_1.Attr)({ type: 'string', required: true, validations: { maxLength: 512 } }),
77
- __metadata("design:type", String)
78
- ], RecordSchemaReferenceClass.prototype, "operation", void 0);
79
- __decorate([
80
- (0, redbox_core_1.Attr)({ type: 'string', validations: { maxLength: 512 } }),
81
- __metadata("design:type", String)
82
- ], RecordSchemaReferenceClass.prototype, "owner", void 0);
83
- __decorate([
84
- (0, redbox_core_1.Attr)({ type: 'string', validations: { maxLength: 2_048 } }),
85
- __metadata("design:type", String)
86
- ], RecordSchemaReferenceClass.prototype, "purpose", void 0);
87
- __decorate([
88
- (0, redbox_core_1.Attr)({ type: 'string', columnType: 'datetime' }),
89
- __metadata("design:type", String)
90
- ], RecordSchemaReferenceClass.prototype, "expiresAt", void 0);
91
- __decorate([
92
- (0, redbox_core_1.Attr)({ type: 'string', columnType: 'datetime', autoCreatedAt: true }),
93
- __metadata("design:type", String)
94
- ], RecordSchemaReferenceClass.prototype, "createdAt", void 0);
95
- __decorate([
96
- (0, redbox_core_1.Attr)({ type: 'string', columnType: 'datetime', autoUpdatedAt: true }),
97
- __metadata("design:type", String)
98
- ], RecordSchemaReferenceClass.prototype, "updatedAt", void 0);
99
- exports.RecordSchemaReferenceClass = RecordSchemaReferenceClass = __decorate([
100
- (0, redbox_core_1.Entity)('recordschemareference', {
101
- datastore: 'redboxStorage',
102
- indexes: [
103
- { attributes: { referenceKey: 1 }, unique: true },
104
- { attributes: { digest: 1, kind: 1 } },
105
- {
106
- attributes: {
107
- digest: 1,
108
- kind: 1,
109
- brand: 1,
110
- portal: 1,
111
- schemaKind: 1,
112
- recordType: 1,
113
- operation: 1,
114
- oid: 1,
115
- },
116
- },
117
- { attributes: { oid: 1, kind: 1 } },
118
- { attributes: { kind: 1, expiresAt: 1 } },
119
- ],
120
- })
121
- ], RecordSchemaReferenceClass);
122
- /**
123
- * Runtime persistence enforces the discriminated rules that Waterline cannot:
124
- * create grants have no OID, update grants and saves require one, and only pins
125
- * may carry owner, purpose, or expiry fields.
126
- */
127
- exports.RecordSchemaReferenceWLDef = (0, redbox_core_1.toWaterlineModelDef)(RecordSchemaReferenceClass);
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb3JkU2NoZW1hUmVmZXJlbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVscy9SZWNvcmRTY2hlbWFSZWZlcmVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsNEJBQTBCO0FBRTFCLDhEQUFpRjtBQUVqRixpRUFBc0U7QUFFekQsUUFBQSxtQ0FBbUMsR0FBRyxxQ0FBcUMsQ0FBQztBQXVCbEYsSUFBTSwwQkFBMEIsR0FBaEMsTUFBTSwwQkFBMEI7SUFPOUIsWUFBWSxDQUFVO0lBT3RCLE1BQU0sQ0FBVTtJQUdoQixJQUFJLENBQTRCO0lBR2hDLEtBQUssQ0FBVTtJQUdmLE1BQU0sQ0FBVTtJQUdoQixVQUFVLENBQTRCO0lBR3RDLFVBQVUsQ0FBVTtJQUdwQixHQUFHLENBQVU7SUFHYixTQUFTLENBQVU7SUFHbkIsS0FBSyxDQUFVO0lBR2YsT0FBTyxDQUFVO0lBR2pCLFNBQVMsQ0FBVTtJQUduQixTQUFTLENBQVU7SUFHbkIsU0FBUyxDQUFVO0NBQzNCLENBQUE7QUFuRFksZ0VBQTBCO0FBTzlCO0lBTk4sSUFBQSxrQkFBSSxFQUFDO1FBQ0osSUFBSSxFQUFFLFFBQVE7UUFDZCxRQUFRLEVBQUUsSUFBSTtRQUNkLE1BQU0sRUFBRSxJQUFJO1FBQ1osV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFFLDJDQUFtQyxFQUFFO0tBQzVELENBQUM7O2dFQUMyQjtBQU90QjtJQUxOLElBQUEsa0JBQUksRUFBQztRQUNKLElBQUksRUFBRSxRQUFRO1FBQ2QsUUFBUSxFQUFFLElBQUk7UUFDZCxXQUFXLEVBQUUsRUFBRSxLQUFLLEVBQUUsbURBQTRCLEVBQUU7S0FDckQsQ0FBQzs7MERBQ3FCO0FBR2hCO0lBRE4sSUFBQSxrQkFBSSxFQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxD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
@@ -1,27 +0,0 @@
1
- import type { RecordSchemaArtifactInput, RecordSchemaArtifactModel, RecordSchemaReferenceInput, RecordSchemaReferenceModel } from '@researchdatabox/redbox-core';
2
- import type { Document } from 'mongodb';
3
- export declare const RECORD_SCHEMA_REFERENCE_QUERY_LIMIT_MAX = 1000;
4
- export declare const RECORD_SCHEMA_STORAGE_CODES: {
5
- readonly INVALID_ARTIFACT: "record-schema.invalid-contract";
6
- readonly DIGEST_COLLISION: "record-schema.digest-collision";
7
- readonly INVALID_REFERENCE: "record-schema.reference-invalid";
8
- readonly REFERENCE_KEY_COLLISION: "record-schema.reference-key-collision";
9
- readonly ARTIFACT_NOT_FOUND: "record-schema.artifact-not-found";
10
- readonly STORAGE_FAILED: "record-schema.storage-unavailable";
11
- };
12
- export type RecordSchemaStorageCode = (typeof RECORD_SCHEMA_STORAGE_CODES)[keyof typeof RECORD_SCHEMA_STORAGE_CODES];
13
- export declare class RecordSchemaPersistenceError extends Error {
14
- readonly code: RecordSchemaStorageCode;
15
- constructor(code: RecordSchemaStorageCode, message: string);
16
- }
17
- export interface ValidatedRecordSchemaArtifact extends RecordSchemaArtifactInput {
18
- readonly serializedDocument: string;
19
- }
20
- export declare function validateRecordSchemaDigest(digest: unknown): string;
21
- export declare function validateRecordSchemaArtifactInput(input: RecordSchemaArtifactInput): ValidatedRecordSchemaArtifact;
22
- export declare function validateRecordSchemaReferenceInput(input: unknown): RecordSchemaReferenceInput;
23
- export declare function artifactContentIdentity(artifact: RecordSchemaArtifactInput): string;
24
- export declare function referenceContentIdentity(reference: RecordSchemaReferenceInput): string;
25
- export declare function artifactModelFromDocument(document: Document): RecordSchemaArtifactModel;
26
- export declare function referenceModelFromDocument(document: Document): RecordSchemaReferenceModel;
27
- export declare function isDuplicateKeyError(error: unknown): boolean;