Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
183 commits
Select commit Hold shift + click to select a range
b5fdb83
feat: adding support for scopes
samber Sep 3, 2023
624ccd4
adding some todo 😩
samber Oct 23, 2023
e5e5040
feat: heathcheck + shutdown with context
samber Oct 27, 2023
d9a2d0b
feat: rename package for v2
samber Oct 28, 2023
90795b4
feat: rename package for v2
samber Oct 28, 2023
72657ca
feat: shutdown on signal with context
samber Oct 28, 2023
fd44698
feat: shutdown on signal with context
samber Oct 28, 2023
35af8cc
feat: shutdown on signal with context
samber Oct 28, 2023
d936ebc
fix(service registration): fix registration scope
samber Oct 28, 2023
7c8d0d2
feat: shutdown on signal with context
samber Oct 28, 2023
2288897
doc: provide more example of scope shutdown
samber Oct 28, 2023
774c6aa
fix: on lazy service shutdown, we reset its state, whatever the outcome
samber Oct 28, 2023
a4b8cac
test: rename package test for v2
samber Oct 28, 2023
d519adf
style: rename "transiant" to "transient". Yeah, im french.
samber Oct 29, 2023
2e62d76
doc: adding migration instructions
samber Oct 29, 2023
06637da
feat: adding service aliases
samber Oct 29, 2023
0818722
doc: commenting functions
samber Oct 29, 2023
e67af51
fix: service alias
samber Oct 30, 2023
9badb18
fix: compatibility with go 1.18
samber Oct 30, 2023
efc4a8d
test: add alias service to describe() test
samber Oct 30, 2023
6c1f100
cleanup code
samber Oct 30, 2023
01312e7
feat: alias api with MustXXX variants
samber Oct 30, 2023
285558f
feat: implicit service aliasing
samber Nov 1, 2023
fa8a963
:lipstick:
samber Nov 1, 2023
2e859d0
more tests
samber Nov 1, 2023
be3a290
more tests
samber Nov 1, 2023
c8c52f7
:lipstick:
samber Nov 1, 2023
31616c0
more tests
samber Nov 1, 2023
e96c8cd
more tests
samber Nov 1, 2023
1cb9961
more tests
samber Nov 1, 2023
497801a
more doc
samber Nov 1, 2023
c62716b
Refactor DAG Maps to sync.Map and Improve invoke Function Readability…
K4L1Ma Dec 2, 2023
f09802d
rename Name() to NameOf()
samber Dec 2, 2023
bb81d1b
more tests
samber Dec 2, 2023
a874896
feat: adding parallel healt checks
samber Dec 3, 2023
bfaf579
improve test parallelism
samber Dec 3, 2023
2eabebe
initial doc commit
samber Nov 1, 2023
d5ff42e
adding more doc
samber Nov 2, 2023
7228e64
Insert Commit Message Here
samber Dec 1, 2023
b03e0f8
more doc
samber Dec 1, 2023
41f13d2
lets drink beer
samber Dec 2, 2023
8eb6004
more doc
samber Dec 2, 2023
134fc58
doc: healthckeck
samber Dec 4, 2023
22ac2a9
Empty-Commit
samber Dec 4, 2023
e94fb80
doc: fixing internal links
samber Dec 4, 2023
2c9a1b7
lint
samber Dec 4, 2023
e2e030b
doc: adding aloglia search engine
samber Dec 4, 2023
d0d7395
feat: adding GA4
samber Dec 4, 2023
c3d6922
feat: adding screeb
samber Dec 4, 2023
acb7a93
feat: adding screeb
samber Dec 4, 2023
ad71210
more doc
samber Dec 4, 2023
61bfd55
doc
samber Dec 6, 2023
a9ed1f5
Update from-v1-x-to-v2.md
samber Dec 7, 2023
50b399a
fix: remove boolean returned by DescribeInjector
samber Dec 8, 2023
3d3a939
fix: remove generic type from DescribeNamedService
samber Dec 8, 2023
ef123af
doc: add algolia
samber Dec 20, 2023
2f9448a
doc: fix screeb tag
samber Dec 20, 2023
c02652d
doc: add algolia
samber Dec 20, 2023
db0b5a7
refactor(describe): debug helpers now return struct instead of strings
samber Dec 26, 2023
d3b2943
doc(describe): debug helpers now return struct instead of strings
samber Dec 26, 2023
64266b9
feat(http ui): add stdlib http handler for navigating in ui
samber Dec 27, 2023
a2ff0ec
feat: adding http package and examples
samber Dec 27, 2023
7aec12c
oops
samber Dec 27, 2023
907e7e5
doc: adding web ui to documentation
samber Dec 27, 2023
d77b1b8
feat: make service types private
samber Dec 27, 2023
dea08e9
doc: add some instructions for migration from v1 to v2
samber Dec 30, 2023
42cea19
doc: rename "scope" section to "container"
samber Dec 30, 2023
1323f89
feat: auto-magically inject dependencies into struct
samber Dec 30, 2023
7d56e76
refactor: remove old handlers ShutdownOnSIGTERMxxxx
samber Dec 30, 2023
60ac45d
feat: troubleshoot build time
samber Dec 30, 2023
a7bbbdd
refactor: remove previous "Explain" helpers
samber Dec 30, 2023
90551ee
refactor: rename all "Describe" stuff into "Explain"
samber Dec 30, 2023
64539e1
:lipstick:
samber Dec 30, 2023
6ba3438
doc: fix internal link
samber Dec 30, 2023
d236b49
doc: minor changes
samber Dec 30, 2023
42b427c
feat: improve errors messages
samber Dec 30, 2023
567fab0
feat: improve errors messages
samber Dec 31, 2023
73ec3af
refactor(shutdown): shutdown is now non-blocking
samber Dec 31, 2023
218a991
doc: minor changes
samber Dec 31, 2023
d64e47b
doc: fix receiver typo
mrthinger Dec 31, 2023
f446413
refactor: remove confusing arg in AsNamed
mrthinger Dec 31, 2023
26a4d51
fix versionning
samber Jan 15, 2024
35bdcc3
fix doc about versioning of web-ui modules
samber Jan 15, 2024
5f09e00
fix examples
samber Feb 10, 2024
f5befd5
feat(shutdown): make shutdown async and parallel (shutdown in reverse…
samber Feb 11, 2024
34cc08f
update sub packages
samber Feb 11, 2024
c619160
Fix typo lazy/eager in eager-loading.md
alexandregv Apr 28, 2024
5f57eae
prefered->preferred
dezren39 Feb 27, 2024
65248e7
fix: fix OverrideTransient implem
samber May 2, 2024
2db394d
test: adding more tests on parallel shutdown
samber May 5, 2024
1ca7975
feat: adding the package abstraction + doc
samber May 6, 2024
0d255a7
fix: fix memory leak and limits invocation frame storage to the last 100
samber May 6, 2024
2e14309
fix(shutdown): shutdown services even if there is a circular dependency
samber May 7, 2024
4772339
fix(alias): improve error message
samber May 7, 2024
ab7d64a
doc: add a warning to implicit aliasing
samber May 7, 2024
871fb00
chore: upgrade go-type-to-string
samber May 9, 2024
1d3425f
feat: add support for multple hook handlers
samber May 9, 2024
18b310c
feat: add hook at runtime
samber May 9, 2024
fb9fef6
more doc
samber May 9, 2024
a382d0b
feat: move hooks to rootscope instead of injectorOpts
samber May 10, 2024
8cdf102
chore: upgrade go-type-to-string
samber May 13, 2024
0b8b7bf
fix(error handling): add a TypeMismatch error when we invoke a servic…
samber May 13, 2024
470f86a
oops
samber May 13, 2024
25b9492
fix doc
samber May 13, 2024
97fe0b1
oops
samber May 13, 2024
6ed4acf
chore: upgrade go-type-to-string
samber May 16, 2024
e6da7a7
feat: InvokeNamed[any] without type check
d-enk May 13, 2024
32406b2
:lipstick:
samber Jul 24, 2025
94d48ce
doc: fix example code typo
StrayDragon Aug 15, 2024
08d2f22
doc: improve doc
samber Jul 24, 2025
0f7b7fe
:lipstick:
samber Jul 24, 2025
ad91c04
style: ignore some errors triggered by bearer sast
samber Jul 24, 2025
600fba0
style: ignore some errors triggered by bearer sast
samber Jul 24, 2025
6f5b60a
fix: InvokeStruct check assignable
Nov 13, 2024
7d5241a
fix: error message
Nov 13, 2024
81ab627
fix: error message
Nov 13, 2024
f4a301a
fix: fix regression in panic message
samber Aug 18, 2025
1e0925f
fix: improve type matching for implicit and explicit aliasing (see #81)
samber Aug 18, 2025
49f96ca
fix(InvokeStruct): return T instead of *T, and support undefined numb…
samber Aug 18, 2025
0f7935d
doc: add much more comments to exported methods
samber Aug 19, 2025
94218a2
chore: add go.work
samber Aug 19, 2025
40c7f17
fix: fix Logf formatting
samber Aug 19, 2025
d2b65f2
fix(scope clone): set the right scope in services of type "alias"
samber Aug 19, 2025
bf125d8
fix: fix error message when a service does not implement its alias
samber Aug 19, 2025
26b2c63
fix: rename MaxInvokationFrames to MaxInvocationFrames
samber Aug 19, 2025
e4992b6
fix(scope): avoid calling callbacks or external code while locking
samber Aug 19, 2025
c5e643b
doc: remove screeb 💔
samber Aug 19, 2025
1e149d3
doc: fix grammar 🫠
samber Aug 19, 2025
e7c4a34
fix: fix the pool implementation
samber Aug 19, 2025
91a4c7f
fix: some various safety fix
samber Aug 19, 2025
d5e5287
doc: fix grammar 🫠
samber Aug 19, 2025
28e3edf
fix: improve timeout handling during shutdown
samber Aug 19, 2025
ae57f6f
fix: adding various micro-fixs
samber Aug 19, 2025
d1e2544
feat: do.InvokeStruct now support implicit type aliasing (closing #93)
samber Aug 19, 2025
bb97994
style: improve code safety and cleanup virtualScope declaration
samber Aug 19, 2025
cf2e17f
doc: add the recent features to the doc and make some fix
samber Aug 19, 2025
7132012
fix: various fix and clenaups
samber Aug 19, 2025
7f0d35f
refactor: unexport do.Service[T] and rename it to do.serviceWrapper[T]
samber Aug 19, 2025
c778ff9
refactor: move the package name into a variable to prevent breaking f…
samber Aug 19, 2025
14d90c3
test: add more tests on healthcheck and shutdown error (via context)
samber Aug 20, 2025
af6ecc6
doc: add multiple examples
samber Aug 20, 2025
32dcc34
doc
samber Aug 20, 2025
b92fe71
doc: add examples to the godoc
samber Aug 20, 2025
db924a0
chore: add docusorus to dependabot
samber Aug 20, 2025
6f387eb
test: add timeouts
samber Aug 20, 2025
903a248
chore: add Bearer config
samber Aug 20, 2025
6172e7d
fix: fix circular dependency detection for service aliasing
samber Aug 20, 2025
858f715
fix(tests): switch order of t.Parallel() and testWithTimeout(...)
samber Aug 20, 2025
dd1a249
test: add tests for complex cases
samber Aug 20, 2025
81bf695
doc: security advisor
samber Aug 20, 2025
e33595c
fix: fix some unit test
samber Aug 21, 2025
6a522c3
feat: shutdown methods now returns *ShutdownReport
samber Aug 21, 2025
ab6b726
:lipstick:
samber Aug 21, 2025
d52b1db
test: fix flaky tests
samber Aug 21, 2025
7ca633a
style: fix linter config
samber Aug 21, 2025
de60f1a
:lipstick:
samber Aug 21, 2025
bccb105
style: group some files to reduce the number of files in the project …
samber Aug 21, 2025
4e2af31
test: add tests on service stacktrace and http submodule
samber Aug 21, 2025
14eac80
test: add more tests
samber Aug 21, 2025
e515343
chore: add go module for each example
samber Aug 21, 2025
eaf2999
fix: fix tests
samber Aug 21, 2025
45ae9d1
fix: fix tests
samber Aug 21, 2025
c7166e0
doc: adding migration guide for dig and wire
samber Aug 22, 2025
ca22640
test: add missing test cases
samber Aug 22, 2025
ba1bc43
doc: more info into llms.txt
samber Aug 22, 2025
0ca797f
doc: more vocab in glossary
samber Aug 22, 2025
f622648
doc: fix internal links
samber Aug 22, 2025
0ab61cf
doc: add mermaid diagrams
samber Aug 23, 2025
74a5fc6
fix: fix doc deployment on vercel
samber Aug 27, 2025
249b231
style(lint): gofumpt
samber Sep 19, 2025
c8d9273
style(lint): staticcheck
samber Sep 19, 2025
2e990b9
style(lint): errcheck
samber Sep 19, 2025
b8004be
style(lint): gocritic
samber Sep 19, 2025
6d75afa
style(lint): revive
samber Sep 19, 2025
23f478d
style(lint): misspell, goconst, unconvert
samber Sep 20, 2025
5b7ee18
style(lint): forcetypeassert
samber Sep 20, 2025
9c86d96
style(lint): testifylint
samber Sep 20, 2025
0a541d8
style(lint): add golangci config
samber Sep 20, 2025
78b074b
fix(explain): fix repetition of services having same name (fixing #85)
samber Sep 20, 2025
b3936f6
oops
samber Sep 20, 2025
0c417f0
doc: add version dropdown
samber Sep 21, 2025
068fddf
refactor: rename EdgeService to ServiceDescription
samber Sep 21, 2025
8aef9d1
lint
samber Sep 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,7 @@ updates:
directory: /
schedule:
interval: weekly
- package-ecosystem: npm
directory: /docs
schedule:
interval: weekly
2 changes: 1 addition & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
- name: golangci-lint
uses: golangci/golangci-lint-action@v8
with:
args: --timeout 120s --max-same-issues 50
args: --timeout 120s --max-same-issues 50 --config=.golangci.yml

- name: Bearer
uses: bearer/bearer-action@v2
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:

# remove tests in order to clean dependencies
- name: Remove xxx_test.go files
run: rm -rf *_test.go docker-compose.yml examples/
run: rm -rf *_test.go docker-compose.yml examples/ docs/ tests/

- name: Cleanup dependencies
run: go mod tidy
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ jobs:
- '1.22'
- '1.23'
- '1.24'
- '1.25'
- '1.x'
steps:
- uses: actions/checkout@v5
Expand All @@ -29,7 +30,7 @@ jobs:
with:
go-version: ${{ matrix.go }}
stable: false

- name: Build
run: make build

Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
# vendor/

# Go workspace file
go.work
# go.work

### Go Patch ###
/vendor/
Expand Down
102 changes: 102 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
version: "2"
run:
concurrency: 4
# also lint _test.go files
tests: true
timeout: 5m
linters:
enable:
- govet
- staticcheck
- unused
- errcheck
- gocritic
- gocyclo
- revive
- ineffassign
- unconvert
- goconst
# - depguard
- prealloc
# - dupl
- misspell
- bodyclose
- sqlclosecheck
- nilerr
- nestif
- forcetypeassert
- exhaustive
- funlen
# - wsl_v5
- testifylint

# disable noisy/controversial ones which you might enable later
disable:
- lll # line length — handled by gfmt/gofumpt

settings:
dupl:
threshold: 20 # lower => stricter (tokens)
errcheck:
check-type-assertions: true
funlen:
lines: 120
statements: 80
goconst:
min-len: 2
min-occurrences: 3
gocyclo:
min-complexity: 15 # strict; lower => stricter
wsl_v5:
allow-first-in-block: true
allow-whole-block: false
branch-max-lines: 2
testifylint:
disable:
- require-error
- float-compare

exclusions:
generated: lax
paths:
- examples$
rules:
- linters:
- revive
text: "^unused-parameter:"
- linters:
- revive
text: "^package-comments:"
- linters:
- errcheck
text: "Error return value of `.*\\.Body\\.Close` is not checked"
# linters disabled in tests
- linters:
- dupl
- goconst
- funlen
- errcheck
- forcetypeassert
- revive
path: "_test\\.go$"
- linters:
- revive
path: "tests/"



issues:
max-issues-per-linter: 0 # 0 = unlimited (we want ALL issues)
max-same-issues: 100


formatters:
enable:
- gofmt
- gofumpt
exclusions:
generated: lax
paths:
- third_party$
- builtin$
- examples$
40 changes: 19 additions & 21 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,13 +1,6 @@

BIN=go
# BIN=go1.18beta1

go1.18beta1:
go install golang.org/dl/go1.18beta1@latest
go1.18beta1 download

build:
${BIN} build -v ./...
go build -v ./...

test:
go test -race -v ./...
Expand All @@ -20,18 +13,20 @@ watch-bench:
reflex -t 50ms -s -- sh -c 'go test -benchmem -count 3 -bench ./...'

coverage:
${BIN} test -v -coverprofile=cover.out -covermode=atomic .
${BIN} tool cover -html=cover.out -o cover.html
go test -v -coverprofile=cover.out -covermode=atomic ./...
go tool cover -html=cover.out -o cover.html

# tools
tools:
${BIN} install github.com/cespare/reflex@latest
${BIN} install github.com/rakyll/gotest@latest
${BIN} install github.com/psampaz/go-mod-outdated@latest
${BIN} install github.com/jondot/goweight@latest
${BIN} install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
${BIN} get -t -u golang.org/x/tools/cmd/cover
${BIN} get -t -u github.com/sonatype-nexus-community/nancy@latest
go install github.com/cespare/reflex@latest
go install github.com/rakyll/gotest@latest
go install github.com/psampaz/go-mod-outdated@latest
go install github.com/jondot/goweight@latest
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
go get -t -u golang.org/x/tools/cmd/cover
go install github.com/sonatype-nexus-community/nancy@latest
go install golang.org/x/perf/cmd/benchstat@latest
go install github.com/cespare/prettybench@latest
go mod tidy

lint:
Expand All @@ -40,12 +35,15 @@ lint-fix:
golangci-lint run --timeout 60s --max-same-issues 50 --fix ./...

audit: tools
${BIN} mod tidy
${BIN} list -json -m all | nancy sleuth
go mod tidy
go list -json -m all | nancy sleuth

outdated: tools
${BIN} mod tidy
${BIN} list -u -m -json all | go-mod-outdated -update -direct
go mod tidy
go list -u -m -json all | go-mod-outdated -update -direct

weight: tools
goweight

doc:
cd docs && npm install && npm start
Loading
Loading