@classytic/arc 2.11.4 → 2.14.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/README.md +16 -12
- package/dist/{BaseController-swXruJ2_.mjs → BaseController-DX_T-bDB.mjs} +388 -423
- package/dist/EventTransport-CT_52aWU.d.mts +34 -0
- package/dist/EventTransport-DLWoUMHy.mjs +103 -0
- package/dist/{ResourceRegistry-DkAeAuTX.mjs → ResourceRegistry-CTERg_2x.mjs} +139 -66
- package/dist/audit/index.d.mts +2 -2
- package/dist/audit/index.mjs +1 -1
- package/dist/auth/audit.d.mts +199 -0
- package/dist/auth/audit.mjs +288 -0
- package/dist/auth/index.d.mts +3 -3
- package/dist/auth/index.mjs +117 -191
- package/dist/{betterAuthOpenApi-DwxtK3uG.mjs → betterAuthOpenApi--M_i87dQ.mjs} +1 -1
- package/dist/buildHandler-olo-gt94.mjs +610 -0
- package/dist/cache/index.mjs +3 -3
- package/dist/cli/commands/describe.d.mts +89 -13
- package/dist/cli/commands/describe.mjs +56 -2
- package/dist/cli/commands/docs.mjs +2 -2
- package/dist/cli/commands/generate.mjs +147 -48
- package/dist/cli/commands/init.d.mts +13 -0
- package/dist/cli/commands/init.mjs +130 -87
- package/dist/cli/commands/introspect.mjs +8 -1
- package/dist/context/index.mjs +1 -1
- package/dist/core/index.d.mts +3 -3
- package/dist/core/index.mjs +5 -5
- package/dist/core-DECn6zaU.mjs +1399 -0
- package/dist/{createActionRouter-CIKOcNA7.mjs → createActionRouter-CBxLLbn3.mjs} +7 -20
- package/dist/createAggregationRouter-CRIBv4sC.mjs +114 -0
- package/dist/{createApp-C9bRrqlX.mjs → createApp-XX2-N0Yd.mjs} +28 -22
- package/dist/{defineEvent-D1Ky9M1D.mjs → defineEvent-D5h7EvAx.mjs} +1 -1
- package/dist/docs/index.d.mts +24 -11
- package/dist/docs/index.mjs +2 -2
- package/dist/{elevation-DOFoxoDs.mjs → elevation-DgoeTyfX.mjs} +1 -1
- package/dist/errorHandler-Bk-AGhkU.mjs +174 -0
- package/dist/errorHandler-DFr45ZG4.d.mts +45 -0
- package/dist/errors-j4aJm1Wg.mjs +184 -0
- package/dist/{eventPlugin-Cts2-Tfj.mjs → eventPlugin-CaKTYkYM.mjs} +28 -4
- package/dist/{eventPlugin-DDJoNEPL.d.mts → eventPlugin-qXpqTebY.d.mts} +24 -1
- package/dist/events/index.d.mts +6 -6
- package/dist/events/index.mjs +11 -35
- package/dist/events/transports/redis-stream-entry.d.mts +1 -1
- package/dist/events/transports/redis.d.mts +1 -1
- package/dist/factory/index.d.mts +2 -2
- package/dist/factory/index.mjs +2 -2
- package/dist/{fields-BRjxOAFp.d.mts → fields-COhcH3fk.d.mts} +23 -2
- package/dist/hooks/index.d.mts +1 -1
- package/dist/hooks/index.mjs +1 -1
- package/dist/idempotency/index.d.mts +1 -1
- package/dist/idempotency/index.mjs +1 -20
- package/dist/idempotency/redis.mjs +1 -1
- package/dist/{index-rHjXmJar.d.mts → index-BTqLEvhu.d.mts} +163 -3
- package/dist/{index-CXXRbnf8.d.mts → index-BtW7qYwa.d.mts} +660 -326
- package/dist/{index-m8mOOlFW.d.mts → index-Ds61mrJE.d.mts} +50 -4
- package/dist/{index-D9t1KNaB.d.mts → index-Dz5IKsrE.d.mts} +360 -219
- package/dist/index.d.mts +6 -7
- package/dist/index.mjs +9 -10
- package/dist/integrations/event-gateway.d.mts +1 -1
- package/dist/integrations/event-gateway.mjs +1 -1
- package/dist/integrations/index.d.mts +1 -1
- package/dist/integrations/mcp/index.d.mts +2 -2
- package/dist/integrations/mcp/index.mjs +1 -1
- package/dist/integrations/mcp/testing.d.mts +1 -1
- package/dist/integrations/mcp/testing.mjs +1 -1
- package/dist/integrations/streamline.d.mts +60 -11
- package/dist/integrations/streamline.mjs +75 -85
- package/dist/integrations/websocket.mjs +2 -8
- package/dist/middleware/index.d.mts +1 -1
- package/dist/middleware/index.mjs +2 -2
- package/dist/migrations/index.d.mts +23 -3
- package/dist/migrations/index.mjs +0 -7
- package/dist/{multipartBody-CvTR1Un6.mjs → multipartBody-BOvVSVCD.mjs} +11 -8
- package/dist/openapi-noXno2CV.mjs +968 -0
- package/dist/org/index.d.mts +2 -2
- package/dist/org/index.mjs +1 -1
- package/dist/permissions/index.d.mts +3 -3
- package/dist/permissions/index.mjs +3 -3
- package/dist/{permissions-gd_aUWrR.mjs → permissions-ohQyv50e.mjs} +404 -176
- package/dist/{pipe-DVoIheVC.mjs → pipe-Zr0KXjQe.mjs} +1 -1
- package/dist/pipeline/index.d.mts +1 -1
- package/dist/pipeline/index.mjs +1 -1
- package/dist/plugins/index.d.mts +16 -31
- package/dist/plugins/index.mjs +33 -13
- package/dist/plugins/response-cache.mjs +1 -1
- package/dist/plugins/tracing-entry.mjs +1 -1
- package/dist/presets/filesUpload.d.mts +4 -4
- package/dist/presets/filesUpload.mjs +6 -9
- package/dist/presets/index.d.mts +1 -1
- package/dist/presets/index.mjs +1 -1
- package/dist/presets/multiTenant.d.mts +1 -1
- package/dist/presets/multiTenant.mjs +2 -2
- package/dist/presets/search.d.mts +2 -2
- package/dist/presets/search.mjs +6 -8
- package/dist/{presets-Z7P5w4gF.mjs → presets-BbkjdPeH.mjs} +6 -28
- package/dist/{queryCachePlugin-Bq6bO6vc.mjs → queryCachePlugin-m1XsgAIJ.mjs} +3 -3
- package/dist/{redis-stream-xTGxB2bm.d.mts → redis-stream-D6HzR1Z_.d.mts} +1 -1
- package/dist/registry/index.d.mts +1 -1
- package/dist/registry/index.mjs +2 -2
- package/dist/{replyHelpers-ByllIXXV.mjs → replyHelpers-CK-FNO8E.mjs} +3 -21
- package/dist/{resourceToTools-CxNmI6xF.mjs → resourceToTools-DLL32us3.mjs} +224 -71
- package/dist/{routerShared-BqLRb5l7.mjs → routerShared-DrOa-26E.mjs} +41 -36
- package/dist/{schemaIR-Dy2p4MxS.mjs → schemaIR-lYhC2gE5.mjs} +1 -1
- package/dist/schemas/index.d.mts +100 -30
- package/dist/schemas/index.mjs +86 -29
- package/dist/scim/index.d.mts +264 -0
- package/dist/scim/index.mjs +963 -0
- package/dist/scope/index.d.mts +3 -3
- package/dist/scope/index.mjs +4 -4
- package/dist/{sse-V7aXc3bW.mjs → sse-Bz-5ZeTt.mjs} +1 -1
- package/dist/{store-helpers-Cp4uKC1U.mjs → store-helpers-BkIN9-vu.mjs} +1 -1
- package/dist/testing/index.d.mts +2 -8
- package/dist/testing/index.mjs +16 -24
- package/dist/types/index.d.mts +4 -4
- package/dist/{types-D7KpfiL1.d.mts → types-BvqwCCSx.d.mts} +73 -25
- package/dist/{types-DDyTPc6y.d.mts → types-CTYvcwHe.d.mts} +195 -1
- package/dist/{types-AOD8fxIw.mjs → types-C_s5moIu.mjs} +117 -1
- package/dist/{types-BQ9TJQNy.d.mts → types-DQHFc8PM.d.mts} +1 -1
- package/dist/utils/index.d.mts +2 -2
- package/dist/utils/index.mjs +5 -5
- package/dist/{utils-CcYTj09l.mjs → utils-_h9B3c57.mjs} +1269 -1334
- package/dist/{versioning-DsglKfM_.d.mts → versioning-DTTvc80y.d.mts} +1 -1
- package/package.json +24 -34
- package/skills/arc/SKILL.md +147 -51
- package/skills/arc/references/agent-auth.md +238 -0
- package/skills/arc/references/api-reference.md +187 -0
- package/skills/arc/references/auth.md +354 -7
- package/skills/arc/references/enterprise-auth.md +94 -0
- package/skills/arc/references/events.md +8 -6
- package/skills/arc/references/mcp.md +2 -2
- package/skills/arc/references/multi-tenancy.md +11 -2
- package/skills/arc/references/production.md +10 -9
- package/skills/arc/references/scim.md +247 -0
- package/skills/arc/references/testing.md +1 -1
- package/skills/arc-code-review/SKILL.md +141 -0
- package/skills/arc-code-review/references/anti-patterns.md +911 -0
- package/skills/arc-code-review/references/arc-cheatsheet.md +380 -0
- package/skills/arc-code-review/references/migration-recipes.md +700 -0
- package/skills/arc-code-review/references/mongokit-migration.md +386 -0
- package/skills/arc-code-review/references/scaffolding.md +230 -0
- package/skills/arc-code-review/references/severity.md +127 -0
- package/dist/EventTransport-BFQjw9pB.mjs +0 -133
- package/dist/EventTransport-CYNUXdCJ.d.mts +0 -293
- package/dist/adapters/index.d.mts +0 -3
- package/dist/adapters/index.mjs +0 -2
- package/dist/adapters-DUUiiimH.mjs +0 -964
- package/dist/auth/mongoose.d.mts +0 -191
- package/dist/auth/mongoose.mjs +0 -73
- package/dist/core-CbcQRIch.mjs +0 -1054
- package/dist/errorHandler-BQm8ZxTK.mjs +0 -173
- package/dist/errorHandler-DEWmGWPz.d.mts +0 -114
- package/dist/errors-D5c-5BJL.mjs +0 -232
- package/dist/index-Rg8axYPz.d.mts +0 -370
- package/dist/openapi-D7G1V7ex.mjs +0 -557
- /package/dist/{HookSystem-CGsMd6oK.mjs → HookSystem-Iiebom92.mjs} +0 -0
- /package/dist/{actionPermissions-sUUKDhtP.mjs → actionPermissions-CyUkQu6O.mjs} +0 -0
- /package/dist/{caching-CheW3m-S.mjs → caching-SM8gghN6.mjs} +0 -0
- /package/dist/{constants-BhY1OHoH.mjs → constants-Cxde4rpC.mjs} +0 -0
- /package/dist/{elevation-BQQXZ_VR.d.mts → elevation-BXOWoGCF.d.mts} +0 -0
- /package/dist/{keys-CARyUjiR.mjs → keys-CGcCbNyu.mjs} +0 -0
- /package/dist/{loadResources-CPpkyKfM.mjs → loadResources-DBMQg_Aj.mjs} +0 -0
- /package/dist/{memory-DikHSvWa.mjs → memory-UBydS5ku.mjs} +0 -0
- /package/dist/{metrics-Csh4nsvv.mjs → metrics-Qnvwc-LQ.mjs} +0 -0
- /package/dist/{pluralize-CWP6MB39.mjs → pluralize-DQgqgifU.mjs} +0 -0
- /package/dist/{registry-D63ee7fl.mjs → registry-I-ogLgL9.mjs} +0 -0
- /package/dist/{requestContext-C5XeK3VA.mjs → requestContext-SSaaTgW8.mjs} +0 -0
- /package/dist/{schemaConverter-B0oKLuqI.mjs → schemaConverter-De34B1ZG.mjs} +0 -0
- /package/dist/{typeGuards-CcFZXgU7.mjs → typeGuards-BzkXkvVv.mjs} +0 -0
- /package/dist/{types-DV9WDfeg.mjs → types-D57iXYb8.mjs} +0 -0
- /package/dist/{versioning-CGPjkqAg.mjs → versioning-BUrT5aP4.mjs} +0 -0
package/dist/plugins/index.d.mts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { En as HookSystem, Q as MiddlewareConfig, Wt as AnyRecord, ft as RouteSchemaOptions, lt as RouteDefinition, tt as PresetHook, z as ResourceRegistry } from "../index-BtW7qYwa.mjs";
|
|
2
2
|
import { t as ExternalOpenApiPaths } from "../externalPaths-BD5nw6St.mjs";
|
|
3
|
-
import { a as MetricsCollector, c as metricsPlugin, d as ssePlugin, f as CachingOptions, h as cachingPlugin, i as MetricEntry, l as SSEOptions, m as _default$1, n as _default$7, o as MetricsOptions, p as CachingRule, r as versioningPlugin, s as _default$4, t as VersioningOptions, u as _default$6 } from "../versioning-
|
|
4
|
-
import { i as errorHandlerPlugin, n as ErrorMapper, r as defaultIsDuplicateKeyError, t as ErrorHandlerOptions } from "../errorHandler-
|
|
3
|
+
import { a as MetricsCollector, c as metricsPlugin, d as ssePlugin, f as CachingOptions, h as cachingPlugin, i as MetricEntry, l as SSEOptions, m as _default$1, n as _default$7, o as MetricsOptions, p as CachingRule, r as versioningPlugin, s as _default$4, t as VersioningOptions, u as _default$6 } from "../versioning-DTTvc80y.mjs";
|
|
4
|
+
import { i as errorHandlerPlugin, n as ErrorMapper, r as defaultIsDuplicateKeyError, t as ErrorHandlerOptions } from "../errorHandler-DFr45ZG4.mjs";
|
|
5
5
|
import { t as TracingOptions } from "../tracing-QJVprktp.mjs";
|
|
6
|
+
import { PaginatedResult } from "@classytic/repo-core/pagination";
|
|
6
7
|
import { FastifyInstance, FastifyPluginAsync } from "fastify";
|
|
7
8
|
import * as _$node_stream0 from "node:stream";
|
|
8
9
|
|
|
@@ -172,38 +173,22 @@ declare const _default$3: FastifyPluginAsync<HealthOptions>;
|
|
|
172
173
|
//#region src/plugins/replyHelpers.d.ts
|
|
173
174
|
declare module "fastify" {
|
|
174
175
|
interface FastifyReply {
|
|
175
|
-
/**
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}): FastifyReply;
|
|
176
|
+
/**
|
|
177
|
+
* Send a list response, normalised to the canonical wire shape.
|
|
178
|
+
*
|
|
179
|
+
* Accepts either a bare array (endpoints that don't paginate) or any
|
|
180
|
+
* kit-shaped pagination result (`OffsetPaginationResult`,
|
|
181
|
+
* `KeysetPaginationResult`, `AggregatePaginationResult`). Routes
|
|
182
|
+
* through `toCanonicalList` from `@classytic/repo-core/pagination`
|
|
183
|
+
* so server and typed-client (`@classytic/arc-next`) share one
|
|
184
|
+
* declaration — the `method` discriminant cannot drift between them.
|
|
185
|
+
*/
|
|
186
|
+
sendList<T>(input: T[] | readonly T[] | PaginatedResult<T>): FastifyReply;
|
|
187
187
|
/**
|
|
188
188
|
* Stream a readable source as a file download or raw stream.
|
|
189
189
|
*
|
|
190
190
|
* @example
|
|
191
|
-
*
|
|
192
|
-
* // CSV export
|
|
193
|
-
* return reply.stream(csvReadableStream, {
|
|
194
|
-
* contentType: 'text/csv',
|
|
195
|
-
* filename: 'export.csv',
|
|
196
|
-
* });
|
|
197
|
-
*
|
|
198
|
-
* // PDF download
|
|
199
|
-
* return reply.stream(pdfBuffer, {
|
|
200
|
-
* contentType: 'application/pdf',
|
|
201
|
-
* filename: 'report.pdf',
|
|
202
|
-
* });
|
|
203
|
-
*
|
|
204
|
-
* // Raw stream (no Content-Disposition)
|
|
205
|
-
* return reply.stream(dataStream, { contentType: 'application/octet-stream' });
|
|
206
|
-
* ```
|
|
191
|
+
* return reply.stream(csvReadable, { contentType: 'text/csv', filename: 'export.csv' });
|
|
207
192
|
*/
|
|
208
193
|
stream(source: _$node_stream0.Readable | Buffer | AsyncIterable<unknown>, options: {
|
|
209
194
|
contentType: string;
|
package/dist/plugins/index.mjs
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { p as MUTATION_OPERATIONS } from "../constants-
|
|
2
|
-
import {
|
|
3
|
-
import { t as requestContext } from "../requestContext-
|
|
4
|
-
import { t as hasEvents } from "../typeGuards-
|
|
5
|
-
import { t as HookSystem } from "../HookSystem-
|
|
6
|
-
import { t as ResourceRegistry } from "../ResourceRegistry-
|
|
7
|
-
import { n as caching_default, t as cachingPlugin } from "../caching-
|
|
8
|
-
import { n as errorHandlerPlugin, t as defaultIsDuplicateKeyError } from "../errorHandler-
|
|
9
|
-
import { n as metrics_default, t as metricsPlugin } from "../metrics-
|
|
10
|
-
import { t as replyHelpersPlugin } from "../replyHelpers-
|
|
11
|
-
import { n as sse_default, t as ssePlugin } from "../sse-
|
|
12
|
-
import { n as versioning_default, t as versioningPlugin } from "../versioning-
|
|
1
|
+
import { p as MUTATION_OPERATIONS } from "../constants-Cxde4rpC.mjs";
|
|
2
|
+
import { c as getOrgId } from "../types-C_s5moIu.mjs";
|
|
3
|
+
import { t as requestContext } from "../requestContext-SSaaTgW8.mjs";
|
|
4
|
+
import { t as hasEvents } from "../typeGuards-BzkXkvVv.mjs";
|
|
5
|
+
import { t as HookSystem } from "../HookSystem-Iiebom92.mjs";
|
|
6
|
+
import { t as ResourceRegistry } from "../ResourceRegistry-CTERg_2x.mjs";
|
|
7
|
+
import { n as caching_default, t as cachingPlugin } from "../caching-SM8gghN6.mjs";
|
|
8
|
+
import { n as errorHandlerPlugin, t as defaultIsDuplicateKeyError } from "../errorHandler-Bk-AGhkU.mjs";
|
|
9
|
+
import { n as metrics_default, t as metricsPlugin } from "../metrics-Qnvwc-LQ.mjs";
|
|
10
|
+
import { t as replyHelpersPlugin } from "../replyHelpers-CK-FNO8E.mjs";
|
|
11
|
+
import { n as sse_default, t as ssePlugin } from "../sse-Bz-5ZeTt.mjs";
|
|
12
|
+
import { n as versioning_default, t as versioningPlugin } from "../versioning-BUrT5aP4.mjs";
|
|
13
13
|
import { randomUUID } from "node:crypto";
|
|
14
14
|
import fp from "fastify-plugin";
|
|
15
15
|
//#region src/core/arcCorePlugin.ts
|
|
@@ -198,6 +198,26 @@ function createHttpMetrics() {
|
|
|
198
198
|
const healthPlugin = async (fastify, opts = {}) => {
|
|
199
199
|
const { prefix = "/_health", checks = [], metrics = false, metricsCollector, version, collectHttpMetrics = metrics } = opts;
|
|
200
200
|
const httpMetrics = createHttpMetrics();
|
|
201
|
+
fastify.get(prefix, { schema: {
|
|
202
|
+
tags: ["Health"],
|
|
203
|
+
summary: "Liveness probe (alias for /live)",
|
|
204
|
+
description: "Returns 200 if the process is alive",
|
|
205
|
+
response: { 200: {
|
|
206
|
+
type: "object",
|
|
207
|
+
properties: {
|
|
208
|
+
status: {
|
|
209
|
+
type: "string",
|
|
210
|
+
enum: ["ok"]
|
|
211
|
+
},
|
|
212
|
+
timestamp: { type: "string" },
|
|
213
|
+
version: { type: "string" }
|
|
214
|
+
}
|
|
215
|
+
} }
|
|
216
|
+
} }, async () => ({
|
|
217
|
+
status: "ok",
|
|
218
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
219
|
+
...version ? { version } : {}
|
|
220
|
+
}));
|
|
201
221
|
fastify.get(`${prefix}/live`, { schema: {
|
|
202
222
|
tags: ["Health"],
|
|
203
223
|
summary: "Liveness probe",
|
|
@@ -331,7 +351,7 @@ const healthPlugin = async (fastify, opts = {}) => {
|
|
|
331
351
|
httpMetrics._ringIndex = httpMetrics._ringIndex + 1;
|
|
332
352
|
});
|
|
333
353
|
}
|
|
334
|
-
fastify.log?.debug?.(`Health plugin registered at ${prefix}`);
|
|
354
|
+
fastify.log?.debug?.(`Health plugin registered at ${prefix} (alias), ${prefix}/live, ${prefix}/ready${metrics ? `, ${prefix}/metrics` : ""}`);
|
|
335
355
|
};
|
|
336
356
|
/**
|
|
337
357
|
* Run all health checks with timeout
|
|
@@ -58,7 +58,7 @@ try {
|
|
|
58
58
|
function createTracerProvider(options) {
|
|
59
59
|
if (!isAvailable || !NodeTracerProvider || !BatchSpanProcessor || !OTLPTraceExporter) return null;
|
|
60
60
|
const { serviceName = "@classytic/arc", serviceVersion, exporterUrl = "http://localhost:4318/v1/traces" } = options;
|
|
61
|
-
const resolvedVersion = serviceVersion ?? "2.
|
|
61
|
+
const resolvedVersion = serviceVersion ?? "2.14.0";
|
|
62
62
|
const exporter = new OTLPTraceExporter({ url: exporterUrl });
|
|
63
63
|
const provider = new NodeTracerProvider({ resource: { attributes: {
|
|
64
64
|
"service.name": serviceName,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { nt as PresetResult } from "../index-
|
|
2
|
-
import {
|
|
3
|
-
import { c as PermissionCheck } from "../fields-
|
|
1
|
+
import { nt as PresetResult } from "../index-BtW7qYwa.mjs";
|
|
2
|
+
import { i as RequestScope } from "../types-CTYvcwHe.mjs";
|
|
3
|
+
import { c as PermissionCheck } from "../fields-COhcH3fk.mjs";
|
|
4
4
|
import { a as StorageReadResult, i as StorageReadRange, n as StorageContext, o as StorageUploadInput, r as StorageFile, t as Storage } from "../storage-Dfzt4VTl.mjs";
|
|
5
5
|
|
|
6
6
|
//#region src/presets/filesUpload.d.ts
|
|
@@ -27,7 +27,7 @@ interface FilesUploadPresetPermissions {
|
|
|
27
27
|
* - function: custom policy. Return a string to *transform* the filename,
|
|
28
28
|
* `false` to reject (triggers `ValidationError`), or `true`/`void` to accept.
|
|
29
29
|
*/
|
|
30
|
-
type FilenamePolicy = boolean | "*" | ((filename: string) => string | boolean |
|
|
30
|
+
type FilenamePolicy = boolean | "*" | ((filename: string) => string | boolean | undefined);
|
|
31
31
|
interface FilesUploadPresetOptions {
|
|
32
32
|
/** Any implementation of the `Storage` interface. App owns it. */
|
|
33
33
|
storage: Storage;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { t as multipartBody } from "../multipartBody-
|
|
1
|
+
import { i as NotFoundError, u as ValidationError } from "../errors-j4aJm1Wg.mjs";
|
|
2
|
+
import { c as getOrgId, h as getUserId } from "../types-C_s5moIu.mjs";
|
|
3
|
+
import { C as allowPublic, D as requireAuth } from "../permissions-ohQyv50e.mjs";
|
|
4
|
+
import { t as multipartBody } from "../multipartBody-BOvVSVCD.mjs";
|
|
5
5
|
//#region src/presets/filesUpload.ts
|
|
6
6
|
const DEFAULT_FIELD_NAME = "file";
|
|
7
7
|
const DEFAULT_MAX_FILE_SIZE = 10 * 1024 * 1024;
|
|
@@ -29,7 +29,7 @@ function buildStorageContext(request, contextFrom) {
|
|
|
29
29
|
* to the full-object response (per RFC 7233 §4.1 a server MAY ignore ranges).
|
|
30
30
|
*/
|
|
31
31
|
function parseRangeHeader(header, totalSize) {
|
|
32
|
-
if (!header
|
|
32
|
+
if (!header?.startsWith("bytes=")) return void 0;
|
|
33
33
|
const spec = header.slice(6).split(",")[0]?.trim();
|
|
34
34
|
if (!spec) return void 0;
|
|
35
35
|
const dashIndex = spec.indexOf("-");
|
|
@@ -102,10 +102,7 @@ function makeUploadHandler(deps) {
|
|
|
102
102
|
mimeType: file.mimetype,
|
|
103
103
|
size: file.size
|
|
104
104
|
}, ctx);
|
|
105
|
-
return reply.code(201).send(
|
|
106
|
-
success: true,
|
|
107
|
-
data: toResponseFile(result)
|
|
108
|
-
});
|
|
105
|
+
return reply.code(201).send(toResponseFile(result));
|
|
109
106
|
};
|
|
110
107
|
}
|
|
111
108
|
function toResponseFile(file) {
|
package/dist/presets/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Wt as AnyRecord, _t as IControllerResponse, at as ResourceConfig, d as PaginationResult, nt as PresetResult, vt as IRequestContext } from "../index-BtW7qYwa.mjs";
|
|
2
2
|
import { FilesUploadPresetOptions, FilesUploadPresetPermissions, FilesUploadPresetRoutes, filesUploadPreset } from "./filesUpload.mjs";
|
|
3
3
|
import { MultiTenantOptions, TenantFieldSpec, multiTenantPreset } from "./multiTenant.mjs";
|
|
4
4
|
import { SearchHandler, SearchPresetOptions, SearchRouteConfig, searchPreset } from "./search.mjs";
|
package/dist/presets/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { multiTenantPreset } from "./multiTenant.mjs";
|
|
2
|
-
import { a as registerPreset, c as auditedPreset, d as ownedByUserPreset, i as getPreset, l as softDeletePreset, n as flexibleMultiTenantPreset, o as treePreset, r as getAvailablePresets, s as bulkPreset, t as applyPresets, u as slugLookupPreset } from "../presets-
|
|
2
|
+
import { a as registerPreset, c as auditedPreset, d as ownedByUserPreset, i as getPreset, l as softDeletePreset, n as flexibleMultiTenantPreset, o as treePreset, r as getAvailablePresets, s as bulkPreset, t as applyPresets, u as slugLookupPreset } from "../presets-BbkjdPeH.mjs";
|
|
3
3
|
import { filesUploadPreset } from "./filesUpload.mjs";
|
|
4
4
|
import { searchPreset } from "./search.mjs";
|
|
5
5
|
export { applyPresets, auditedPreset, bulkPreset, filesUploadPreset, flexibleMultiTenantPreset, getAvailablePresets, getPreset, multiTenantPreset, ownedByUserPreset, registerPreset, searchPreset, slugLookupPreset, softDeletePreset, treePreset };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "../constants-
|
|
2
|
-
import { _ as
|
|
1
|
+
import "../constants-Cxde4rpC.mjs";
|
|
2
|
+
import { _ as hasOrgAccess, c as getOrgId, d as getScopeContext, m as getTeamId, u as getRequestScope, y as isElevated } from "../types-C_s5moIu.mjs";
|
|
3
3
|
//#region src/presets/multiTenant.ts
|
|
4
4
|
/**
|
|
5
5
|
* Resolve a single TenantFieldSpec against the current scope.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { lt as RouteDefinition, nt as PresetResult, pt as ControllerHandler, ut as RouteMcpConfig } from "../index-
|
|
2
|
-
import { c as PermissionCheck } from "../fields-
|
|
1
|
+
import { lt as RouteDefinition, nt as PresetResult, pt as ControllerHandler, ut as RouteMcpConfig } from "../index-BtW7qYwa.mjs";
|
|
2
|
+
import { c as PermissionCheck } from "../fields-COhcH3fk.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/presets/search.d.ts
|
|
5
5
|
/**
|
package/dist/presets/search.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as
|
|
1
|
+
import { C as allowPublic, D as requireAuth } from "../permissions-ohQyv50e.mjs";
|
|
2
2
|
//#region src/presets/search.ts
|
|
3
3
|
const BUILTINS = [
|
|
4
4
|
{
|
|
@@ -28,17 +28,15 @@ const BUILTINS = [
|
|
|
28
28
|
];
|
|
29
29
|
/**
|
|
30
30
|
* Wrap the user handler to normalise the return shape into arc's envelope.
|
|
31
|
-
* If the handler already returns `
|
|
32
|
-
* otherwise we wrap the raw return
|
|
31
|
+
* If the handler already returns an `IControllerResponse` envelope (carrying
|
|
32
|
+
* a `data` slot), arc passes it through; otherwise we wrap the raw return
|
|
33
|
+
* value so callers don't have to.
|
|
33
34
|
*/
|
|
34
35
|
function wrapEnvelope(handler) {
|
|
35
36
|
return async (req) => {
|
|
36
37
|
const out = await handler(req);
|
|
37
|
-
if (out !== null && typeof out === "object" && "
|
|
38
|
-
return {
|
|
39
|
-
success: true,
|
|
40
|
-
data: out
|
|
41
|
-
};
|
|
38
|
+
if (out !== null && typeof out === "object" && "data" in out) return out;
|
|
39
|
+
return { data: out };
|
|
42
40
|
};
|
|
43
41
|
}
|
|
44
42
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { C as
|
|
1
|
+
import { n as PUBLIC_SCOPE, y as isElevated } from "./types-C_s5moIu.mjs";
|
|
2
|
+
import { C as allowPublic, D as requireAuth, k as requireRoles } from "./permissions-ohQyv50e.mjs";
|
|
3
3
|
import { multiTenantPreset } from "./presets/multiTenant.mjs";
|
|
4
4
|
//#region src/presets/ownedByUser.ts
|
|
5
5
|
/**
|
|
@@ -169,17 +169,7 @@ function bulkPreset(opts) {
|
|
|
169
169
|
} },
|
|
170
170
|
required: ["items"]
|
|
171
171
|
},
|
|
172
|
-
response: { 201: {
|
|
173
|
-
type: "object",
|
|
174
|
-
properties: {
|
|
175
|
-
success: { type: "boolean" },
|
|
176
|
-
data: { type: "array" },
|
|
177
|
-
meta: {
|
|
178
|
-
type: "object",
|
|
179
|
-
properties: { count: { type: "number" } }
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
} }
|
|
172
|
+
response: { 201: { type: "array" } }
|
|
183
173
|
}
|
|
184
174
|
});
|
|
185
175
|
if (operations.includes("updateMany")) routes.push({
|
|
@@ -201,14 +191,8 @@ function bulkPreset(opts) {
|
|
|
201
191
|
response: { 200: {
|
|
202
192
|
type: "object",
|
|
203
193
|
properties: {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
type: "object",
|
|
207
|
-
properties: {
|
|
208
|
-
matchedCount: { type: "number" },
|
|
209
|
-
modifiedCount: { type: "number" }
|
|
210
|
-
}
|
|
211
|
-
}
|
|
194
|
+
matchedCount: { type: "number" },
|
|
195
|
+
modifiedCount: { type: "number" }
|
|
212
196
|
}
|
|
213
197
|
} }
|
|
214
198
|
}
|
|
@@ -228,13 +212,7 @@ function bulkPreset(opts) {
|
|
|
228
212
|
},
|
|
229
213
|
response: { 200: {
|
|
230
214
|
type: "object",
|
|
231
|
-
properties: {
|
|
232
|
-
success: { type: "boolean" },
|
|
233
|
-
data: {
|
|
234
|
-
type: "object",
|
|
235
|
-
properties: { deletedCount: { type: "number" } }
|
|
236
|
-
}
|
|
237
|
-
}
|
|
215
|
+
properties: { deletedCount: { type: "number" } }
|
|
238
216
|
} }
|
|
239
217
|
}
|
|
240
218
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as __exportAll } from "./chunk-BpYLSNr0.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import { t as
|
|
4
|
-
import {
|
|
2
|
+
import { t as MemoryCacheStore } from "./memory-UBydS5ku.mjs";
|
|
3
|
+
import { t as hasEvents } from "./typeGuards-BzkXkvVv.mjs";
|
|
4
|
+
import { i as versionKey, r as tagVersionKey } from "./keys-CGcCbNyu.mjs";
|
|
5
5
|
import fp from "fastify-plugin";
|
|
6
6
|
//#region src/cache/QueryCache.ts
|
|
7
7
|
var QueryCache = class {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as EventTransport, i as EventLogger, n as DomainEvent, r as EventHandler } from "./EventTransport-CT_52aWU.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/events/transports/redis-stream.d.ts
|
|
4
4
|
interface RedisStreamLike {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as RegisterOptions, k as IntrospectionPluginOptions, z as ResourceRegistry } from "../index-
|
|
1
|
+
import { R as RegisterOptions, k as IntrospectionPluginOptions, z as ResourceRegistry } from "../index-BtW7qYwa.mjs";
|
|
2
2
|
import { FastifyPluginAsync } from "fastify";
|
|
3
3
|
|
|
4
4
|
//#region src/registry/introspectionPlugin.d.ts
|
package/dist/registry/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as introspectionPlugin_default, t as introspectionPlugin } from "../registry-
|
|
2
|
-
import { t as ResourceRegistry } from "../ResourceRegistry-
|
|
1
|
+
import { n as introspectionPlugin_default, t as introspectionPlugin } from "../registry-I-ogLgL9.mjs";
|
|
2
|
+
import { t as ResourceRegistry } from "../ResourceRegistry-CTERg_2x.mjs";
|
|
3
3
|
export { ResourceRegistry, introspectionPlugin_default as introspectionPlugin, introspectionPlugin as introspectionPluginFn };
|
|
@@ -1,29 +1,11 @@
|
|
|
1
1
|
import { t as __exportAll } from "./chunk-BpYLSNr0.mjs";
|
|
2
|
+
import { toCanonicalList } from "@classytic/repo-core/pagination";
|
|
2
3
|
import fp from "fastify-plugin";
|
|
3
4
|
//#region src/plugins/replyHelpers.ts
|
|
4
5
|
var replyHelpers_exports = /* @__PURE__ */ __exportAll({ replyHelpersPlugin: () => replyHelpersPlugin });
|
|
5
6
|
async function replyHelpersPluginFn(fastify) {
|
|
6
|
-
fastify.decorateReply("
|
|
7
|
-
return this.code(
|
|
8
|
-
success: true,
|
|
9
|
-
data
|
|
10
|
-
});
|
|
11
|
-
});
|
|
12
|
-
fastify.decorateReply("fail", function(error, statusCode = 400) {
|
|
13
|
-
if (Array.isArray(error)) return this.code(statusCode).send({
|
|
14
|
-
success: false,
|
|
15
|
-
errors: error
|
|
16
|
-
});
|
|
17
|
-
return this.code(statusCode).send({
|
|
18
|
-
success: false,
|
|
19
|
-
error
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
fastify.decorateReply("paginated", function(result) {
|
|
23
|
-
return this.code(200).send({
|
|
24
|
-
success: true,
|
|
25
|
-
...result
|
|
26
|
-
});
|
|
7
|
+
fastify.decorateReply("sendList", function(input) {
|
|
8
|
+
return this.code(200).send(toCanonicalList(input));
|
|
27
9
|
});
|
|
28
10
|
fastify.decorateReply("stream", function(source, options) {
|
|
29
11
|
this.code(options.statusCode ?? 200);
|