@webpieces/core-util 0.3.271 → 0.3.272
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 +1 -1
- package/src/DocumentDesign.d.ts +39 -0
- package/src/DocumentDesign.js +51 -0
- package/src/DocumentDesign.js.map +1 -0
- package/src/index.d.ts +1 -0
- package/src/index.js +9 -2
- package/src/index.js.map +1 -1
package/package.json
CHANGED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
/**
|
|
3
|
+
* Metadata key for the @DocumentDesign marker.
|
|
4
|
+
*
|
|
5
|
+
* Lives in core-util (browser + Node) rather than a server-only package because
|
|
6
|
+
* @DocumentDesign marks design roots for ANY project kind — server controllers AND
|
|
7
|
+
* library implementation classes — none of which are express/server specific.
|
|
8
|
+
*/
|
|
9
|
+
export declare const DESIGN_METADATA_KEYS: {
|
|
10
|
+
DOCUMENT_DESIGN: string;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* @DocumentDesign decorator — marks a class as a DI-design ROOT: the top-of-DAG class whose
|
|
14
|
+
* dependency-injection tree the design-doc generator walks and renders into that project's
|
|
15
|
+
* `design.json` / `design.md` / `design.html`.
|
|
16
|
+
*
|
|
17
|
+
* It is the single marker for every kind of design root — server controllers (the class an
|
|
18
|
+
* `ApiRoutingFactory(Api, Controller)` binds) and library implementation classes (the top class a
|
|
19
|
+
* `role:designed-lib` project exports and binds in its `ContainerModule`). A `role:designed-lib`
|
|
20
|
+
* project is REQUIRED to have at least one `@DocumentDesign` class — otherwise the DI-graph
|
|
21
|
+
* generator has no root and fails.
|
|
22
|
+
*
|
|
23
|
+
* This is a pure marker read STATICALLY by the DI-graph analyzer (by decorator name); nothing reads
|
|
24
|
+
* its runtime metadata. Routing does NOT depend on it — routes are wired explicitly by
|
|
25
|
+
* `ApiRoutingFactory(Api, Controller)`, which reads `@ApiPath`/`@Endpoint` off the API class and
|
|
26
|
+
* `@SourceFile` off the controller. The metadata below exists only for symmetry/debuggability.
|
|
27
|
+
*
|
|
28
|
+
* Usage:
|
|
29
|
+
* ```typescript
|
|
30
|
+
* @DocumentDesign()
|
|
31
|
+
* @injectable()
|
|
32
|
+
* export class SaveController extends SaveApi { ... }
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare function DocumentDesign(): ClassDecorator;
|
|
36
|
+
/**
|
|
37
|
+
* Helper function to check if a class is marked as a DI-design root.
|
|
38
|
+
*/
|
|
39
|
+
export declare function isDocumentDesign(designClass: object): boolean;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DESIGN_METADATA_KEYS = void 0;
|
|
4
|
+
exports.DocumentDesign = DocumentDesign;
|
|
5
|
+
exports.isDocumentDesign = isDocumentDesign;
|
|
6
|
+
require("reflect-metadata");
|
|
7
|
+
/**
|
|
8
|
+
* Metadata key for the @DocumentDesign marker.
|
|
9
|
+
*
|
|
10
|
+
* Lives in core-util (browser + Node) rather than a server-only package because
|
|
11
|
+
* @DocumentDesign marks design roots for ANY project kind — server controllers AND
|
|
12
|
+
* library implementation classes — none of which are express/server specific.
|
|
13
|
+
*/
|
|
14
|
+
exports.DESIGN_METADATA_KEYS = {
|
|
15
|
+
DOCUMENT_DESIGN: 'webpieces:document-design',
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* @DocumentDesign decorator — marks a class as a DI-design ROOT: the top-of-DAG class whose
|
|
19
|
+
* dependency-injection tree the design-doc generator walks and renders into that project's
|
|
20
|
+
* `design.json` / `design.md` / `design.html`.
|
|
21
|
+
*
|
|
22
|
+
* It is the single marker for every kind of design root — server controllers (the class an
|
|
23
|
+
* `ApiRoutingFactory(Api, Controller)` binds) and library implementation classes (the top class a
|
|
24
|
+
* `role:designed-lib` project exports and binds in its `ContainerModule`). A `role:designed-lib`
|
|
25
|
+
* project is REQUIRED to have at least one `@DocumentDesign` class — otherwise the DI-graph
|
|
26
|
+
* generator has no root and fails.
|
|
27
|
+
*
|
|
28
|
+
* This is a pure marker read STATICALLY by the DI-graph analyzer (by decorator name); nothing reads
|
|
29
|
+
* its runtime metadata. Routing does NOT depend on it — routes are wired explicitly by
|
|
30
|
+
* `ApiRoutingFactory(Api, Controller)`, which reads `@ApiPath`/`@Endpoint` off the API class and
|
|
31
|
+
* `@SourceFile` off the controller. The metadata below exists only for symmetry/debuggability.
|
|
32
|
+
*
|
|
33
|
+
* Usage:
|
|
34
|
+
* ```typescript
|
|
35
|
+
* @DocumentDesign()
|
|
36
|
+
* @injectable()
|
|
37
|
+
* export class SaveController extends SaveApi { ... }
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
function DocumentDesign() {
|
|
41
|
+
return (target) => {
|
|
42
|
+
Reflect.defineMetadata(exports.DESIGN_METADATA_KEYS.DOCUMENT_DESIGN, true, target);
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Helper function to check if a class is marked as a DI-design root.
|
|
47
|
+
*/
|
|
48
|
+
function isDocumentDesign(designClass) {
|
|
49
|
+
return Reflect.getMetadata(exports.DESIGN_METADATA_KEYS.DOCUMENT_DESIGN, designClass) === true;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=DocumentDesign.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocumentDesign.js","sourceRoot":"","sources":["../../../../../packages/core/core-util/src/DocumentDesign.ts"],"names":[],"mappings":";;;AAoCA,wCAIC;AAKD,4CAEC;AA/CD,4BAA0B;AAE1B;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG;IAChC,eAAe,EAAE,2BAA2B;CAC/C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAgB,cAAc;IAC1B,OAAO,CAAC,MAAc,EAAE,EAAE;QACtB,OAAO,CAAC,cAAc,CAAC,4BAAoB,CAAC,eAAe,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/E,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,WAAmB;IAChD,OAAO,OAAO,CAAC,WAAW,CAAC,4BAAoB,CAAC,eAAe,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC;AAC3F,CAAC","sourcesContent":["import 'reflect-metadata';\n\n/**\n * Metadata key for the @DocumentDesign marker.\n *\n * Lives in core-util (browser + Node) rather than a server-only package because\n * @DocumentDesign marks design roots for ANY project kind — server controllers AND\n * library implementation classes — none of which are express/server specific.\n */\nexport const DESIGN_METADATA_KEYS = {\n DOCUMENT_DESIGN: 'webpieces:document-design',\n};\n\n/**\n * @DocumentDesign decorator — marks a class as a DI-design ROOT: the top-of-DAG class whose\n * dependency-injection tree the design-doc generator walks and renders into that project's\n * `design.json` / `design.md` / `design.html`.\n *\n * It is the single marker for every kind of design root — server controllers (the class an\n * `ApiRoutingFactory(Api, Controller)` binds) and library implementation classes (the top class a\n * `role:designed-lib` project exports and binds in its `ContainerModule`). A `role:designed-lib`\n * project is REQUIRED to have at least one `@DocumentDesign` class — otherwise the DI-graph\n * generator has no root and fails.\n *\n * This is a pure marker read STATICALLY by the DI-graph analyzer (by decorator name); nothing reads\n * its runtime metadata. Routing does NOT depend on it — routes are wired explicitly by\n * `ApiRoutingFactory(Api, Controller)`, which reads `@ApiPath`/`@Endpoint` off the API class and\n * `@SourceFile` off the controller. The metadata below exists only for symmetry/debuggability.\n *\n * Usage:\n * ```typescript\n * @DocumentDesign()\n * @injectable()\n * export class SaveController extends SaveApi { ... }\n * ```\n */\nexport function DocumentDesign(): ClassDecorator {\n return (target: object) => {\n Reflect.defineMetadata(DESIGN_METADATA_KEYS.DOCUMENT_DESIGN, true, target);\n };\n}\n\n/**\n * Helper function to check if a class is marked as a DI-design root.\n */\nexport function isDocumentDesign(designClass: object): boolean {\n return Reflect.getMetadata(DESIGN_METADATA_KEYS.DOCUMENT_DESIGN, designClass) === true;\n}\n"]}
|
package/src/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
export { toError } from './lib/errorUtils';
|
|
10
10
|
export { Header } from './Header';
|
|
11
11
|
export { ContextKey } from './ContextKey';
|
|
12
|
+
export { DocumentDesign, isDocumentDesign, DESIGN_METADATA_KEYS } from './DocumentDesign';
|
|
12
13
|
export type { Logger, LogLevel } from './logging/Logger';
|
|
13
14
|
export type { LoggerFactory } from './logging/LoggerFactory';
|
|
14
15
|
export { ConsoleLogger } from './logging/ConsoleLogger';
|
package/src/index.js
CHANGED
|
@@ -8,12 +8,19 @@
|
|
|
8
8
|
* @packageDocumentation
|
|
9
9
|
*/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.
|
|
12
|
-
exports.SerializedError = exports.SerializedMap = exports.RecordSerializer = exports.getDoNotRecordFields = exports.DoNotRecord = exports.RecordedTestCase = exports.RecordedError = exports.RecordedEndpoint = exports.RecorderKeys = exports.LogApiCall = exports.HEADER_TYPES = exports.HeaderMethods = exports.WebpiecesCoreHeaders = exports.HeaderRegistry = exports.PlatformHeadersExtension = exports.PlatformHeader = exports.DateTimeUtil = exports.TimeUtil = exports.DateUtil = exports.InstantUtil = exports.NO_REG_CODE = void 0;
|
|
11
|
+
exports.NOT_APPROVED = exports.WRONG_LOGIN = exports.WRONG_LOGIN_TYPE = exports.ENTITY_NOT_FOUND = exports.HttpUserError = exports.HttpVendorError = exports.HttpInternalServerError = exports.HttpGatewayTimeoutError = exports.HttpBadGatewayError = exports.HttpTimeoutError = exports.HttpForbiddenError = exports.HttpUnauthorizedError = exports.HttpBadRequestError = exports.EndpointNotFoundError = exports.HttpNotFoundError = exports.HttpError = exports.ProtocolError = exports.METADATA_KEYS = exports.RouteMetadata = exports.AuthMeta = exports.validateNoConflictingDecorators = exports.getQueueName = exports.assertPubSubConventions = exports.assertApiKind = exports.getApiKind = exports.assertEveryEndpointHasAuthMode = exports.getAuthMode = exports.getAuthMeta = exports.isApiPath = exports.getEndpoints = exports.getApiPath = exports.Queue = exports.PubSub = exports.Rpc = exports.AuthSharedSecret = exports.AuthOidc = exports.AuthJwt = exports.Public = exports.AuthenticationConfig = exports.Authentication = exports.Endpoint = exports.ApiPath = exports.LogManager = exports.ConsoleLoggerFactory = exports.ConsoleLogger = exports.DESIGN_METADATA_KEYS = exports.isDocumentDesign = exports.DocumentDesign = exports.ContextKey = exports.toError = void 0;
|
|
12
|
+
exports.SerializedError = exports.SerializedMap = exports.RecordSerializer = exports.getDoNotRecordFields = exports.DoNotRecord = exports.RecordedTestCase = exports.RecordedError = exports.RecordedEndpoint = exports.RecorderKeys = exports.LogApiCall = exports.HEADER_TYPES = exports.HeaderMethods = exports.WebpiecesCoreHeaders = exports.HeaderRegistry = exports.PlatformHeadersExtension = exports.PlatformHeader = exports.DateTimeUtil = exports.TimeUtil = exports.DateUtil = exports.InstantUtil = exports.NO_REG_CODE = exports.WRONG_COMPANY = exports.WRONG_DOMAIN = exports.EMAIL_NOT_CONFIRMED = void 0;
|
|
13
13
|
var errorUtils_1 = require("./lib/errorUtils");
|
|
14
14
|
Object.defineProperty(exports, "toError", { enumerable: true, get: function () { return errorUtils_1.toError; } });
|
|
15
15
|
var ContextKey_1 = require("./ContextKey");
|
|
16
16
|
Object.defineProperty(exports, "ContextKey", { enumerable: true, get: function () { return ContextKey_1.ContextKey; } });
|
|
17
|
+
// @DocumentDesign — DI-design-root marker. Applies to ANY project kind (server
|
|
18
|
+
// controllers AND library impl classes), so it lives here (browser + Node) rather
|
|
19
|
+
// than in a server-only routing package.
|
|
20
|
+
var DocumentDesign_1 = require("./DocumentDesign");
|
|
21
|
+
Object.defineProperty(exports, "DocumentDesign", { enumerable: true, get: function () { return DocumentDesign_1.DocumentDesign; } });
|
|
22
|
+
Object.defineProperty(exports, "isDocumentDesign", { enumerable: true, get: function () { return DocumentDesign_1.isDocumentDesign; } });
|
|
23
|
+
Object.defineProperty(exports, "DESIGN_METADATA_KEYS", { enumerable: true, get: function () { return DocumentDesign_1.DESIGN_METADATA_KEYS; } });
|
|
17
24
|
var ConsoleLogger_1 = require("./logging/ConsoleLogger");
|
|
18
25
|
Object.defineProperty(exports, "ConsoleLogger", { enumerable: true, get: function () { return ConsoleLogger_1.ConsoleLogger; } });
|
|
19
26
|
var ConsoleLoggerFactory_1 = require("./logging/ConsoleLoggerFactory");
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/core/core-util/src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;AAEH,+CAA2C;AAAlC,qGAAA,OAAO,OAAA;AAEhB,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/core/core-util/src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @webpieces/core-util\n *\n * Utility functions for WebPieces applications.\n * This package works in both browser and Node.js environments.\n *\n * @packageDocumentation\n */\n\nexport { toError } from './lib/errorUtils';\nexport { Header } from './Header';\nexport { ContextKey } from './ContextKey';\n\n// @DocumentDesign — DI-design-root marker. Applies to ANY project kind (server\n// controllers AND library impl classes), so it lives here (browser + Node) rather\n// than in a server-only routing package.\nexport { DocumentDesign, isDocumentDesign, DESIGN_METADATA_KEYS } from './DocumentDesign';\n\n// Logging (merged from former @webpieces/wp-logging).\n// Pluggable logging interface + a browser-safe console default; apps plug in\n// bunyan/winston/pino/etc. via LogManager.setLogger(...). Browser + Node.\nexport type { Logger, LogLevel } from './logging/Logger';\nexport type { LoggerFactory } from './logging/LoggerFactory';\nexport { ConsoleLogger } from './logging/ConsoleLogger';\nexport { ConsoleLoggerFactory } from './logging/ConsoleLoggerFactory';\nexport { LogManager } from './logging/LogManager';\n\n// HTTP API contract (merged from former @webpieces/http-api).\n// Shared HTTP API definition consumed by both client and server: REST\n// decorators, the HttpError hierarchy, datetime DTOs, platform-header\n// registry/readers, ValidateImplementation, and the test-case recorder\n// contract. Pure definitions — express-free, browser + Node safe.\n\n// API definition decorators\nexport {\n ApiPath,\n Endpoint,\n Authentication,\n AuthenticationConfig,\n // Auth mode decorators (clean service-to-service + user JWT model)\n Public,\n AuthJwt,\n AuthOidc,\n AuthSharedSecret,\n // API kind (RPC vs PubSub/Cloud Tasks) + queue naming\n Rpc,\n PubSub,\n Queue,\n getApiPath,\n getEndpoints,\n isApiPath,\n getAuthMeta,\n getAuthMode,\n assertEveryEndpointHasAuthMode,\n getApiKind,\n assertApiKind,\n assertPubSubConventions,\n getQueueName,\n validateNoConflictingDecorators,\n AuthMeta,\n RouteMetadata,\n METADATA_KEYS,\n} from './http/decorators';\nexport type { AuthMode, ApiKind } from './http/decorators';\n\n// Type validators\nexport { ValidateImplementation } from './http/validators';\n\n// HTTP errors\nexport {\n ProtocolError,\n HttpError,\n HttpNotFoundError,\n EndpointNotFoundError,\n HttpBadRequestError,\n HttpUnauthorizedError,\n HttpForbiddenError,\n HttpTimeoutError,\n HttpBadGatewayError,\n HttpGatewayTimeoutError,\n HttpInternalServerError,\n HttpVendorError,\n HttpUserError,\n // Error subtype constants\n ENTITY_NOT_FOUND,\n WRONG_LOGIN_TYPE,\n WRONG_LOGIN,\n NOT_APPROVED,\n EMAIL_NOT_CONFIRMED,\n WRONG_DOMAIN,\n WRONG_COMPANY,\n NO_REG_CODE,\n} from './http/errors';\n\n// Date/Time DTOs and Utilities (inspired by Java Time / JSR-310)\nexport {\n InstantDto,\n DateDto,\n TimeDto,\n DateTimeDto,\n InstantUtil,\n DateUtil,\n TimeUtil,\n DateTimeUtil,\n} from './http/datetime';\n\n// Platform Headers\nexport { PlatformHeader } from './http/PlatformHeader';\nexport { PlatformHeadersExtension } from './http/PlatformHeadersExtension';\nexport { HeaderRegistry } from './http/HeaderRegistry';\nexport { WebpiecesCoreHeaders } from './http/WebpiecesCoreHeaders';\nexport { HeaderMethods } from './http/HeaderMethods';\nexport { ContextReader } from './http/ContextReader';\nexport { HEADER_TYPES } from './http/HeaderTypes';\n\n// API-call logging helper (uses LogManager above)\nexport { LogApiCall } from './http/LogApiCall';\n\n// Test-case recording contract (impl lives in http-server; hooks in http-client)\nexport { TestCaseRecorder, RecorderKeys } from './http/recorder/TestCaseRecorder';\nexport { RecordedEndpoint, RecordedError, RecordedTestCase } from './http/recorder/RecordedEndpoint';\nexport { DoNotRecord, getDoNotRecordFields } from './http/recorder/DoNotRecord';\nexport { RecordSerializer, SerializedMap, SerializedError } from './http/recorder/RecordSerializer';\n"]}
|