├── .gitignore
├── Examples
├── CocktailExample
│ ├── CocktailExample.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── swiftpm
│ │ │ └── Package.resolved
│ ├── CocktailExample
│ │ ├── Assets.xcassets
│ │ │ ├── AccentColor.colorset
│ │ │ │ └── Contents.json
│ │ │ ├── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ └── Contents.json
│ │ ├── Atoms.swift
│ │ ├── CocktaiItemView.swift
│ │ ├── CocktailDetailView.swift
│ │ ├── CocktailExampleApp.swift
│ │ ├── CocktailImageView.swift
│ │ ├── CocktailsView.swift
│ │ ├── Model.swift
│ │ └── Preview Content
│ │ │ └── Preview Assets.xcassets
│ │ │ └── Contents.json
│ ├── CocktailExampleTests
│ │ └── CocktailExampleTests.swift
│ └── README.md
├── SignupExample
│ ├── README.md
│ ├── SignupExample.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── swiftpm
│ │ │ └── Package.resolved
│ ├── SignupExample
│ │ ├── Assets.xcassets
│ │ │ ├── AccentColor.colorset
│ │ │ │ └── Contents.json
│ │ │ ├── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ └── Contents.json
│ │ ├── Atoms.swift
│ │ ├── Preview Content
│ │ │ └── Preview Assets.xcassets
│ │ │ │ └── Contents.json
│ │ ├── SignupExampleApp.swift
│ │ └── SignupView.swift
│ └── SignupExampleTests
│ │ └── SignupExampleTests.swift
└── TodoExample
│ ├── README.md
│ ├── TodoExample.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── swiftpm
│ │ └── Package.resolved
│ ├── TodoExample
│ ├── Assets.xcassets
│ │ ├── AccentColor.colorset
│ │ │ └── Contents.json
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── Contents.json
│ ├── Atoms.swift
│ ├── Model.swift
│ ├── NewTodoView.swift
│ ├── Preview Content
│ │ └── Preview Assets.xcassets
│ │ │ └── Contents.json
│ ├── TodoExampleApp.swift
│ ├── TodoItemView.swift
│ └── TodoView.swift
│ └── TodoExampleTests
│ └── TodoExampleTests.swift
├── LICENSE
├── Package.resolved
├── Package.swift
├── README.md
├── Resources
└── TestScreenshot.png
├── Sources
└── Atoms
│ ├── AsyncState.swift
│ ├── AtomProvider.swift
│ ├── AtomStore.swift
│ ├── Atoms
│ ├── AsyncAtom.swift
│ ├── AsyncSequenceAtom.swift
│ ├── Atom.swift
│ ├── DerivedAtom.swift
│ ├── GetSetAtom.swift
│ ├── ObservableObjectAtom.swift
│ ├── PublishedAtom.swift
│ ├── PublisherAtom.swift
│ └── WillSetAtom.swift
│ ├── Internal
│ ├── AtomValue.swift
│ ├── Atomic.swift
│ ├── DebugInfo.swift
│ ├── ExportAsyncExpectations.swift
│ ├── GetSetPublisher.swift
│ ├── ReadableAtom.swift
│ ├── RefCounter.swift
│ ├── ResettableAtom.swift
│ ├── Scope.swift
│ ├── Store.swift
│ ├── StoreConfig.swift
│ ├── UsedAtomInfo.swift
│ ├── Utilities.swift
│ ├── WeakRef.swift
│ └── WritableAtom.swift
│ ├── PropertyWrappers
│ ├── CaptureAtom.swift
│ ├── CaptureAtomPublisher.swift
│ ├── CaptureAtomValue.swift
│ ├── UseAtom.swift
│ └── UseAtomValue.swift
│ └── TestStore.swift
├── Tests
└── AtomsTests
│ └── AtomsTests.swift
└── docs
├── assets.json
├── css
├── documentation-topic.3bca6578.css
├── documentation-topic~topic~tutorials-overview.82acfe22.css
├── index.12bb178a.css
├── topic.ee15af52.css
└── tutorials-overview.06e8bcf7.css
├── data
└── documentation
│ ├── atoms.json
│ └── atoms
│ ├── asyncatom.json
│ ├── asyncatom
│ ├── cancel().json
│ ├── debuglabel(_:).json
│ ├── id.json
│ ├── init(keepalive:throwoncancellation:file:function:line:operation:).json
│ ├── keepalive.json
│ ├── onupdate(skip:_:).json
│ ├── readableatom-implementations.json
│ ├── reload().json
│ └── type.json
│ ├── asyncsequenceatom.json
│ ├── asyncsequenceatom
│ ├── debuglabel(_:).json
│ ├── id.json
│ ├── init(_:keepalive:file:function:line:)-6rh5p.json
│ ├── init(_:keepalive:file:function:line:)-qbn7.json
│ ├── keepalive.json
│ ├── onupdate(skip:_:).json
│ ├── readableatom-implementations.json
│ └── type.json
│ ├── asyncstate.json
│ ├── asyncstate
│ ├── !=(_:_:).json
│ ├── ==(_:_:).json
│ ├── equatable-implementations.json
│ ├── failure(_:).json
│ ├── failure.json
│ ├── loading-swift.enum.case.json
│ ├── loading-swift.property.json
│ ├── success(_:).json
│ └── value.json
│ ├── atom.json
│ ├── atom
│ ├── debuglabel(_:).json
│ ├── id.json
│ ├── init(_:keepalive:file:function:line:).json
│ ├── keepalive.json
│ ├── onupdate(skip:_:).json
│ ├── readableatom-implementations.json
│ ├── reset().json
│ └── type.json
│ ├── atomstore.json
│ ├── atomstore
│ ├── debugscope.json
│ ├── debugscope
│ │ ├── exclude(_:).json
│ │ └── include(_:).json
│ ├── enableatomlogging(_:enabled:).json
│ ├── inject(_:mutation:).json
│ ├── loggingenabled.json
│ └── shared.json
│ ├── captureatom.json
│ ├── captureatom
│ ├── init(_:).json
│ └── wrappedvalue.json
│ ├── captureatompublisher.json
│ ├── captureatompublisher
│ ├── init(_:).json
│ └── wrappedvalue.json
│ ├── captureatomvalue.json
│ ├── captureatomvalue
│ ├── init(_:).json
│ └── wrappedvalue.json
│ ├── derivedatom.json
│ ├── derivedatom
│ ├── debuglabel(_:).json
│ ├── id.json
│ ├── init(keepalive:file:function:line:get:).json
│ ├── keepalive.json
│ ├── onupdate(skip:_:).json
│ ├── readableatom-implementations.json
│ └── type.json
│ ├── getsetatom.json
│ ├── getsetatom
│ ├── debuglabel(_:).json
│ ├── id.json
│ ├── init(keepalive:file:function:line:get:set:).json
│ ├── keepalive.json
│ ├── onupdate(skip:_:).json
│ ├── readableatom-implementations.json
│ ├── reset().json
│ └── type.json
│ ├── observableobjectatom.json
│ ├── observableobjectatom
│ ├── debuglabel(_:).json
│ ├── id.json
│ ├── init(_:keepalive:file:function:line:).json
│ ├── keepalive.json
│ ├── onupdate(skip:_:).json
│ ├── readableatom-implementations.json
│ └── type.json
│ ├── publishedatom.json
│ ├── publishedatom
│ ├── debuglabel(_:).json
│ ├── id.json
│ ├── init(_:keepalive:).json
│ ├── init(keepalive:file:function:line:_:).json
│ ├── keepalive.json
│ ├── onupdate(skip:_:).json
│ ├── readableatom-implementations.json
│ └── type.json
│ ├── publisheratom.json
│ ├── publisheratom
│ ├── debuglabel(_:).json
│ ├── id.json
│ ├── init(_:keepalive:file:function:line:).json
│ ├── init(keepalive:file:function:line:_:)-2ldm0.json
│ ├── init(keepalive:file:function:line:_:)-837kr.json
│ ├── init(publisher:keepalive:file:function:line:).json
│ ├── keepalive.json
│ ├── onupdate(skip:_:).json
│ ├── readableatom-implementations.json
│ └── type.json
│ ├── readableatom.json
│ ├── readableatom
│ ├── debuglabel(_:).json
│ ├── id.json
│ ├── keepalive.json
│ ├── onupdate(skip:_:).json
│ ├── t.json
│ └── type.json
│ ├── store.json
│ ├── store
│ └── inject(_:mutation:).json
│ ├── teststore.json
│ ├── teststore
│ └── init(operation:).json
│ ├── useatom.json
│ ├── useatom
│ ├── dynamicproperty-implementations.json
│ ├── init(_:debounce:).json
│ ├── projectedvalue.json
│ ├── update().json
│ └── wrappedvalue.json
│ ├── useatomvalue.json
│ ├── useatomvalue
│ ├── dynamicproperty-implementations.json
│ ├── init(_:debounce:).json
│ ├── update().json
│ └── wrappedvalue.json
│ ├── willsetatom.json
│ ├── willsetatom
│ ├── debuglabel(_:).json
│ ├── id.json
│ ├── init(keepalive:file:function:line:_:willset:).json
│ ├── keepalive.json
│ ├── onupdate(skip:_:).json
│ ├── readableatom-implementations.json
│ ├── reset().json
│ └── type.json
│ └── writableatom.json
├── developer-og-twitter.jpg
├── developer-og.jpg
├── diagnostics.json
├── documentation
└── atoms
│ ├── asyncatom
│ ├── cancel()
│ │ └── index.html
│ ├── debuglabel(_:)
│ │ └── index.html
│ ├── id
│ │ └── index.html
│ ├── index.html
│ ├── init(keepalive:throwoncancellation:file:function:line:operation:)
│ │ └── index.html
│ ├── keepalive
│ │ └── index.html
│ ├── onupdate(skip:_:)
│ │ └── index.html
│ ├── readableatom-implementations
│ │ └── index.html
│ ├── reload()
│ │ └── index.html
│ └── type
│ │ └── index.html
│ ├── asyncsequenceatom
│ ├── debuglabel(_:)
│ │ └── index.html
│ ├── id
│ │ └── index.html
│ ├── index.html
│ ├── init(_:keepalive:file:function:line:)-6rh5p
│ │ └── index.html
│ ├── init(_:keepalive:file:function:line:)-qbn7
│ │ └── index.html
│ ├── keepalive
│ │ └── index.html
│ ├── onupdate(skip:_:)
│ │ └── index.html
│ ├── readableatom-implementations
│ │ └── index.html
│ └── type
│ │ └── index.html
│ ├── asyncstate
│ ├── !=(_:_:)
│ │ └── index.html
│ ├── ==(_:_:)
│ │ └── index.html
│ ├── equatable-implementations
│ │ └── index.html
│ ├── failure(_:)
│ │ └── index.html
│ ├── failure
│ │ └── index.html
│ ├── index.html
│ ├── loading-swift.enum.case
│ │ └── index.html
│ ├── loading-swift.property
│ │ └── index.html
│ ├── success(_:)
│ │ └── index.html
│ └── value
│ │ └── index.html
│ ├── atom
│ ├── debuglabel(_:)
│ │ └── index.html
│ ├── id
│ │ └── index.html
│ ├── index.html
│ ├── init(_:keepalive:file:function:line:)
│ │ └── index.html
│ ├── keepalive
│ │ └── index.html
│ ├── onupdate(skip:_:)
│ │ └── index.html
│ ├── readableatom-implementations
│ │ └── index.html
│ ├── reset()
│ │ └── index.html
│ └── type
│ │ └── index.html
│ ├── atomstore
│ ├── debugscope
│ │ ├── exclude(_:)
│ │ │ └── index.html
│ │ ├── include(_:)
│ │ │ └── index.html
│ │ └── index.html
│ ├── enableatomlogging(_:enabled:)
│ │ └── index.html
│ ├── index.html
│ ├── inject(_:mutation:)
│ │ └── index.html
│ ├── loggingenabled
│ │ └── index.html
│ └── shared
│ │ └── index.html
│ ├── captureatom
│ ├── index.html
│ ├── init(_:)
│ │ └── index.html
│ └── wrappedvalue
│ │ └── index.html
│ ├── captureatompublisher
│ ├── index.html
│ ├── init(_:)
│ │ └── index.html
│ └── wrappedvalue
│ │ └── index.html
│ ├── captureatomvalue
│ ├── index.html
│ ├── init(_:)
│ │ └── index.html
│ └── wrappedvalue
│ │ └── index.html
│ ├── derivedatom
│ ├── debuglabel(_:)
│ │ └── index.html
│ ├── id
│ │ └── index.html
│ ├── index.html
│ ├── init(keepalive:file:function:line:get:)
│ │ └── index.html
│ ├── keepalive
│ │ └── index.html
│ ├── onupdate(skip:_:)
│ │ └── index.html
│ ├── readableatom-implementations
│ │ └── index.html
│ └── type
│ │ └── index.html
│ ├── getsetatom
│ ├── debuglabel(_:)
│ │ └── index.html
│ ├── id
│ │ └── index.html
│ ├── index.html
│ ├── init(keepalive:file:function:line:get:set:)
│ │ └── index.html
│ ├── keepalive
│ │ └── index.html
│ ├── onupdate(skip:_:)
│ │ └── index.html
│ ├── readableatom-implementations
│ │ └── index.html
│ ├── reset()
│ │ └── index.html
│ └── type
│ │ └── index.html
│ ├── index.html
│ ├── observableobjectatom
│ ├── debuglabel(_:)
│ │ └── index.html
│ ├── id
│ │ └── index.html
│ ├── index.html
│ ├── init(_:keepalive:file:function:line:)
│ │ └── index.html
│ ├── keepalive
│ │ └── index.html
│ ├── onupdate(skip:_:)
│ │ └── index.html
│ ├── readableatom-implementations
│ │ └── index.html
│ └── type
│ │ └── index.html
│ ├── publishedatom
│ ├── debuglabel(_:)
│ │ └── index.html
│ ├── id
│ │ └── index.html
│ ├── index.html
│ ├── init(_:keepalive:)
│ │ └── index.html
│ ├── init(keepalive:file:function:line:_:)
│ │ └── index.html
│ ├── keepalive
│ │ └── index.html
│ ├── onupdate(skip:_:)
│ │ └── index.html
│ ├── readableatom-implementations
│ │ └── index.html
│ └── type
│ │ └── index.html
│ ├── publisheratom
│ ├── debuglabel(_:)
│ │ └── index.html
│ ├── id
│ │ └── index.html
│ ├── index.html
│ ├── init(_:keepalive:file:function:line:)
│ │ └── index.html
│ ├── init(keepalive:file:function:line:_:)-2ldm0
│ │ └── index.html
│ ├── init(keepalive:file:function:line:_:)-837kr
│ │ └── index.html
│ ├── init(publisher:keepalive:file:function:line:)
│ │ └── index.html
│ ├── keepalive
│ │ └── index.html
│ ├── onupdate(skip:_:)
│ │ └── index.html
│ ├── readableatom-implementations
│ │ └── index.html
│ └── type
│ │ └── index.html
│ ├── readableatom
│ ├── debuglabel(_:)
│ │ └── index.html
│ ├── id
│ │ └── index.html
│ ├── index.html
│ ├── keepalive
│ │ └── index.html
│ ├── onupdate(skip:_:)
│ │ └── index.html
│ ├── t
│ │ └── index.html
│ └── type
│ │ └── index.html
│ ├── store
│ ├── index.html
│ └── inject(_:mutation:)
│ │ └── index.html
│ ├── teststore
│ ├── index.html
│ └── init(operation:)
│ │ └── index.html
│ ├── useatom
│ ├── dynamicproperty-implementations
│ │ └── index.html
│ ├── index.html
│ ├── init(_:debounce:)
│ │ └── index.html
│ ├── projectedvalue
│ │ └── index.html
│ ├── update()
│ │ └── index.html
│ └── wrappedvalue
│ │ └── index.html
│ ├── useatomvalue
│ ├── dynamicproperty-implementations
│ │ └── index.html
│ ├── index.html
│ ├── init(_:debounce:)
│ │ └── index.html
│ ├── update()
│ │ └── index.html
│ └── wrappedvalue
│ │ └── index.html
│ ├── willsetatom
│ ├── debuglabel(_:)
│ │ └── index.html
│ ├── id
│ │ └── index.html
│ ├── index.html
│ ├── init(keepalive:file:function:line:_:willset:)
│ │ └── index.html
│ ├── keepalive
│ │ └── index.html
│ ├── onupdate(skip:_:)
│ │ └── index.html
│ ├── readableatom-implementations
│ │ └── index.html
│ ├── reset()
│ │ └── index.html
│ └── type
│ │ └── index.html
│ └── writableatom
│ └── index.html
├── favicon.ico
├── favicon.svg
├── img
├── added-icon.d6f7e47d.svg
├── deprecated-icon.015b4f17.svg
├── modified-icon.f496e73d.svg
└── no-image@2x.df2a0a50.png
├── index.html
├── index
└── index.json
├── indexing-records.json
├── js
├── chunk-2d0d3105.cd72cc8e.js
├── chunk-vendors.b24b7aaa.js
├── documentation-topic.f62098b6.js
├── documentation-topic~topic~tutorials-overview.8e36e44f.js
├── highlight-js-bash.1b52852f.js
├── highlight-js-c.d1db3f17.js
├── highlight-js-cpp.eaddddbe.js
├── highlight-js-css.75eab1fe.js
├── highlight-js-custom-markdown.7cffc4b3.js
├── highlight-js-custom-swift.5cda5c20.js
├── highlight-js-diff.62d66733.js
├── highlight-js-http.163e45b6.js
├── highlight-js-java.8326d9d8.js
├── highlight-js-javascript.acb8a8eb.js
├── highlight-js-json.471128d2.js
├── highlight-js-llvm.6100b125.js
├── highlight-js-markdown.90077643.js
├── highlight-js-objectivec.bcdf5156.js
├── highlight-js-perl.757d7b6f.js
├── highlight-js-php.cc8d6c27.js
├── highlight-js-python.c214ed92.js
├── highlight-js-ruby.f889d392.js
├── highlight-js-scss.62ee18da.js
├── highlight-js-shell.dd7f411f.js
├── highlight-js-swift.84f3e88c.js
├── highlight-js-xml.9c3688c7.js
├── index.58e30ec4.js
├── topic.6a1c7b7f.js
└── tutorials-overview.c8178b83.js
├── linkable-entities.json
├── metadata.json
└── theme-settings.json
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | /.build
3 | /Packages
4 | /*.xcodeproj
5 | xcuserdata/
6 | /.swiftpm
7 | DerivedData/
8 | .swiftpm/config/registries.json
9 | .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
10 | .netrc
11 |
--------------------------------------------------------------------------------
/Examples/CocktailExample/CocktailExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Examples/CocktailExample/CocktailExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/CocktailExample/CocktailExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved:
--------------------------------------------------------------------------------
1 | {
2 | "pins" : [
3 | {
4 | "identity" : "swift-async-expectations",
5 | "kind" : "remoteSourceControl",
6 | "location" : "https://github.com/bangerang/swift-async-expectations.git",
7 | "state" : {
8 | "revision" : "1f65a7dcc7810eb4e5108e007dcfc03466aac0e8",
9 | "version" : "0.1.0"
10 | }
11 | },
12 | {
13 | "identity" : "swift-custom-dump",
14 | "kind" : "remoteSourceControl",
15 | "location" : "https://github.com/pointfreeco/swift-custom-dump",
16 | "state" : {
17 | "revision" : "84b30e1af72e0ffe6dfbfe39d53b8173caacf224",
18 | "version" : "0.10.2"
19 | }
20 | },
21 | {
22 | "identity" : "swift-docc-plugin",
23 | "kind" : "remoteSourceControl",
24 | "location" : "https://github.com/apple/swift-docc-plugin",
25 | "state" : {
26 | "revision" : "9b1258905c21fc1b97bf03d1b4ca12c4ec4e5fda",
27 | "version" : "1.2.0"
28 | }
29 | },
30 | {
31 | "identity" : "swift-docc-symbolkit",
32 | "kind" : "remoteSourceControl",
33 | "location" : "https://github.com/apple/swift-docc-symbolkit",
34 | "state" : {
35 | "revision" : "b45d1f2ed151d057b54504d653e0da5552844e34",
36 | "version" : "1.0.0"
37 | }
38 | },
39 | {
40 | "identity" : "xctest-dynamic-overlay",
41 | "kind" : "remoteSourceControl",
42 | "location" : "https://github.com/pointfreeco/xctest-dynamic-overlay",
43 | "state" : {
44 | "revision" : "ab8c9f45843694dd16be4297e6d44c0634fd9913",
45 | "version" : "0.8.4"
46 | }
47 | }
48 | ],
49 | "version" : 2
50 | }
51 |
--------------------------------------------------------------------------------
/Examples/CocktailExample/CocktailExample/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Examples/CocktailExample/CocktailExample/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "platform" : "ios",
6 | "size" : "1024x1024"
7 | }
8 | ],
9 | "info" : {
10 | "author" : "xcode",
11 | "version" : 1
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Examples/CocktailExample/CocktailExample/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/CocktailExample/CocktailExample/Atoms.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import Atoms
3 |
4 | let cocktailServiceAtom = Atom(CocktailService(search: CocktailAPI.searchCocktail))
5 |
6 | let searchCocktailTextAtom = Atom("")
7 |
8 | let searchCocktailsAtom = AsyncAtom<[Cocktail]> {
9 | @UseAtomValue(searchCocktailTextAtom) var searchText
10 | @UseAtomValue(cocktailServiceAtom) var service
11 | if searchText.isEmpty {
12 | return []
13 | }
14 | return try await service.search(searchText)
15 | }
16 |
17 | let favoritesAtom = Atom<[Cocktail]>([])
18 |
19 | let favoritesManagerAtom = ObservableObjectAtom(FavoritesManager())
20 |
21 |
22 |
--------------------------------------------------------------------------------
/Examples/CocktailExample/CocktailExample/CocktaiItemView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CocktaiItemView.swift
3 | // CocktailExample
4 | //
5 | // Created by Johan Thorell on 2023-04-17.
6 | //
7 |
8 | import Foundation
9 | import SwiftUI
10 | import Atoms
11 |
12 | struct CocktailItemView: View {
13 | @UseAtomValue(favoritesManagerAtom) var favoritesManager
14 | let cocktail: Cocktail
15 |
16 | var body: some View {
17 | HStack {
18 | CocktailImageView(imageSource: cocktail.strDrinkThumb, size: .thumbnail)
19 | Text(cocktail.strDrink)
20 | Spacer()
21 | if favoritesManager.isFavorite(cocktail) {
22 | Image(systemName: "star.fill")
23 | }
24 | }.swipeActions {
25 | if favoritesManager.isFavorite(cocktail) {
26 | Button("Remove favorite") {
27 | favoritesManager.remove(cocktail)
28 | }.tint(.red)
29 | } else {
30 | Button("Add to favorite") {
31 | favoritesManager.add(cocktail)
32 | }.tint(.indigo)
33 | }
34 | }
35 | }
36 | }
37 |
38 | struct CocktailItemView_Previews: PreviewProvider {
39 | static var previews: some View {
40 | CocktailItemView(cocktail: .mock)
41 | .inject(favoritesManagerAtom) {
42 | .init(favorites: [.mock])
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/Examples/CocktailExample/CocktailExample/CocktailDetailView.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import SwiftUI
3 | import Atoms
4 |
5 | struct CocktailDetailView: View {
6 | let cocktail: Cocktail
7 | @UseAtomValue(favoritesManagerAtom) var favoritesManager
8 |
9 | var body: some View {
10 | ScrollView {
11 | CocktailImageView(imageSource: cocktail.strImageSource, size: .regular)
12 | Text(cocktail.strInstructions)
13 | }
14 | .padding()
15 | .navigationTitle(cocktail.strDrink)
16 | .toolbar {
17 | if favoritesManager.isFavorite(cocktail) {
18 | Button {
19 | favoritesManager.remove(cocktail)
20 | } label: {
21 | Image(systemName: "star.fill")
22 | }
23 | } else {
24 | Button {
25 | favoritesManager.add(cocktail)
26 | } label: {
27 | Image(systemName: "star")
28 | }
29 | }
30 | }
31 | }
32 | }
33 |
34 | struct CocktailDetailView_Previews: PreviewProvider {
35 | static var previews: some View {
36 | NavigationStack {
37 | CocktailDetailView(cocktail: .mock)
38 | .inject(favoritesManagerAtom) {
39 | .init(favorites: [.mock])
40 | }
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/Examples/CocktailExample/CocktailExample/CocktailExampleApp.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 |
3 | @main
4 | struct CocktailExampleApp: App {
5 | var body: some Scene {
6 | WindowGroup {
7 | CocktailsView()
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Examples/CocktailExample/CocktailExample/CocktailImageView.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 |
3 | struct CocktailImageView: View {
4 | enum Size {
5 | case regular
6 | case thumbnail
7 | }
8 | let imageSource: String?
9 | let size: Size
10 |
11 | var body: some View {
12 | if let imgSource = imageSource, let url = URL(string: imgSource) {
13 | AsyncImage(
14 | url: url,
15 | content: { image in
16 | image.resizable()
17 | .aspectRatio(contentMode: .fit)
18 | .frame(maxWidth: size == .regular ? 300 : 50, maxHeight: size == .regular ? 300 : 50)
19 | },
20 | placeholder: {
21 | ProgressView()
22 | }
23 | )
24 | } else {
25 | Text("🍹")
26 | .font(size == .regular ? .system(size: 90) : .system(size: 20))
27 | }
28 | }
29 | }
30 | struct CocktailImageView_Previews: PreviewProvider {
31 | static var previews: some View {
32 | CocktailImageView(imageSource: nil, size: .regular)
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/Examples/CocktailExample/CocktailExample/CocktailsView.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 | import Foundation
3 | import Atoms
4 |
5 | struct CocktailsView: View {
6 | @UseAtom(searchCocktailTextAtom) var searchCocktailText
7 | @UseAtomValue(searchCocktailsAtom) var searchCocktailsState
8 | @UseAtomValue(favoritesManagerAtom) var favoritesManager
9 | var body: some View {
10 | NavigationStack {
11 | List {
12 | if let cocktails = searchCocktailsState.value, !cocktails.isEmpty {
13 | ForEach(cocktails) { cocktail in
14 | NavigationLink {
15 | CocktailDetailView(cocktail: cocktail)
16 | } label: {
17 | CocktailItemView(cocktail: cocktail)
18 | }
19 | }
20 | } else {
21 | ForEach(favoritesManager.favorites) { cocktail in
22 | NavigationLink {
23 | CocktailDetailView(cocktail: cocktail)
24 | } label: {
25 | CocktailItemView(cocktail: cocktail)
26 | }
27 | }
28 | }
29 | }
30 | .searchable(text: $searchCocktailText)
31 | .navigationTitle("Search cocktails")
32 | }
33 | }
34 | }
35 |
36 | struct CocktailsView_Previews: PreviewProvider {
37 | static var previews: some View {
38 | CocktailsView()
39 | .inject(searchCocktailsAtom) {
40 | .success([.init(idDrink: "1", strDrink: "Drink2", strInstructions: "Some instructions", strImageSource: nil, strDrinkThumb: nil)])
41 | }
42 | }
43 | }
44 |
45 |
--------------------------------------------------------------------------------
/Examples/CocktailExample/CocktailExample/Model.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | struct Drinks: Codable {
4 | let drinks: [Cocktail]
5 | }
6 | struct Cocktail: Codable, Hashable, Identifiable {
7 | var id: String {
8 | idDrink
9 | }
10 | let idDrink: String
11 | let strDrink: String
12 | let strInstructions: String
13 | let strImageSource: String?
14 | let strDrinkThumb: String?
15 | }
16 |
17 | extension Cocktail {
18 | static var mock: Cocktail {
19 | .init(idDrink: "1",
20 | strDrink: "Margarita",
21 | strInstructions: "Do things",
22 | strImageSource: nil,
23 | strDrinkThumb: nil)
24 | }
25 | }
26 |
27 | struct CocktailAPI {
28 | static func searchCocktail(_ query: String) async throws -> [Cocktail] {
29 | guard let urlEncoded = query.addingPercentEncoding(withAllowedCharacters: .alphanumerics) else {
30 | fatalError()
31 | }
32 | let (data, _) = try await URLSession.shared.data(from: URL(string: "https://www.thecocktaildb.com/api/json/v1/1/search.php?s=\(urlEncoded)")!)
33 | let decoder = JSONDecoder()
34 | return try decoder.decode(Drinks.self, from: data).drinks
35 | }
36 | }
37 |
38 | let cocktailAPI = CocktailAPI()
39 |
40 | struct CocktailService {
41 | var search: (String) async throws -> [Cocktail]
42 | }
43 |
44 | class FavoritesManager: ObservableObject {
45 | @Published var favorites: [Cocktail] = []
46 |
47 | init(favorites: [Cocktail] = []) {
48 | self.favorites = favorites
49 | }
50 |
51 | func isFavorite(_ cocktail: Cocktail) -> Bool {
52 | return favorites.contains(where: { $0.id == cocktail.id})
53 | }
54 | func add(_ cocktail: Cocktail) {
55 | favorites.append(cocktail)
56 | }
57 | func remove(_ cocktail: Cocktail) {
58 | favorites.removeAll(where: { $0.id == cocktail.id })
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/Examples/CocktailExample/CocktailExample/Preview Content/Preview Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/CocktailExample/CocktailExampleTests/CocktailExampleTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CocktailExampleTests.swift
3 | // CocktailExampleTests
4 | //
5 | // Created by Johan Thorell on 2023-04-17.
6 | //
7 |
8 | import XCTest
9 | @testable import CocktailExample
10 | import Atoms
11 |
12 | final class CocktailExampleTests: XCTestCase {
13 |
14 | @MainActor
15 | func testSearchForCocktail() async throws {
16 | let mock: [Cocktail] = [.mock]
17 | try await TestStore { store in
18 | store.inject(cocktailServiceAtom) {
19 | .init { _ in
20 | return mock
21 | }
22 | }
23 | @CaptureAtomValue(searchCocktailsAtom) var cocktailState: AsyncState<[Cocktail]>
24 | @CaptureAtom(searchCocktailTextAtom) var searchText: String
25 | searchText = "Foo"
26 | try await expectEqual(cocktailState, .success(mock))
27 | }
28 | }
29 |
30 | @MainActor
31 | func testAddToFavorite() async throws {
32 | await TestStore { store in
33 | @CaptureAtomValue(favoritesManagerAtom) var favoriteManager: FavoritesManager
34 | favoriteManager.add(.mock)
35 | XCTAssertEqual(favoriteManager.favorites, [.mock])
36 | favoriteManager.remove(.mock)
37 | XCTAssert(favoriteManager.favorites.isEmpty)
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/Examples/CocktailExample/README.md:
--------------------------------------------------------------------------------
1 | # Cocktail Example
2 | An example app that searches for cocktails using a real API. You can also toggle favorites, demonstrating how state is shared across screens. Includes unit tests
3 |
--------------------------------------------------------------------------------
/Examples/SignupExample/README.md:
--------------------------------------------------------------------------------
1 | # SignupExample
2 | Sign up screen with validation and unit tests.
3 |
--------------------------------------------------------------------------------
/Examples/SignupExample/SignupExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Examples/SignupExample/SignupExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/SignupExample/SignupExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved:
--------------------------------------------------------------------------------
1 | {
2 | "pins" : [
3 | {
4 | "identity" : "swift-async-expectations",
5 | "kind" : "remoteSourceControl",
6 | "location" : "https://github.com/bangerang/swift-async-expectations.git",
7 | "state" : {
8 | "revision" : "1f65a7dcc7810eb4e5108e007dcfc03466aac0e8",
9 | "version" : "0.1.0"
10 | }
11 | },
12 | {
13 | "identity" : "swift-custom-dump",
14 | "kind" : "remoteSourceControl",
15 | "location" : "https://github.com/pointfreeco/swift-custom-dump",
16 | "state" : {
17 | "revision" : "84b30e1af72e0ffe6dfbfe39d53b8173caacf224",
18 | "version" : "0.10.2"
19 | }
20 | },
21 | {
22 | "identity" : "swift-docc-plugin",
23 | "kind" : "remoteSourceControl",
24 | "location" : "https://github.com/apple/swift-docc-plugin",
25 | "state" : {
26 | "revision" : "9b1258905c21fc1b97bf03d1b4ca12c4ec4e5fda",
27 | "version" : "1.2.0"
28 | }
29 | },
30 | {
31 | "identity" : "swift-docc-symbolkit",
32 | "kind" : "remoteSourceControl",
33 | "location" : "https://github.com/apple/swift-docc-symbolkit",
34 | "state" : {
35 | "revision" : "b45d1f2ed151d057b54504d653e0da5552844e34",
36 | "version" : "1.0.0"
37 | }
38 | },
39 | {
40 | "identity" : "xctest-dynamic-overlay",
41 | "kind" : "remoteSourceControl",
42 | "location" : "https://github.com/pointfreeco/xctest-dynamic-overlay",
43 | "state" : {
44 | "revision" : "ab8c9f45843694dd16be4297e6d44c0634fd9913",
45 | "version" : "0.8.4"
46 | }
47 | }
48 | ],
49 | "version" : 2
50 | }
51 |
--------------------------------------------------------------------------------
/Examples/SignupExample/SignupExample/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Examples/SignupExample/SignupExample/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "platform" : "ios",
6 | "size" : "1024x1024"
7 | }
8 | ],
9 | "info" : {
10 | "author" : "xcode",
11 | "version" : 1
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Examples/SignupExample/SignupExample/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/SignupExample/SignupExample/Atoms.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import Atoms
3 |
4 | let usernameAtom = Atom("")
5 |
6 | let passwordAtom = Atom("")
7 |
8 | let usernameIsValidAtom = DerivedAtom {
9 | @UseAtomValue(usernameAtom) var username;
10 |
11 | return username.count >= 5
12 | }
13 |
14 | let passwordIsValidAtom = DerivedAtom {
15 | @UseAtomValue(passwordAtom) var password;
16 | guard
17 | let regex = try? Regex(#"^(?=.*[A-Z])(?=.*[a-z])(?=.*\d).{8,}$"#),
18 | let match = try? regex.firstMatch(in: password)
19 | else {
20 | return false
21 | }
22 | return !match.isEmpty
23 | }
24 |
25 | let signupIsValidAtom = DerivedAtom {
26 | @UseAtomValue(usernameIsValidAtom) var usernameValid
27 | @UseAtomValue(passwordIsValidAtom) var passwordValid
28 | return usernameValid && passwordValid
29 | }
30 |
31 | let signedInStateAtom = Atom?>(nil)
32 |
--------------------------------------------------------------------------------
/Examples/SignupExample/SignupExample/Preview Content/Preview Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/SignupExample/SignupExample/SignupExampleApp.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 |
3 | @main
4 | struct SignupExampleApp: App {
5 | var body: some Scene {
6 | WindowGroup {
7 | SignupView()
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Examples/SignupExample/SignupExample/SignupView.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 | import Atoms
3 | import RegexBuilder
4 | import Combine
5 |
6 | struct SignupView: View {
7 | @UseAtom(usernameAtom) var username
8 | @UseAtom(passwordAtom) var password
9 | @UseAtom(signedInStateAtom) var signupState
10 | @UseAtomValue(signupIsValidAtom) var signupIsValid
11 |
12 | var body: some View {
13 | NavigationStack {
14 | Group {
15 | if let signupState {
16 | switch signupState {
17 | case .loading:
18 | ProgressView()
19 | case .success:
20 | Text("Success")
21 | case .failure:
22 | Text("Failure")
23 | }
24 | } else {
25 | Form {
26 | Section {
27 | TextField("Username", text: $username)
28 | } footer: {
29 | Text("At least 5 characters.")
30 | }
31 | Section {
32 | SecureField("Password", text: $password)
33 | } footer: {
34 | Text("One uppercase letter, one lowercase letter, one number, and a minimum length of 8 characters.")
35 | }
36 |
37 | Section {
38 | Button("Sign up") {
39 | Task {
40 | try await performSignUp()
41 | }
42 | }.disabled(!signupIsValid)
43 | }
44 | }
45 | }
46 | }
47 | .navigationTitle("Sign up")
48 | }
49 | }
50 |
51 | func performSignUp() async throws {
52 | signupState = .loading
53 | try await Task.sleep(until: .now + .seconds(1), clock: .continuous)
54 | signupState = .success(())
55 | }
56 | }
57 |
58 | struct SignupView_Previews: PreviewProvider {
59 | static var previews: some View {
60 | SignupView()
61 | .inject(usernameAtom) {
62 | "johndoe"
63 | }
64 | .inject(passwordAtom) {
65 | "passw0rD"
66 | }
67 | }
68 | }
69 |
70 |
--------------------------------------------------------------------------------
/Examples/SignupExample/SignupExampleTests/SignupExampleTests.swift:
--------------------------------------------------------------------------------
1 | import XCTest
2 | @testable import SignupExample
3 | import Atoms
4 |
5 | final class SignupExampleTests: XCTestCase {
6 | @MainActor
7 | func testSignup() async throws {
8 | try await TestStore { store in
9 | @CaptureAtom(usernameAtom) var username: String
10 | @CaptureAtom(passwordAtom) var password: String
11 | @CaptureAtomValue(signupIsValidAtom) var signupIsValid: Bool
12 | XCTAssert(!signupIsValid)
13 | username = "johndoe"
14 | password = "passw0rD"
15 | try await expect(signupIsValid)
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Examples/TodoExample/README.md:
--------------------------------------------------------------------------------
1 | # TodoExample
2 | Todo list with unit tests.
3 |
--------------------------------------------------------------------------------
/Examples/TodoExample/TodoExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Examples/TodoExample/TodoExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/TodoExample/TodoExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved:
--------------------------------------------------------------------------------
1 | {
2 | "pins" : [
3 | {
4 | "identity" : "swift-async-expectations",
5 | "kind" : "remoteSourceControl",
6 | "location" : "https://github.com/bangerang/swift-async-expectations.git",
7 | "state" : {
8 | "revision" : "1f65a7dcc7810eb4e5108e007dcfc03466aac0e8",
9 | "version" : "0.1.0"
10 | }
11 | },
12 | {
13 | "identity" : "swift-custom-dump",
14 | "kind" : "remoteSourceControl",
15 | "location" : "https://github.com/pointfreeco/swift-custom-dump",
16 | "state" : {
17 | "revision" : "84b30e1af72e0ffe6dfbfe39d53b8173caacf224",
18 | "version" : "0.10.2"
19 | }
20 | },
21 | {
22 | "identity" : "swift-docc-plugin",
23 | "kind" : "remoteSourceControl",
24 | "location" : "https://github.com/apple/swift-docc-plugin",
25 | "state" : {
26 | "revision" : "9b1258905c21fc1b97bf03d1b4ca12c4ec4e5fda",
27 | "version" : "1.2.0"
28 | }
29 | },
30 | {
31 | "identity" : "swift-docc-symbolkit",
32 | "kind" : "remoteSourceControl",
33 | "location" : "https://github.com/apple/swift-docc-symbolkit",
34 | "state" : {
35 | "revision" : "b45d1f2ed151d057b54504d653e0da5552844e34",
36 | "version" : "1.0.0"
37 | }
38 | },
39 | {
40 | "identity" : "xctest-dynamic-overlay",
41 | "kind" : "remoteSourceControl",
42 | "location" : "https://github.com/pointfreeco/xctest-dynamic-overlay",
43 | "state" : {
44 | "revision" : "ab8c9f45843694dd16be4297e6d44c0634fd9913",
45 | "version" : "0.8.4"
46 | }
47 | }
48 | ],
49 | "version" : 2
50 | }
51 |
--------------------------------------------------------------------------------
/Examples/TodoExample/TodoExample/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Examples/TodoExample/TodoExample/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "platform" : "ios",
6 | "size" : "1024x1024"
7 | }
8 | ],
9 | "info" : {
10 | "author" : "xcode",
11 | "version" : 1
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Examples/TodoExample/TodoExample/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/TodoExample/TodoExample/Atoms.swift:
--------------------------------------------------------------------------------
1 | import Atoms
2 |
3 | let todosAtom = Atom<[Todo]>([])
4 |
5 | let filterTodosOptionAtom = Atom(FilterOption.all)
6 |
7 | let searchTodosAtom = Atom("")
8 |
9 | let filteredTodosAtom = DerivedAtom {
10 | @UseAtomValue(searchTodosAtom) var searchText
11 | @UseAtomValue(todosAtom) var todos
12 | @UseAtomValue(filterTodosOptionAtom) var filterTodosOption;
13 |
14 | let searched = searchText.isEmpty ? todos : todos.filter {
15 | return $0.name.localizedCaseInsensitiveContains(searchText)
16 | }
17 |
18 | switch filterTodosOption {
19 | case .all:
20 | return searched
21 | case .notCompleted:
22 | return searched.filter { !$0.completed }
23 | case .completed:
24 | return searched.filter { $0.completed }
25 | }
26 | }
27 |
28 |
--------------------------------------------------------------------------------
/Examples/TodoExample/TodoExample/Model.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | struct Todo: Identifiable, Codable, Equatable {
4 | var id = UUID()
5 | var name: String
6 | var completed = false
7 | }
8 |
9 | extension Array where Element == Todo {
10 | static var mock: [Todo] {
11 | [
12 | .init(name: "Todo1"),
13 | .init(name: "Todo2"),
14 | .init(name: "Todo3"),
15 | .init(name: "Todo4", completed: true)
16 | ]
17 | }
18 | }
19 |
20 | enum FilterOption: String, CaseIterable {
21 | case all = "Show all"
22 | case notCompleted = "Not completed"
23 | case completed = "Completed"
24 | }
25 |
--------------------------------------------------------------------------------
/Examples/TodoExample/TodoExample/NewTodoView.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 | import Atoms
3 |
4 | struct NewTodoView: View {
5 | @UseAtom(todosAtom) var todos
6 | @State var newTodoName = ""
7 | var body: some View {
8 | TextField("Add new todo", text: $newTodoName) {
9 | if !newTodoName.isEmpty {
10 | todos.append(.init(name: newTodoName))
11 | Task { @MainActor in
12 | newTodoName = ""
13 | }
14 |
15 | }
16 | }
17 | }
18 | }
19 |
20 | struct NewTodoView_Previews: PreviewProvider {
21 | static var previews: some View {
22 | NewTodoView()
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Examples/TodoExample/TodoExample/Preview Content/Preview Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/TodoExample/TodoExample/TodoExampleApp.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TodoExampleApp.swift
3 | // TodoExample
4 | //
5 | // Created by Johan Thorell on 2023-04-17.
6 | //
7 |
8 | import SwiftUI
9 |
10 | @main
11 | struct TodoExampleApp: App {
12 | var body: some Scene {
13 | WindowGroup {
14 | TodoView()
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Examples/TodoExample/TodoExample/TodoItemView.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 | import Atoms
3 |
4 | struct TodoItemView: View {
5 | @UseAtom var todo: Todo
6 |
7 | init(todoAtom: Atom) {
8 | self._todo = UseAtom(todoAtom)
9 | }
10 | var body: some View {
11 | HStack {
12 | TextField("", text: $todo.name)
13 | .strikethrough(todo.completed)
14 | Toggle("", isOn: $todo.completed)
15 |
16 | }
17 | }
18 | }
19 |
20 | struct TodoItemView_Previews: PreviewProvider {
21 | static var previews: some View {
22 | TodoItemView(todoAtom: .init(.init(name: "Todo")))
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Examples/TodoExample/TodoExample/TodoView.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 | import Atoms
3 |
4 | struct TodoView: View {
5 | @UseAtomValue(filteredTodosAtom) var filteredTodos
6 | @UseAtom(filterTodosOptionAtom) var filterTodosOption
7 | @UseAtom(searchTodosAtom) var searchText
8 | @UseAtom(todosAtom) var todos
9 |
10 | var body: some View {
11 | NavigationStack {
12 | List {
13 | NewTodoView()
14 | ForEach(filteredTodos) { todo in
15 | TodoItemView(todoAtom: Atom(todo).onUpdate(skip: 1) { newValue in
16 | if let index = todos.firstIndex(of: todo) {
17 | todos[index] = newValue
18 | }
19 | })
20 | }.onDelete { indexSet in
21 | todos.remove(atOffsets: indexSet)
22 | }
23 | }
24 | .animation(.easeInOut, value: filteredTodos)
25 | .searchable(text: $searchText)
26 | .toolbar {
27 | Picker("", selection: $filterTodosOption) {
28 | ForEach(FilterOption.allCases, id: \.self) {
29 | Text($0.rawValue)
30 | }
31 | }
32 | }
33 | .navigationTitle("Todos")
34 | }
35 | }
36 | }
37 |
38 | struct TodoView_Previews: PreviewProvider {
39 | static var previews: some View {
40 | TodoView()
41 | .inject(todosAtom) {
42 | .mock
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/Examples/TodoExample/TodoExampleTests/TodoExampleTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TodoExampleTests.swift
3 | // TodoExampleTests
4 | //
5 | // Created by Johan Thorell on 2023-04-17.
6 | //
7 |
8 | import XCTest
9 | @testable import TodoExample
10 | import Atoms
11 |
12 | final class TodoExampleTests: XCTestCase {
13 | @MainActor
14 | func testFilterCompletedTodos() async throws {
15 | try await TestStore { store in
16 | let firstMock = Todo(name: "Todo1")
17 | let secondMock = Todo(name: "Todo2", completed: true)
18 | let mock: [Todo] = [firstMock, secondMock]
19 | store.inject(todosAtom) {
20 | return mock
21 | }
22 | @CaptureAtom(filterTodosOptionAtom) var filterTodosOption: FilterOption
23 | @CaptureAtomValue(filteredTodosAtom) var filteredTodos: [Todo]
24 | filterTodosOption = .completed
25 | try await expectEqual(filteredTodos, [secondMock])
26 | }
27 | }
28 |
29 | @MainActor
30 | func testFilterNotCompletedTodos() async throws {
31 | try await TestStore { store in
32 | let firstMock = Todo(name: "Todo1")
33 | let secondMock = Todo(name: "Todo2", completed: true)
34 | let mock: [Todo] = [firstMock, secondMock]
35 | store.inject(todosAtom) {
36 | return mock
37 | }
38 | @CaptureAtom(filterTodosOptionAtom) var filterTodosOption: FilterOption
39 | @CaptureAtomValue(filteredTodosAtom) var filteredTodos: [Todo]
40 | filterTodosOption = .notCompleted
41 | try await expectEqual(filteredTodos, [firstMock])
42 | }
43 | }
44 |
45 | @MainActor
46 | func testSearchTodos() async throws {
47 | try await TestStore { store in
48 | let firstMock = Todo(name: "Todo1")
49 | let secondMock = Todo(name: "Todo2", completed: true)
50 | let mock: [Todo] = [firstMock, secondMock]
51 | store.inject(todosAtom) {
52 | return mock
53 | }
54 | @CaptureAtomValue(filteredTodosAtom) var filteredTodos: [Todo]
55 | @CaptureAtom(searchTodosAtom) var searchTodos: String
56 | searchTodos = "Todo2"
57 | try await expectEqual(filteredTodos, [secondMock])
58 | }
59 | }
60 |
61 | @MainActor
62 | func testSetCompletedTodo() async throws {
63 | try await TestStore { store in
64 | let firstMock = Todo(name: "Todo1")
65 | let secondMock = Todo(name: "Todo2")
66 | let mock: [Todo] = [firstMock, secondMock]
67 | @UseAtom(todosAtom) var todos: [Todo]
68 | todos = mock
69 | try await expectEqual(todos, mock)
70 | $todos[0].wrappedValue.completed = true
71 | try await expectEqual(todos.first?.completed, true)
72 | }
73 | }
74 |
75 | }
76 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Johan Thorell.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Package.resolved:
--------------------------------------------------------------------------------
1 | {
2 | "pins" : [
3 | {
4 | "identity" : "swift-async-expectations",
5 | "kind" : "remoteSourceControl",
6 | "location" : "https://github.com/bangerang/swift-async-expectations.git",
7 | "state" : {
8 | "revision" : "1f65a7dcc7810eb4e5108e007dcfc03466aac0e8",
9 | "version" : "0.1.0"
10 | }
11 | },
12 | {
13 | "identity" : "swift-custom-dump",
14 | "kind" : "remoteSourceControl",
15 | "location" : "https://github.com/pointfreeco/swift-custom-dump",
16 | "state" : {
17 | "revision" : "84b30e1af72e0ffe6dfbfe39d53b8173caacf224",
18 | "version" : "0.10.2"
19 | }
20 | },
21 | {
22 | "identity" : "swift-docc-plugin",
23 | "kind" : "remoteSourceControl",
24 | "location" : "https://github.com/apple/swift-docc-plugin",
25 | "state" : {
26 | "revision" : "9b1258905c21fc1b97bf03d1b4ca12c4ec4e5fda",
27 | "version" : "1.2.0"
28 | }
29 | },
30 | {
31 | "identity" : "swift-docc-symbolkit",
32 | "kind" : "remoteSourceControl",
33 | "location" : "https://github.com/apple/swift-docc-symbolkit",
34 | "state" : {
35 | "revision" : "b45d1f2ed151d057b54504d653e0da5552844e34",
36 | "version" : "1.0.0"
37 | }
38 | },
39 | {
40 | "identity" : "xctest-dynamic-overlay",
41 | "kind" : "remoteSourceControl",
42 | "location" : "https://github.com/pointfreeco/xctest-dynamic-overlay",
43 | "state" : {
44 | "revision" : "ab8c9f45843694dd16be4297e6d44c0634fd9913",
45 | "version" : "0.8.4"
46 | }
47 | }
48 | ],
49 | "version" : 2
50 | }
51 |
--------------------------------------------------------------------------------
/Package.swift:
--------------------------------------------------------------------------------
1 | // swift-tools-version: 5.7
2 | // The swift-tools-version declares the minimum version of Swift required to build this package.
3 |
4 | import PackageDescription
5 |
6 | let package = Package(
7 | name: "Atoms",
8 | platforms: [.iOS(.v13), .macOS(.v10_15)],
9 | products: [
10 | .library(
11 | name: "Atoms",
12 | targets: ["Atoms"]),
13 | ],
14 | dependencies: [
15 | .package(url: "https://github.com/bangerang/swift-async-expectations.git", from: "0.1.0"),
16 | .package(url: "https://github.com/pointfreeco/swift-custom-dump", from: "0.3.0"),
17 | .package(url: "https://github.com/apple/swift-docc-plugin", from: "1.1.0"),
18 | .package(url: "https://github.com/pointfreeco/xctest-dynamic-overlay", from: "0.2.0")
19 | ],
20 | targets: [
21 | .target(
22 | name: "Atoms",
23 | dependencies: [
24 | .product(name: "CustomDump", package: "swift-custom-dump"),
25 | .product(name: "AsyncExpectations", package: "swift-async-expectations")
26 | ]
27 | ),
28 | .testTarget(
29 | name: "AtomsTests",
30 | dependencies: ["Atoms", .product(name: "AsyncExpectations", package: "swift-async-expectations")]),
31 | ]
32 | )
33 |
--------------------------------------------------------------------------------
/Resources/TestScreenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bangerang/swift-atoms/d19c9a66c5803f60ca7ed08e6f32eab047f6234a/Resources/TestScreenshot.png
--------------------------------------------------------------------------------
/Sources/Atoms/AsyncState.swift:
--------------------------------------------------------------------------------
1 | /// An enum representing the state of an asynchronous operation.
2 | public enum AsyncState: Equatable {
3 |
4 | public static func == (lhs: AsyncState, rhs: AsyncState) -> Bool {
5 | switch (lhs, rhs) {
6 | case (.loading, .loading):
7 | return true
8 | case (.success(let lhs), .success(let rhs)):
9 | return areEqual(first: lhs, second: rhs)
10 | default:
11 | return false
12 | }
13 | }
14 |
15 | /// Indicates that the asynchronous operation is in progress.
16 | case loading
17 |
18 | /// Indicates that the asynchronous operation has completed successfully with the provided `Root` value.
19 | case success(Root)
20 |
21 | /// Indicates that the asynchronous operation has failed with the provided `Error`.
22 | case failure(Error)
23 |
24 | /// The `Root` value associated with the `.success` case, if any.
25 | public var value: Root? {
26 | if case .success(let value) = self {
27 | return value
28 | }
29 | return nil
30 | }
31 |
32 | /// Returns `true` if the `AsyncState` is in the `.loading` case, `false` otherwise.
33 | public var loading: Bool {
34 | if case .loading = self {
35 | return true
36 | }
37 | return false
38 | }
39 |
40 | /// The `Error` value associated with the `.failure` case, if any.
41 | public var failure: Error? {
42 | if case .failure(let error) = self {
43 | return error
44 | }
45 | return nil
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/Sources/Atoms/AtomProvider.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 |
3 | /// An extension to `View` that provides convenience methods for injecting mutation closures and enabling logging for `Atom` operations.
4 | extension View {
5 |
6 | /// Injects a mutation closure for a given `ReadableAtom` into the view hierarchy.
7 | ///
8 | /// - Parameters:
9 | /// - readableAtom: A `ReadableAtom` instance whose value will be mutated by the provided closure.
10 | /// - mutation: A closure that returns the new value for the `ReadableAtom`.
11 | ///
12 | /// - Returns: The modified view with the mutation closure injected into the view hierarchy.
13 | ///
14 | /// Usage:
15 | ///
16 | /// ```swift
17 | /// Text("Hello, World!")
18 | /// .inject(counterAtom, mutation: { newValue })
19 | /// ```
20 | @MainActor
21 | public func inject(_ readableAtom: R, mutation: @escaping () -> R.T) -> Self {
22 | StoreConfig.store.inject(readableAtom, mutation: mutation)
23 | return self
24 | }
25 |
26 | /// Enables or disables logging for `Atom` operations.
27 | ///
28 | /// - Parameters:
29 | /// - debugScope: An optional `AtomStore.DebugScope` value to specify the logging scope. Defaults to `nil`.
30 | /// - enabled: A Boolean value that indicates whether logging should be enabled (`true`) or disabled (`false`). Defaults to `true`.
31 | ///
32 | /// - Returns: The modified view with the logging setting applied.
33 | ///
34 | /// Usage:
35 | ///
36 | /// ```swift
37 | /// Text("Hello, World!")
38 | /// .enableAtomLogging(debugScope: .include([counterAtom]))
39 | /// ```
40 | @MainActor
41 | public func enableAtomLogging(_ debugScope: AtomStore.DebugScope? = nil, enabled: Bool = true) -> Self {
42 | AtomStore.shared.debugScope = debugScope
43 | AtomStore.shared.loggingEnabled = enabled
44 | return self
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/Sources/Atoms/Atoms/Atom.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | /// A generic `Atom` represents a state for a given value of type `T`.
4 | ///
5 | /// `Atom` manages a mutable state for a value of type `T`.
6 | ///
7 | /// Example:
8 | ///
9 | /// ```swift
10 | /// let myAtom = Atom(0)
11 | ///
12 | /// struct ContentView: View {
13 | /// @UseAtom(myAtom) var count
14 | ///
15 | /// var body: some View {
16 | /// VStack {
17 | /// Text("Current count: \(count)")
18 | /// TextField("Update count", value: $count, formatter: NumberFormatter())
19 | /// }
20 | /// }
21 | /// }
22 | /// ```
23 | ///
24 | /// Conforms to the `WritableAtom` and `ResettableAtom` protocols.
25 |
26 | public struct Atom: WritableAtom, ResettableAtom {
27 | /// The type of the value managed by the atom.
28 | public let type: T.Type
29 | /// A unique identifier for the atom.
30 | public let id: UUID
31 | /// A boolean indicating whether the atom should be kept alive in memory.
32 | public let keepAlive: Bool
33 |
34 | private let defaultValue: T
35 | private let setup: @MainActor () -> Void
36 |
37 | /// Creates an `Atom` with a default value.
38 | ///
39 | /// - Parameters:
40 | /// - defaultValue: The default value for the atom.
41 | /// - keepAlive: A boolean indicating whether the atom should be kept alive in memory.
42 | /// - file: The file where the atom is declared.
43 | /// - function: The function where the atom is declared.
44 | /// - line: The line number where the atom is declared.
45 | public init(_ defaultValue: T, keepAlive: Bool = false, file: String = #file, function: String = #function, line: Int = #line) {
46 | self.keepAlive = keepAlive
47 | let id = UUID()
48 | self.type = T.self
49 | self.id = id
50 | self.defaultValue = defaultValue
51 | self.setup = {
52 | let atom = AtomValue(defaultValue, id: id)
53 | let store = StoreConfig.store
54 | store.addAtomValue(atom, for: id)
55 | setDebugInfoForCurrentStorage(id: id, file: file, function: function, line: line)
56 | }
57 | atomConfigurations[id] = setup
58 | }
59 |
60 | /// Resets the atom to its default value, optionally executing a callback.
61 | ///
62 | /// This method is useful for resetting the atom to its initial state. If a callback is registered,
63 | /// it will be executed before updating the atom's value.
64 | public func reset() {
65 | Task { @MainActor in
66 | let store = StoreConfig.store
67 | guard let atom: AtomValue = store.getAtomValue(for: id) else {
68 | return
69 | }
70 |
71 | var value = defaultValue
72 |
73 | if let onReset = store.resettableCallbacks[id] as? (inout T) -> Void {
74 | onReset(&value)
75 | }
76 |
77 | atom.value = value
78 | }
79 |
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/Sources/Atoms/Atoms/DerivedAtom.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | /// A generic `DerivedAtom` represents a derived state for a given value of type `T`.
4 | ///
5 | /// `DerivedAtom` manages a read-only state derived from other atom states. The derived state is automatically updated
6 | /// when any of its dependencies change.
7 | ///
8 | /// Example:
9 | ///
10 | /// ```swift
11 | /// let usernameAtom = Atom("John Doe")
12 | /// let greetingAtom = DerivedAtom {
13 | /// @UseAtomValue(usernameAtom) var username
14 | /// return "Hello, \(username)!"
15 | /// }
16 | ///
17 | /// struct ContentView: View {
18 | /// @UseAtom(usernameAtom) var username
19 | /// @UseAtomValue(greetingAtom) var greeting
20 | ///
21 | /// var body: some View {
22 | /// VStack {
23 | /// Text(greeting)
24 | /// TextField("Update user", text: $username)
25 | /// .padding()
26 | /// .textFieldStyle(.rounded)
27 | /// }
28 | /// }
29 | /// }
30 | /// ```
31 | ///
32 | /// Conforms to the `ReadableAtom` protocol.
33 | public struct DerivedAtom: ReadableAtom {
34 | /// The type of the value managed by the derived atom.
35 | public let type: T.Type
36 | /// A unique identifier for the derived atom.
37 | public let id: UUID
38 | /// A boolean indicating whether the derived atom should be kept alive in memory.
39 | public let keepAlive: Bool
40 |
41 | private let setup: @MainActor () -> Void
42 |
43 | /// Creates a `DerivedAtom` with a closure that computes the derived value.
44 | ///
45 | /// - Parameters:
46 | /// - keepAlive: A boolean indicating whether the derived atom should be kept alive in memory.
47 | /// - file: The file where the derived atom is declared.
48 | /// - function: The function where the derived atom is declared.
49 | /// - line: The line number where the derived atom is declared.
50 | /// - get: A closure that computes the derived value based on other atom values.
51 | public init(keepAlive: Bool = false, file: String = #file, function: String = #function, line: Int = #line, get: @MainActor @escaping () -> T) {
52 | self.keepAlive = keepAlive
53 | let id = UUID()
54 | self.id = id
55 | self.type = T.self
56 | self.setup = {
57 | _ = findObservables(using: id) {
58 | let atom = AtomValue(get(), id: id)
59 | let store = StoreConfig.store
60 | store.addAtomValue(atom, for: id)
61 | setDebugInfoForCurrentStorage(id: id, file: file, function: function, line: line)
62 | return atom
63 | } observedChanged: { atom in
64 | atom.value = get()
65 | }
66 | }
67 | atomConfigurations[id] = setup
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/Sources/Atoms/Atoms/ObservableObjectAtom.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 | import CustomDump
3 |
4 | /// An `ObservableObjectAtom` represents a readable state for a given value of type `T` that conforms to `ObservableObject`.
5 | ///
6 | /// `ObservableObjectAtom` wraps a value of type `T` and updates the state when the wrapped object's `objectWillChange`
7 | /// publisher sends an event.
8 | ///
9 | /// This can be used for more advanced state management, as it allows you to handle state inside the `ObservableObject`
10 | ///
11 | /// Usage:
12 | ///
13 | /// ```swift
14 | /// class Counter: ObservableObject {
15 | /// @Published var value: Int = 0
16 | /// }
17 | ///
18 | /// let myCounter = Counter()
19 | /// let myCounterAtom = ObservableObjectAtom(myCounter)
20 | ///
21 | /// struct ContentView: View {
22 | /// @UseAtomValue(myCounterAtom) var counter
23 | ///
24 | /// var body: some View {
25 | /// VStack {
26 | /// Text("Counter: \(counter.value)")
27 | /// Button("Increment") {
28 | /// counter.value += 1
29 | /// }
30 | /// }
31 | /// }
32 | /// }
33 | /// ```
34 | public struct ObservableObjectAtom: ReadableAtom {
35 | /// The type of the value managed by the atom.
36 | public let type = T.self
37 | /// A unique identifier for the atom.
38 | public let id: UUID
39 | /// A boolean indicating whether the atom should be kept alive in memory.
40 | public let keepAlive: Bool
41 |
42 | private let setup: @MainActor () -> Void
43 |
44 | /// Creates an `Atom` with a default value.
45 | ///
46 | /// - Parameters:
47 | /// - object: The observable object for the atom.
48 | /// - keepAlive: A boolean indicating whether the atom should be kept alive in memory.
49 | /// - file: The file where the atom is declared.
50 | /// - function: The function where the atom is declared.
51 | /// - line: The line number where the atom is declared.
52 | public init(_ object: T, keepAlive: Bool = false, file: String = #file, function: String = #function, line: Int = #line) {
53 | self.keepAlive = keepAlive
54 | let id = UUID()
55 | self.id = id
56 | self.setup = {
57 | let atom = AtomValue(object, id: id)
58 | let store = StoreConfig.store
59 | store.addAtomValue(atom, for: id)
60 | object.objectWillChange.sink { _ in
61 | } receiveValue: { _ in
62 | Task { @MainActor in
63 | if let atomValue: AtomValue = store.getAtomValue(for: id) {
64 | AtomStore.shared.logValue(for: id, value: object)
65 | atomValue.objectWillChange.send()
66 | }
67 | }
68 | }.store(in: &StoreConfig.store.cancellables[id, default: []])
69 | }
70 | atomConfigurations[id] = setup
71 | setDebugInfoForCurrentStorage(id: id, file: file, function: function, line: line)
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/Sources/Atoms/Internal/AtomValue.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import Combine
3 | import CustomDump
4 |
5 | @dynamicMemberLookup
6 | class AtomValue: ObservableObject, GetSetPublisher {
7 |
8 | var _value: Root
9 | private var getterSubject = PassthroughSubject()
10 | var getterPublisher: AnyPublisher {
11 | return getterSubject.eraseToAnyPublisher()
12 | }
13 | private var setterSubject = PassthroughSubject()
14 | var setterPublisher: AnyPublisher {
15 | return setterSubject.eraseToAnyPublisher()
16 | }
17 |
18 | var customGet: (() -> Root)?
19 | var customSet: ((Root) -> Void)?
20 | var overriden = false
21 |
22 | let id: UUID
23 |
24 | var value: Root {
25 | get {
26 | getterSubject.send(())
27 | if let customGet {
28 | return customGet()
29 | }
30 | return _value
31 | } set {
32 | let valueToTest = self.customGet?() ?? self._value
33 | if !areEqual(first: valueToTest, second: newValue) {
34 | Task { @MainActor in
35 | AtomStore.shared.logValue(for: id, value: newValue)
36 | }
37 | self.objectWillChange.send()
38 | if let set = self.customSet {
39 | set(newValue)
40 | } else {
41 | self._value = newValue
42 | }
43 | self.setterSubject.send(())
44 | }
45 | }
46 | }
47 |
48 | init(_ value: Root, id: UUID, dontCheckEqual: Bool = false) {
49 | self.id = id
50 | self._value = value
51 | }
52 |
53 | subscript(dynamicMember member: KeyPath) -> T {
54 | value[keyPath: member]
55 | }
56 |
57 | subscript(dynamicMember member: WritableKeyPath) -> T {
58 | get {
59 | value[keyPath: member]
60 | } set {
61 | value[keyPath: member] = newValue
62 | }
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/Sources/Atoms/Internal/Atomic.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | final class Atomic {
4 | private let queue: DispatchQueue
5 | private var _value: A
6 | public init(_ value: A, label: String? = nil) {
7 | let queueLabel = label ?? "Atomic serial queue"
8 | self.queue = DispatchQueue(label: queueLabel)
9 | self._value = value
10 | }
11 |
12 | public var value: A {
13 | return queue.sync { self._value }
14 | }
15 |
16 | public func mutate(_ transform: (inout A) -> Void) {
17 | queue.sync {
18 | transform(&self._value)
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Sources/Atoms/Internal/DebugInfo.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | struct DebugInfo {
4 | let name: String
5 | }
6 |
--------------------------------------------------------------------------------
/Sources/Atoms/Internal/ExportAsyncExpectations.swift:
--------------------------------------------------------------------------------
1 | #if DEBUG
2 | @_exported import AsyncExpectations
3 | #endif
4 |
--------------------------------------------------------------------------------
/Sources/Atoms/Internal/GetSetPublisher.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import Combine
3 |
4 | protocol GetSetPublisher {
5 | var getterPublisher: AnyPublisher { get }
6 | var setterPublisher: AnyPublisher { get }
7 | }
8 |
--------------------------------------------------------------------------------
/Sources/Atoms/Internal/RefCounter.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import Combine
3 |
4 | let refCounterDecreased = PassthroughSubject()
5 |
6 | class RefCounter {
7 | internal init(id: UUID) {
8 | self.id = id
9 | let store = StoreConfig.store
10 | store.viewRefs.mutate { value in
11 | value[id, default: 0] += 1
12 | }
13 | }
14 |
15 | let id: UUID
16 |
17 | deinit {
18 | let store = StoreConfig.store
19 | store.viewRefs.mutate { value in
20 | value[id, default: 0] -= 1
21 | }
22 |
23 |
24 | DispatchQueue.main.async { [id] in
25 | if let viewsRefs = store.viewRefs.value[id], viewsRefs <= 0 {
26 | if store.watchCount.value[id, default: 0] == 0 {
27 | store.removeAtomValue(for: id)
28 | store.cancellables[id]?.removeAll()
29 | store.configuredAtoms.remove(id)
30 | } else {
31 | refCounterDecreased.send(id)
32 | }
33 |
34 | if let depencies = store.atomDependencies[id] {
35 | for depency in depencies {
36 | store.watchCount.mutate { value in
37 | value[depency]? -= 1
38 | }
39 |
40 | if store.watchCount.value[depency, default: 0] == 0, let dependencyViewRefs = store.viewRefs.value[depency], dependencyViewRefs <= 0 {
41 | store.removeAtomValue(for: id)
42 | store.configuredAtoms.remove(depency)
43 | store.cancellables[depency]?.removeAll()
44 | } else {
45 | refCounterDecreased.send(depency)
46 | }
47 | }
48 | }
49 | }
50 | }
51 |
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/Sources/Atoms/Internal/ResettableAtom.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | protocol ResettableAtom {
4 | func reset()
5 | }
6 |
7 | extension ResettableAtom where Self: ReadableAtom {
8 | func onReset(_ value: @escaping (inout Self.T) -> Void) -> Self {
9 | Task { @MainActor in
10 | StoreConfig.store.resettableCallbacks[id] = value
11 | }
12 |
13 | return self
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Sources/Atoms/Internal/Scope.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | let defaultScopeID = UUID()
4 | enum Scope {
5 | @TaskLocal static var id = defaultScopeID
6 | }
7 |
--------------------------------------------------------------------------------
/Sources/Atoms/Internal/StoreConfig.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | let defaultStoreID = UUID()
4 | enum StoreConfig {
5 | @TaskLocal static var store = Store(id: defaultStoreID)
6 | }
7 |
--------------------------------------------------------------------------------
/Sources/Atoms/Internal/UsedAtomInfo.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import Combine
3 |
4 | struct UsedAtomInfo: Hashable {
5 | let scope: UUID
6 | let atom: UUID
7 | let watching: Bool
8 | var debounced = 0.0
9 | var keepAlive: Bool
10 | }
11 |
12 | let usedAtomsSubject: PassthroughSubject = .init()
13 |
--------------------------------------------------------------------------------
/Sources/Atoms/Internal/WeakRef.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | struct WeakRef {
4 | weak var ref: AnyObject?
5 | }
6 |
--------------------------------------------------------------------------------
/Sources/Atoms/Internal/WritableAtom.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | /// A protocol that represents a writable Atom with a value of a certain type `T`.
4 | public protocol WritableAtom: ReadableAtom {}
5 |
--------------------------------------------------------------------------------
/Sources/Atoms/PropertyWrappers/CaptureAtom.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import SwiftUI
3 |
4 | /// A property wrapper that captures the atom's value and provides read and write access without being reactive to changes.
5 | ///
6 | /// Usage:
7 | ///
8 | /// ```swift
9 | /// @MainActor
10 | /// func testSignup() async throws {
11 | /// try await TestStore { store in
12 | /// @CaptureAtom(usernameAtom) var username: String
13 | /// @CaptureAtom(passwordAtom) var password: String
14 | /// @CaptureAtomValue(signupIsValidAtom) var signupIsValid: Bool
15 | /// XCTAssert(!signupIsValid)
16 | /// username = "johndoe"
17 | /// password = "passw0rD"
18 | /// try await expect(signupIsValid)
19 | /// }
20 | /// }
21 | /// ```
22 | ///
23 |
24 |
25 | @propertyWrapper @MainActor
26 | public struct CaptureAtom {
27 | /// The current value of the wrapped `ReadableAtom`.
28 | public var wrappedValue: T {
29 | get {
30 | return atom.value
31 | } nonmutating set {
32 | atom.value = newValue
33 | }
34 | }
35 |
36 | private let atom: AtomValue
37 | private var refCounter: RefCounter? = nil
38 |
39 | /// Initializes a new `CaptureAtom` instance for the given `WritableAtom`.
40 | ///
41 | /// - Parameter writableAtom: A `WritableAtom` instance whose value will be captured by the `CaptureAtom`.
42 | ///
43 | public init(_ writableAtom: W) where W.T == T {
44 | writableAtom.runSetupIfNeeded()
45 | let store = StoreConfig.store
46 | if !writableAtom.keepAlive {
47 | if Scope.id == defaultScopeID {
48 | refCounter = RefCounter(id: writableAtom.id)
49 | } else {
50 | store.watchCount.mutate { value in
51 | value[writableAtom.id, default: 0] += 1
52 | }
53 | }
54 | }
55 | atom = store.getAtomValue(for: writableAtom.id)
56 | store.usedAtoms[Scope.id, default: []].append(.init(scope: Scope.id,
57 | atom: writableAtom.id,
58 | watching: false,
59 | keepAlive: writableAtom.keepAlive))
60 | usedAtomsSubject.send(.init(scope: Scope.id,
61 | atom: writableAtom.id,
62 | watching: false,
63 | keepAlive: writableAtom.keepAlive))
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/Sources/Atoms/PropertyWrappers/CaptureAtomValue.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import SwiftUI
3 |
4 | /// A property wrapper that captures the atom's value and provides read-only access without being reactive to changes.
5 | ///
6 | /// Usage:
7 | ///
8 | /// ```swift
9 | /// let textAtom = Atom("")
10 | /// let derivedAtom = DerivedAtom {
11 | /// @UseAtomValue(textAtom) var text
12 | /// return text.count
13 | /// }
14 | /// let derivedAtom2 = DerivedAtom {
15 | /// @UseAtomValue(textAtom) var text
16 | /// @CaptureAtomValue(derivedAtom) var count
17 | /// return "\(text) is \(count) long"
18 | /// }
19 | ///
20 | /// struct ContentView: View {
21 | /// @UseAtom(textAtom) var text
22 | /// @UseAtomValue(derivedAtom2) var derived
23 | /// var body: some View {
24 | /// TextField("", text: $text)
25 | /// Text("\(derived)")
26 | /// }
27 | /// }
28 | /// ```
29 | @propertyWrapper @MainActor
30 | public struct CaptureAtomValue {
31 | /// The current value of the wrapped `ReadableAtom`.
32 | public var wrappedValue: T {
33 | return readOnlyAtom.value
34 | }
35 | private var refCounter: RefCounter? = nil
36 | private let readOnlyAtom: AtomValue
37 |
38 | /// Initializes a new `CaptureAtomValue` instance for the given `ReadableAtom`.
39 | ///
40 | /// - Parameters:
41 | /// - readableAtom: A `ReadableAtom` instance whose value will be managed by the `CaptureAtomValue`.
42 | public init(_ readableAtom: R) where R.T == T {
43 | readableAtom.runSetupIfNeeded()
44 | let store = StoreConfig.store
45 | if !readableAtom.keepAlive {
46 | if Scope.id == defaultScopeID {
47 | refCounter = RefCounter(id: readableAtom.id)
48 | } else {
49 | store.watchCount.mutate { value in
50 | value[readableAtom.id, default: 0] += 1
51 | }
52 | }
53 | }
54 | readOnlyAtom = store.getAtomValue(for: readableAtom.id)
55 | store.usedAtoms[Scope.id, default: []].append(.init(scope: Scope.id,
56 | atom: readableAtom.id,
57 | watching: false,
58 | keepAlive: readableAtom.keepAlive))
59 | usedAtomsSubject.send(.init(scope: Scope.id,
60 | atom: readableAtom.id,
61 | watching: false,
62 | keepAlive: readableAtom.keepAlive))
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/Sources/Atoms/PropertyWrappers/UseAtom.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import SwiftUI
3 |
4 | /// A property wrapper that provides read and write access to the atom's value, and it's reactive to changes.
5 | ///
6 | /// Usage:
7 | ///
8 | /// Usage:
9 | ///
10 | /// ```swift
11 | /// let textAtom = Atom("Hello")
12 | ///
13 | /// struct ContentView: View {
14 | /// @UseAtom(textAtom) var text
15 | /// var body: some View {
16 | /// TextField("", text: $text)
17 | /// }
18 | /// }
19 | /// ```
20 | ///
21 | @propertyWrapper
22 | public struct UseAtom: DynamicProperty {
23 |
24 | /// The current value of the wrapped `WritableAtom`.
25 | public var wrappedValue: T {
26 | get {
27 | return atom.value
28 | } nonmutating set {
29 | atom.value = newValue
30 | }
31 | }
32 |
33 | /// A `Binding` to the value of the wrapped `WritableAtom`.
34 | public var projectedValue: Binding {
35 | return $atom.value
36 | }
37 |
38 | @ObservedObject private var atom: AtomValue
39 | private var refCounter: RefCounter? = nil
40 |
41 | /// Initializes a new `UseAtom` instance for the given `WritableAtom`.
42 | ///
43 | /// - Parameters:
44 | /// - writableAtom: A `WritableAtom` instance whose value will be managed by the `UseAtom`.
45 | /// - debounce: An optional time interval for debouncing the value updates. Default is `0`.
46 | ///
47 | public init(_ writableAtom: W, debounce: TimeInterval = 0) where W.T == T {
48 | writableAtom.runSetupIfNeeded()
49 | let store = StoreConfig.store
50 | if !writableAtom.keepAlive {
51 | if Scope.id == defaultScopeID {
52 | refCounter = RefCounter(id: writableAtom.id)
53 | } else {
54 | store.watchCount.mutate { value in
55 | value[writableAtom.id, default: 0] += 1
56 | }
57 | }
58 | }
59 | let atom: AtomValue = store.getAtomValue(for: writableAtom.id)
60 | _atom = .init(wrappedValue: atom)
61 | store.usedAtoms[Scope.id, default: []].append(.init(scope: Scope.id,
62 | atom: writableAtom.id,
63 | watching: true, debounced: debounce,
64 | keepAlive: writableAtom.keepAlive))
65 | usedAtomsSubject.send(.init(scope: Scope.id,
66 | atom: writableAtom.id,
67 | watching: true,
68 | debounced: debounce,
69 | keepAlive: writableAtom.keepAlive))
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/Sources/Atoms/PropertyWrappers/UseAtomValue.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import SwiftUI
3 | import Combine
4 |
5 | /// A property wrapper that provides read-only access to the atom's value, and it's reactive to changes.
6 | ///
7 | /// Usage:
8 | ///
9 | /// ```swift
10 | /// let textAtom = Atom("Hello")
11 | /// let derivedAtom = DerivedAtom {
12 | /// @UseAtomValue(textAtom) var text
13 | /// return text.count
14 | /// }
15 | ///
16 | /// struct ContentView: View {
17 | /// @UseAtom(textAtom) var text
18 | /// @UseAtomValue(derivedAtom) var derived
19 | /// var body: some View {
20 | /// TextField("", text: $text)
21 | /// Text("\(derived)")
22 | /// }
23 | /// }
24 | /// ```
25 | ///
26 | @propertyWrapper
27 | public struct UseAtomValue: DynamicProperty {
28 |
29 | /// The current value of the wrapped `WritableAtom`.
30 | public var wrappedValue: T {
31 | return atom.value
32 | }
33 |
34 | @ObservedObject private var atom: AtomValue
35 | private var refCounter: RefCounter? = nil
36 |
37 | /// Initializes a new `UseAtomValue` instance for the given `ReadableAtom`.
38 | ///
39 | /// - Parameters:
40 | /// - readableAtom: A `ReadableAtom` instance whose value will be managed by the `UseAtomValue`.
41 | /// - debounce: An optional time interval for debouncing the value updates. Default is `0`.
42 | public init(_ readableAtom: R, debounce: TimeInterval = 0) where R.T == T {
43 | readableAtom.runSetupIfNeeded()
44 | let store = StoreConfig.store
45 | if !readableAtom.keepAlive {
46 | if Scope.id == defaultScopeID {
47 | refCounter = RefCounter(id: readableAtom.id)
48 | } else {
49 | store.watchCount.mutate { value in
50 | value[readableAtom.id, default: 0] += 1
51 | }
52 | }
53 | }
54 | let atom: AtomValue = store.getAtomValue(for: readableAtom.id)
55 | _atom = .init(wrappedValue: atom)
56 | store.usedAtoms[Scope.id, default: []].append(.init(scope: Scope.id,
57 | atom: readableAtom.id,
58 | watching: true,
59 | debounced: debounce,
60 | keepAlive: readableAtom.keepAlive))
61 | usedAtomsSubject.send(.init(scope: Scope.id,
62 | atom: readableAtom.id,
63 | watching: true,
64 | debounced: debounce,
65 | keepAlive: readableAtom.keepAlive))
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/Sources/Atoms/TestStore.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | /// A test store for running isolated operations on a separate `Store` instance.
4 | @MainActor
5 | public struct TestStore {
6 |
7 | /// Initializes a new `TestStore` and runs the specified operation on a separate `Store` instance.
8 | ///
9 | /// - Parameter operation: An asynchronous closure that takes a `Store` instance and performs the desired operations.
10 | @discardableResult
11 | public init(operation: @escaping (Store) async throws -> Void) async rethrows {
12 | let newStore = Store()
13 | newStore.onUpdates = StoreConfig.store.onUpdates
14 | try await StoreConfig.$store.withValue(newStore) {
15 | try await operation(newStore)
16 | }
17 | }
18 | }
19 |
20 |
--------------------------------------------------------------------------------
/docs/assets.json:
--------------------------------------------------------------------------------
1 | {"images":[],"downloads":[],"videos":[]}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/asyncatom/cancel().json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"cancel"},{"kind":"text","text":"()"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncatom\/cancel()"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom\/cancel()","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Cancel the current async operation."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"cancel"},{"kind":"text","text":"()"}],"title":"cancel()","roleHeading":"Instance Method","role":"symbol","symbolKind":"method","externalID":"s:5Atoms9AsyncAtomV6cancelyyF","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AsyncAtom/cancel()":{"role":"symbol","title":"cancel()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"cancel"},{"kind":"text","text":"()"}],"abstract":[{"type":"text","text":"Cancel the current async operation."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom\/cancel()","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncatom\/cancel()"},"doc://Atoms/documentation/Atoms/AsyncAtom":{"role":"symbol","title":"AsyncAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"AsyncAtom"},{"type":"text","text":" represents an asynchronous state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncAtom"}],"url":"\/documentation\/atoms\/asyncatom"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/asyncatom/id.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncatom\/id"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom\/id","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The unique identifier for the atom."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"title":"id","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms9AsyncAtomV2id10Foundation4UUIDVvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom"]]},"references":{"doc://Atoms/documentation/Atoms/AsyncAtom":{"role":"symbol","title":"AsyncAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"AsyncAtom"},{"type":"text","text":" represents an asynchronous state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncAtom"}],"url":"\/documentation\/atoms\/asyncatom"},"doc://Atoms/documentation/Atoms/AsyncAtom/id":{"role":"symbol","title":"id","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"abstract":[{"type":"text","text":"The unique identifier for the atom."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom\/id","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncatom\/id"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/asyncatom/keepalive.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncatom\/keepalive"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom\/keepAlive","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A boolean value indicating if the atom should be kept alive."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"title":"keepAlive","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms9AsyncAtomV9keepAliveSbvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AsyncAtom":{"role":"symbol","title":"AsyncAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"AsyncAtom"},{"type":"text","text":" represents an asynchronous state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncAtom"}],"url":"\/documentation\/atoms\/asyncatom"},"doc://Atoms/documentation/Atoms/AsyncAtom/keepAlive":{"role":"symbol","title":"keepAlive","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A boolean value indicating if the atom should be kept alive."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom\/keepAlive","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncatom\/keepalive"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/asyncatom/reload().json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reload"},{"kind":"text","text":"()"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncatom\/reload()"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom\/reload()","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Reloads the async operation, updating the atom’s state."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reload"},{"kind":"text","text":"()"}],"title":"reload()","roleHeading":"Instance Method","role":"symbol","symbolKind":"method","externalID":"s:5Atoms9AsyncAtomV6reloadyyF","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AsyncAtom":{"role":"symbol","title":"AsyncAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"AsyncAtom"},{"type":"text","text":" represents an asynchronous state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncAtom"}],"url":"\/documentation\/atoms\/asyncatom"},"doc://Atoms/documentation/Atoms/AsyncAtom/reload()":{"role":"symbol","title":"reload()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reload"},{"kind":"text","text":"()"}],"abstract":[{"type":"text","text":"Reloads the async operation, updating the atom’s state."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom\/reload()","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncatom\/reload()"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/asyncsequenceatom/id.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncsequenceatom\/id"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncSequenceAtom\/id","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The unique identifier for the atom."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"title":"id","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms17AsyncSequenceAtomV2id10Foundation4UUIDVvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncSequenceAtom"]]},"references":{"doc://Atoms/documentation/Atoms/AsyncSequenceAtom/id":{"role":"symbol","title":"id","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"abstract":[{"type":"text","text":"The unique identifier for the atom."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncSequenceAtom\/id","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncsequenceatom\/id"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AsyncSequenceAtom":{"role":"symbol","title":"AsyncSequenceAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncSequenceAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"AsyncSequenceAtom"},{"type":"text","text":" represents an asynchronous state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":" while iterating through an "},{"type":"codeVoice","code":"AsyncSequence"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncSequenceAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncSequenceAtom"}],"url":"\/documentation\/atoms\/asyncsequenceatom"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/asyncsequenceatom/keepalive.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncsequenceatom\/keepalive"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncSequenceAtom\/keepAlive","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A boolean value indicating if the atom should be kept alive."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"title":"keepAlive","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms17AsyncSequenceAtomV9keepAliveSbvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncSequenceAtom"]]},"references":{"doc://Atoms/documentation/Atoms/AsyncSequenceAtom":{"role":"symbol","title":"AsyncSequenceAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncSequenceAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"AsyncSequenceAtom"},{"type":"text","text":" represents an asynchronous state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":" while iterating through an "},{"type":"codeVoice","code":"AsyncSequence"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncSequenceAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncSequenceAtom"}],"url":"\/documentation\/atoms\/asyncsequenceatom"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AsyncSequenceAtom/keepAlive":{"role":"symbol","title":"keepAlive","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A boolean value indicating if the atom should be kept alive."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncSequenceAtom\/keepAlive","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncsequenceatom\/keepalive"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/asyncstate/equatable-implementations.json:
--------------------------------------------------------------------------------
1 | {"variants":[{"paths":["\/documentation\/atoms\/asyncstate\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/Equatable-Implementations","interfaceLanguage":"swift"},"topicSections":[{"title":"Operators","identifiers":["doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/!=(_:_:)"],"generated":true}],"kind":"article","metadata":{"modules":[{"name":"Atoms"}],"role":"collectionGroup","title":"Equatable Implementations"},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncState"]]},"references":{"doc://Atoms/documentation/Atoms/AsyncState/!=(_:_:)":{"role":"symbol","title":"!=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/!=(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncstate\/!=(_:_:)"},"doc://Atoms/documentation/Atoms/AsyncState":{"role":"symbol","title":"AsyncState","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncState"}],"abstract":[{"type":"text","text":"An enum representing the state of an asynchronous operation."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncState"}],"url":"\/documentation\/atoms\/asyncstate"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/asyncstate/failure(_:).json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"failure"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Error","preciseIdentifier":"s:s5ErrorP"},{"kind":"text","text":")"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncstate\/failure(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/failure(_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Indicates that the asynchronous operation has failed with the provided "},{"type":"codeVoice","code":"Error"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"failure"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Error","preciseIdentifier":"s:s5ErrorP"},{"kind":"text","text":")"}],"title":"AsyncState.failure(_:)","roleHeading":"Case","role":"symbol","symbolKind":"case","externalID":"s:5Atoms10AsyncStateO7failureyACyxGs5Error_pcAEmlF","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncState"]]},"references":{"doc://Atoms/documentation/Atoms/AsyncState":{"role":"symbol","title":"AsyncState","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncState"}],"abstract":[{"type":"text","text":"An enum representing the state of an asynchronous operation."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncState"}],"url":"\/documentation\/atoms\/asyncstate"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AsyncState/failure(_:)":{"role":"symbol","title":"AsyncState.failure(_:)","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"failure"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Error","preciseIdentifier":"s:s5ErrorP"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Indicates that the asynchronous operation has failed with the provided "},{"type":"codeVoice","code":"Error"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/failure(_:)","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncstate\/failure(_:)"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/asyncstate/failure.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"failure"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Error","preciseIdentifier":"s:s5ErrorP"},{"kind":"text","text":"? { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncstate\/failure"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/failure","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The "},{"type":"codeVoice","code":"Error"},{"type":"text","text":" value associated with the "},{"type":"codeVoice","code":".failure"},{"type":"text","text":" case, if any."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"failure"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Error","preciseIdentifier":"s:s5ErrorP"},{"kind":"text","text":"?"}],"title":"failure","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms10AsyncStateO7failures5Error_pSgvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncState"]]},"references":{"doc://Atoms/documentation/Atoms/AsyncState/failure":{"role":"symbol","title":"failure","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"failure"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Error","preciseIdentifier":"s:s5ErrorP"},{"kind":"text","text":"?"}],"abstract":[{"type":"text","text":"The "},{"type":"codeVoice","code":"Error"},{"type":"text","text":" value associated with the "},{"type":"codeVoice","code":".failure"},{"type":"text","text":" case, if any."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/failure","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncstate\/failure"},"doc://Atoms/documentation/Atoms/AsyncState":{"role":"symbol","title":"AsyncState","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncState"}],"abstract":[{"type":"text","text":"An enum representing the state of an asynchronous operation."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncState"}],"url":"\/documentation\/atoms\/asyncstate"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/asyncstate/loading-swift.enum.case.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"loading"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncstate\/loading-swift.enum.case"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/loading-swift.enum.case","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Indicates that the asynchronous operation is in progress."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"loading"}],"title":"AsyncState.loading","roleHeading":"Case","role":"symbol","symbolKind":"case","externalID":"s:5Atoms10AsyncStateO7loadingyACyxGAEmlF","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncState"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AsyncState/loading-swift.enum.case":{"role":"symbol","title":"AsyncState.loading","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"loading"}],"abstract":[{"type":"text","text":"Indicates that the asynchronous operation is in progress."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/loading-swift.enum.case","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncstate\/loading-swift.enum.case"},"doc://Atoms/documentation/Atoms/AsyncState":{"role":"symbol","title":"AsyncState","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncState"}],"abstract":[{"type":"text","text":"An enum representing the state of an asynchronous operation."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncState"}],"url":"\/documentation\/atoms\/asyncstate"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/asyncstate/success(_:).json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"success"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Root"},{"kind":"text","text":")"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncstate\/success(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/success(_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Indicates that the asynchronous operation has completed successfully with the provided "},{"type":"codeVoice","code":"Root"},{"type":"text","text":" value."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"success"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Root"},{"kind":"text","text":")"}],"title":"AsyncState.success(_:)","roleHeading":"Case","role":"symbol","symbolKind":"case","externalID":"s:5Atoms10AsyncStateO7successyACyxGxcAEmlF","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncState"]]},"references":{"doc://Atoms/documentation/Atoms/AsyncState":{"role":"symbol","title":"AsyncState","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncState"}],"abstract":[{"type":"text","text":"An enum representing the state of an asynchronous operation."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncState"}],"url":"\/documentation\/atoms\/asyncstate"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AsyncState/success(_:)":{"role":"symbol","title":"AsyncState.success(_:)","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"success"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Root"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Indicates that the asynchronous operation has completed successfully with the provided "},{"type":"codeVoice","code":"Root"},{"type":"text","text":" value."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/success(_:)","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncstate\/success(_:)"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/asyncstate/value.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"value"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Root"},{"kind":"text","text":"? { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncstate\/value"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/value","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The "},{"type":"codeVoice","code":"Root"},{"type":"text","text":" value associated with the "},{"type":"codeVoice","code":".success"},{"type":"text","text":" case, if any."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"value"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Root"},{"kind":"text","text":"?"}],"title":"value","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms10AsyncStateO5valuexSgvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncState"]]},"references":{"doc://Atoms/documentation/Atoms/AsyncState/value":{"role":"symbol","title":"value","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"value"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Root"},{"kind":"text","text":"?"}],"abstract":[{"type":"text","text":"The "},{"type":"codeVoice","code":"Root"},{"type":"text","text":" value associated with the "},{"type":"codeVoice","code":".success"},{"type":"text","text":" case, if any."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/value","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncstate\/value"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AsyncState":{"role":"symbol","title":"AsyncState","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncState"}],"abstract":[{"type":"text","text":"An enum representing the state of an asynchronous operation."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncState"}],"url":"\/documentation\/atoms\/asyncstate"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/atom/id.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/atom\/id"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/id","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A unique identifier for the atom."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"title":"id","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms4AtomV2id10Foundation4UUIDVvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/Atom"]]},"references":{"doc://Atoms/documentation/Atoms/Atom/id":{"role":"symbol","title":"id","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"abstract":[{"type":"text","text":"A unique identifier for the atom."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/id","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/atom\/id"},"doc://Atoms/documentation/Atoms/Atom":{"role":"symbol","title":"Atom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"Atom"},{"type":"text","text":" represents a state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Atom"}],"url":"\/documentation\/atoms\/atom"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/atom/keepalive.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/atom\/keepalive"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/keepAlive","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A boolean indicating whether the atom should be kept alive in memory."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"title":"keepAlive","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms4AtomV9keepAliveSbvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/Atom"]]},"references":{"doc://Atoms/documentation/Atoms/Atom/keepAlive":{"role":"symbol","title":"keepAlive","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A boolean indicating whether the atom should be kept alive in memory."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/keepAlive","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/atom\/keepalive"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/Atom":{"role":"symbol","title":"Atom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"Atom"},{"type":"text","text":" represents a state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Atom"}],"url":"\/documentation\/atoms\/atom"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/atom/readableatom-implementations.json:
--------------------------------------------------------------------------------
1 | {"variants":[{"paths":["\/documentation\/atoms\/atom\/readableatom-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/ReadableAtom-Implementations","interfaceLanguage":"swift"},"topicSections":[{"title":"Instance Methods","identifiers":["doc:\/\/Atoms\/documentation\/Atoms\/Atom\/debugLabel(_:)","doc:\/\/Atoms\/documentation\/Atoms\/Atom\/onUpdate(skip:_:)"],"generated":true}],"kind":"article","metadata":{"modules":[{"name":"Atoms"}],"role":"collectionGroup","title":"ReadableAtom Implementations"},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/Atom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/Atom/onUpdate(skip:_:)":{"role":"symbol","title":"onUpdate(skip:_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"onUpdate"},{"kind":"text","text":"("},{"kind":"externalParam","text":"skip"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":", ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Void","preciseIdentifier":"s:s4Voida"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Self"}],"abstract":[{"type":"text","text":"Registers a callback to be called when the Atom’s value updates."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/onUpdate(skip:_:)","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/atom\/onupdate(skip:_:)"},"doc://Atoms/documentation/Atoms/Atom/debugLabel(_:)":{"role":"symbol","title":"debugLabel(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"debugLabel"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Self"}],"abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/debugLabel(_:)","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/atom\/debuglabel(_:)"},"doc://Atoms/documentation/Atoms/Atom":{"role":"symbol","title":"Atom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"Atom"},{"type":"text","text":" represents a state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Atom"}],"url":"\/documentation\/atoms\/atom"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/atom/reset().json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reset"},{"kind":"text","text":"()"}],"languages":["swift"],"platforms":["macOS"]}]},{"kind":"content","content":[{"anchor":"discussion","level":2,"type":"heading","text":"Discussion"},{"type":"paragraph","inlineContent":[{"type":"text","text":"This method is useful for resetting the atom to its initial state. If a callback is registered,"},{"type":"text","text":" "},{"type":"text","text":"it will be executed before updating the atom’s value."}]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/atom\/reset()"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/reset()","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Resets the atom to its default value, optionally executing a callback."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reset"},{"kind":"text","text":"()"}],"title":"reset()","roleHeading":"Instance Method","role":"symbol","symbolKind":"method","externalID":"s:5Atoms4AtomV5resetyyF","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/Atom"]]},"references":{"doc://Atoms/documentation/Atoms/Atom":{"role":"symbol","title":"Atom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"Atom"},{"type":"text","text":" represents a state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Atom"}],"url":"\/documentation\/atoms\/atom"},"doc://Atoms/documentation/Atoms/Atom/reset()":{"role":"symbol","title":"reset()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reset"},{"kind":"text","text":"()"}],"abstract":[{"type":"text","text":"Resets the atom to its default value, optionally executing a callback."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/reset()","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/atom\/reset()"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/atom/type.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/atom\/type"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/type","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The type of the value managed by the atom."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"title":"type","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms4AtomV4typexmvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/Atom"]]},"references":{"doc://Atoms/documentation/Atoms/Atom/type":{"role":"symbol","title":"type","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"abstract":[{"type":"text","text":"The type of the value managed by the atom."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/type","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/atom\/type"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/Atom":{"role":"symbol","title":"Atom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"Atom"},{"type":"text","text":" represents a state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Atom"}],"url":"\/documentation\/atoms\/atom"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/atomstore/loggingenabled.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"loggingEnabled"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/atomstore\/loggingenabled"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AtomStore\/loggingEnabled","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A Boolean value that indicates whether logging is enabled for "},{"type":"codeVoice","code":"Atom"},{"type":"text","text":" operations. Defaults to "},{"type":"codeVoice","code":"false"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"loggingEnabled"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"title":"loggingEnabled","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms9AtomStoreV14loggingEnabledSbvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AtomStore"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AtomStore/loggingEnabled":{"role":"symbol","title":"loggingEnabled","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"loggingEnabled"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A Boolean value that indicates whether logging is enabled for "},{"type":"codeVoice","code":"Atom"},{"type":"text","text":" operations. Defaults to "},{"type":"codeVoice","code":"false"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AtomStore\/loggingEnabled","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/atomstore\/loggingenabled"},"doc://Atoms/documentation/Atoms/AtomStore":{"role":"symbol","title":"AtomStore","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"AtomStore"}],"abstract":[{"type":"codeVoice","code":"AtomStore"},{"type":"text","text":" is responsible for injecting mutation closures into the store and enabling logging for "},{"type":"codeVoice","code":"Atom"},{"type":"text","text":" operations. It provides a shared singleton instance for convenient access throughout your application."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AtomStore","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AtomStore"}],"url":"\/documentation\/atoms\/atomstore"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/atomstore/shared.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"shared"},{"kind":"text","text":": "},{"kind":"typeIdentifier","identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AtomStore","preciseIdentifier":"s:5Atoms9AtomStoreV","text":"AtomStore"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/atomstore\/shared"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AtomStore\/shared","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The shared singleton instance of "},{"type":"codeVoice","code":"AtomStore"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"shared"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"AtomStore","preciseIdentifier":"s:5Atoms9AtomStoreV"}],"title":"shared","roleHeading":"Type Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms9AtomStoreV6sharedACvpZ","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AtomStore"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AtomStore/shared":{"role":"symbol","title":"shared","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"shared"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"AtomStore","preciseIdentifier":"s:5Atoms9AtomStoreV"}],"abstract":[{"type":"text","text":"The shared singleton instance of "},{"type":"codeVoice","code":"AtomStore"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AtomStore\/shared","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/atomstore\/shared"},"doc://Atoms/documentation/Atoms/AtomStore":{"role":"symbol","title":"AtomStore","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"AtomStore"}],"abstract":[{"type":"codeVoice","code":"AtomStore"},{"type":"text","text":" is responsible for injecting mutation closures into the store and enabling logging for "},{"type":"codeVoice","code":"Atom"},{"type":"text","text":" operations. It provides a shared singleton instance for convenient access throughout your application."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AtomStore","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AtomStore"}],"url":"\/documentation\/atoms\/atomstore"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/captureatom/wrappedvalue.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" "},{"kind":"keyword","text":"nonmutating"},{"kind":"text","text":" "},{"kind":"keyword","text":"set"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/captureatom\/wrappedvalue"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/CaptureAtom\/wrappedValue","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The current value of the wrapped "},{"type":"codeVoice","code":"ReadableAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"}],"title":"wrappedValue","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms11CaptureAtomV12wrappedValuexvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/CaptureAtom"]]},"references":{"doc://Atoms/documentation/Atoms/CaptureAtom/wrappedValue":{"role":"symbol","title":"wrappedValue","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"}],"abstract":[{"type":"text","text":"The current value of the wrapped "},{"type":"codeVoice","code":"ReadableAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/CaptureAtom\/wrappedValue","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/captureatom\/wrappedvalue"},"doc://Atoms/documentation/Atoms/CaptureAtom":{"role":"symbol","title":"CaptureAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"CaptureAtom"}],"abstract":[{"type":"text","text":"A property wrapper that captures the atom’s value and provides read and write access without being reactive to changes."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/CaptureAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"CaptureAtom"}],"url":"\/documentation\/atoms\/captureatom"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/captureatomvalue/wrappedvalue.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/captureatomvalue\/wrappedvalue"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/CaptureAtomValue\/wrappedValue","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The current value of the wrapped "},{"type":"codeVoice","code":"ReadableAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"}],"title":"wrappedValue","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms16CaptureAtomValueV07wrappedD0xvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/CaptureAtomValue"]]},"references":{"doc://Atoms/documentation/Atoms/CaptureAtomValue":{"role":"symbol","title":"CaptureAtomValue","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"CaptureAtomValue"}],"abstract":[{"type":"text","text":"A property wrapper that captures the atom’s value and provides read-only access without being reactive to changes."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/CaptureAtomValue","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"CaptureAtomValue"}],"url":"\/documentation\/atoms\/captureatomvalue"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/CaptureAtomValue/wrappedValue":{"role":"symbol","title":"wrappedValue","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"}],"abstract":[{"type":"text","text":"The current value of the wrapped "},{"type":"codeVoice","code":"ReadableAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/CaptureAtomValue\/wrappedValue","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/captureatomvalue\/wrappedvalue"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/derivedatom/id.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/derivedatom\/id"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom\/id","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A unique identifier for the derived atom."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"title":"id","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms11DerivedAtomV2id10Foundation4UUIDVvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom"]]},"references":{"doc://Atoms/documentation/Atoms/DerivedAtom":{"role":"symbol","title":"DerivedAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"DerivedAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"DerivedAtom"},{"type":"text","text":" represents a derived state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"DerivedAtom"}],"url":"\/documentation\/atoms\/derivedatom"},"doc://Atoms/documentation/Atoms/DerivedAtom/id":{"role":"symbol","title":"id","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"abstract":[{"type":"text","text":"A unique identifier for the derived atom."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom\/id","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/derivedatom\/id"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/derivedatom/keepalive.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/derivedatom\/keepalive"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom\/keepAlive","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A boolean indicating whether the derived atom should be kept alive in memory."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"title":"keepAlive","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms11DerivedAtomV9keepAliveSbvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom"]]},"references":{"doc://Atoms/documentation/Atoms/DerivedAtom/keepAlive":{"role":"symbol","title":"keepAlive","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A boolean indicating whether the derived atom should be kept alive in memory."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom\/keepAlive","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/derivedatom\/keepalive"},"doc://Atoms/documentation/Atoms/DerivedAtom":{"role":"symbol","title":"DerivedAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"DerivedAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"DerivedAtom"},{"type":"text","text":" represents a derived state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"DerivedAtom"}],"url":"\/documentation\/atoms\/derivedatom"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/derivedatom/type.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/derivedatom\/type"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom\/type","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The type of the value managed by the derived atom."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"title":"type","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms11DerivedAtomV4typexmvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom"]]},"references":{"doc://Atoms/documentation/Atoms/DerivedAtom/type":{"role":"symbol","title":"type","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"abstract":[{"type":"text","text":"The type of the value managed by the derived atom."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom\/type","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/derivedatom\/type"},"doc://Atoms/documentation/Atoms/DerivedAtom":{"role":"symbol","title":"DerivedAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"DerivedAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"DerivedAtom"},{"type":"text","text":" represents a derived state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"DerivedAtom"}],"url":"\/documentation\/atoms\/derivedatom"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/getsetatom/id.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/getsetatom\/id"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom\/id","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A unique identifier for this "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"title":"id","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms10GetSetAtomV2id10Foundation4UUIDVvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom"]]},"references":{"doc://Atoms/documentation/Atoms/GetSetAtom":{"role":"symbol","title":"GetSetAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"GetSetAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":" represents a readable and writable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"GetSetAtom"}],"url":"\/documentation\/atoms\/getsetatom"},"doc://Atoms/documentation/Atoms/GetSetAtom/id":{"role":"symbol","title":"id","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"abstract":[{"type":"text","text":"A unique identifier for this "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom\/id","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/getsetatom\/id"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/getsetatom/keepalive.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/getsetatom\/keepalive"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom\/keepAlive","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A boolean flag indicating whether the "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":" should be kept alive."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"title":"keepAlive","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms10GetSetAtomV9keepAliveSbvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/GetSetAtom":{"role":"symbol","title":"GetSetAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"GetSetAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":" represents a readable and writable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"GetSetAtom"}],"url":"\/documentation\/atoms\/getsetatom"},"doc://Atoms/documentation/Atoms/GetSetAtom/keepAlive":{"role":"symbol","title":"keepAlive","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A boolean flag indicating whether the "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":" should be kept alive."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom\/keepAlive","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/getsetatom\/keepalive"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/getsetatom/reset().json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reset"},{"kind":"text","text":"()"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/getsetatom\/reset()"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom\/reset()","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Resets the value of the "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":" to the initial state as defined by the custom getter."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reset"},{"kind":"text","text":"()"}],"title":"reset()","roleHeading":"Instance Method","role":"symbol","symbolKind":"method","externalID":"s:5Atoms10GetSetAtomV5resetyyF","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom"]]},"references":{"doc://Atoms/documentation/Atoms/GetSetAtom/reset()":{"role":"symbol","title":"reset()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reset"},{"kind":"text","text":"()"}],"abstract":[{"type":"text","text":"Resets the value of the "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":" to the initial state as defined by the custom getter."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom\/reset()","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/getsetatom\/reset()"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/GetSetAtom":{"role":"symbol","title":"GetSetAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"GetSetAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":" represents a readable and writable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"GetSetAtom"}],"url":"\/documentation\/atoms\/getsetatom"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/getsetatom/type.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/getsetatom\/type"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom\/type","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The type of the value managed by this "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"title":"type","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms10GetSetAtomV4typexmvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom"]]},"references":{"doc://Atoms/documentation/Atoms/GetSetAtom":{"role":"symbol","title":"GetSetAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"GetSetAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":" represents a readable and writable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"GetSetAtom"}],"url":"\/documentation\/atoms\/getsetatom"},"doc://Atoms/documentation/Atoms/GetSetAtom/type":{"role":"symbol","title":"type","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"abstract":[{"type":"text","text":"The type of the value managed by this "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom\/type","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/getsetatom\/type"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/observableobjectatom/id.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/observableobjectatom\/id"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom\/id","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A unique identifier for the atom."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"title":"id","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms20ObservableObjectAtomV2id10Foundation4UUIDVvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom"]]},"references":{"doc://Atoms/documentation/Atoms/ObservableObjectAtom":{"role":"symbol","title":"ObservableObjectAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ObservableObjectAtom"}],"abstract":[{"type":"text","text":"An "},{"type":"codeVoice","code":"ObservableObjectAtom"},{"type":"text","text":" represents a readable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":" that conforms to "},{"type":"codeVoice","code":"ObservableObject"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ObservableObjectAtom"}],"url":"\/documentation\/atoms\/observableobjectatom"},"doc://Atoms/documentation/Atoms/ObservableObjectAtom/id":{"role":"symbol","title":"id","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"abstract":[{"type":"text","text":"A unique identifier for the atom."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom\/id","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/observableobjectatom\/id"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/observableobjectatom/keepalive.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/observableobjectatom\/keepalive"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom\/keepAlive","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A boolean indicating whether the atom should be kept alive in memory."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"title":"keepAlive","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms20ObservableObjectAtomV9keepAliveSbvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom"]]},"references":{"doc://Atoms/documentation/Atoms/ObservableObjectAtom":{"role":"symbol","title":"ObservableObjectAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ObservableObjectAtom"}],"abstract":[{"type":"text","text":"An "},{"type":"codeVoice","code":"ObservableObjectAtom"},{"type":"text","text":" represents a readable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":" that conforms to "},{"type":"codeVoice","code":"ObservableObject"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ObservableObjectAtom"}],"url":"\/documentation\/atoms\/observableobjectatom"},"doc://Atoms/documentation/Atoms/ObservableObjectAtom/keepAlive":{"role":"symbol","title":"keepAlive","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A boolean indicating whether the atom should be kept alive in memory."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom\/keepAlive","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/observableobjectatom\/keepalive"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/observableobjectatom/type.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/observableobjectatom\/type"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom\/type","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The type of the value managed by the atom."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"title":"type","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms20ObservableObjectAtomV4typexmvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/ObservableObjectAtom/type":{"role":"symbol","title":"type","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"abstract":[{"type":"text","text":"The type of the value managed by the atom."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom\/type","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/observableobjectatom\/type"},"doc://Atoms/documentation/Atoms/ObservableObjectAtom":{"role":"symbol","title":"ObservableObjectAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ObservableObjectAtom"}],"abstract":[{"type":"text","text":"An "},{"type":"codeVoice","code":"ObservableObjectAtom"},{"type":"text","text":" represents a readable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":" that conforms to "},{"type":"codeVoice","code":"ObservableObject"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ObservableObjectAtom"}],"url":"\/documentation\/atoms\/observableobjectatom"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/publishedatom/id.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/publishedatom\/id"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom\/id","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A unique identifier for this "},{"type":"codeVoice","code":"PublishedAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"title":"id","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms13PublishedAtomV2id10Foundation4UUIDVvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom"]]},"references":{"doc://Atoms/documentation/Atoms/PublishedAtom/id":{"role":"symbol","title":"id","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"abstract":[{"type":"text","text":"A unique identifier for this "},{"type":"codeVoice","code":"PublishedAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom\/id","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/publishedatom\/id"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/PublishedAtom":{"role":"symbol","title":"PublishedAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"PublishedAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"PublishedAtom"},{"type":"text","text":" represents a readable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":" that comes from a "},{"type":"codeVoice","code":"Published"},{"type":"text","text":" property wrapper."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"PublishedAtom"}],"url":"\/documentation\/atoms\/publishedatom"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/publishedatom/keepalive.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/publishedatom\/keepalive"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom\/keepAlive","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A boolean flag indicating whether the "},{"type":"codeVoice","code":"PublishedAtom"},{"type":"text","text":" should be kept alive."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"title":"keepAlive","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms13PublishedAtomV9keepAliveSbvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/PublishedAtom":{"role":"symbol","title":"PublishedAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"PublishedAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"PublishedAtom"},{"type":"text","text":" represents a readable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":" that comes from a "},{"type":"codeVoice","code":"Published"},{"type":"text","text":" property wrapper."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"PublishedAtom"}],"url":"\/documentation\/atoms\/publishedatom"},"doc://Atoms/documentation/Atoms/PublishedAtom/keepAlive":{"role":"symbol","title":"keepAlive","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A boolean flag indicating whether the "},{"type":"codeVoice","code":"PublishedAtom"},{"type":"text","text":" should be kept alive."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom\/keepAlive","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/publishedatom\/keepalive"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/publishedatom/type.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/publishedatom\/type"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom\/type","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The type of the value managed by this "},{"type":"codeVoice","code":"PublishedAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"title":"type","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms13PublishedAtomV4typexmvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom"]]},"references":{"doc://Atoms/documentation/Atoms/PublishedAtom/type":{"role":"symbol","title":"type","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"abstract":[{"type":"text","text":"The type of the value managed by this "},{"type":"codeVoice","code":"PublishedAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom\/type","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/publishedatom\/type"},"doc://Atoms/documentation/Atoms/PublishedAtom":{"role":"symbol","title":"PublishedAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"PublishedAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"PublishedAtom"},{"type":"text","text":" represents a readable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":" that comes from a "},{"type":"codeVoice","code":"Published"},{"type":"text","text":" property wrapper."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"PublishedAtom"}],"url":"\/documentation\/atoms\/publishedatom"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/publisheratom/id.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/publisheratom\/id"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/PublisherAtom\/id","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A unique identifier for the "},{"type":"codeVoice","code":"PublisherAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"title":"id","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms13PublisherAtomV2id10Foundation4UUIDVvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/PublisherAtom"]]},"references":{"doc://Atoms/documentation/Atoms/PublisherAtom":{"role":"symbol","title":"PublisherAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"PublisherAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"PublisherAtom"},{"type":"text","text":" represents a readable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":" that comes from a "},{"type":"codeVoice","code":"Publisher"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/PublisherAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"PublisherAtom"}],"url":"\/documentation\/atoms\/publisheratom"},"doc://Atoms/documentation/Atoms/PublisherAtom/id":{"role":"symbol","title":"id","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"abstract":[{"type":"text","text":"A unique identifier for the "},{"type":"codeVoice","code":"PublisherAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/PublisherAtom\/id","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/publisheratom\/id"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/publisheratom/keepalive.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/publisheratom\/keepalive"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/PublisherAtom\/keepAlive","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A flag indicating if the "},{"type":"codeVoice","code":"PublisherAtom"},{"type":"text","text":" should be kept alive."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"title":"keepAlive","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms13PublisherAtomV9keepAliveSbvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/PublisherAtom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/PublisherAtom/keepAlive":{"role":"symbol","title":"keepAlive","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A flag indicating if the "},{"type":"codeVoice","code":"PublisherAtom"},{"type":"text","text":" should be kept alive."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/PublisherAtom\/keepAlive","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/publisheratom\/keepalive"},"doc://Atoms/documentation/Atoms/PublisherAtom":{"role":"symbol","title":"PublisherAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"PublisherAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"PublisherAtom"},{"type":"text","text":" represents a readable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":" that comes from a "},{"type":"codeVoice","code":"Publisher"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/PublisherAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"PublisherAtom"}],"url":"\/documentation\/atoms\/publisheratom"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/readableatom/debuglabel(_:).json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"debugLabel"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"label"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Self"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/readableatom\/debuglabel(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom\/debugLabel(_:)","interfaceLanguage":"swift"},"kind":"symbol","metadata":{"role":"symbol","title":"debugLabel(_:)","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"debugLabel"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Self"}],"symbolKind":"method","externalID":"s:5Atoms12ReadableAtomPAAE10debugLabelyxSSF","extendedModule":"Atoms","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom"]]},"references":{"doc://Atoms/documentation/Atoms/ReadableAtom":{"role":"symbol","title":"ReadableAtom","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ReadableAtom"}],"abstract":[{"type":"text","text":"A protocol that represents a readable Atom with a value of a certain type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ReadableAtom"}],"url":"\/documentation\/atoms\/readableatom"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/ReadableAtom/debugLabel(_:)":{"role":"symbol","title":"debugLabel(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"debugLabel"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Self"}],"abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom\/debugLabel(_:)","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/readableatom\/debuglabel(_:)"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/readableatom/id.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/readableatom\/id"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom\/id","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A unique identifier for the Atom."}],"kind":"symbol","metadata":{"role":"symbol","title":"id","roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"symbolKind":"property","externalID":"s:5Atoms12ReadableAtomP2id10Foundation4UUIDVvp","required":true,"modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom"]]},"references":{"doc://Atoms/documentation/Atoms/ReadableAtom":{"role":"symbol","title":"ReadableAtom","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ReadableAtom"}],"abstract":[{"type":"text","text":"A protocol that represents a readable Atom with a value of a certain type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ReadableAtom"}],"url":"\/documentation\/atoms\/readableatom"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/ReadableAtom/id":{"role":"symbol","title":"id","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"abstract":[{"type":"text","text":"A unique identifier for the Atom."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom\/id","kind":"symbol","required":true,"type":"topic","url":"\/documentation\/atoms\/readableatom\/id"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/readableatom/keepalive.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/readableatom\/keepalive"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom\/keepAlive","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A Boolean value indicating whether the Atom should be kept alive."}],"kind":"symbol","metadata":{"role":"symbol","title":"keepAlive","roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"symbolKind":"property","externalID":"s:5Atoms12ReadableAtomP9keepAliveSbvp","required":true,"modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom"]]},"references":{"doc://Atoms/documentation/Atoms/ReadableAtom/keepAlive":{"role":"symbol","title":"keepAlive","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A Boolean value indicating whether the Atom should be kept alive."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom\/keepAlive","kind":"symbol","required":true,"type":"topic","url":"\/documentation\/atoms\/readableatom\/keepalive"},"doc://Atoms/documentation/Atoms/ReadableAtom":{"role":"symbol","title":"ReadableAtom","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ReadableAtom"}],"abstract":[{"type":"text","text":"A protocol that represents a readable Atom with a value of a certain type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ReadableAtom"}],"url":"\/documentation\/atoms\/readableatom"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/readableatom/t.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"associatedtype"},{"kind":"text","text":" "},{"kind":"identifier","text":"T"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/readableatom\/t"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom\/T","interfaceLanguage":"swift"},"kind":"symbol","metadata":{"role":"symbol","title":"T","roleHeading":"Associated Type","fragments":[{"kind":"keyword","text":"associatedtype"},{"kind":"text","text":" "},{"kind":"identifier","text":"T"}],"symbolKind":"associatedtype","externalID":"s:5Atoms12ReadableAtomP1TQa","required":true,"modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/ReadableAtom":{"role":"symbol","title":"ReadableAtom","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ReadableAtom"}],"abstract":[{"type":"text","text":"A protocol that represents a readable Atom with a value of a certain type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ReadableAtom"}],"url":"\/documentation\/atoms\/readableatom"},"doc://Atoms/documentation/Atoms/ReadableAtom/T":{"role":"symbol","title":"T","fragments":[{"kind":"keyword","text":"associatedtype"},{"kind":"text","text":" "},{"kind":"identifier","text":"T"}],"abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom\/T","kind":"symbol","required":true,"type":"topic","url":"\/documentation\/atoms\/readableatom\/t"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/readableatom/type.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/readableatom\/type"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom\/type","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The type of the Atom’s value."}],"kind":"symbol","metadata":{"role":"symbol","title":"type","roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"symbolKind":"property","externalID":"s:5Atoms12ReadableAtomP4type1TQzmvp","required":true,"modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom"]]},"references":{"doc://Atoms/documentation/Atoms/ReadableAtom/type":{"role":"symbol","title":"type","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"abstract":[{"type":"text","text":"The type of the Atom’s value."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom\/type","kind":"symbol","required":true,"type":"topic","url":"\/documentation\/atoms\/readableatom\/type"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/ReadableAtom":{"role":"symbol","title":"ReadableAtom","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ReadableAtom"}],"abstract":[{"type":"text","text":"A protocol that represents a readable Atom with a value of a certain type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ReadableAtom"}],"url":"\/documentation\/atoms\/readableatom"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/useatom/dynamicproperty-implementations.json:
--------------------------------------------------------------------------------
1 | {"variants":[{"paths":["\/documentation\/atoms\/useatom\/dynamicproperty-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtom\/DynamicProperty-Implementations","interfaceLanguage":"swift"},"topicSections":[{"title":"Instance Methods","identifiers":["doc:\/\/Atoms\/documentation\/Atoms\/UseAtom\/update()"],"generated":true}],"kind":"article","metadata":{"modules":[{"name":"Atoms"}],"role":"collectionGroup","title":"DynamicProperty Implementations"},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/UseAtom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/UseAtom":{"role":"symbol","title":"UseAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"UseAtom"}],"abstract":[{"type":"text","text":"A property wrapper that provides read and write access to the atom’s value, and it’s reactive to changes."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"UseAtom"}],"url":"\/documentation\/atoms\/useatom"},"doc://Atoms/documentation/Atoms/UseAtom/update()":{"role":"symbol","title":"update()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"update"},{"kind":"text","text":"()"}],"abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtom\/update()","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/useatom\/update()"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/useatom/wrappedvalue.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" "},{"kind":"keyword","text":"nonmutating"},{"kind":"text","text":" "},{"kind":"keyword","text":"set"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/useatom\/wrappedvalue"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtom\/wrappedValue","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The current value of the wrapped "},{"type":"codeVoice","code":"WritableAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"}],"title":"wrappedValue","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms7UseAtomV12wrappedValuexvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/UseAtom"]]},"references":{"doc://Atoms/documentation/Atoms/UseAtom":{"role":"symbol","title":"UseAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"UseAtom"}],"abstract":[{"type":"text","text":"A property wrapper that provides read and write access to the atom’s value, and it’s reactive to changes."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"UseAtom"}],"url":"\/documentation\/atoms\/useatom"},"doc://Atoms/documentation/Atoms/UseAtom/wrappedValue":{"role":"symbol","title":"wrappedValue","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"}],"abstract":[{"type":"text","text":"The current value of the wrapped "},{"type":"codeVoice","code":"WritableAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtom\/wrappedValue","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/useatom\/wrappedvalue"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/useatomvalue/dynamicproperty-implementations.json:
--------------------------------------------------------------------------------
1 | {"variants":[{"paths":["\/documentation\/atoms\/useatomvalue\/dynamicproperty-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtomValue\/DynamicProperty-Implementations","interfaceLanguage":"swift"},"topicSections":[{"title":"Instance Methods","identifiers":["doc:\/\/Atoms\/documentation\/Atoms\/UseAtomValue\/update()"],"generated":true}],"kind":"article","metadata":{"modules":[{"name":"Atoms"}],"role":"collectionGroup","title":"DynamicProperty Implementations"},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/UseAtomValue"]]},"references":{"doc://Atoms/documentation/Atoms/UseAtomValue/update()":{"role":"symbol","title":"update()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"update"},{"kind":"text","text":"()"}],"abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtomValue\/update()","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/useatomvalue\/update()"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/UseAtomValue":{"role":"symbol","title":"UseAtomValue","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"UseAtomValue"}],"abstract":[{"type":"text","text":"A property wrapper that provides read-only access to the atom’s value, and it’s reactive to changes."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtomValue","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"UseAtomValue"}],"url":"\/documentation\/atoms\/useatomvalue"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/useatomvalue/wrappedvalue.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/useatomvalue\/wrappedvalue"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtomValue\/wrappedValue","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The current value of the wrapped "},{"type":"codeVoice","code":"WritableAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"}],"title":"wrappedValue","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms12UseAtomValueV07wrappedD0xvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/UseAtomValue"]]},"references":{"doc://Atoms/documentation/Atoms/UseAtomValue/wrappedValue":{"role":"symbol","title":"wrappedValue","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"}],"abstract":[{"type":"text","text":"The current value of the wrapped "},{"type":"codeVoice","code":"WritableAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtomValue\/wrappedValue","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/useatomvalue\/wrappedvalue"},"doc://Atoms/documentation/Atoms/UseAtomValue":{"role":"symbol","title":"UseAtomValue","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"UseAtomValue"}],"abstract":[{"type":"text","text":"A property wrapper that provides read-only access to the atom’s value, and it’s reactive to changes."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtomValue","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"UseAtomValue"}],"url":"\/documentation\/atoms\/useatomvalue"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/willsetatom/id.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/willsetatom\/id"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom\/id","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A unique identifier for the "},{"type":"codeVoice","code":"WillSetAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"title":"id","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms11WillSetAtomV2id10Foundation4UUIDVvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom"]]},"references":{"doc://Atoms/documentation/Atoms/WillSetAtom/id":{"role":"symbol","title":"id","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"abstract":[{"type":"text","text":"A unique identifier for the "},{"type":"codeVoice","code":"WillSetAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom\/id","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/willsetatom\/id"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/WillSetAtom":{"role":"symbol","title":"WillSetAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"WillSetAtom"}],"abstract":[{"type":"text","text":"A generic structure that conforms to the "},{"type":"codeVoice","code":"WritableAtom"},{"type":"text","text":" and "},{"type":"codeVoice","code":"ResettableAtom"},{"type":"text","text":" protocols."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"WillSetAtom"}],"url":"\/documentation\/atoms\/willsetatom"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/willsetatom/keepalive.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/willsetatom\/keepalive"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom\/keepAlive","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A flag indicating if the "},{"type":"codeVoice","code":"WillSetAtom"},{"type":"text","text":" should be kept alive."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"title":"keepAlive","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms11WillSetAtomV9keepAliveSbvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom"]]},"references":{"doc://Atoms/documentation/Atoms/WillSetAtom/keepAlive":{"role":"symbol","title":"keepAlive","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A flag indicating if the "},{"type":"codeVoice","code":"WillSetAtom"},{"type":"text","text":" should be kept alive."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom\/keepAlive","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/willsetatom\/keepalive"},"doc://Atoms/documentation/Atoms/WillSetAtom":{"role":"symbol","title":"WillSetAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"WillSetAtom"}],"abstract":[{"type":"text","text":"A generic structure that conforms to the "},{"type":"codeVoice","code":"WritableAtom"},{"type":"text","text":" and "},{"type":"codeVoice","code":"ResettableAtom"},{"type":"text","text":" protocols."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"WillSetAtom"}],"url":"\/documentation\/atoms\/willsetatom"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/willsetatom/reset().json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reset"},{"kind":"text","text":"()"}],"languages":["swift"],"platforms":["macOS"]}]},{"kind":"content","content":[{"anchor":"discussion","level":2,"type":"heading","text":"Discussion"},{"type":"paragraph","inlineContent":[{"type":"text","text":"Use this method to reset the value of the "},{"type":"codeVoice","code":"WillSetAtom"},{"type":"text","text":" to its initial value, optionally running a custom reset closure."}]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/willsetatom\/reset()"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom\/reset()","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Resets the value of the "},{"type":"codeVoice","code":"WillSetAtom"},{"type":"text","text":" to its initial value, optionally running a custom reset closure."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reset"},{"kind":"text","text":"()"}],"title":"reset()","roleHeading":"Instance Method","role":"symbol","symbolKind":"method","externalID":"s:5Atoms11WillSetAtomV5resetyyF","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom"]]},"references":{"doc://Atoms/documentation/Atoms/WillSetAtom/reset()":{"role":"symbol","title":"reset()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reset"},{"kind":"text","text":"()"}],"abstract":[{"type":"text","text":"Resets the value of the "},{"type":"codeVoice","code":"WillSetAtom"},{"type":"text","text":" to its initial value, optionally running a custom reset closure."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom\/reset()","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/willsetatom\/reset()"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/WillSetAtom":{"role":"symbol","title":"WillSetAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"WillSetAtom"}],"abstract":[{"type":"text","text":"A generic structure that conforms to the "},{"type":"codeVoice","code":"WritableAtom"},{"type":"text","text":" and "},{"type":"codeVoice","code":"ResettableAtom"},{"type":"text","text":" protocols."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"WillSetAtom"}],"url":"\/documentation\/atoms\/willsetatom"}}}
--------------------------------------------------------------------------------
/docs/data/documentation/atoms/willsetatom/type.json:
--------------------------------------------------------------------------------
1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/willsetatom\/type"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom\/type","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The type of the value wrapped in the "},{"type":"codeVoice","code":"WillSetAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"title":"type","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms11WillSetAtomV4typexmvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/WillSetAtom":{"role":"symbol","title":"WillSetAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"WillSetAtom"}],"abstract":[{"type":"text","text":"A generic structure that conforms to the "},{"type":"codeVoice","code":"WritableAtom"},{"type":"text","text":" and "},{"type":"codeVoice","code":"ResettableAtom"},{"type":"text","text":" protocols."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"WillSetAtom"}],"url":"\/documentation\/atoms\/willsetatom"},"doc://Atoms/documentation/Atoms/WillSetAtom/type":{"role":"symbol","title":"type","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"abstract":[{"type":"text","text":"The type of the value wrapped in the "},{"type":"codeVoice","code":"WillSetAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom\/type","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/willsetatom\/type"}}}
--------------------------------------------------------------------------------
/docs/developer-og-twitter.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bangerang/swift-atoms/d19c9a66c5803f60ca7ed08e6f32eab047f6234a/docs/developer-og-twitter.jpg
--------------------------------------------------------------------------------
/docs/developer-og.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bangerang/swift-atoms/d19c9a66c5803f60ca7ed08e6f32eab047f6234a/docs/developer-og.jpg
--------------------------------------------------------------------------------
/docs/diagnostics.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/docs/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bangerang/swift-atoms/d19c9a66c5803f60ca7ed08e6f32eab047f6234a/docs/favicon.ico
--------------------------------------------------------------------------------
/docs/favicon.svg:
--------------------------------------------------------------------------------
1 |
10 |
11 |
--------------------------------------------------------------------------------
/docs/img/added-icon.d6f7e47d.svg:
--------------------------------------------------------------------------------
1 |
10 |
11 |
--------------------------------------------------------------------------------
/docs/img/deprecated-icon.015b4f17.svg:
--------------------------------------------------------------------------------
1 |
10 |
11 |
--------------------------------------------------------------------------------
/docs/img/modified-icon.f496e73d.svg:
--------------------------------------------------------------------------------
1 |
10 |
11 |
--------------------------------------------------------------------------------
/docs/img/no-image@2x.df2a0a50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bangerang/swift-atoms/d19c9a66c5803f60ca7ed08e6f32eab047f6234a/docs/img/no-image@2x.df2a0a50.png
--------------------------------------------------------------------------------
/docs/js/highlight-js-diff.62d66733.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * This source file is part of the Swift.org open source project
3 | *
4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors
5 | * Licensed under Apache License v2.0 with Runtime Library Exception
6 | *
7 | * See https://swift.org/LICENSE.txt for license information
8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors
9 | */
10 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-diff"],{"48b8":function(e,n){function a(e){const n=e.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:n.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:n.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}e.exports=a}}]);
--------------------------------------------------------------------------------
/docs/js/highlight-js-http.163e45b6.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * This source file is part of the Swift.org open source project
3 | *
4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors
5 | * Licensed under Apache License v2.0 with Runtime Library Exception
6 | *
7 | * See https://swift.org/LICENSE.txt for license information
8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors
9 | */
10 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-http"],{c01d:function(e,n){function a(e){const n=e.regex,a="HTTP/(2|1\\.[01])",s=/[A-Za-z][A-Za-z0-9-]*/,t={className:"attribute",begin:n.concat("^",s,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},i=[t,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})",end:/$/,contains:[{className:"meta",begin:a},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:i}},{begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:i}},e.inherit(t,{relevance:0})]}}e.exports=a}}]);
--------------------------------------------------------------------------------
/docs/js/highlight-js-java.8326d9d8.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * This source file is part of the Swift.org open source project
3 | *
4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors
5 | * Licensed under Apache License v2.0 with Runtime Library Exception
6 | *
7 | * See https://swift.org/LICENSE.txt for license information
8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors
9 | */
10 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-java"],{"332f":function(e,a){var n="[0-9](_*[0-9])*",s=`\\.(${n})`,i="[0-9a-fA-F](_*[0-9a-fA-F])*",t={className:"number",variants:[{begin:`(\\b(${n})((${s})|\\.)?|(${s}))[eE][+-]?(${n})[fFdD]?\\b`},{begin:`\\b(${n})((${s})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${s})[fFdD]?\\b`},{begin:`\\b(${n})[fFdD]\\b`},{begin:`\\b0[xX]((${i})\\.?|(${i})?\\.(${i}))[pP][+-]?(${n})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${i})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function r(e,a,n){return-1===n?"":e.replace(a,s=>r(e,a,n-1))}function c(e){e.regex;const a="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",n=a+r("(?:<"+a+"~~~(?:\\s*,\\s*"+a+"~~~)*>)?",/~~~/g,2),s=["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do"],i=["super","this"],c=["false","true","null"],l=["char","boolean","long","float","int","byte","short","double"],o={keyword:s,literal:c,type:l,built_in:i},b={className:"meta",begin:"@"+a,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},_={className:"params",begin:/\(/,end:/\)/,keywords:o,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:o,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,a],className:{1:"keyword",3:"title.class"}},{begin:[a,/\s+/,a,/\s+/,/=/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,a],className:{1:"keyword",3:"title.class"},contains:[_,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+n+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:o,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:o,relevance:0,contains:[b,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,t,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},t,b]}}e.exports=c}}]);
--------------------------------------------------------------------------------
/docs/js/highlight-js-json.471128d2.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * This source file is part of the Swift.org open source project
3 | *
4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors
5 | * Licensed under Apache License v2.0 with Runtime Library Exception
6 | *
7 | * See https://swift.org/LICENSE.txt for license information
8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors
9 | */
10 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-json"],{"5ad2":function(n,e){function a(n){const e={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},a={match:/[{}[\],:]/,className:"punctuation",relevance:0},s={beginKeywords:["true","false","null"].join(" ")};return{name:"JSON",contains:[e,a,n.QUOTE_STRING_MODE,s,n.C_NUMBER_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}n.exports=a}}]);
--------------------------------------------------------------------------------
/docs/js/highlight-js-llvm.6100b125.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * This source file is part of the Swift.org open source project
3 | *
4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors
5 | * Licensed under Apache License v2.0 with Runtime Library Exception
6 | *
7 | * See https://swift.org/LICENSE.txt for license information
8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors
9 | */
10 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-llvm"],{"7c30":function(e,n){function a(e){const n=e.regex,a=/([-a-zA-Z$._][\w$.-]*)/,t={className:"type",begin:/\bi\d+(?=\s|\b)/},i={className:"operator",relevance:0,begin:/=/},c={className:"punctuation",relevance:0,begin:/,/},l={className:"number",variants:[{begin:/0[xX][a-fA-F0-9]+/},{begin:/-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/}],relevance:0},r={className:"symbol",variants:[{begin:/^\s*[a-z]+:/}],relevance:0},s={className:"variable",variants:[{begin:n.concat(/%/,a)},{begin:/%\d+/},{begin:/#\d+/}]},o={className:"title",variants:[{begin:n.concat(/@/,a)},{begin:/@\d+/},{begin:n.concat(/!/,a)},{begin:n.concat(/!\d+/,a)},{begin:/!\d+/}]};return{name:"LLVM IR",keywords:"begin end true false declare define global constant private linker_private internal available_externally linkonce linkonce_odr weak weak_odr appending dllimport dllexport common default hidden protected extern_weak external thread_local zeroinitializer undef null to tail target triple datalayout volatile nuw nsw nnan ninf nsz arcp fast exact inbounds align addrspace section alias module asm sideeffect gc dbg linker_private_weak attributes blockaddress initialexec localdynamic localexec prefix unnamed_addr ccc fastcc coldcc x86_stdcallcc x86_fastcallcc arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel intel_ocl_bicc msp430_intrcc spir_func spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc cc c signext zeroext inreg sret nounwind noreturn noalias nocapture byval nest readnone readonly inlinehint noinline alwaysinline optsize ssp sspreq noredzone noimplicitfloat naked builtin cold nobuiltin noduplicate nonlazybind optnone returns_twice sanitize_address sanitize_memory sanitize_thread sspstrong uwtable returned type opaque eq ne slt sgt sle sge ult ugt ule uge oeq one olt ogt ole oge ord uno ueq une x acq_rel acquire alignstack atomic catch cleanup filter inteldialect max min monotonic nand personality release seq_cst singlethread umax umin unordered xchg add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr and or xor icmp fcmp phi call trunc zext sext fptrunc fpext uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast addrspacecast select va_arg ret br switch invoke unwind unreachable indirectbr landingpad resume malloc alloca free load store getelementptr extractelement insertelement shufflevector getresult extractvalue insertvalue atomicrmw cmpxchg fence argmemonly double",contains:[t,e.COMMENT(/;\s*$/,null,{relevance:0}),e.COMMENT(/;/,/$/),e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:/"/,end:/[^\\]"/}]},o,c,i,s,r,l]}}e.exports=a}}]);
--------------------------------------------------------------------------------
/docs/js/highlight-js-markdown.90077643.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * This source file is part of the Swift.org open source project
3 | *
4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors
5 | * Licensed under Apache License v2.0 with Runtime Library Exception
6 | *
7 | * See https://swift.org/LICENSE.txt for license information
8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors
9 | */
10 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-markdown"],{"04b0":function(n,e){function a(n){const e=n.regex,a={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},i={begin:"^[-\\*]{3,}",end:"$"},s={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},c={className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},t={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},g=/[A-Za-z][A-Za-z0-9+.-]*/,d={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:e.concat(/\[.+?\]\(/,g,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},l={className:"strong",contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},o={className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]};l.contains.push(o),o.contains.push(l);let b=[a,d];l.contains=l.contains.concat(b),o.contains=o.contains.concat(b),b=b.concat(l,o);const r={className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:b},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:b}]}]},m={className:"quote",begin:"^>\\s+",contains:b,end:"$"};return{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[r,a,c,l,o,m,s,i,d,t]}}n.exports=a}}]);
--------------------------------------------------------------------------------
/docs/js/highlight-js-shell.dd7f411f.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * This source file is part of the Swift.org open source project
3 | *
4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors
5 | * Licensed under Apache License v2.0 with Runtime Library Exception
6 | *
7 | * See https://swift.org/LICENSE.txt for license information
8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors
9 | */
10 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-shell"],{b65b:function(s,n){function e(s){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}s.exports=e}}]);
--------------------------------------------------------------------------------
/docs/js/highlight-js-xml.9c3688c7.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * This source file is part of the Swift.org open source project
3 | *
4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors
5 | * Licensed under Apache License v2.0 with Runtime Library Exception
6 | *
7 | * See https://swift.org/LICENSE.txt for license information
8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors
9 | */
10 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-xml"],{"8dcb":function(e,n){function a(e){const n=e.regex,a=n.concat(/[A-Z_]/,n.optional(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),s=/[A-Za-z0-9._:-]+/,t={className:"symbol",begin:/&[a-z]+;|[0-9]+;|[a-f0-9]+;/},i={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},c=e.inherit(i,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{className:"string"}),r=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),g={endsWithParent:!0,illegal:/,relevance:0,contains:[{className:"attr",begin:s,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[t]},{begin:/'/,end:/'/,contains:[t]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin://,relevance:10,contains:[i,r,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[i,c,r,l]}]}]},e.COMMENT(//,{relevance:10}),{begin://,relevance:10},t,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/