@murumets-ee/content 0.27.0 → 0.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.mts +2 -2
- package/dist/client.mjs +1 -1
- package/dist/client.mjs.map +1 -1
- package/dist/entities/index.d.mts +1 -1
- package/dist/entities/index.d.mts.map +1 -1
- package/dist/entities/index.mjs +1 -1
- package/dist/entities/index.mjs.map +1 -1
- package/dist/{errors-DLvszZ9R.mjs → errors-bZAGPYhp.mjs} +1 -1
- package/dist/{errors-DLvszZ9R.mjs.map → errors-bZAGPYhp.mjs.map} +1 -1
- package/dist/{index-C9EWajwm.d.mts → index-C4hbhXsu.d.mts} +3 -44
- package/dist/index-C4hbhXsu.d.mts.map +1 -0
- package/dist/index.d.mts +3 -2
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/locale-utils-w0WO6J_P.mjs +2 -0
- package/dist/{locale-utils-q7qYD-ff.mjs.map → locale-utils-w0WO6J_P.mjs.map} +1 -1
- package/dist/lock-service.d.mts +1 -1
- package/dist/lock-service.d.mts.map +1 -1
- package/dist/lock-service.mjs +1 -1
- package/dist/lock-service.mjs.map +1 -1
- package/dist/{locks-BRtmYqgS.mjs → locks-5779ugSW.mjs} +1 -1
- package/dist/{locks-BRtmYqgS.mjs.map → locks-5779ugSW.mjs.map} +1 -1
- package/dist/{plugin-ppoIGq-c.mjs → plugin-CG2tNeoG.mjs} +2 -2
- package/dist/{plugin-ppoIGq-c.mjs.map → plugin-CG2tNeoG.mjs.map} +1 -1
- package/dist/plugin.d.mts +1 -1
- package/dist/plugin.d.mts.map +1 -1
- package/dist/plugin.mjs +1 -1
- package/dist/query-client.d.mts.map +1 -1
- package/dist/query-client.mjs +1 -1
- package/dist/query-client.mjs.map +1 -1
- package/dist/types-CRnsF2Eb.d.mts +43 -0
- package/dist/types-CRnsF2Eb.d.mts.map +1 -0
- package/dist/{types-BhMSxasE.d.mts → types-yRLOOCOn.d.mts} +17 -1
- package/dist/types-yRLOOCOn.d.mts.map +1 -0
- package/dist/{versionable-B0bP2Gib.mjs → versionable-Br_G5VGR.mjs} +1 -1
- package/dist/{versionable-B0bP2Gib.mjs.map → versionable-Br_G5VGR.mjs.map} +1 -1
- package/dist/{workflowable-aGtQhPRc.mjs → workflowable-BufrZXu9.mjs} +1 -1
- package/dist/{workflowable-aGtQhPRc.mjs.map → workflowable-BufrZXu9.mjs.map} +1 -1
- package/package.json +8 -8
- package/dist/index-C9EWajwm.d.mts.map +0 -1
- package/dist/locale-utils-q7qYD-ff.mjs +0 -2
- package/dist/types-BhMSxasE.d.mts.map +0 -1
|
@@ -9,6 +9,22 @@ interface LocaleConfig {
|
|
|
9
9
|
interface ContentConfig {
|
|
10
10
|
locales: LocaleConfig[];
|
|
11
11
|
defaultLocale: string;
|
|
12
|
+
/**
|
|
13
|
+
* Auto-enable WordPress-style recoverable soft-delete (Trash) for the
|
|
14
|
+
* content-managed (publishable) entities in the app (plan/trash SD002). The
|
|
15
|
+
* framework injects `trashable()` into them at boot, so content delete is
|
|
16
|
+
* recoverable WITHOUT any per-entity opt-in — impossible to forget.
|
|
17
|
+
*
|
|
18
|
+
* - `true` (default) — every publishable entity becomes trashable.
|
|
19
|
+
* - `false` — disable entirely; entities opt in with an explicit `trashable()`.
|
|
20
|
+
* - `{ exclude: [...] }` — auto-enable except for the named entities.
|
|
21
|
+
*
|
|
22
|
+
* An explicit `trashable({ retentionDays })` on an entity always wins (the
|
|
23
|
+
* auto-enable is a no-op when the entity is already trashable).
|
|
24
|
+
*/
|
|
25
|
+
autoTrash?: boolean | {
|
|
26
|
+
exclude?: string[];
|
|
27
|
+
};
|
|
12
28
|
}
|
|
13
29
|
interface VersionableOptions {
|
|
14
30
|
/** Maximum versions kept per document. Default: 50 */
|
|
@@ -67,4 +83,4 @@ interface LockInfo {
|
|
|
67
83
|
}
|
|
68
84
|
//#endregion
|
|
69
85
|
export { LockInfo as a, TranslationStatus as c, LocalePublishStatus as i, VersionEntry as l, DraftEntry as n, TranslationFieldStatus as o, LocaleConfig as r, TranslationReport as s, ContentConfig as t, VersionableOptions as u };
|
|
70
|
-
//# sourceMappingURL=types-
|
|
86
|
+
//# sourceMappingURL=types-yRLOOCOn.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-yRLOOCOn.d.mts","names":[],"sources":["../src/types.ts"],"mappings":";;AAQA;;UAAiB,YAAA;EACf,IAAA;EACA,KAAK;AAAA;AAAA,UAGU,aAAA;EACf,OAAA,EAAS,YAAY;EACrB,aAAA;EADA;;;;;;AAe+B;AAOjC;;;;AAIU;AAOV;EAlBE,SAAA;IAAwB,OAAA;EAAA;AAAA;AAAA,UAOT,kBAAA;EAiBA;EAff,SAAA;EAmBW;EAjBX,QAAQ;AAAA;AAAA,UAOO,YAAA,eAA2B,MAAA,oBAA0B,MAAA;EACpE,EAAA;EACA,QAAA;EACA,OAAA;EACA,MAAA;EACA,IAAA,EAAM,KAAA;EACN,KAAA,EAAO,OAAA,CAAQ,KAAA;EACf,MAAA;EACA,SAAA;EACA,aAAA;EACA,SAAA,EAAW,IAAA;EACX,UAAA;AAAA;AAAA,UAae,sBAAA;EACf,QAAA;EACA,KAAA;EACA,UAAA;EACA,OAAA;AAAA;AAAA,UAGe,iBAAA;EAAA,CACd,MAAA,WAAiB,sBAAsB;AAAA;AAAA,UAGzB,iBAAA;EACf,KAAA;EACA,QAAA;EACA,OAAA;EACA,OAAA;AAAA;AAAA,UAOe,mBAAA;EACf,MAAA;EACA,MAAA;EACA,WAAA,EAAa,IAAI;AAAA;AAAA,UAOF,UAAA,eAAyB,MAAA,oBAA0B,MAAA;EAClE,EAAA;EACA,QAAA;EACA,MAAA;EACA,IAAA,EAAM,KAAA;EACN,SAAA;EACA,aAAA;EACA,SAAA,EAAW,IAAA;EACX,SAAA,EAAW,IAAA;AAAA;AAAA,UAOI,QAAA;EACf,QAAA;EACA,YAAA;EACA,QAAA,EAAU,IAAA;EACV,SAAA,EAAW,IAAI;AAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{field as e}from"@murumets-ee/entity";const t={maxPerDoc:50,autosave:!1};function n(n){let r={...t,...n};if(!Number.isInteger(r.maxPerDoc)||r.maxPerDoc<1)throw Error(`versionable({ maxPerDoc: ${r.maxPerDoc} }) — maxPerDoc must be a positive integer.`);return{name:`versionable`,fields:{_version:e.number({required:!0,default:1,integer:!0,internal:!0}),_versionedAt:e.date({internal:!0})},hooks:{beforeCreate:async e=>(e._version=1,e._versionedAt=new Date,e),beforeUpdate:async(e,t)=>(t._versionedAt=new Date,t)},_versionableOptions:r}}function r(e){return e?e.find(e=>e.name===`versionable`)?._versionableOptions??null:null}export{n,r as t};
|
|
2
|
-
//# sourceMappingURL=versionable-
|
|
2
|
+
//# sourceMappingURL=versionable-Br_G5VGR.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versionable-
|
|
1
|
+
{"version":3,"file":"versionable-Br_G5VGR.mjs","names":[],"sources":["../src/behaviors/versionable.ts"],"sourcesContent":["/**\n * Versionable behavior — full version history with snapshots.\n *\n * Extends the concept of revisionable() (which only tracks a counter)\n * with actual version snapshots stored in {entity}_versions table.\n *\n * The behavior itself adds fields + hooks for version tracking.\n * Actual snapshot persistence happens in ContentClient (which has DB access).\n *\n * Options:\n * - maxPerDoc: Maximum versions kept per document (default: 50)\n * - autosave: Enable smart autosave (default: false)\n */\n\nimport type { Behavior, DateField, NumberField } from '@murumets-ee/entity'\n\nimport { field } from '@murumets-ee/entity'\nimport type { VersionableOptions } from '../types.js'\n\nexport type VersionableFields = {\n _version: NumberField & { required: true }\n _versionedAt: DateField\n}\n\nconst DEFAULT_OPTIONS: Required<VersionableOptions> = {\n maxPerDoc: 50,\n autosave: false,\n}\n\nexport function versionable(options?: VersionableOptions): Behavior<VersionableFields> {\n const opts = { ...DEFAULT_OPTIONS, ...options }\n\n // Clamp maxPerDoc to a positive integer. A zero or negative value would\n // propagate to `pruneVersions` where `client.deleteMany({ id: { notIn: [] } })`\n // could match every row — i.e. delete the entire version history for\n // that entity+locale. Surface the misconfiguration here, not at first prune.\n if (!Number.isInteger(opts.maxPerDoc) || opts.maxPerDoc < 1) {\n throw new Error(\n `versionable({ maxPerDoc: ${opts.maxPerDoc} }) — maxPerDoc must be a positive integer.`,\n )\n }\n\n // Attach options to the behavior for ContentClient to read\n const behavior: Behavior<VersionableFields> & {\n _versionableOptions: Required<VersionableOptions>\n } = {\n name: 'versionable',\n fields: {\n // Both fields are managed by the versionable hooks + ContentClient's\n // snapshot persistence. The HTTP PATCH surface must not be able to\n // poison either — `_version` is also in `validation.ts`'s legacy omit\n // list (so this is belt-and-braces for `_version`), but `_versionedAt`\n // was previously writable via PATCH and only stripped from the read\n // DTO. `internal: true` closes that gap and makes the boundary\n // consistent with workflowable.\n _version: field.number({ required: true, default: 1, integer: true, internal: true }),\n _versionedAt: field.date({ internal: true }),\n },\n hooks: {\n beforeCreate: async (data) => {\n data._version = 1\n data._versionedAt = new Date()\n return data\n },\n beforeUpdate: async (_id, data) => {\n // Only update _versionedAt here. The _version increment is handled by\n // createVersionSnapshot which reads the current version from the DB.\n // The beforeUpdate hook only receives partial data (the PATCH payload),\n // so it can't reliably increment _version without the current value.\n data._versionedAt = new Date()\n return data\n },\n },\n _versionableOptions: opts,\n }\n\n return behavior as Behavior<VersionableFields>\n}\n\n/**\n * Extract versionable options from an entity's behaviors\n */\nexport function getVersionableOptions(behaviors?: Behavior[]): Required<VersionableOptions> | null {\n if (!behaviors) return null\n const vBehavior = behaviors.find((b) => b.name === 'versionable') as\n | (Behavior & { _versionableOptions?: Required<VersionableOptions> })\n | undefined\n return vBehavior?._versionableOptions ?? null\n}\n"],"mappings":"4CAwBA,MAAM,EAAgD,CACpD,UAAW,GACX,SAAU,EACZ,EAEA,SAAgB,EAAY,EAA2D,CACrF,IAAM,EAAO,CAAE,GAAG,EAAiB,GAAG,CAAQ,EAM9C,GAAI,CAAC,OAAO,UAAU,EAAK,SAAS,GAAK,EAAK,UAAY,EACxD,MAAU,MACR,4BAA4B,EAAK,UAAU,4CAC7C,EAqCF,MAAO,CA9BL,KAAM,cACN,OAAQ,CAQN,SAAU,EAAM,OAAO,CAAE,SAAU,GAAM,QAAS,EAAG,QAAS,GAAM,SAAU,EAAK,CAAC,EACpF,aAAc,EAAM,KAAK,CAAE,SAAU,EAAK,CAAC,CAC7C,EACA,MAAO,CACL,aAAc,KAAO,KACnB,EAAK,SAAW,EAChB,EAAK,aAAe,IAAI,KACjB,GAET,aAAc,MAAO,EAAK,KAKxB,EAAK,aAAe,IAAI,KACjB,EAEX,EACA,oBAAqB,CAGT,CAChB,CAKA,SAAgB,EAAsB,EAA6D,CAKjG,OAJK,EACa,EAAU,KAAM,GAAM,EAAE,OAAS,aAGpC,CAAC,EAAE,qBAAuB,KAJlB,IAKzB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{USER_ID_MAX_LENGTH as e,field as t}from"@murumets-ee/entity";const n=[`draft`,`in_review`,`approved`,`rejected`,`published`],r={draft:[`in_review`],in_review:[`approved`,`rejected`],approved:[`published`,`in_review`],rejected:[`in_review`,`draft`],published:[`draft`]};function i(e,t){return e===t?!0:r[e]?.includes(t)??!1}var a=class extends Error{from;to;constructor(e,t){super(`Invalid workflow transition: ${e} → ${t}. Allowed transitions from "${e}": [${(r[e]??[]).join(`, `)}].`),this.name=`WorkflowTransitionError`,this.from=e,this.to=t}};function o(){return{name:`workflowable`,fields:{_workflowStatus:t.select({options:n,default:`draft`,indexed:!0,required:!0,internal:!0}),_workflowAssignee:t.text({required:!1,internal:!0,maxLength:e}),_workflowNote:t.text({required:!1,internal:!0}),_workflowUpdatedAt:t.date({internal:!0})},hooks:{beforeCreate:async e=>(e._workflowStatus=`draft`,e._workflowUpdatedAt=new Date,e),beforeUpdate:async(e,t,r)=>{let o=t._workflowStatus;if(o===void 0)return t;if(!n.includes(o))throw new a(`draft`,o);let s=(await r?.loadCurrent?.())?._workflowStatus??`draft`,c=o;if(!i(s,c))throw new a(s,c);return t._workflowUpdatedAt=new Date,t}}}}export{o as a,i,r as n,a as r,n as t};
|
|
2
|
-
//# sourceMappingURL=workflowable-
|
|
2
|
+
//# sourceMappingURL=workflowable-BufrZXu9.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflowable-
|
|
1
|
+
{"version":3,"file":"workflowable-BufrZXu9.mjs","names":[],"sources":["../src/behaviors/workflowable.ts"],"sourcesContent":["/**\n * Workflowable behavior — editorial workflow with approval gates.\n *\n * Adds workflow status tracking fields to an entity and enforces the\n * documented transition state machine in `beforeUpdate`. Works alongside\n * `publishable()` — the workflow status tracks the editorial pipeline,\n * while publishable's `status` remains the public-facing state.\n *\n * Workflow state machine:\n *\n * draft ─submit─► in_review ─approve─► approved ─publish─► published\n * │ ▲ │\n * │ └────resubmit─────┐ │\n * └─reject─► rejected ─┘ │\n * │\n * unpublish ◄──────────────┘\n * (back to draft)\n *\n * Internal-write only: every workflow field is declared `internal: true`,\n * so the HTTP PATCH surface strips them from caller input. Workflow\n * transitions are performed by trusted server-side routes via\n * `AdminClient.updateInternal()` after authorizing the action with the\n * permission checker. The `beforeUpdate` hook validates that the\n * proposed transition is in the allowed table.\n *\n * Permission gating lives in the route handler (admin-ui workflow\n * routes), not in this behavior — by the time the hook fires, the\n * route has already authorized via `checkPermission`. The hook is\n * the structural defense: even a bug in the route layer cannot push\n * a workflow row into an illegal state.\n *\n * UI integration is tracked in GitHub issue #124. Until the workflow\n * UX ships, the behavior can still be added to entities — it'll simply\n * seed `_workflowStatus = 'draft'` on create and reject anyone trying\n * to write the field via PATCH.\n */\n\nimport type {\n Behavior,\n BehaviorContext,\n DateField,\n SelectField,\n TextField,\n} from '@murumets-ee/entity'\nimport { field, USER_ID_MAX_LENGTH } from '@murumets-ee/entity'\n\nexport const WORKFLOW_STATES = ['draft', 'in_review', 'approved', 'rejected', 'published'] as const\nexport type WorkflowState = (typeof WORKFLOW_STATES)[number]\n\n/**\n * Allowed transitions table. Each key is the *current* workflow status;\n * the value is the set of statuses it can move to.\n *\n * Encoded as a const-asserted record so a typo in the source produces\n * a compile error rather than a silent no-match at runtime.\n */\nexport const WORKFLOW_TRANSITIONS = {\n draft: ['in_review'],\n in_review: ['approved', 'rejected'],\n approved: ['published', 'in_review'],\n rejected: ['in_review', 'draft'],\n published: ['draft'],\n} as const satisfies Record<WorkflowState, readonly WorkflowState[]>\n\n/**\n * Is `to` an allowed transition from `from`? Pure, no I/O.\n */\nexport function isAllowedTransition(from: WorkflowState, to: WorkflowState): boolean {\n if (from === to) return true // no-op self-transition is fine\n const allowed = WORKFLOW_TRANSITIONS[from] as readonly WorkflowState[] | undefined\n return allowed?.includes(to) ?? false\n}\n\n/**\n * Thrown when `beforeUpdate` rejects a workflow transition. Distinct\n * subclass so admin-ui's API handler can map it to HTTP 400.\n */\nexport class WorkflowTransitionError extends Error {\n readonly from: WorkflowState\n readonly to: WorkflowState\n\n constructor(from: WorkflowState, to: WorkflowState) {\n super(\n `Invalid workflow transition: ${from} → ${to}. ` +\n `Allowed transitions from \"${from}\": [${(WORKFLOW_TRANSITIONS[from] ?? []).join(', ')}].`,\n )\n this.name = 'WorkflowTransitionError'\n this.from = from\n this.to = to\n }\n}\n\nexport type WorkflowableFields = {\n _workflowStatus: SelectField & { required: true }\n _workflowAssignee: TextField\n _workflowNote: TextField\n _workflowUpdatedAt: DateField\n}\n\nexport function workflowable(): Behavior<WorkflowableFields> {\n return {\n name: 'workflowable',\n fields: {\n _workflowStatus: field.select({\n options: WORKFLOW_STATES as unknown as string[],\n default: 'draft',\n indexed: true,\n required: true,\n internal: true,\n }) as SelectField & { required: true },\n // `_workflowAssignee` stores a better-auth user ID — varchar(255)\n // per CLAUDE.md §\"User IDs\", emitted via `maxLength: 255` (#430).\n // `_workflowNote` is free-text, so it stays unbounded `text`.\n _workflowAssignee: field.text({\n required: false,\n internal: true,\n maxLength: USER_ID_MAX_LENGTH,\n }),\n _workflowNote: field.text({ required: false, internal: true }),\n _workflowUpdatedAt: field.date({ internal: true }),\n },\n hooks: {\n beforeCreate: async (data) => {\n data._workflowStatus = 'draft'\n data._workflowUpdatedAt = new Date()\n return data\n },\n beforeUpdate: async (\n _id: string,\n data: Record<string, unknown>,\n ctx?: BehaviorContext,\n ): Promise<Record<string, unknown>> => {\n // Only validate when the patch tries to change the workflow status.\n // Updates that don't touch _workflowStatus pass through (the field's\n // `internal: true` already prevents it from sneaking in via PATCH;\n // only updateInternal callers reach this branch with a value).\n const proposed = data._workflowStatus\n if (proposed === undefined) return data\n\n if (!WORKFLOW_STATES.includes(proposed as WorkflowState)) {\n throw new WorkflowTransitionError('draft', proposed as WorkflowState)\n }\n\n // Need the current row to validate the from→to transition. The\n // lazy loader is provided by AdminClient — present on update,\n // absent on create.\n const current = await ctx?.loadCurrent?.()\n const fromState = (current?._workflowStatus as WorkflowState | undefined) ?? 'draft'\n const toState = proposed as WorkflowState\n\n if (!isAllowedTransition(fromState, toState)) {\n throw new WorkflowTransitionError(fromState, toState)\n }\n\n data._workflowUpdatedAt = new Date()\n return data\n },\n },\n }\n}\n"],"mappings":"oEA8CA,MAAa,EAAkB,CAAC,QAAS,YAAa,WAAY,WAAY,WAAW,EAU5E,EAAuB,CAClC,MAAO,CAAC,WAAW,EACnB,UAAW,CAAC,WAAY,UAAU,EAClC,SAAU,CAAC,YAAa,WAAW,EACnC,SAAU,CAAC,YAAa,OAAO,EAC/B,UAAW,CAAC,OAAO,CACrB,EAKA,SAAgB,EAAoB,EAAqB,EAA4B,CAGnF,OAFI,IAAS,EAAW,GACR,EAAqB,EACvB,EAAE,SAAS,CAAE,GAAK,EAClC,CAMA,IAAa,EAAb,cAA6C,KAAM,CACjD,KACA,GAEA,YAAY,EAAqB,EAAmB,CAClD,MACE,gCAAgC,EAAK,KAAK,EAAG,8BACd,EAAK,OAAO,EAAqB,IAAS,CAAC,EAAA,CAAG,KAAK,IAAI,EAAE,GAC1F,EACA,KAAK,KAAO,0BACZ,KAAK,KAAO,EACZ,KAAK,GAAK,CACZ,CACF,EASA,SAAgB,GAA6C,CAC3D,MAAO,CACL,KAAM,eACN,OAAQ,CACN,gBAAiB,EAAM,OAAO,CAC5B,QAAS,EACT,QAAS,QACT,QAAS,GACT,SAAU,GACV,SAAU,EACZ,CAAC,EAID,kBAAmB,EAAM,KAAK,CAC5B,SAAU,GACV,SAAU,GACV,UAAW,CACb,CAAC,EACD,cAAe,EAAM,KAAK,CAAE,SAAU,GAAO,SAAU,EAAK,CAAC,EAC7D,mBAAoB,EAAM,KAAK,CAAE,SAAU,EAAK,CAAC,CACnD,EACA,MAAO,CACL,aAAc,KAAO,KACnB,EAAK,gBAAkB,QACvB,EAAK,mBAAqB,IAAI,KACvB,GAET,aAAc,MACZ,EACA,EACA,IACqC,CAKrC,IAAM,EAAW,EAAK,gBACtB,GAAI,IAAa,IAAA,GAAW,OAAO,EAEnC,GAAI,CAAC,EAAgB,SAAS,CAAyB,EACrD,MAAM,IAAI,EAAwB,QAAS,CAAyB,EAOtE,IAAM,GAAa,MADG,GAAK,cAAc,EAAA,EACb,iBAAiD,QACvE,EAAU,EAEhB,GAAI,CAAC,EAAoB,EAAW,CAAO,EACzC,MAAM,IAAI,EAAwB,EAAW,CAAO,EAItD,MADA,GAAK,mBAAqB,IAAI,KACvB,CACT,CACF,CACF,CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@murumets-ee/content",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.29.0",
|
|
4
4
|
"license": "Elastic-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -36,15 +36,15 @@
|
|
|
36
36
|
"drizzle-orm": "^0.45.2",
|
|
37
37
|
"server-only": "^0.0.1",
|
|
38
38
|
"zod": "^3.24.1",
|
|
39
|
-
"@murumets-ee/blocks": "0.
|
|
40
|
-
"@murumets-ee/core": "0.
|
|
41
|
-
"@murumets-ee/db": "0.
|
|
42
|
-
"@murumets-ee/entity": "0.
|
|
43
|
-
"@murumets-ee/logging": "0.
|
|
39
|
+
"@murumets-ee/blocks": "0.29.0",
|
|
40
|
+
"@murumets-ee/core": "0.29.0",
|
|
41
|
+
"@murumets-ee/db": "0.29.0",
|
|
42
|
+
"@murumets-ee/entity": "0.29.0",
|
|
43
|
+
"@murumets-ee/logging": "0.29.0"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@types/node": "^20.19.
|
|
47
|
-
"tsdown": "^0.
|
|
46
|
+
"@types/node": "^20.19.42",
|
|
47
|
+
"tsdown": "^0.22.2",
|
|
48
48
|
"typescript": "^5.7.3",
|
|
49
49
|
"vitest": "^2.1.8"
|
|
50
50
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-C9EWajwm.d.mts","names":[],"sources":["../src/behaviors/versionable.ts","../src/behaviors/with-overrides.ts","../src/behaviors/workflowable.ts","../src/capabilities.ts","../src/diff/types.ts","../src/errors.ts"],"mappings":";;;;KAmBY,iBAAA;EACV,QAAA,EAAU,WAAA;IAAgB,QAAA;EAAA;EAC1B,YAAA,EAAc,SAAA;AAAA;AAAA,iBAQA,WAAA,CAAY,OAAA,GAAU,kBAAA,GAAqB,QAAA,CAAS,iBAAA;;;;iBAqDpD,qBAAA,CAAsB,SAAA,GAAY,QAAA,KAAa,QAAA,CAAS,kBAAA;;;;ACrCV;;;;KAQzD,iBAAA;EACC,IAAA;AAAA;EAEA,IAAA;EACA,KAAA,GAAQ,MAAA;EACR,MAAA,GAAS,MAAA,SAAe,MAAA;AAAA;EAExB,IAAA;EAAiB,KAAA,EAAO,MAAA;AAAA;AAAA,KAEzB,YAAA,GAAe,MAAA,SAAe,iBAAA;AAAA,KAEvB,mBAAA;EAcV,UAAA,EAAY,SAAA;AAAA;;;;AAlBsB;iBAsLpB,aAAA,CAAA,GAAiB,QAAA,CAAS,mBAAA;;;;AAlL1C;;iBA8NgB,gBAAA,CACd,SAAA,EAAW,aAAA;EAAgB,IAAA;AAAA,IAAiB,MAAA;;;cCjPjC,eAAA;AAAA,KACD,aAAA,WAAwB,eAAA;;;;;;;;cASvB,oBAAA;EAAA;;;;;;;;;iBAWG,mBAAA,CAAoB,IAAA,EAAM,aAAA,EAAe,EAAA,EAAI,aAAA;;;;;cAUhD,uBAAA,SAAgC,KAAA;EAAA,SAClC,IAAA,EAAM,aAAA;EAAA,SACN,EAAA,EAAI,aAAA;cAED,IAAA,EAAM,aAAA,EAAe,EAAA,EAAI,aAAA;AAAA;AAAA,KAW3B,kBAAA;EACV,eAAA,EAAiB,WAAA;IAAgB,QAAA;EAAA;EACjC,iBAAA,EAAmB,SAAA;EACnB,aAAA,EAAe,SAAA;EACf,kBAAA,EAAoB,SAAA;AAAA;AAAA,iBAGN,YAAA,CAAA,GAAgB,QAAA,CAAS,kBAAA;;;KC7E7B,gBAAA;;;;;;iBAOI,cAAA,CAAe,MAAA,EAAQ,MAAA,EAAQ,UAAA,EAAY,gBAAA;;;;;;;UCxB1C,WAAA;EACf,IAAA;EACA,KAAA;AAAA;;UAIe,SAAA;EACf,KAAA;EACA,IAAA;EAWA,IAAA;EACA,EAAA;EJJuB;EIMvB,QAAA,GAAW,WAAA;EJEc;EIAzB,UAAA,GAAa,cAAA;AAAA;;KAIH,eAAA;;UAGK,cAAA;EACf,OAAA;EACA,SAAA;EACA,MAAA,EAAQ,eAAA;EACR,SAAA;EACA,OAAA;EJZmF;EIcnF,SAAA,GAAY,QAAA;AAAA;;UAIG,QAAA;EACf,KAAA;EACA,IAAA;EACA,EAAA;EJgCqE;EI9BrE,QAAA,GAAW,WAAA;AAAA;;;;;;;AJjCb;;;;;;;;cKNa,qBAAA,SAA8B,KAAA;EAAA,SAChC,UAAA;EAAA,SACA,UAAA;cAGP,UAAA,UACA,UAAA,EAAY,qBAAA,gBACZ,OAAA;AAAA;;;;;;;;;;cAsBS,kBAAA,SAA2B,KAAA;EAAA,SAC7B,QAAA;EAAA,SACA,MAAA;cAEG,QAAA,UAAkB,MAAA;AAAA;;;;;;;;;;cAuBnB,kBAAA,SAA2B,KAAA;EAAA,SAC7B,MAAA;EAAA,SACA,OAAA;cAEG,MAAA,UAAgB,OAAA;AAAA"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./errors-DLvszZ9R.mjs";import{n as t}from"./plugin-ppoIGq-c.mjs";function n(n){if(n===`_`)return;let r=t();for(let e of r.locales)if(e.code===n)return;throw new e(n,r.locales.map(e=>e.code))}export{n as t};
|
|
2
|
-
//# sourceMappingURL=locale-utils-q7qYD-ff.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types-BhMSxasE.d.mts","names":[],"sources":["../src/types.ts"],"mappings":";;AAQA;;UAAiB,YAAA;EACf,IAAA;EACA,KAAA;AAAA;AAAA,UAGe,aAAA;EACf,OAAA,EAAS,YAAA;EACT,aAAA;AAAA;AAAA,UAOe,kBAAA;EAPf;EASA,SAAA;EATa;EAWb,QAAA;AAAA;AAAA,UAOe,YAAA,eAA2B,MAAA,oBAA0B,MAAA;EACpE,EAAA;EACA,QAAA;EACA,OAAA;EACA,MAAA;EACA,IAAA,EAAM,KAAA;EACN,KAAA,EAAO,OAAA,CAAQ,KAAA;EACf,MAAA;EACA,SAAA;EACA,aAAA;EACA,SAAA,EAAW,IAAA;EACX,UAAA;AAAA;AAAA,UAae,sBAAA;EACf,QAAA;EACA,KAAA;EACA,UAAA;EACA,OAAA;AAAA;AAAA,UAGe,iBAAA;EAAA,CACd,MAAA,WAAiB,sBAAA;AAAA;AAAA,UAGH,iBAAA;EACf,KAAA;EACA,QAAA;EACA,OAAA;EACA,OAAA;AAAA;AAAA,UAOe,mBAAA;EACf,MAAA;EACA,MAAA;EACA,WAAA,EAAa,IAAA;AAAA;AAAA,UAOE,UAAA,eAAyB,MAAA,oBAA0B,MAAA;EAClE,EAAA;EACA,QAAA;EACA,MAAA;EACA,IAAA,EAAM,KAAA;EACN,SAAA;EACA,aAAA;EACA,SAAA,EAAW,IAAA;EACX,SAAA,EAAW,IAAA;AAAA;AAAA,UAOI,QAAA;EACf,QAAA;EACA,YAAA;EACA,QAAA,EAAU,IAAA;EACV,SAAA,EAAW,IAAA;AAAA"}
|