Skip to content

Commit

Permalink
feat(various):
Browse files Browse the repository at this point in the history
 - start to add example pet store
 - fix some typing problems
  • Loading branch information
thib3113 committed Nov 28, 2023
1 parent 535a4f9 commit 30d9f3a
Show file tree
Hide file tree
Showing 23 changed files with 5,020 additions and 11 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -236,3 +236,5 @@ $RECYCLE.BIN/
/cache
/debug.json
/statics

dist
18 changes: 14 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,8 @@ export default class OpenApiService extends Service<OpenApiMixinSettings & Molec
// use it to define some default informations
openapi: {
info: {
title: "My API"
title: "My API",
version: "0.0.1"
}
}
}
Expand All @@ -128,7 +129,8 @@ export default class OpenApiService extends Service<OpenApiMixinSettings & Molec
* // use it to define some default informations
* openapi: {
* info: {
* title: "My API"
* title: "My API",
* version: "0.0.1
* }
* }
* }
Expand Down Expand Up @@ -163,7 +165,8 @@ export default class OpenApiService extends Service {
// use it to define some default informations
openapi: {
info: {
title: "My API"
title: "My API",
version: "0.0.1"
}
}
}
Expand All @@ -187,7 +190,8 @@ export default class OpenApiService extends Service {
* // use it to define some default informations
* openapi: {
* info: {
* title: "My API"
* title: "My API",
* version: "0.0.1
* }
* }
* }
Expand Down Expand Up @@ -321,6 +325,12 @@ Remember, the journey of mastering any tool involves experimentation, learning f
### 📝 TODO

- allow to add custom mappers
- allow easier securitySchemes setup
- remove unused tags
- security seems not correctly passed
- $$oa
- allow to define a ref, and use the ref instead of creating a new one
- allow to define a "to ref", and create the ref with this name
## 📄 License
Expand Down
10 changes: 10 additions & 0 deletions examples/petstore/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
This is an example project

It's currently in progress .

To start :
```
npm start
```

it will start an web UI on http://127.0.0.1:3000 (can change depending on your configuration)
190 changes: 190 additions & 0 deletions examples/petstore/moleculer.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
import type { BrokerOptions, MetricRegistry, ServiceBroker } from "moleculer";
import { Errors } from "moleculer";

/**
* Moleculer ServiceBroker configuration file
*
* More info about options:
* https://moleculer.services/docs/0.14/configuration.html
*
*
* Overwriting options in production:
* ================================
* You can overwrite any option with environment variables.
* For example to overwrite the "logLevel" value, use `LOGLEVEL=warn` env var.
* To overwrite a nested parameter, e.g. retryPolicy.retries, use `RETRYPOLICY_RETRIES=10` env var.
*
* To overwrite broker’s deeply nested default options, which are not presented in "moleculer.config.js",
* use the `MOL_` prefix and double underscore `__` for nested properties in .env file.
* For example, to set the cacher prefix to `MYCACHE`, you should declare an env var as `MOL_CACHER__OPTIONS__PREFIX=mycache`.
* It will set this:
* {
* cacher: {
* options: {
* prefix: "mycache"
* }
* }
* }
*/
const brokerConfig: BrokerOptions = {
// Namespace of nodes to segment your nodes on the same network.
namespace: "",
// Unique node identifier. Must be unique in a namespace.
nodeID: null,
// Custom metadata store. Store here what you want. Accessing: `this.broker.metadata`
metadata: {},

// Enable/disable logging or use custom logger. More info: https://moleculer.services/docs/0.14/logging.html
// Available logger types: "Console", "File", "Pino", "Winston", "Bunyan", "debug", "Log4js", "Datadog"
logger: {
type: "Console",
options: {
// Using colors on the output
colors: true,
// Print module names with different colors (like docker-compose for containers)
moduleColors: false,
// Line formatter. It can be "json", "short", "simple", "full", a `Function` or a template string like "{timestamp} {level} {nodeID}/{mod}: {msg}"
formatter: "full",
// Custom object printer. If not defined, it uses the `util.inspect` method.
objectPrinter: null,
// Auto-padding the module name in order to messages begin at the same column.
autoPadding: false,
},
},
// Default log level for built-in console logger. It can be overwritten in logger options above.
// Available values: trace, debug, info, warn, error, fatal
logLevel: "info",

// Define transporter.
// More info: https://moleculer.services/docs/0.14/networking.html
// Note: During the development, you don't need to define it because all services will be loaded locally.
// In production you can set it via `TRANSPORTER=nats://localhost:4222` environment variable.
transporter: null, // "TCP"

// Define a cacher.
// More info: https://moleculer.services/docs/0.14/caching.html
cacher: false,

// Define a serializer.
// Available values: "JSON", "Avro", "ProtoBuf", "MsgPack", "Notepack", "Thrift".
// More info: https://moleculer.services/docs/0.14/networking.html#Serialization
serializer: "JSON",

// Number of milliseconds to wait before reject a request with a RequestTimeout error. Disabled: 0
requestTimeout: 10 * 1000,

// Retry policy settings. More info: https://moleculer.services/docs/0.14/fault-tolerance.html#Retry
retryPolicy: {
// Enable feature
enabled: false,
// Count of retries
retries: 5,
// First delay in milliseconds.
delay: 100,
// Maximum delay in milliseconds.
maxDelay: 1000,
// Backoff factor for delay. 2 means exponential backoff.
factor: 2,
// A function to check failed requests.
check: (err: Error) =>
err && err instanceof Errors.MoleculerRetryableError && !!err.retryable,
},

// Limit of calling level. If it reaches the limit, broker will throw an MaxCallLevelError error. (Infinite loop protection)
maxCallLevel: 100,

// Number of seconds to send heartbeat packet to other nodes.
heartbeatInterval: 10,
// Number of seconds to wait before setting node to unavailable status.
heartbeatTimeout: 30,

// Cloning the params of context if enabled. High performance impact, use it with caution!
contextParamsCloning: false,

// Tracking requests and waiting for running requests before shuting down. More info: https://moleculer.services/docs/0.14/context.html#Context-tracking
tracking: {
// Enable feature
enabled: false,
// Number of milliseconds to wait before shuting down the process.
shutdownTimeout: 5000,
},

// Disable built-in request & emit balancer. (Transporter must support it, as well.). More info: https://moleculer.services/docs/0.14/networking.html#Disabled-balancer
disableBalancer: false,

// Settings of Service Registry. More info: https://moleculer.services/docs/0.14/registry.html
registry: {
// Define balancing strategy. More info: https://moleculer.services/docs/0.14/balancing.html
// Available values: "RoundRobin", "Random", "CpuUsage", "Latency", "Shard"
strategy: "RoundRobin",
// Enable local action call preferring. Always call the local action instance if available.
preferLocal: true,
},

// Settings of Circuit Breaker. More info: https://moleculer.services/docs/0.14/fault-tolerance.html#Circuit-Breaker
circuitBreaker: {
// Enable feature
enabled: false,
// Threshold value. 0.5 means that 50% should be failed for tripping.
threshold: 0.5,
// Minimum request count. Below it, CB does not trip.
minRequestCount: 20,
// Number of seconds for time window.
windowTime: 60,
// Number of milliseconds to switch from open to half-open state
halfOpenTime: 10 * 1000,
// A function to check failed requests.
check: (err: Error) => err && err instanceof Errors.MoleculerError && err.code >= 500,
},

// Settings of bulkhead feature. More info: https://moleculer.services/docs/0.14/fault-tolerance.html#Bulkhead
bulkhead: {
// Enable feature.
enabled: false,
// Maximum concurrent executions.
concurrency: 10,
// Maximum size of queue
maxQueueSize: 100,
},

// Enable action & event parameter validation. More info: https://moleculer.services/docs/0.14/validating.html
validator: true,

errorHandler: null,

// Enable/disable built-in metrics function. More info: https://moleculer.services/docs/0.14/metrics.html
metrics: {
enabled: false,
// Available built-in reporters: "Console", "CSV", "Event", "Prometheus", "Datadog", "StatsD"
reporter: {
type: "",
},
},

// Enable built-in tracing function. More info: https://moleculer.services/docs/0.14/tracing.html
tracing: {
enabled: false,
// Available built-in exporters: "Console", "Datadog", "Event", "EventLegacy", "Jaeger", "Zipkin"
exporter: {
type: "", // Console exporter is only for development!
},
},

// Register custom middlewares
middlewares: [],

// Register custom REPL commands.
replCommands: null,

// Called after broker created.
// created(broker: ServiceBroker): void {},

// Called after broker started.
// async started(broker: ServiceBroker): Promise<void> {},

// Called after broker stopped.
// async stopped(broker: ServiceBroker): Promise<void> {},

};

export = brokerConfig;
Loading

0 comments on commit 30d9f3a

Please sign in to comment.