├── .gitattributes
├── .github
└── workflows
│ ├── ci.yaml
│ └── publish_release.yml
├── .github_changelog_generator
├── .gitignore
├── .ruby-version
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── Cartfile
├── Cartfile.resolved
├── Carthage
└── Checkouts
│ ├── PINCache
│ ├── .github
│ │ └── workflows
│ │ │ ├── ci.yaml
│ │ │ └── publish_release.yml
│ ├── .github_changelog_generator
│ ├── .gitignore
│ ├── .gitmodules
│ ├── .ruby-version
│ ├── CHANGELOG.md
│ ├── CODE_OF_CONDUCT.md
│ ├── Cartfile
│ ├── Cartfile.resolved
│ ├── Carthage
│ │ └── Checkouts
│ │ │ └── PINOperation
│ │ │ ├── .github
│ │ │ └── workflows
│ │ │ │ ├── ci.yml
│ │ │ │ └── publish_release.yml
│ │ │ ├── .github_changelog_generator
│ │ │ ├── .gitignore
│ │ │ ├── .swiftpm
│ │ │ └── xcode
│ │ │ │ └── package.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ │ ├── BUCK
│ │ │ ├── CHANGELOG.md
│ │ │ ├── CI
│ │ │ ├── build.sh
│ │ │ └── exclude-from-build.json
│ │ │ ├── CODE_OF_CONDUCT.md
│ │ │ ├── Dangerfile
│ │ │ ├── Example
│ │ │ ├── PINOperationExample.xcodeproj
│ │ │ │ ├── project.pbxproj
│ │ │ │ └── project.xcworkspace
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ ├── PINOperationExample.xcworkspace
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ ├── PINOperationExample
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Assets.xcassets
│ │ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Base.lproj
│ │ │ │ │ └── LaunchScreen.storyboard
│ │ │ │ ├── Info.plist
│ │ │ │ ├── MainViewController.h
│ │ │ │ ├── MainViewController.m
│ │ │ │ └── PINOperationExample-Bridging-Header.h
│ │ │ ├── Podfile
│ │ │ └── Podfile.lock
│ │ │ ├── Gemfile
│ │ │ ├── LICENSE.txt
│ │ │ ├── PINOperation.podspec
│ │ │ ├── PINOperation.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ ├── project.xcworkspace
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ └── xcshareddata
│ │ │ │ └── xcschemes
│ │ │ │ ├── PINOperation-macOS.xcscheme
│ │ │ │ ├── PINOperation-macOSTests.xcscheme
│ │ │ │ ├── PINOperation-tvOS.xcscheme
│ │ │ │ ├── PINOperation-tvOSTests.xcscheme
│ │ │ │ ├── PINOperation-visionOS.xcscheme
│ │ │ │ ├── PINOperation-visionOSTests.xcscheme
│ │ │ │ ├── PINOperation-watchOS.xcscheme
│ │ │ │ ├── PINOperation-watchOSTests.xcscheme
│ │ │ │ ├── PINOperation.xcscheme
│ │ │ │ └── PINOperationTests.xcscheme
│ │ │ ├── Package.swift
│ │ │ ├── README.md
│ │ │ ├── RELEASE.md
│ │ │ ├── Scripts
│ │ │ ├── release.sh
│ │ │ └── tag-release-branch.sh
│ │ │ ├── Source
│ │ │ ├── Info.plist
│ │ │ ├── PINOperation.h
│ │ │ ├── PINOperationGroup.h
│ │ │ ├── PINOperationGroup.m
│ │ │ ├── PINOperationMacros.h
│ │ │ ├── PINOperationQueue.h
│ │ │ ├── PINOperationQueue.m
│ │ │ ├── PINOperationTypes.h
│ │ │ ├── PrivacyInfo.xcprivacy
│ │ │ └── include
│ │ │ │ └── PINOperation
│ │ │ │ ├── PINOperation.h
│ │ │ │ ├── PINOperationGroup.h
│ │ │ │ ├── PINOperationMacros.h
│ │ │ │ ├── PINOperationQueue.h
│ │ │ │ └── PINOperationTypes.h
│ │ │ ├── Tests
│ │ │ ├── Info.plist
│ │ │ ├── PINOperationGroupTests.m
│ │ │ └── PINOperationQueueTests.m
│ │ │ ├── build_docs.sh
│ │ │ ├── build_tests.sh
│ │ │ ├── docs
│ │ │ ├── com.pinterest.PINOperationQueue-1.0.docset
│ │ │ │ └── Contents
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ └── Resources
│ │ │ │ │ ├── Documents
│ │ │ │ │ ├── Blocks
│ │ │ │ │ │ └── PINOperationBlock.html
│ │ │ │ │ ├── Constants
│ │ │ │ │ │ └── PINOperationQueuePriority.html
│ │ │ │ │ ├── Protocols
│ │ │ │ │ │ └── PINOperationReference.html
│ │ │ │ │ ├── css
│ │ │ │ │ │ └── scss
│ │ │ │ │ │ │ ├── _index.scss
│ │ │ │ │ │ │ ├── _layout.scss
│ │ │ │ │ │ │ ├── _normalize.scss
│ │ │ │ │ │ │ ├── _object.scss
│ │ │ │ │ │ │ ├── _print.scss
│ │ │ │ │ │ │ ├── _variables.scss
│ │ │ │ │ │ │ ├── _xcode.scss
│ │ │ │ │ │ │ └── style.scss
│ │ │ │ │ ├── hierarchy.html
│ │ │ │ │ ├── img
│ │ │ │ │ │ ├── button_bar_background.png
│ │ │ │ │ │ ├── disclosure.png
│ │ │ │ │ │ ├── disclosure_open.png
│ │ │ │ │ │ ├── library_background.png
│ │ │ │ │ │ └── title_background.png
│ │ │ │ │ ├── index.html
│ │ │ │ │ └── js
│ │ │ │ │ │ └── script.js
│ │ │ │ │ ├── Nodes.xml
│ │ │ │ │ ├── Tokens1.xml
│ │ │ │ │ ├── Tokens2.xml
│ │ │ │ │ ├── Tokens3.xml
│ │ │ │ │ ├── docSet.dsidx
│ │ │ │ │ ├── docSet.dsidx-shm
│ │ │ │ │ ├── docSet.dsidx-wal
│ │ │ │ │ ├── docSet.mom
│ │ │ │ │ ├── docSet.skidx
│ │ │ │ │ ├── docSet.toc
│ │ │ │ │ └── docSet.tokencache
│ │ │ └── html
│ │ │ │ ├── Blocks
│ │ │ │ └── PINOperationBlock.html
│ │ │ │ ├── Constants
│ │ │ │ └── PINOperationQueuePriority.html
│ │ │ │ ├── Protocols
│ │ │ │ └── PINOperationReference.html
│ │ │ │ ├── css
│ │ │ │ └── scss
│ │ │ │ │ ├── _index.scss
│ │ │ │ │ ├── _layout.scss
│ │ │ │ │ ├── _normalize.scss
│ │ │ │ │ ├── _object.scss
│ │ │ │ │ ├── _print.scss
│ │ │ │ │ ├── _variables.scss
│ │ │ │ │ ├── _xcode.scss
│ │ │ │ │ └── style.scss
│ │ │ │ ├── hierarchy.html
│ │ │ │ ├── img
│ │ │ │ ├── button_bar_background.png
│ │ │ │ ├── disclosure.png
│ │ │ │ ├── disclosure_open.png
│ │ │ │ ├── library_background.png
│ │ │ │ └── title_background.png
│ │ │ │ ├── index.html
│ │ │ │ └── js
│ │ │ │ └── script.js
│ │ │ ├── makefile
│ │ │ └── run_tests_update_status.sh
│ ├── IntegrationTests
│ │ └── PINCache-SPM-Integration
│ │ │ ├── PINCache-SPM-Integration.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ ├── project.xcworkspace
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ └── xcshareddata
│ │ │ │ └── xcschemes
│ │ │ │ └── PINCache-SPM-Integration.xcscheme
│ │ │ └── PINCache-SPM-Integration
│ │ │ ├── Assets.xcassets
│ │ │ ├── AccentColor.colorset
│ │ │ │ └── Contents.json
│ │ │ ├── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ └── Contents.json
│ │ │ ├── ContentView.swift
│ │ │ ├── Info.plist
│ │ │ ├── PINCache_SPM_IntegrationApp.swift
│ │ │ └── Preview Content
│ │ │ └── Preview Assets.xcassets
│ │ │ └── Contents.json
│ ├── LICENSE.txt
│ ├── Makefile
│ ├── PINCache.podspec
│ ├── PINCache.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ ├── PINCache-macOS.xcscheme
│ │ │ ├── PINCache-tvOS.xcscheme
│ │ │ ├── PINCache-visionOS.xcscheme
│ │ │ ├── PINCache-watchOS.xcscheme
│ │ │ └── PINCache.xcscheme
│ ├── PINCache.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── Package.swift
│ ├── README.md
│ ├── RELEASE.md
│ ├── Scripts
│ │ ├── release.sh
│ │ └── tag-release-branch.sh
│ ├── Source
│ │ ├── Info.plist
│ │ ├── PINCache.h
│ │ ├── PINCache.m
│ │ ├── PINCacheMacros.h
│ │ ├── PINCacheObjectSubscripting.h
│ │ ├── PINCaching.h
│ │ ├── PINDiskCache.h
│ │ ├── PINDiskCache.m
│ │ ├── PINMemoryCache.h
│ │ ├── PINMemoryCache.m
│ │ ├── PrivacyInfo.xcprivacy
│ │ └── include
│ │ │ └── PINCache
│ │ │ ├── PINCache.h
│ │ │ ├── PINCacheMacros.h
│ │ │ ├── PINCacheObjectSubscripting.h
│ │ │ ├── PINCaching.h
│ │ │ ├── PINDiskCache.h
│ │ │ └── PINMemoryCache.h
│ ├── Tests
│ │ ├── Default-568h@2x.png
│ │ ├── Info.plist
│ │ ├── NSDate+PINCacheTests.h
│ │ ├── NSDate+PINCacheTests.m
│ │ ├── PINCacheTests.h
│ │ ├── PINCacheTests.m
│ │ ├── PINDiskCache+PINCacheTests.h
│ │ └── PINDiskCache+PINCacheTests.m
│ ├── build_docs.sh
│ └── docs
│ │ ├── com.pinterest.PINCache-2.0.docset
│ │ └── Contents
│ │ │ ├── Info.plist
│ │ │ └── Resources
│ │ │ ├── Documents
│ │ │ ├── Blocks
│ │ │ │ ├── PINCacheBlock.html
│ │ │ │ ├── PINCacheObjectBlock.html
│ │ │ │ ├── PINDiskCacheBlock.html
│ │ │ │ ├── PINDiskCacheFileURLBlock.html
│ │ │ │ ├── PINDiskCacheObjectBlock.html
│ │ │ │ ├── PINMemoryCacheBlock.html
│ │ │ │ └── PINMemoryCacheObjectBlock.html
│ │ │ ├── Classes
│ │ │ │ ├── PINCache.html
│ │ │ │ ├── PINDiskCache.html
│ │ │ │ └── PINMemoryCache.html
│ │ │ ├── Protocols
│ │ │ │ └── PINCacheObjectSubscripting.html
│ │ │ ├── css
│ │ │ │ └── scss
│ │ │ │ │ ├── _index.scss
│ │ │ │ │ ├── _layout.scss
│ │ │ │ │ ├── _normalize.scss
│ │ │ │ │ ├── _object.scss
│ │ │ │ │ ├── _print.scss
│ │ │ │ │ ├── _variables.scss
│ │ │ │ │ ├── _xcode.scss
│ │ │ │ │ └── style.scss
│ │ │ ├── hierarchy.html
│ │ │ ├── img
│ │ │ │ ├── button_bar_background.png
│ │ │ │ ├── disclosure.png
│ │ │ │ ├── disclosure_open.png
│ │ │ │ ├── library_background.png
│ │ │ │ └── title_background.png
│ │ │ ├── index.html
│ │ │ └── js
│ │ │ │ └── script.js
│ │ │ ├── Nodes.xml
│ │ │ ├── Tokens1.xml
│ │ │ ├── Tokens10.xml
│ │ │ ├── Tokens11.xml
│ │ │ ├── Tokens2.xml
│ │ │ ├── Tokens3.xml
│ │ │ ├── Tokens4.xml
│ │ │ ├── Tokens5.xml
│ │ │ ├── Tokens6.xml
│ │ │ ├── Tokens7.xml
│ │ │ ├── Tokens8.xml
│ │ │ ├── Tokens9.xml
│ │ │ ├── docSet.dsidx
│ │ │ ├── docSet.dsidx-shm
│ │ │ ├── docSet.dsidx-wal
│ │ │ ├── docSet.mom
│ │ │ ├── docSet.skidx
│ │ │ ├── docSet.toc
│ │ │ └── docSet.tokencache
│ │ └── html
│ │ ├── Blocks
│ │ ├── PINCacheBlock.html
│ │ ├── PINCacheObjectBlock.html
│ │ ├── PINDiskCacheBlock.html
│ │ ├── PINDiskCacheFileURLBlock.html
│ │ ├── PINDiskCacheObjectBlock.html
│ │ ├── PINMemoryCacheBlock.html
│ │ └── PINMemoryCacheObjectBlock.html
│ │ ├── Classes
│ │ ├── PINCache.html
│ │ ├── PINDiskCache.html
│ │ └── PINMemoryCache.html
│ │ ├── Protocols
│ │ └── PINCacheObjectSubscripting.html
│ │ ├── css
│ │ └── scss
│ │ │ ├── _index.scss
│ │ │ ├── _layout.scss
│ │ │ ├── _normalize.scss
│ │ │ ├── _object.scss
│ │ │ ├── _print.scss
│ │ │ ├── _variables.scss
│ │ │ ├── _xcode.scss
│ │ │ └── style.scss
│ │ ├── hierarchy.html
│ │ ├── img
│ │ ├── button_bar_background.png
│ │ ├── disclosure.png
│ │ ├── disclosure_open.png
│ │ ├── library_background.png
│ │ └── title_background.png
│ │ ├── index.html
│ │ └── js
│ │ └── script.js
│ └── PINOperation
│ ├── .github
│ └── workflows
│ │ ├── ci.yml
│ │ ├── publish_release.yml
│ │ └── push_release_branch.yml
│ ├── .github_changelog_generator
│ ├── .gitignore
│ ├── .swiftpm
│ └── xcode
│ │ └── package.xcworkspace
│ │ └── contents.xcworkspacedata
│ ├── BUCK
│ ├── CHANGELOG.md
│ ├── CI
│ ├── build.sh
│ └── exclude-from-build.json
│ ├── CODE_OF_CONDUCT.md
│ ├── Example
│ ├── PINOperationExample.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── PINOperationExample.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── PINOperationExample
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ │ └── LaunchScreen.storyboard
│ │ ├── Info.plist
│ │ ├── MainViewController.h
│ │ ├── MainViewController.m
│ │ └── PINOperationExample-Bridging-Header.h
│ ├── Podfile
│ └── Podfile.lock
│ ├── LICENSE.txt
│ ├── PINOperation.podspec
│ ├── PINOperation.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ │ └── xcschemes
│ │ ├── PINOperation-macOS.xcscheme
│ │ ├── PINOperation-macOSTests.xcscheme
│ │ ├── PINOperation-tvOS.xcscheme
│ │ ├── PINOperation-tvOSTests.xcscheme
│ │ ├── PINOperation-visionOS.xcscheme
│ │ ├── PINOperation-visionOSTests.xcscheme
│ │ ├── PINOperation-watchOS.xcscheme
│ │ ├── PINOperation-watchOSTests.xcscheme
│ │ ├── PINOperation.xcscheme
│ │ └── PINOperationTests.xcscheme
│ ├── Package.swift
│ ├── README.md
│ ├── RELEASE.md
│ ├── Scripts
│ ├── release.sh
│ └── tag-release-branch.sh
│ ├── Source
│ ├── Info.plist
│ ├── PINOperation.h
│ ├── PINOperationGroup.h
│ ├── PINOperationGroup.m
│ ├── PINOperationMacros.h
│ ├── PINOperationQueue.h
│ ├── PINOperationQueue.m
│ ├── PINOperationTypes.h
│ ├── PrivacyInfo.xcprivacy
│ └── include
│ │ └── PINOperation
│ │ ├── PINOperation.h
│ │ ├── PINOperationGroup.h
│ │ ├── PINOperationMacros.h
│ │ ├── PINOperationQueue.h
│ │ └── PINOperationTypes.h
│ ├── Tests
│ ├── Info.plist
│ ├── PINOperationGroupTests.m
│ └── PINOperationQueueTests.m
│ ├── build_docs.sh
│ ├── build_tests.sh
│ ├── docs
│ ├── com.pinterest.PINOperationQueue-1.0.docset
│ │ └── Contents
│ │ │ ├── Info.plist
│ │ │ └── Resources
│ │ │ ├── Documents
│ │ │ ├── Blocks
│ │ │ │ └── PINOperationBlock.html
│ │ │ ├── Constants
│ │ │ │ └── PINOperationQueuePriority.html
│ │ │ ├── Protocols
│ │ │ │ └── PINOperationReference.html
│ │ │ ├── css
│ │ │ │ └── scss
│ │ │ │ │ ├── _index.scss
│ │ │ │ │ ├── _layout.scss
│ │ │ │ │ ├── _normalize.scss
│ │ │ │ │ ├── _object.scss
│ │ │ │ │ ├── _print.scss
│ │ │ │ │ ├── _variables.scss
│ │ │ │ │ ├── _xcode.scss
│ │ │ │ │ └── style.scss
│ │ │ ├── hierarchy.html
│ │ │ ├── img
│ │ │ │ ├── button_bar_background.png
│ │ │ │ ├── disclosure.png
│ │ │ │ ├── disclosure_open.png
│ │ │ │ ├── library_background.png
│ │ │ │ └── title_background.png
│ │ │ ├── index.html
│ │ │ └── js
│ │ │ │ └── script.js
│ │ │ ├── Nodes.xml
│ │ │ ├── Tokens1.xml
│ │ │ ├── Tokens2.xml
│ │ │ ├── Tokens3.xml
│ │ │ ├── docSet.dsidx
│ │ │ ├── docSet.dsidx-shm
│ │ │ ├── docSet.dsidx-wal
│ │ │ ├── docSet.mom
│ │ │ ├── docSet.skidx
│ │ │ ├── docSet.toc
│ │ │ └── docSet.tokencache
│ └── html
│ │ ├── Blocks
│ │ └── PINOperationBlock.html
│ │ ├── Constants
│ │ └── PINOperationQueuePriority.html
│ │ ├── Protocols
│ │ └── PINOperationReference.html
│ │ ├── css
│ │ └── scss
│ │ │ ├── _index.scss
│ │ │ ├── _layout.scss
│ │ │ ├── _normalize.scss
│ │ │ ├── _object.scss
│ │ │ ├── _print.scss
│ │ │ ├── _variables.scss
│ │ │ ├── _xcode.scss
│ │ │ └── style.scss
│ │ ├── hierarchy.html
│ │ ├── img
│ │ ├── button_bar_background.png
│ │ ├── disclosure.png
│ │ ├── disclosure_open.png
│ │ ├── library_background.png
│ │ └── title_background.png
│ │ ├── index.html
│ │ └── js
│ │ └── script.js
│ ├── makefile
│ └── run_tests_update_status.sh
├── Examples
├── Example-Mac
│ ├── Example-Mac.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── Example-Mac.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── PINRemoteImage
│ │ ├── APNGViewController.h
│ │ ├── APNGViewController.m
│ │ ├── APNGViewController.xib
│ │ ├── AnimatedWebPViewController.h
│ │ ├── AnimatedWebPViewController.m
│ │ ├── AnimatedWebPViewController.xib
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.m
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Contents.json
│ │ │ └── white-pinterest-logo.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── white-pinterest-logo@1x.png
│ │ │ │ └── white-pinterest-logo@2x.png
│ │ ├── Base.lproj
│ │ │ ├── MainMenu.xib
│ │ │ └── PINImageCollectionViewItemView.xib
│ │ ├── DegradedViewController.h
│ │ ├── DegradedViewController.m
│ │ ├── DegradedViewController.xib
│ │ ├── GIFViewController.h
│ │ ├── GIFViewController.m
│ │ ├── GIFViewController.xib
│ │ ├── Info.plist
│ │ ├── PINViewWithBackgroundColor.h
│ │ ├── PINViewWithBackgroundColor.m
│ │ ├── ProcessingViewController.h
│ │ ├── ProcessingViewController.m
│ │ ├── ProcessingViewController.xib
│ │ ├── ProgressiveViewController.h
│ │ ├── ProgressiveViewController.m
│ │ ├── ProgressiveViewController.xib
│ │ ├── ScrollViewController.h
│ │ ├── ScrollViewController.m
│ │ ├── ScrollViewController.xib
│ │ ├── WebPViewController.h
│ │ ├── WebPViewController.m
│ │ ├── WebPViewController.xib
│ │ └── main.m
│ ├── Podfile
│ └── Podfile.lock
├── Example-Shared
│ ├── Kitten.h
│ └── Kitten.m
├── Example-Xcode-SPM
│ ├── Example-Xcode-SPM.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── Example-Xcode-SPM
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ ├── AccentColor.colorset
│ │ │ └── Contents.json
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ ├── SceneDelegate.swift
│ │ └── ViewController.swift
├── Example-tvOS
│ ├── Example-tvOS.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── Example-tvOS.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── PINRemoteImage.tvOSExample
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ ├── App Icon & Top Shelf Image.brandassets
│ │ │ │ ├── App Icon - Large.imagestack
│ │ │ │ │ ├── Back.imagestacklayer
│ │ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Front.imagestacklayer
│ │ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Middle.imagestacklayer
│ │ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── Contents.json
│ │ │ │ ├── App Icon - Small.imagestack
│ │ │ │ │ ├── Back.imagestacklayer
│ │ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Front.imagestacklayer
│ │ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Middle.imagestacklayer
│ │ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── Contents.json
│ │ │ │ ├── Contents.json
│ │ │ │ └── Top Shelf Image.imageset
│ │ │ │ │ └── Contents.json
│ │ │ ├── Contents.json
│ │ │ ├── LaunchImage.launchimage
│ │ │ │ └── Contents.json
│ │ │ └── white-pinterest-logo.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── white-pinterest-logo@1x.png
│ │ ├── Base.lproj
│ │ │ └── Main.storyboard
│ │ ├── CollectionViewCell.swift
│ │ ├── CollectionViewController.swift
│ │ ├── DegradedViewController.swift
│ │ ├── GIFViewController.swift
│ │ ├── Info.plist
│ │ ├── ProcessingViewController.swift
│ │ ├── ProgressiveViewController.swift
│ │ └── WebPViewController.swift
│ ├── Podfile
│ └── Podfile.lock
├── Example
│ ├── Example.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── Example.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── PINRemoteImage
│ │ ├── APNGViewController.h
│ │ ├── APNGViewController.m
│ │ ├── AnimatedWebPViewController.h
│ │ ├── AnimatedWebPViewController.m
│ │ ├── Base.lproj
│ │ │ └── Main.storyboard
│ │ ├── DegradedViewController.h
│ │ ├── DegradedViewController.m
│ │ ├── GIFViewController.h
│ │ ├── GIFViewController.m
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ └── LaunchImage.launchimage
│ │ │ │ └── Contents.json
│ │ ├── Media.xcassets
│ │ │ └── white-pinterest-logo.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── white-pinterest-logo@1x.png
│ │ │ │ └── white-pinterest-logo@2x.png
│ │ ├── PINAppDelegate.h
│ │ ├── PINAppDelegate.m
│ │ ├── PINRemoteImage-Info.plist
│ │ ├── PINViewController.h
│ │ ├── PINViewController.m
│ │ ├── ProcessingViewController.h
│ │ ├── ProcessingViewController.m
│ │ ├── ProgressiveViewController.h
│ │ ├── ProgressiveViewController.m
│ │ ├── WebPViewController.h
│ │ ├── WebPViewController.m
│ │ ├── en.lproj
│ │ │ └── InfoPlist.strings
│ │ └── main.m
│ ├── Podfile
│ └── Podfile.lock
└── Swift-Example
│ ├── Podfile
│ ├── Podfile.lock
│ ├── Swift-Example.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ ├── Swift-Example.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── Swift-Example
│ ├── APNGViewController.swift
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ └── AppIcon.appiconset
│ │ └── Contents.json
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── DegradedViewController.swift
│ ├── GIFViewController.swift
│ ├── Info.plist
│ ├── Media.xcassets
│ └── white-pinterest-logo.imageset
│ │ ├── Contents.json
│ │ ├── white-pinterest-logo@1x.png
│ │ └── white-pinterest-logo@2x.png
│ ├── ProcessingViewController.swift
│ ├── ProgressiveViewController.swift
│ ├── ScrollViewController.swift
│ └── WebPViewController.swift
├── LICENSE
├── Makefile
├── PINRemoteImage.podspec
├── PINRemoteImage.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
└── xcshareddata
│ └── xcschemes
│ ├── PINRemoteImage-tvOS.xcscheme
│ └── PINRemoteImage.xcscheme
├── PINRemoteImage.xcworkspace
├── contents.xcworkspacedata
└── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── PINRemoteImage
└── PINRemoteImageTests
│ ├── Info.plist
│ └── PINRemoteImageTests.m
├── Package.swift
├── README.md
├── RELEASE.md
├── Scripts
├── release.sh
└── tag-release-branch.sh
├── Source
├── Classes
│ ├── .gitkeep
│ ├── AnimatedImages
│ │ ├── PINAPNGAnimatedImage.m
│ │ ├── PINAnimatedImage.m
│ │ ├── PINAnimatedImageView.m
│ │ ├── PINCachedAnimatedImage.m
│ │ ├── PINGIFAnimatedImage.m
│ │ └── PINWebPAnimatedImage.m
│ ├── Categories
│ │ ├── NSData+ImageDetectors.m
│ │ ├── NSHTTPURLResponse+MaxAge.m
│ │ ├── PINImage+DecodedImage.m
│ │ └── PINImage+ScaledImage.m
│ ├── ImageCategories
│ │ ├── PINAnimatedImageView+PINRemoteImage.m
│ │ ├── PINButton+PINRemoteImage.m
│ │ └── PINImageView+PINRemoteImage.m
│ ├── PINAlternateRepresentationProvider.m
│ ├── PINCache
│ │ └── PINCache+PINRemoteImageCaching.m
│ ├── PINDisplayLink.h
│ ├── PINDisplayLink.m
│ ├── PINProgressiveImage.m
│ ├── PINRemoteImageBasicCache.h
│ ├── PINRemoteImageBasicCache.m
│ ├── PINRemoteImageCallbacks.h
│ ├── PINRemoteImageCallbacks.m
│ ├── PINRemoteImageCategoryManager.m
│ ├── PINRemoteImageDownloadQueue.h
│ ├── PINRemoteImageDownloadQueue.m
│ ├── PINRemoteImageDownloadTask.h
│ ├── PINRemoteImageDownloadTask.m
│ ├── PINRemoteImageManager+Private.h
│ ├── PINRemoteImageManager.m
│ ├── PINRemoteImageManagerConfiguration.h
│ ├── PINRemoteImageManagerConfiguration.m
│ ├── PINRemoteImageManagerResult.m
│ ├── PINRemoteImageMemoryContainer.h
│ ├── PINRemoteImageMemoryContainer.m
│ ├── PINRemoteImageProcessorTask.h
│ ├── PINRemoteImageProcessorTask.m
│ ├── PINRemoteImageTask+Subclassing.h
│ ├── PINRemoteImageTask.h
│ ├── PINRemoteImageTask.m
│ ├── PINRemoteLock.h
│ ├── PINRemoteLock.m
│ ├── PINRemoteWeakProxy.h
│ ├── PINRemoteWeakProxy.m
│ ├── PINRequestRetryStrategy.m
│ ├── PINResume.h
│ ├── PINResume.m
│ ├── PINSpeedRecorder.h
│ ├── PINSpeedRecorder.m
│ ├── PINURLSessionManager.m
│ └── include
│ │ └── PINRemoteImage
│ │ ├── NSData+ImageDetectors.h
│ │ ├── NSHTTPURLResponse+MaxAge.h
│ │ ├── PINAPNGAnimatedImage.h
│ │ ├── PINAlternateRepresentationProvider.h
│ │ ├── PINAnimatedImage.h
│ │ ├── PINAnimatedImageView+PINRemoteImage.h
│ │ ├── PINAnimatedImageView.h
│ │ ├── PINButton+PINRemoteImage.h
│ │ ├── PINCache+PINRemoteImageCaching.h
│ │ ├── PINCachedAnimatedImage.h
│ │ ├── PINGIFAnimatedImage.h
│ │ ├── PINImage+DecodedImage.h
│ │ ├── PINImage+ScaledImage.h
│ │ ├── PINImageView+PINRemoteImage.h
│ │ ├── PINProgressiveImage.h
│ │ ├── PINRemoteImage.h
│ │ ├── PINRemoteImageCaching.h
│ │ ├── PINRemoteImageCategoryManager.h
│ │ ├── PINRemoteImageDataConvertible.h
│ │ ├── PINRemoteImageMacros.h
│ │ ├── PINRemoteImageManager.h
│ │ ├── PINRemoteImageManagerResult.h
│ │ ├── PINRequestRetryStrategy.h
│ │ ├── PINURLSessionManager.h
│ │ └── PINWebPAnimatedImage.h
├── Info.plist
├── PINRemoteImage.modulemap
└── PrivacyInfo.xcprivacy
├── Tests
├── Info.plist
├── Media.xcassets
│ ├── Contents.json
│ └── DynamicImage.imageset
│ │ ├── Contents.json
│ │ ├── Dark.png
│ │ └── Light.png
├── NSDate+PINCacheTests.h
├── NSDate+PINCacheTests.m
├── PINAnimatedImage+PINAnimatedImageTesting.h
├── PINAnimatedImage+PINAnimatedImageTesting.m
├── PINAnimatedImageTests.swift
├── PINRemoteImageTests-Bridging-Header.h
├── PINRemoteImageTests.m
├── TestAnimatedImage.h
├── TestAnimatedImage.m
└── fireworks.gif
├── build_docs.sh
├── docs
├── com.pinterest.PINRemoteImage-1.0.docset
│ └── Contents
│ │ ├── Info.plist
│ │ └── Resources
│ │ ├── Documents
│ │ ├── Blocks
│ │ │ ├── PINAnimatedImageDecodedPath.html
│ │ │ ├── PINAnimatedImageInfoReady.html
│ │ │ ├── PINAnimatedImageSharedReady.html
│ │ │ └── PINRemoteImageManagerImageCompletion.html
│ │ ├── Classes
│ │ │ ├── PINAnimatedImage.html
│ │ │ ├── PINProgressiveImage.html
│ │ │ ├── PINRemoteImageCategoryManager.html
│ │ │ └── PINRemoteImageManager.html
│ │ ├── Constants
│ │ │ ├── PINAnimatedImageError.html
│ │ │ ├── PINAnimatedImageStatus.html
│ │ │ ├── PINRemoteImageManagerDownloadOptions.html
│ │ │ ├── PINRemoteImageManagerError.html
│ │ │ ├── PINRemoteImageManagerPriority.html
│ │ │ ├── PINRemoteImageResultType.html
│ │ │ └── PINRemoteLockType.html
│ │ ├── Protocols
│ │ │ ├── PINRemoteImageCategory.html
│ │ │ └── PINRemoteImageManagerAlternateRepresentationProvider.html
│ │ ├── css
│ │ │ ├── scss
│ │ │ │ ├── _index.scss
│ │ │ │ ├── _layout.scss
│ │ │ │ ├── _normalize.scss
│ │ │ │ ├── _object.scss
│ │ │ │ ├── _print.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── _xcode.scss
│ │ │ │ └── style.scss
│ │ │ └── style.css
│ │ ├── hierarchy.html
│ │ ├── img
│ │ │ ├── button_bar_background.png
│ │ │ ├── disclosure.png
│ │ │ ├── disclosure_open.png
│ │ │ ├── library_background.png
│ │ │ └── title_background.png
│ │ ├── index.html
│ │ └── js
│ │ │ └── script.js
│ │ ├── Nodes.xml
│ │ ├── Tokens1.xml
│ │ ├── Tokens10.xml
│ │ ├── Tokens11.xml
│ │ ├── Tokens12.xml
│ │ ├── Tokens13.xml
│ │ ├── Tokens14.xml
│ │ ├── Tokens15.xml
│ │ ├── Tokens16.xml
│ │ ├── Tokens17.xml
│ │ ├── Tokens2.xml
│ │ ├── Tokens3.xml
│ │ ├── Tokens4.xml
│ │ ├── Tokens5.xml
│ │ ├── Tokens6.xml
│ │ ├── Tokens7.xml
│ │ ├── Tokens8.xml
│ │ ├── Tokens9.xml
│ │ ├── docSet.dsidx
│ │ ├── docSet.dsidx-shm
│ │ ├── docSet.dsidx-wal
│ │ ├── docSet.mom
│ │ ├── docSet.skidx
│ │ ├── docSet.toc
│ │ └── docSet.tokencache
└── html
│ ├── Blocks
│ ├── PINAnimatedImageDecodedPath.html
│ ├── PINAnimatedImageInfoReady.html
│ ├── PINAnimatedImageSharedReady.html
│ └── PINRemoteImageManagerImageCompletion.html
│ ├── Classes
│ ├── PINAnimatedImage.html
│ ├── PINProgressiveImage.html
│ ├── PINRemoteImageCategoryManager.html
│ └── PINRemoteImageManager.html
│ ├── Constants
│ ├── PINAnimatedImageError.html
│ ├── PINAnimatedImageStatus.html
│ ├── PINRemoteImageManagerDownloadOptions.html
│ ├── PINRemoteImageManagerError.html
│ ├── PINRemoteImageManagerPriority.html
│ ├── PINRemoteImageResultType.html
│ └── PINRemoteLockType.html
│ ├── Protocols
│ ├── PINRemoteImageCategory.html
│ └── PINRemoteImageManagerAlternateRepresentationProvider.html
│ ├── css
│ ├── scss
│ │ ├── _index.scss
│ │ ├── _layout.scss
│ │ ├── _normalize.scss
│ │ ├── _object.scss
│ │ ├── _print.scss
│ │ ├── _variables.scss
│ │ ├── _xcode.scss
│ │ └── style.scss
│ └── style.css
│ ├── hierarchy.html
│ ├── img
│ ├── button_bar_background.png
│ ├── disclosure.png
│ ├── disclosure_open.png
│ ├── library_background.png
│ └── title_background.png
│ ├── index.html
│ └── js
│ └── script.js
└── progressive.gif
/.gitattributes:
--------------------------------------------------------------------------------
1 | docs/* linguist-documentation
2 | Example/Pods/* linguist-vendored
3 | Example-Mac/Pods/* linguist-vendored
--------------------------------------------------------------------------------
/.github_changelog_generator:
--------------------------------------------------------------------------------
1 | issues=false
2 | since-tag=3.0.3
3 | future-release=3.0.4
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # OS X
2 | .DS_Store
3 |
4 | # Bundler
5 | .bundle
6 |
7 | # Created by https://www.gitignore.io/api/swift
8 |
9 | ### Swift ###
10 | # Xcode
11 | #
12 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
13 |
14 | ## Build generated
15 | build/
16 | DerivedData
17 |
18 | ## Various settings
19 | *.pbxuser
20 | !default.pbxuser
21 | *.mode1v3
22 | !default.mode1v3
23 | *.mode2v3
24 | !default.mode2v3
25 | *.perspectivev3
26 | !default.perspectivev3
27 | xcuserdata
28 |
29 | ## Other
30 | *.xccheckout
31 | *.moved-aside
32 | *.xcuserstate
33 | *.xcscmblueprint
34 |
35 | ## Obj-C/Swift specific
36 | *.hmap
37 | *.ipa
38 |
39 | # CocoaPods
40 | #
41 | # We recommend against adding the Pods directory to your .gitignore. However
42 | # you should judge for yourself, the pros and cons are mentioned at:
43 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
44 | #
45 | Pods/
46 |
47 | Carthage/Build
48 |
49 | ## SPM
50 | .swiftpm/
51 | .build/
52 | Package.resolved
53 |
--------------------------------------------------------------------------------
/.ruby-version:
--------------------------------------------------------------------------------
1 | 3.3.0
2 |
--------------------------------------------------------------------------------
/Cartfile:
--------------------------------------------------------------------------------
1 | github "pinterest/PINCache" ~> 3.0.4
2 | github "pinterest/PINOperation"
--------------------------------------------------------------------------------
/Cartfile.resolved:
--------------------------------------------------------------------------------
1 | github "pinterest/PINCache" "3.0.4"
2 | github "pinterest/PINOperation" "1.2.3"
3 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/.github_changelog_generator:
--------------------------------------------------------------------------------
1 | issues=false
2 | since-tag=3.0.4
3 | future-release=3.0.5
4 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/.gitignore:
--------------------------------------------------------------------------------
1 | #Ignore the Mac OS X .DS_Store files
2 | .DS_Store
3 |
4 | #Ignore user-specific settings
5 | *.mode1v3
6 | *.mode2v3
7 | *.pbxuser
8 | *.perspectivev3
9 | xcuserdata
10 |
11 | #Ignore textmate build errors
12 | *.tm_build_errors
13 |
14 | #Ignore temp nibs and swap files
15 | *.swp
16 | *~.nib
17 |
18 | .gitattributes
19 |
20 | # Buck
21 | /buck-out
22 | /.buckconfig.local
23 | /.buckd
24 |
25 | Carthage/Build
26 |
27 | # SPM
28 | .swiftpm/
29 | .build/
30 | Package.resolved
31 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/.gitmodules:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/.gitmodules
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/.ruby-version:
--------------------------------------------------------------------------------
1 | 3.3.0
2 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Cartfile:
--------------------------------------------------------------------------------
1 | github "pinterest/PINOperation" ~> 1.2.3
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Cartfile.resolved:
--------------------------------------------------------------------------------
1 | github "pinterest/PINOperation" "1.2.3"
2 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.github_changelog_generator:
--------------------------------------------------------------------------------
1 | issues=false
2 | since-tag=1.2.1
3 | future-release=1.2.2
4 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 |
3 | # Xcode
4 | #
5 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
6 |
7 | ## Build generated
8 | build/
9 | DerivedData/
10 |
11 | ## Various settings
12 | *.pbxuser
13 | !default.pbxuser
14 | *.mode1v3
15 | !default.mode1v3
16 | *.mode2v3
17 | !default.mode2v3
18 | *.perspectivev3
19 | !default.perspectivev3
20 | xcuserdata/
21 |
22 | ## Other
23 | *.moved-aside
24 | *.xcuserstate
25 |
26 | ## Obj-C/Swift specific
27 | *.hmap
28 | *.ipa
29 | *.dSYM.zip
30 | *.dSYM
31 |
32 | ## Docs
33 | docs/docsets/
34 |
35 | ## Playgrounds
36 | timeline.xctimeline
37 | playground.xcworkspace
38 |
39 | # Swift Package Manager
40 | #
41 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
42 | # Packages/
43 | .build/
44 |
45 | # Carthage
46 | #
47 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
48 | # Carthage/Checkouts
49 |
50 | Carthage/Build
51 |
52 | # Bundler
53 | .bundle
54 | vendor
55 |
56 | # Example project
57 | Example/Pods
58 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/BUCK:
--------------------------------------------------------------------------------
1 | apple_library(
2 | name = 'PINOperation',
3 | modular = True,
4 | exported_headers = glob(['Source/*.h']),
5 | srcs =
6 | glob(['Source/*.m']),
7 | preprocessor_flags = ['-fobjc-arc'],
8 | lang_preprocessor_flags = {
9 | 'C': ['-std=gnu99'],
10 | 'CXX': ['-std=gnu++11', '-stdlib=libc++'],
11 | },
12 | linker_flags = [
13 | '-weak_framework',
14 | 'UIKit',
15 | '-weak_framework',
16 | 'AppKit',
17 | ],
18 | frameworks = [
19 | '$SDKROOT/System/Library/Frameworks/Foundation.framework',
20 | ],
21 | visibility = ['PUBLIC'],
22 | )
23 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CI/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -eo pipefail
3 |
4 | make all
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CI/exclude-from-build.json:
--------------------------------------------------------------------------------
1 | [
2 | "^plans/",
3 | "^docs/",
4 | "^CI/exclude-from-build.json$",
5 | "^README.md$",
6 | "^CHANGELOG.md$"
7 | ]
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Dangerfile:
--------------------------------------------------------------------------------
1 | source_pattern = /(\.m|\.mm|\.h)$/
2 |
3 | # Sometimes it's a README fix, or something like that - which isn't relevant for
4 | # including in a project's CHANGELOG for example
5 | declared_trivial = github.pr_title.include? "#trivial"
6 | has_changes_in_source_directory = !git.modified_files.grep(/Source/).empty?
7 |
8 | modified_source_files = git.modified_files.grep(source_pattern)
9 | has_modified_source_files = !modified_source_files.empty?
10 | added_source_files = git.added_files.grep(source_pattern)
11 | has_added_source_files = !added_source_files.empty?
12 |
13 | # Make it more obvious that a PR is a work in progress and shouldn't be merged yet
14 | warn("PR is classed as Work in Progress") if github.pr_title.include? "[WIP]"
15 |
16 | # Warn when there is a big PR
17 | warn("This is a big PR, please consider splitting it up to ease code review.") if git.lines_of_code > 500
18 |
19 | # Changelog entries are required for changes to source files.
20 | no_changelog_entry = !git.modified_files.include?("CHANGELOG.md")
21 | if has_changes_in_source_directory && no_changelog_entry && !declared_trivial
22 | warn("Any source code changes should have an entry in CHANGELOG.md or have #trivial in their title.")
23 | end
24 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // PINOperationExample
4 | //
5 | // Created by Martin Púčik on 02/05/2020.
6 | // Copyright © 2020 Pinterest. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | @UIApplicationMain
12 | final class AppDelegate: UIResponder, UIApplicationDelegate {
13 | private let queue: PINOperationQueue = PINOperationQueue(maxConcurrentOperations: 5)
14 |
15 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
16 | let operationCount = 100
17 | let group = DispatchGroup()
18 | for _ in 0..
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MainViewController : UIViewController
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/PINOperationExample-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import
2 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/Podfile:
--------------------------------------------------------------------------------
1 | source 'https://cdn.cocoapods.org/'
2 | platform :ios, '12.0'
3 |
4 | target 'PINOperationExample' do
5 | pod 'PINOperation', :path => '../'
6 | end
7 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - PINOperation (1.2.3)
3 |
4 | DEPENDENCIES:
5 | - PINOperation (from `../`)
6 |
7 | EXTERNAL SOURCES:
8 | PINOperation:
9 | :path: "../"
10 |
11 | SPEC CHECKSUMS:
12 | PINOperation: fb563bcc9c32c26d6c78aaff967d405aa2ee74a7
13 |
14 | PODFILE CHECKSUM: 590bbecb30df161f3cdb5ab267c95244b0df928f
15 |
16 | COCOAPODS: 1.15.2
17 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 |
3 | gem 'danger'
4 | gem 'danger-slack'
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = 'PINOperation'
3 | s.version = '1.2.3'
4 | s.homepage = 'https://github.com/pinterest/PINOperation'
5 | s.summary = 'Fast, concurrency-limited task queue for iOS and OS X.'
6 | s.authors = { 'Garrett Moon' => 'garrett@pinterest.com' }
7 | s.source = { :git => 'https://github.com/pinterest/PINOperation.git', :tag => "#{s.version}" }
8 | s.license = { :type => 'Apache 2.0', :file => 'LICENSE.txt' }
9 | s.requires_arc = true
10 | s.frameworks = 'Foundation'
11 | s.cocoapods_version = '>= 1.13.0'
12 | s.ios.deployment_target = '12.0'
13 | s.osx.deployment_target = '10.13'
14 | s.tvos.deployment_target = '12.0'
15 | s.visionos.deployment_target = '1.0'
16 | s.watchos.deployment_target = '4.0'
17 | pch_PIN = <<-EOS
18 | #ifndef TARGET_OS_WATCH
19 | #define TARGET_OS_WATCH 0
20 | #endif
21 | EOS
22 | s.prefix_header_contents = pch_PIN
23 | s.source_files = 'Source/*.{h,m}'
24 | s.resource_bundles = { 'PINOperation' => ['Source/PrivacyInfo.xcprivacy'] }
25 | end
26 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/RELEASE.md:
--------------------------------------------------------------------------------
1 | # Release Process
2 | This document describes the process for a public PINOperation release.
3 |
4 | ### Process
5 | - Ensure the latest master build is green.
6 | - Run the github action 'Create Release'.
7 | - Check that the release was successfully published to [Github](https://github.com/pinterest/PINOperation/releases) and [Cocoapods](https://cocoapods.org/pods/PINOperation).
8 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Scripts/tag-release-branch.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -ex
3 |
4 | echo "Tagging release branch"
5 | TAG=$NEW_VERSION
6 |
7 | echo "RELEASE_TAG=$TAG" >> $GITHUB_ENV
8 | git tag $TAG
9 | git push origin --tags
10 |
11 | echo "Setting Release Notes"
12 | cat CHANGELOG.md | awk '/^#/{f=1} f; /^#/ && ++c==3{exit}' | sed '$ d' > RELEASE_NOTES.md
13 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | $(CURRENT_PROJECT_VERSION)
23 | NSHumanReadableCopyright
24 | Copyright © 2017 Pinterest. All rights reserved.
25 | NSPrincipalClass
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperation.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINOperation.h
3 | // PINOperation
4 | //
5 | // Created by Adlai Holler on 1/10/17.
6 | // Copyright © 2017 Pinterest. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import
12 | #import
13 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperationGroup.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINOperationGroup.h
3 | // PINOperation
4 | //
5 | // Created by Garrett Moon on 10/8/16.
6 | // Copyright © 2016 Pinterest. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import
12 |
13 | @class PINOperationQueue;
14 |
15 | NS_ASSUME_NONNULL_BEGIN
16 |
17 | @protocol PINGroupOperationReference;
18 |
19 | PINOP_SUBCLASSING_RESTRICTED
20 | @interface PINOperationGroup : NSObject
21 |
22 | - (instancetype)init NS_UNAVAILABLE;
23 | + (instancetype)asyncOperationGroupWithQueue:(PINOperationQueue *)operationQueue;
24 |
25 | - (nullable id )addOperation:(dispatch_block_t)operation;
26 | - (nullable id )addOperation:(dispatch_block_t)operation withPriority:(PINOperationQueuePriority)priority;
27 | - (void)start;
28 | - (void)cancel;
29 | - (void)setCompletion:(dispatch_block_t)completion;
30 | - (void)waitUntilComplete;
31 |
32 | @end
33 |
34 | @protocol PINGroupOperationReference
35 |
36 | @end
37 |
38 | NS_ASSUME_NONNULL_END
39 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperationMacros.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINOperationMacros.h
3 | // PINOperation
4 | //
5 | // Created by Adlai Holler on 1/10/17.
6 | // Copyright © 2017 Pinterest. All rights reserved.
7 | //
8 |
9 | #ifndef PINOP_SUBCLASSING_RESTRICTED
10 | #if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted)
11 | #define PINOP_SUBCLASSING_RESTRICTED __attribute__((objc_subclassing_restricted))
12 | #else
13 | #define PINOP_SUBCLASSING_RESTRICTED
14 | #endif // #if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted)
15 | #endif // #ifndef PINOP_SUBCLASSING_RESTRICTED
16 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperationTypes.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINOperationTypes.h
3 | // PINOperation
4 | //
5 | // Created by Adlai Holler on 1/10/17.
6 | // Copyright © 2017 Pinterest. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | typedef NS_ENUM(NSUInteger, PINOperationQueuePriority) {
12 | PINOperationQueuePriorityLow,
13 | PINOperationQueuePriorityDefault,
14 | PINOperationQueuePriorityHigh,
15 | };
16 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PrivacyInfo.xcprivacy:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | NSPrivacyTracking
6 |
7 | NSPrivacyTrackingDomains
8 |
9 | NSPrivacyCollectedDataTypes
10 |
11 | NSPrivacyAccessedAPITypes
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/include/PINOperation/PINOperation.h:
--------------------------------------------------------------------------------
1 | ../../PINOperation.h
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/include/PINOperation/PINOperationGroup.h:
--------------------------------------------------------------------------------
1 | ../../PINOperationGroup.h
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/include/PINOperation/PINOperationMacros.h:
--------------------------------------------------------------------------------
1 | ../../PINOperationMacros.h
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/include/PINOperation/PINOperationQueue.h:
--------------------------------------------------------------------------------
1 | ../../PINOperationQueue.h
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/include/PINOperation/PINOperationTypes.h:
--------------------------------------------------------------------------------
1 | ../../PINOperationTypes.h
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Tests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/build_docs.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | appledoc \
4 | --company-id com.pinterest \
5 | --project-name PINOperation \
6 | --project-company Pinterest \
7 | --project-version 1.0 \
8 | --docset-min-xcode-version 4.3 \
9 | --docset-bundle-id %COMPANYID.%PROJECTID \
10 | --docset-bundle-name "%PROJECT %VERSION" \
11 | --docset-bundle-filename %COMPANYID.%PROJECTID-%VERSIONID.docset \
12 | --ignore "tests" \
13 | --ignore "docs" \
14 | --ignore "*.m" \
15 | --no-repeat-first-par \
16 | --explicit-crossref \
17 | --clean-output \
18 | --keep-intermediate-files \
19 | --output ./docs \
20 | .
21 |
22 | mv docs/docset docs/com.pinterest.PINOperation-1.0.docset
23 | rm docs/docset-installed.txt
24 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/build_tests.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | # Have to specify destination because http://www.openradar.me/23857648
4 | xcodebuild ONLY_ACTIVE_ARCH=NO -project tests/PINOperation.xcodeproj -scheme PINOperationTests -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 15,OS=latest' clean build test
5 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleIdentifier
8 | com.pinterest.PINOperationQueue
9 | CFBundleName
10 | PINOperationQueue 1.0
11 | CFBundleShortVersionString
12 | 1.0
13 | CFBundleVersion
14 | 1.0
15 |
16 |
17 |
18 |
19 | DocSetFeedName
20 | PINOperationQueue Documentation
21 |
22 | DocSetMinimumXcodeVersion
23 | 4.3
24 |
25 | DashDocSetFamily
26 | appledoc
27 | DocSetPublisherIdentifier
28 | com.pinterest.documentation
29 | DocSetPublisherName
30 | Pinterest
31 | NSHumanReadableCopyright
32 | Copyright © 2017 Pinterest. All rights reserved.
33 |
34 |
35 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/css/scss/_index.scss:
--------------------------------------------------------------------------------
1 | .index-container {
2 | display: flex;
3 | flex-direction: row;
4 | flex-wrap: wrap;
5 |
6 | @media (max-width: $mobile-max-width) {
7 | flex-direction: column;
8 | }
9 |
10 | .index-column {
11 | flex: 1 1 33%;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/css/scss/_print.scss:
--------------------------------------------------------------------------------
1 | @media print {
2 | body {
3 | background: #fff;
4 | padding: 8px;
5 | }
6 |
7 | header {
8 | position: static;
9 | background: #fff;
10 | color: #000;
11 | }
12 |
13 | aside {
14 | display: none;
15 | }
16 |
17 | .container {
18 | max-width: none;
19 | padding: 0;
20 | }
21 |
22 | article {
23 | margin-top: 0;
24 |
25 | #content {
26 | border: 0;
27 | background: #fff;
28 | padding: 15px 0 0 0;
29 |
30 | .title {
31 | margin-top: 0;
32 | padding-top: 0;
33 | }
34 | }
35 | }
36 |
37 | .method-info {
38 | &, & .pointy-thing {
39 | background: #fff;
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/css/scss/_variables.scss:
--------------------------------------------------------------------------------
1 | $body-font: -apple-system-font, "Helvetica Neue", Helvetica, sans-serif;
2 | $code-font: "Source Code Pro", Monaco, Menlo, Consolas, monospace;
3 |
4 | $body-background: #f2f2f2;
5 | $content-background: #fff;
6 | $content-border: #e9e9e9;
7 | $tint-color: #08c;
8 | $object-background: #f9f9f9;
9 | $object-border: #e9e9e9;
10 |
11 | $mobile-max-width: 650px;
12 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/css/scss/_xcode.scss:
--------------------------------------------------------------------------------
1 | .xcode {
2 | header, aside {
3 | display: none;
4 | }
5 |
6 | .container {
7 | padding: 0;
8 | }
9 |
10 | article {
11 | margin-top: 0;
12 |
13 | #content {
14 | border: 0;
15 | margin: 0;
16 | }
17 | }
18 |
19 | .method-info {
20 | &, .section-method.hide & {
21 | max-height: auto;
22 | overflow: visible;
23 |
24 | &.hiding {
25 | display: block;
26 | }
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/css/scss/style.scss:
--------------------------------------------------------------------------------
1 | @import "variables", "normalize", "layout", "index", "object", "print", "xcode";
2 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/img/button_bar_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/img/button_bar_background.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/img/disclosure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/img/disclosure.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/img/disclosure_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/img/disclosure_open.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/img/library_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/img/library_background.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/img/title_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/img/title_background.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Tokens1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | //apple_ref/occ/intf/PINOperationReference
7 | Cancels all queued operations
8 | PINOperationQueue.h
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Tokens3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.dsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.dsidx
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.dsidx-shm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.dsidx-shm
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.dsidx-wal:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.dsidx-wal
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.mom:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.mom
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.skidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.skidx
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.toc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.toc
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.tokencache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.tokencache
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/html/css/scss/_index.scss:
--------------------------------------------------------------------------------
1 | .index-container {
2 | display: flex;
3 | flex-direction: row;
4 | flex-wrap: wrap;
5 |
6 | @media (max-width: $mobile-max-width) {
7 | flex-direction: column;
8 | }
9 |
10 | .index-column {
11 | flex: 1 1 33%;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/html/css/scss/_print.scss:
--------------------------------------------------------------------------------
1 | @media print {
2 | body {
3 | background: #fff;
4 | padding: 8px;
5 | }
6 |
7 | header {
8 | position: static;
9 | background: #fff;
10 | color: #000;
11 | }
12 |
13 | aside {
14 | display: none;
15 | }
16 |
17 | .container {
18 | max-width: none;
19 | padding: 0;
20 | }
21 |
22 | article {
23 | margin-top: 0;
24 |
25 | #content {
26 | border: 0;
27 | background: #fff;
28 | padding: 15px 0 0 0;
29 |
30 | .title {
31 | margin-top: 0;
32 | padding-top: 0;
33 | }
34 | }
35 | }
36 |
37 | .method-info {
38 | &, & .pointy-thing {
39 | background: #fff;
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/html/css/scss/_variables.scss:
--------------------------------------------------------------------------------
1 | $body-font: -apple-system-font, "Helvetica Neue", Helvetica, sans-serif;
2 | $code-font: "Source Code Pro", Monaco, Menlo, Consolas, monospace;
3 |
4 | $body-background: #f2f2f2;
5 | $content-background: #fff;
6 | $content-border: #e9e9e9;
7 | $tint-color: #08c;
8 | $object-background: #f9f9f9;
9 | $object-border: #e9e9e9;
10 |
11 | $mobile-max-width: 650px;
12 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/html/css/scss/_xcode.scss:
--------------------------------------------------------------------------------
1 | .xcode {
2 | header, aside {
3 | display: none;
4 | }
5 |
6 | .container {
7 | padding: 0;
8 | }
9 |
10 | article {
11 | margin-top: 0;
12 |
13 | #content {
14 | border: 0;
15 | margin: 0;
16 | }
17 | }
18 |
19 | .method-info {
20 | &, .section-method.hide & {
21 | max-height: auto;
22 | overflow: visible;
23 |
24 | &.hiding {
25 | display: block;
26 | }
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/html/css/scss/style.scss:
--------------------------------------------------------------------------------
1 | @import "variables", "normalize", "layout", "index", "object", "print", "xcode";
2 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/html/img/button_bar_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/html/img/button_bar_background.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/html/img/disclosure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/html/img/disclosure.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/html/img/disclosure_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/html/img/disclosure_open.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/html/img/library_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/html/img/library_background.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/html/img/title_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/docs/html/img/title_background.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/run_tests_update_status.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -eo pipefail
3 |
4 | UPDATE_STATUS_PATH=$1
5 | BUILDKITE_PULL_REQUEST=$2
6 | BUILDKITE_BUILD_URL=$3
7 |
8 | function updateStatus() {
9 | if [ "${BUILDKITE_PULL_REQUEST}" != "false" ] ; then
10 | ${UPDATE_STATUS_PATH} "pinterest" "PINOperation" ${BUILDKITE_PULL_REQUEST} "$1" ${BUILDKITE_BUILD_URL} "$2" "CI/Pinterest"
11 | fi
12 | }
13 |
14 | if [[ -z "${UPDATE_STATUS_PATH}" || -z "${BUILDKITE_PULL_REQUEST}" || -z "${BUILDKITE_BUILD_URL}" ]] ; then
15 | echo "Update status path (${UPDATE_STATUS_PATH}), pull request (${BUILDKITE_BUILD_URL}) or build url (${BUILDKITE_PULL_REQUEST}) unset."
16 | trap - EXIT
17 | exit 255
18 | fi
19 |
20 | trapped="false"
21 | function trap_handler() {
22 | if [[ "$trapped" = "false" ]]; then
23 | updateStatus failure "Tests failed…"
24 | echo "Tests failed, updated status to failure"
25 | fi
26 | trapped="true"
27 | }
28 | trap trap_handler INT TERM EXIT
29 |
30 | updateStatus pending "Starting build…"
31 |
32 | make all
33 |
34 | updateStatus success "Tests passed"
35 |
36 | echo "All tests succeeded, updated status to success"
37 | trap - EXIT
38 | exit 0
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/IntegrationTests/PINCache-SPM-Integration/PINCache-SPM-Integration.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/IntegrationTests/PINCache-SPM-Integration/PINCache-SPM-Integration.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/IntegrationTests/PINCache-SPM-Integration/PINCache-SPM-Integration/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 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/IntegrationTests/PINCache-SPM-Integration/PINCache-SPM-Integration/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/IntegrationTests/PINCache-SPM-Integration/PINCache-SPM-Integration/ContentView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ContentView.swift
3 | // PINCache-SPM-Integration
4 | //
5 | // Created by Petro Rovenskyy on 19.11.2020.
6 | //
7 |
8 | import SwiftUI
9 | import PINCache
10 |
11 | struct ContentView: View {
12 | let cacheKey: String
13 | @State
14 | private var cachedValue: String = "loading..."
15 | var body: some View {
16 | Text(cachedValue)
17 | .onAppear(perform: loadValue)
18 | .padding()
19 | }
20 | private func loadValue() {
21 | PINCache.shared.object(forKeyAsync: self.cacheKey, completion: { (_, _, object) in
22 | if let object: String = object as? String {
23 | self.cachedValue = object
24 | return
25 | }
26 | self.cachedValue = "Failed to load value from cache"
27 | })
28 | }
29 | }
30 |
31 | struct ContentView_Previews: PreviewProvider {
32 | static var previews: some View {
33 | ContentView(cacheKey: AppDelegate.cacheKey)
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/IntegrationTests/PINCache-SPM-Integration/PINCache-SPM-Integration/PINCache_SPM_IntegrationApp.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PINCache_SPM_IntegrationApp.swift
3 | // PINCache-SPM-Integration
4 | //
5 | // Created by Petro Rovenskyy on 19.11.2020.
6 | //
7 |
8 | import SwiftUI
9 | import PINCache
10 |
11 | final class AppDelegate: UIResponder, UIApplicationDelegate {
12 | static let cacheKey: String = "pinCache"
13 | func application(_ application: UIApplication,
14 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
15 | PINCache.shared.setObject("Hello! I'm cached string",
16 | forKey: Self.cacheKey)
17 | return true
18 | }
19 | }
20 |
21 | @main
22 | struct PINCache_SPM_IntegrationApp: App {
23 | @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
24 | var body: some Scene {
25 | WindowGroup {
26 | ContentView(cacheKey: AppDelegate.cacheKey)
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/IntegrationTests/PINCache-SPM-Integration/PINCache-SPM-Integration/Preview Content/Preview Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/PINCache.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/PINCache.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/PINCache.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/PINCache.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Scripts/tag-release-branch.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -ex
3 |
4 | echo "Tagging release branch"
5 | TAG=$NEW_VERSION
6 |
7 | echo "RELEASE_TAG=$TAG" >> $GITHUB_ENV
8 | git tag $TAG
9 | git push origin --tags
10 |
11 | echo "Setting Release Notes"
12 | cat CHANGELOG.md | awk '/^#/{f=1} f; /^#/ && ++c==3{exit}' | sed '$ d' > RELEASE_NOTES.md
13 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Source/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | $(CURRENT_PROJECT_VERSION)
23 | NSHumanReadableCopyright
24 | Copyright © 2017 Pinterest. All rights reserved.
25 | NSPrincipalClass
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Source/PINCacheMacros.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINCacheMacros.h
3 | // PINCache
4 | //
5 | // Created by Adlai Holler on 1/31/17.
6 | // Copyright © 2017 Pinterest. All rights reserved.
7 | //
8 |
9 | #ifndef PIN_SUBCLASSING_RESTRICTED
10 | #if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted)
11 | #define PIN_SUBCLASSING_RESTRICTED __attribute__((objc_subclassing_restricted))
12 | #else
13 | #define PIN_SUBCLASSING_RESTRICTED
14 | #endif // #if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted)
15 | #endif // #ifndef PIN_SUBCLASSING_RESTRICTED
16 |
17 | #ifndef PIN_NOESCAPE
18 | #if defined(__has_attribute) && __has_attribute(noescape)
19 | #define PIN_NOESCAPE __attribute__((noescape))
20 | #else
21 | #define PIN_NOESCAPE
22 | #endif // #if defined(__has_attribute) && __has_attribute(noescape)
23 | #endif // #ifndef PIN_NOESCAPE
24 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Source/PINCacheObjectSubscripting.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINCacheObjectSubscripting.h
3 | // PINCache
4 | //
5 | // Created by Rocir Marcos Leite Santiago on 4/2/16.
6 | // Copyright © 2016 Pinterest. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @protocol PINCacheObjectSubscripting
14 |
15 | @required
16 |
17 | /**
18 | This method enables using literals on the receiving object, such as `id object = cache[@"key"];`.
19 |
20 | @param key The key associated with the object.
21 | @result The object for the specified key.
22 | */
23 | - (nullable id)objectForKeyedSubscript:(NSString *)key;
24 |
25 | /**
26 | This method enables using literals on the receiving object, such as `cache[@"key"] = object;`.
27 |
28 | @param object An object to be assigned for the key. Pass `nil` to remove the existing object for this key.
29 | @param key A key to associate with the object. This string will be copied.
30 | */
31 | - (void)setObject:(nullable id)object forKeyedSubscript:(NSString *)key;
32 |
33 | @end
34 |
35 | NS_ASSUME_NONNULL_END
36 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Source/PrivacyInfo.xcprivacy:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | NSPrivacyTracking
6 |
7 | NSPrivacyTrackingDomains
8 |
9 | NSPrivacyCollectedDataTypes
10 |
11 | NSPrivacyAccessedAPITypes
12 |
13 |
14 | NSPrivacyAccessedAPIType
15 | NSPrivacyAccessedAPICategoryFileTimestamp
16 | NSPrivacyAccessedAPITypeReasons
17 |
18 | 0A2A.1
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Source/include/PINCache/PINCache.h:
--------------------------------------------------------------------------------
1 | ../../PINCache.h
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Source/include/PINCache/PINCacheMacros.h:
--------------------------------------------------------------------------------
1 | ../../PINCacheMacros.h
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Source/include/PINCache/PINCacheObjectSubscripting.h:
--------------------------------------------------------------------------------
1 | ../../PINCacheObjectSubscripting.h
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Source/include/PINCache/PINCaching.h:
--------------------------------------------------------------------------------
1 | ../../PINCaching.h
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Source/include/PINCache/PINDiskCache.h:
--------------------------------------------------------------------------------
1 | ../../PINDiskCache.h
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Source/include/PINCache/PINMemoryCache.h:
--------------------------------------------------------------------------------
1 | ../../PINMemoryCache.h
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Tests/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/Tests/Default-568h@2x.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Tests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Tests/NSDate+PINCacheTests.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | NS_ASSUME_NONNULL_BEGIN
4 |
5 | @interface NSDate (PINCacheTests)
6 |
7 | /** Swizzles +[NSDate date] to always return the specified date. */
8 | + (void)startMockingDateWithDate:(NSDate *)date;
9 |
10 | /** Stops swizzling +[NSDate date] and returns to original implementation */
11 | + (void)stopMockingDate;
12 |
13 | @end
14 |
15 | NS_ASSUME_NONNULL_END
16 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Tests/PINCacheTests.h:
--------------------------------------------------------------------------------
1 | // PINCache is a modified version of TMCache
2 | // Modifications by Garrett Moon
3 | // Copyright (c) 2015 Pinterest. All rights reserved.
4 |
5 | #import
6 |
7 | extern const NSTimeInterval PINCacheTestBlockTimeout;
8 |
9 | @interface PINCacheTests : XCTestCase
10 |
11 | @end
12 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Tests/PINDiskCache+PINCacheTests.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | @interface PINDiskCache (PINCacheTests)
4 |
5 | /**
6 | Sets `ttlCache` property synchronously. This is normally set asyncronously, but for testing purposes it is useful block until the
7 | actual value has been set.
8 | */
9 | - (void)setTtlCacheSync:(BOOL)ttlCache;
10 |
11 | /**
12 | Waits until all metadata has been read off the disk
13 | */
14 | - (void)waitForKnownState;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/Tests/PINDiskCache+PINCacheTests.m:
--------------------------------------------------------------------------------
1 | #import "PINDiskCache+PINCacheTests.h"
2 |
3 | @interface PINDiskCache () {
4 | BOOL _ttlCache;
5 | }
6 |
7 | - (void)lock;
8 | - (void)lockAndWaitForKnownState;
9 | - (void)unlock;
10 |
11 | @end
12 |
13 | @implementation PINDiskCache (PINCacheTests)
14 |
15 | - (void)setTtlCacheSync:(BOOL)ttlCache
16 | {
17 | [self lock];
18 | [self setValue:@(ttlCache) forKey:@"_ttlCache"];
19 | [self unlock];
20 | }
21 |
22 | - (void)waitForKnownState
23 | {
24 | [self lockAndWaitForKnownState];
25 | [self unlock];
26 | }
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/build_docs.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | appledoc \
4 | --company-id com.pinterest \
5 | --project-name PINCache \
6 | --project-company Pinterest \
7 | --project-version 2.0 \
8 | --docset-min-xcode-version 4.3 \
9 | --docset-bundle-id %COMPANYID.%PROJECTID \
10 | --docset-bundle-name "%PROJECT %VERSION" \
11 | --docset-bundle-filename %COMPANYID.%PROJECTID-%VERSIONID.docset \
12 | --ignore "tests" \
13 | --ignore "docs" \
14 | --ignore "*.m" \
15 | --no-repeat-first-par \
16 | --explicit-crossref \
17 | --clean-output \
18 | --keep-intermediate-files \
19 | --output ./docs \
20 | .
21 |
22 | mv docs/docset docs/com.pinterest.PINCache-2.0.docset
23 | rm docs/docset-installed.txt
24 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleIdentifier
8 | com.pinterest.PINCache
9 | CFBundleName
10 | PINCache 2.0
11 | CFBundleShortVersionString
12 | 2.0
13 | CFBundleVersion
14 | 2.0
15 |
16 |
17 |
18 |
19 | DocSetFeedName
20 | PINCache Documentation
21 |
22 | DocSetMinimumXcodeVersion
23 | 4.3
24 |
25 | DashDocSetFamily
26 | appledoc
27 | DocSetPublisherIdentifier
28 | com.pinterest.documentation
29 | DocSetPublisherName
30 | Pinterest
31 | NSHumanReadableCopyright
32 | Copyright © 2016 Pinterest. All rights reserved.
33 |
34 |
35 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Documents/css/scss/_index.scss:
--------------------------------------------------------------------------------
1 | .index-container {
2 | display: flex;
3 | flex-direction: row;
4 | flex-wrap: wrap;
5 |
6 | @media (max-width: $mobile-max-width) {
7 | flex-direction: column;
8 | }
9 |
10 | .index-column {
11 | flex: 1 1 33%;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Documents/css/scss/_print.scss:
--------------------------------------------------------------------------------
1 | @media print {
2 | body {
3 | background: #fff;
4 | padding: 8px;
5 | }
6 |
7 | header {
8 | position: static;
9 | background: #fff;
10 | color: #000;
11 | }
12 |
13 | aside {
14 | display: none;
15 | }
16 |
17 | .container {
18 | max-width: none;
19 | padding: 0;
20 | }
21 |
22 | article {
23 | margin-top: 0;
24 |
25 | #content {
26 | border: 0;
27 | background: #fff;
28 | padding: 15px 0 0 0;
29 |
30 | .title {
31 | margin-top: 0;
32 | padding-top: 0;
33 | }
34 | }
35 | }
36 |
37 | .method-info {
38 | &, & .pointy-thing {
39 | background: #fff;
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Documents/css/scss/_variables.scss:
--------------------------------------------------------------------------------
1 | $body-font: -apple-system-font, "Helvetica Neue", Helvetica, sans-serif;
2 | $code-font: "Source Code Pro", Monaco, Menlo, Consolas, monospace;
3 |
4 | $body-background: #f2f2f2;
5 | $content-background: #fff;
6 | $content-border: #e9e9e9;
7 | $tint-color: #08c;
8 | $object-background: #f9f9f9;
9 | $object-border: #e9e9e9;
10 |
11 | $mobile-max-width: 650px;
12 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Documents/css/scss/_xcode.scss:
--------------------------------------------------------------------------------
1 | .xcode {
2 | header, aside {
3 | display: none;
4 | }
5 |
6 | .container {
7 | padding: 0;
8 | }
9 |
10 | article {
11 | margin-top: 0;
12 |
13 | #content {
14 | border: 0;
15 | margin: 0;
16 | }
17 | }
18 |
19 | .method-info {
20 | &, .section-method.hide & {
21 | max-height: auto;
22 | overflow: visible;
23 |
24 | &.hiding {
25 | display: block;
26 | }
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Documents/css/scss/style.scss:
--------------------------------------------------------------------------------
1 | @import "variables", "normalize", "layout", "index", "object", "print", "xcode";
2 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Documents/img/button_bar_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Documents/img/button_bar_background.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Documents/img/disclosure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Documents/img/disclosure.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Documents/img/disclosure_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Documents/img/disclosure_open.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Documents/img/library_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Documents/img/library_background.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Documents/img/title_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Documents/img/title_background.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Tokens10.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Tokens11.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Tokens5.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Tokens6.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Tokens7.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Tokens8.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/Tokens9.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/docSet.dsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/docSet.dsidx
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/docSet.dsidx-shm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/docSet.dsidx-shm
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/docSet.dsidx-wal:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/docSet.dsidx-wal
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/docSet.mom:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/docSet.mom
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/docSet.skidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/docSet.skidx
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/docSet.toc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/docSet.toc
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/docSet.tokencache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/docs/com.pinterest.PINCache-2.0.docset/Contents/Resources/docSet.tokencache
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/html/css/scss/_index.scss:
--------------------------------------------------------------------------------
1 | .index-container {
2 | display: flex;
3 | flex-direction: row;
4 | flex-wrap: wrap;
5 |
6 | @media (max-width: $mobile-max-width) {
7 | flex-direction: column;
8 | }
9 |
10 | .index-column {
11 | flex: 1 1 33%;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/html/css/scss/_print.scss:
--------------------------------------------------------------------------------
1 | @media print {
2 | body {
3 | background: #fff;
4 | padding: 8px;
5 | }
6 |
7 | header {
8 | position: static;
9 | background: #fff;
10 | color: #000;
11 | }
12 |
13 | aside {
14 | display: none;
15 | }
16 |
17 | .container {
18 | max-width: none;
19 | padding: 0;
20 | }
21 |
22 | article {
23 | margin-top: 0;
24 |
25 | #content {
26 | border: 0;
27 | background: #fff;
28 | padding: 15px 0 0 0;
29 |
30 | .title {
31 | margin-top: 0;
32 | padding-top: 0;
33 | }
34 | }
35 | }
36 |
37 | .method-info {
38 | &, & .pointy-thing {
39 | background: #fff;
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/html/css/scss/_variables.scss:
--------------------------------------------------------------------------------
1 | $body-font: -apple-system-font, "Helvetica Neue", Helvetica, sans-serif;
2 | $code-font: "Source Code Pro", Monaco, Menlo, Consolas, monospace;
3 |
4 | $body-background: #f2f2f2;
5 | $content-background: #fff;
6 | $content-border: #e9e9e9;
7 | $tint-color: #08c;
8 | $object-background: #f9f9f9;
9 | $object-border: #e9e9e9;
10 |
11 | $mobile-max-width: 650px;
12 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/html/css/scss/_xcode.scss:
--------------------------------------------------------------------------------
1 | .xcode {
2 | header, aside {
3 | display: none;
4 | }
5 |
6 | .container {
7 | padding: 0;
8 | }
9 |
10 | article {
11 | margin-top: 0;
12 |
13 | #content {
14 | border: 0;
15 | margin: 0;
16 | }
17 | }
18 |
19 | .method-info {
20 | &, .section-method.hide & {
21 | max-height: auto;
22 | overflow: visible;
23 |
24 | &.hiding {
25 | display: block;
26 | }
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/html/css/scss/style.scss:
--------------------------------------------------------------------------------
1 | @import "variables", "normalize", "layout", "index", "object", "print", "xcode";
2 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/html/img/button_bar_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/docs/html/img/button_bar_background.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/html/img/disclosure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/docs/html/img/disclosure.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/html/img/disclosure_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/docs/html/img/disclosure_open.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/html/img/library_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/docs/html/img/library_background.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINCache/docs/html/img/title_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINCache/docs/html/img/title_background.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/.github_changelog_generator:
--------------------------------------------------------------------------------
1 | issues=false
2 | since-tag=1.2.1
3 | future-release=1.2.2
4 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 |
3 | # Xcode
4 | #
5 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
6 |
7 | ## Build generated
8 | build/
9 | DerivedData/
10 |
11 | ## Various settings
12 | *.pbxuser
13 | !default.pbxuser
14 | *.mode1v3
15 | !default.mode1v3
16 | *.mode2v3
17 | !default.mode2v3
18 | *.perspectivev3
19 | !default.perspectivev3
20 | xcuserdata/
21 |
22 | ## Other
23 | *.moved-aside
24 | *.xcuserstate
25 |
26 | ## Obj-C/Swift specific
27 | *.hmap
28 | *.ipa
29 | *.dSYM.zip
30 | *.dSYM
31 |
32 | ## Docs
33 | docs/docsets/
34 |
35 | ## Playgrounds
36 | timeline.xctimeline
37 | playground.xcworkspace
38 |
39 | # Swift Package Manager
40 | #
41 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
42 | # Packages/
43 | .build/
44 |
45 | # Carthage
46 | #
47 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
48 | # Carthage/Checkouts
49 |
50 | Carthage/Build
51 |
52 | # Bundler
53 | .bundle
54 | vendor
55 |
56 | # Example project
57 | Example/Pods
58 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/BUCK:
--------------------------------------------------------------------------------
1 | apple_library(
2 | name = 'PINOperation',
3 | modular = True,
4 | exported_headers = glob(['Source/*.h']),
5 | srcs =
6 | glob(['Source/*.m']),
7 | preprocessor_flags = ['-fobjc-arc'],
8 | lang_preprocessor_flags = {
9 | 'C': ['-std=gnu99'],
10 | 'CXX': ['-std=gnu++11', '-stdlib=libc++'],
11 | },
12 | linker_flags = [
13 | '-weak_framework',
14 | 'UIKit',
15 | '-weak_framework',
16 | 'AppKit',
17 | ],
18 | frameworks = [
19 | '$SDKROOT/System/Library/Frameworks/Foundation.framework',
20 | ],
21 | visibility = ['PUBLIC'],
22 | )
23 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/CI/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -eo pipefail
3 |
4 | make all
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/CI/exclude-from-build.json:
--------------------------------------------------------------------------------
1 | [
2 | "^plans/",
3 | "^docs/",
4 | "^CI/exclude-from-build.json$",
5 | "^README.md$",
6 | "^CHANGELOG.md$"
7 | ]
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/Example/PINOperationExample/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // PINOperationExample
4 | //
5 | // Created by Martin Púčik on 02/05/2020.
6 | // Copyright © 2020 Pinterest. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | @UIApplicationMain
12 | final class AppDelegate: UIResponder, UIApplicationDelegate {
13 | private let queue: PINOperationQueue = PINOperationQueue(maxConcurrentOperations: 5)
14 |
15 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
16 | let operationCount = 100
17 | let group = DispatchGroup()
18 | for _ in 0..
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MainViewController : UIViewController
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/Example/PINOperationExample/PINOperationExample-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import
2 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/Example/Podfile:
--------------------------------------------------------------------------------
1 | source 'https://cdn.cocoapods.org/'
2 | platform :ios, '12.0'
3 |
4 | target 'PINOperationExample' do
5 | pod 'PINOperation', :path => '../'
6 | end
7 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/Example/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - PINOperation (1.2.3)
3 |
4 | DEPENDENCIES:
5 | - PINOperation (from `../`)
6 |
7 | EXTERNAL SOURCES:
8 | PINOperation:
9 | :path: "../"
10 |
11 | SPEC CHECKSUMS:
12 | PINOperation: fb563bcc9c32c26d6c78aaff967d405aa2ee74a7
13 |
14 | PODFILE CHECKSUM: 590bbecb30df161f3cdb5ab267c95244b0df928f
15 |
16 | COCOAPODS: 1.15.2
17 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/PINOperation.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = 'PINOperation'
3 | s.version = '1.2.3'
4 | s.homepage = 'https://github.com/pinterest/PINOperation'
5 | s.summary = 'Fast, concurrency-limited task queue for iOS and OS X.'
6 | s.authors = { 'Garrett Moon' => 'garrett@pinterest.com' }
7 | s.source = { :git => 'https://github.com/pinterest/PINOperation.git', :tag => "#{s.version}" }
8 | s.license = { :type => 'Apache 2.0', :file => 'LICENSE.txt' }
9 | s.requires_arc = true
10 | s.frameworks = 'Foundation'
11 | s.cocoapods_version = '>= 1.13.0'
12 | s.ios.deployment_target = '12.0'
13 | s.osx.deployment_target = '10.13'
14 | s.tvos.deployment_target = '12.0'
15 | s.visionos.deployment_target = '1.0'
16 | s.watchos.deployment_target = '4.0'
17 | pch_PIN = <<-EOS
18 | #ifndef TARGET_OS_WATCH
19 | #define TARGET_OS_WATCH 0
20 | #endif
21 | EOS
22 | s.prefix_header_contents = pch_PIN
23 | s.source_files = 'Source/*.{h,m}'
24 | s.resource_bundles = { 'PINOperation' => ['Source/PrivacyInfo.xcprivacy'] }
25 | end
26 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/RELEASE.md:
--------------------------------------------------------------------------------
1 | # Release Process
2 | This document describes the process for a public PINOperation release.
3 |
4 | ### Process
5 | - Ensure the latest master build is green.
6 | - Run the github action 'Create Release'.
7 | - Check that the release was successfully published to [Github](https://github.com/pinterest/PINOperation/releases) and [Cocoapods](https://cocoapods.org/pods/PINOperation).
8 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/Scripts/tag-release-branch.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -ex
3 |
4 | echo "Tagging release branch"
5 | TAG=$NEW_VERSION
6 |
7 | echo "RELEASE_TAG=$TAG" >> $GITHUB_ENV
8 | git tag $TAG
9 | git push origin --tags
10 |
11 | echo "Setting Release Notes"
12 | cat CHANGELOG.md | awk '/^#/{f=1} f; /^#/ && ++c==3{exit}' | sed '$ d' > RELEASE_NOTES.md
13 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/Source/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | $(CURRENT_PROJECT_VERSION)
23 | NSHumanReadableCopyright
24 | Copyright © 2017 Pinterest. All rights reserved.
25 | NSPrincipalClass
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/Source/PINOperation.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINOperation.h
3 | // PINOperation
4 | //
5 | // Created by Adlai Holler on 1/10/17.
6 | // Copyright © 2017 Pinterest. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import
12 | #import
13 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/Source/PINOperationGroup.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINOperationGroup.h
3 | // PINOperation
4 | //
5 | // Created by Garrett Moon on 10/8/16.
6 | // Copyright © 2016 Pinterest. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import
12 |
13 | @class PINOperationQueue;
14 |
15 | NS_ASSUME_NONNULL_BEGIN
16 |
17 | @protocol PINGroupOperationReference;
18 |
19 | PINOP_SUBCLASSING_RESTRICTED
20 | @interface PINOperationGroup : NSObject
21 |
22 | - (instancetype)init NS_UNAVAILABLE;
23 | + (instancetype)asyncOperationGroupWithQueue:(PINOperationQueue *)operationQueue;
24 |
25 | - (nullable id )addOperation:(dispatch_block_t)operation;
26 | - (nullable id )addOperation:(dispatch_block_t)operation withPriority:(PINOperationQueuePriority)priority;
27 | - (void)start;
28 | - (void)cancel;
29 | - (void)setCompletion:(dispatch_block_t)completion;
30 | - (void)waitUntilComplete;
31 |
32 | @end
33 |
34 | @protocol PINGroupOperationReference
35 |
36 | @end
37 |
38 | NS_ASSUME_NONNULL_END
39 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/Source/PINOperationMacros.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINOperationMacros.h
3 | // PINOperation
4 | //
5 | // Created by Adlai Holler on 1/10/17.
6 | // Copyright © 2017 Pinterest. All rights reserved.
7 | //
8 |
9 | #ifndef PINOP_SUBCLASSING_RESTRICTED
10 | #if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted)
11 | #define PINOP_SUBCLASSING_RESTRICTED __attribute__((objc_subclassing_restricted))
12 | #else
13 | #define PINOP_SUBCLASSING_RESTRICTED
14 | #endif // #if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted)
15 | #endif // #ifndef PINOP_SUBCLASSING_RESTRICTED
16 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/Source/PINOperationTypes.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINOperationTypes.h
3 | // PINOperation
4 | //
5 | // Created by Adlai Holler on 1/10/17.
6 | // Copyright © 2017 Pinterest. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | typedef NS_ENUM(NSUInteger, PINOperationQueuePriority) {
12 | PINOperationQueuePriorityLow,
13 | PINOperationQueuePriorityDefault,
14 | PINOperationQueuePriorityHigh,
15 | };
16 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/Source/PrivacyInfo.xcprivacy:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | NSPrivacyTracking
6 |
7 | NSPrivacyTrackingDomains
8 |
9 | NSPrivacyCollectedDataTypes
10 |
11 | NSPrivacyAccessedAPITypes
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/Source/include/PINOperation/PINOperation.h:
--------------------------------------------------------------------------------
1 | ../../PINOperation.h
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/Source/include/PINOperation/PINOperationGroup.h:
--------------------------------------------------------------------------------
1 | ../../PINOperationGroup.h
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/Source/include/PINOperation/PINOperationMacros.h:
--------------------------------------------------------------------------------
1 | ../../PINOperationMacros.h
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/Source/include/PINOperation/PINOperationQueue.h:
--------------------------------------------------------------------------------
1 | ../../PINOperationQueue.h
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/Source/include/PINOperation/PINOperationTypes.h:
--------------------------------------------------------------------------------
1 | ../../PINOperationTypes.h
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/Tests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/build_docs.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | appledoc \
4 | --company-id com.pinterest \
5 | --project-name PINOperation \
6 | --project-company Pinterest \
7 | --project-version 1.0 \
8 | --docset-min-xcode-version 4.3 \
9 | --docset-bundle-id %COMPANYID.%PROJECTID \
10 | --docset-bundle-name "%PROJECT %VERSION" \
11 | --docset-bundle-filename %COMPANYID.%PROJECTID-%VERSIONID.docset \
12 | --ignore "tests" \
13 | --ignore "docs" \
14 | --ignore "*.m" \
15 | --no-repeat-first-par \
16 | --explicit-crossref \
17 | --clean-output \
18 | --keep-intermediate-files \
19 | --output ./docs \
20 | .
21 |
22 | mv docs/docset docs/com.pinterest.PINOperation-1.0.docset
23 | rm docs/docset-installed.txt
24 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/build_tests.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | # Have to specify destination because http://www.openradar.me/23857648
4 | xcodebuild ONLY_ACTIVE_ARCH=NO -project tests/PINOperation.xcodeproj -scheme PINOperationTests -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 15,OS=latest' clean build test
5 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleIdentifier
8 | com.pinterest.PINOperationQueue
9 | CFBundleName
10 | PINOperationQueue 1.0
11 | CFBundleShortVersionString
12 | 1.0
13 | CFBundleVersion
14 | 1.0
15 |
16 |
17 |
18 |
19 | DocSetFeedName
20 | PINOperationQueue Documentation
21 |
22 | DocSetMinimumXcodeVersion
23 | 4.3
24 |
25 | DashDocSetFamily
26 | appledoc
27 | DocSetPublisherIdentifier
28 | com.pinterest.documentation
29 | DocSetPublisherName
30 | Pinterest
31 | NSHumanReadableCopyright
32 | Copyright © 2017 Pinterest. All rights reserved.
33 |
34 |
35 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/css/scss/_index.scss:
--------------------------------------------------------------------------------
1 | .index-container {
2 | display: flex;
3 | flex-direction: row;
4 | flex-wrap: wrap;
5 |
6 | @media (max-width: $mobile-max-width) {
7 | flex-direction: column;
8 | }
9 |
10 | .index-column {
11 | flex: 1 1 33%;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/css/scss/_print.scss:
--------------------------------------------------------------------------------
1 | @media print {
2 | body {
3 | background: #fff;
4 | padding: 8px;
5 | }
6 |
7 | header {
8 | position: static;
9 | background: #fff;
10 | color: #000;
11 | }
12 |
13 | aside {
14 | display: none;
15 | }
16 |
17 | .container {
18 | max-width: none;
19 | padding: 0;
20 | }
21 |
22 | article {
23 | margin-top: 0;
24 |
25 | #content {
26 | border: 0;
27 | background: #fff;
28 | padding: 15px 0 0 0;
29 |
30 | .title {
31 | margin-top: 0;
32 | padding-top: 0;
33 | }
34 | }
35 | }
36 |
37 | .method-info {
38 | &, & .pointy-thing {
39 | background: #fff;
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/css/scss/_variables.scss:
--------------------------------------------------------------------------------
1 | $body-font: -apple-system-font, "Helvetica Neue", Helvetica, sans-serif;
2 | $code-font: "Source Code Pro", Monaco, Menlo, Consolas, monospace;
3 |
4 | $body-background: #f2f2f2;
5 | $content-background: #fff;
6 | $content-border: #e9e9e9;
7 | $tint-color: #08c;
8 | $object-background: #f9f9f9;
9 | $object-border: #e9e9e9;
10 |
11 | $mobile-max-width: 650px;
12 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/css/scss/_xcode.scss:
--------------------------------------------------------------------------------
1 | .xcode {
2 | header, aside {
3 | display: none;
4 | }
5 |
6 | .container {
7 | padding: 0;
8 | }
9 |
10 | article {
11 | margin-top: 0;
12 |
13 | #content {
14 | border: 0;
15 | margin: 0;
16 | }
17 | }
18 |
19 | .method-info {
20 | &, .section-method.hide & {
21 | max-height: auto;
22 | overflow: visible;
23 |
24 | &.hiding {
25 | display: block;
26 | }
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/css/scss/style.scss:
--------------------------------------------------------------------------------
1 | @import "variables", "normalize", "layout", "index", "object", "print", "xcode";
2 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/img/button_bar_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/img/button_bar_background.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/img/disclosure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/img/disclosure.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/img/disclosure_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/img/disclosure_open.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/img/library_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/img/library_background.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/img/title_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Documents/img/title_background.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Tokens1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | //apple_ref/occ/intf/PINOperationReference
7 | Cancels all queued operations
8 | PINOperationQueue.h
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/Tokens3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.dsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.dsidx
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.dsidx-shm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.dsidx-shm
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.dsidx-wal:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.dsidx-wal
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.mom:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.mom
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.skidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.skidx
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.toc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.toc
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.tokencache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINOperation/docs/com.pinterest.PINOperationQueue-1.0.docset/Contents/Resources/docSet.tokencache
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/html/css/scss/_index.scss:
--------------------------------------------------------------------------------
1 | .index-container {
2 | display: flex;
3 | flex-direction: row;
4 | flex-wrap: wrap;
5 |
6 | @media (max-width: $mobile-max-width) {
7 | flex-direction: column;
8 | }
9 |
10 | .index-column {
11 | flex: 1 1 33%;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/html/css/scss/_print.scss:
--------------------------------------------------------------------------------
1 | @media print {
2 | body {
3 | background: #fff;
4 | padding: 8px;
5 | }
6 |
7 | header {
8 | position: static;
9 | background: #fff;
10 | color: #000;
11 | }
12 |
13 | aside {
14 | display: none;
15 | }
16 |
17 | .container {
18 | max-width: none;
19 | padding: 0;
20 | }
21 |
22 | article {
23 | margin-top: 0;
24 |
25 | #content {
26 | border: 0;
27 | background: #fff;
28 | padding: 15px 0 0 0;
29 |
30 | .title {
31 | margin-top: 0;
32 | padding-top: 0;
33 | }
34 | }
35 | }
36 |
37 | .method-info {
38 | &, & .pointy-thing {
39 | background: #fff;
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/html/css/scss/_variables.scss:
--------------------------------------------------------------------------------
1 | $body-font: -apple-system-font, "Helvetica Neue", Helvetica, sans-serif;
2 | $code-font: "Source Code Pro", Monaco, Menlo, Consolas, monospace;
3 |
4 | $body-background: #f2f2f2;
5 | $content-background: #fff;
6 | $content-border: #e9e9e9;
7 | $tint-color: #08c;
8 | $object-background: #f9f9f9;
9 | $object-border: #e9e9e9;
10 |
11 | $mobile-max-width: 650px;
12 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/html/css/scss/_xcode.scss:
--------------------------------------------------------------------------------
1 | .xcode {
2 | header, aside {
3 | display: none;
4 | }
5 |
6 | .container {
7 | padding: 0;
8 | }
9 |
10 | article {
11 | margin-top: 0;
12 |
13 | #content {
14 | border: 0;
15 | margin: 0;
16 | }
17 | }
18 |
19 | .method-info {
20 | &, .section-method.hide & {
21 | max-height: auto;
22 | overflow: visible;
23 |
24 | &.hiding {
25 | display: block;
26 | }
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/html/css/scss/style.scss:
--------------------------------------------------------------------------------
1 | @import "variables", "normalize", "layout", "index", "object", "print", "xcode";
2 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/html/img/button_bar_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINOperation/docs/html/img/button_bar_background.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/html/img/disclosure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINOperation/docs/html/img/disclosure.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/html/img/disclosure_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINOperation/docs/html/img/disclosure_open.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/html/img/library_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINOperation/docs/html/img/library_background.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/docs/html/img/title_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Carthage/Checkouts/PINOperation/docs/html/img/title_background.png
--------------------------------------------------------------------------------
/Carthage/Checkouts/PINOperation/run_tests_update_status.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -eo pipefail
3 |
4 | UPDATE_STATUS_PATH=$1
5 | BUILDKITE_PULL_REQUEST=$2
6 | BUILDKITE_BUILD_URL=$3
7 |
8 | function updateStatus() {
9 | if [ "${BUILDKITE_PULL_REQUEST}" != "false" ] ; then
10 | ${UPDATE_STATUS_PATH} "pinterest" "PINOperation" ${BUILDKITE_PULL_REQUEST} "$1" ${BUILDKITE_BUILD_URL} "$2" "CI/Pinterest"
11 | fi
12 | }
13 |
14 | if [[ -z "${UPDATE_STATUS_PATH}" || -z "${BUILDKITE_PULL_REQUEST}" || -z "${BUILDKITE_BUILD_URL}" ]] ; then
15 | echo "Update status path (${UPDATE_STATUS_PATH}), pull request (${BUILDKITE_BUILD_URL}) or build url (${BUILDKITE_PULL_REQUEST}) unset."
16 | trap - EXIT
17 | exit 255
18 | fi
19 |
20 | trapped="false"
21 | function trap_handler() {
22 | if [[ "$trapped" = "false" ]]; then
23 | updateStatus failure "Tests failed…"
24 | echo "Tests failed, updated status to failure"
25 | fi
26 | trapped="true"
27 | }
28 | trap trap_handler INT TERM EXIT
29 |
30 | updateStatus pending "Starting build…"
31 |
32 | make all
33 |
34 | updateStatus success "Tests passed"
35 |
36 | echo "All tests succeeded, updated status to success"
37 | trap - EXIT
38 | exit 0
--------------------------------------------------------------------------------
/Examples/Example-Mac/Example-Mac.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Examples/Example-Mac/Example-Mac.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/Example-Mac/Example-Mac.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Examples/Example-Mac/Example-Mac.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/Example-Mac/PINRemoteImage/APNGViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // APNGViewController.h
3 | // PINRemoteImage
4 | //
5 | // Created by Garrett Moon on 4/23/18.
6 | // Copyright © 2018 mischneider. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface APNGViewController : NSViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/Examples/Example-Mac/PINRemoteImage/APNGViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // APNGViewController.m
3 | // PINRemoteImage
4 | //
5 | // Created by Garrett Moon on 4/23/18.
6 | // Copyright © 2018 mischneider. All rights reserved.
7 | //
8 |
9 | #import "APNGViewController.h"
10 |
11 | #import
12 |
13 | @interface APNGViewController ()
14 |
15 | @property (weak) IBOutlet PINAnimatedImageView *animatedImageView;
16 |
17 | @end
18 |
19 | @implementation APNGViewController
20 |
21 | - (void)viewWillAppear {
22 | [super viewWillAppear];
23 | [self.animatedImageView pin_setImageFromURL:[NSURL URLWithString:@"https://upload.wikimedia.org/wikipedia/commons/1/14/Animated_PNG_example_bouncing_beach_ball.png"]];
24 | }
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/Examples/Example-Mac/PINRemoteImage/AnimatedWebPViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // AnimatedWebPViewController.h
3 | // Example-Mac
4 | //
5 | // Created by Andy Finnell on 5/15/24.
6 | // Copyright © 2024 mischneider. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface AnimatedWebPViewController : NSViewController
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/Examples/Example-Mac/PINRemoteImage/AnimatedWebPViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // AnimatedWebPViewController.m
3 | // Example-Mac
4 | //
5 | // Created by Andy Finnell on 5/15/24.
6 | // Copyright © 2024 mischneider. All rights reserved.
7 | //
8 |
9 | #import "AnimatedWebPViewController.h"
10 | #import
11 |
12 | @interface AnimatedWebPViewController ()
13 | @property (weak) IBOutlet PINAnimatedImageView *animatedImageView;
14 | @end
15 |
16 | @implementation AnimatedWebPViewController
17 |
18 | - (void)viewWillAppear {
19 | [super viewWillAppear];
20 | [self.animatedImageView pin_setImageFromURL:[NSURL URLWithString:@"https://mathiasbynens.be/demo/animated-webp-supported.webp"]];
21 | }
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/Examples/Example-Mac/PINRemoteImage/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // PINRemoteImage
4 | //
5 | // Created by Michael Schneider on 1/3/16.
6 | // Copyright © 2016 mischneider. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : NSObject
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/Examples/Example-Mac/PINRemoteImage/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "mac",
5 | "size" : "16x16",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "mac",
10 | "size" : "16x16",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "mac",
15 | "size" : "32x32",
16 | "scale" : "1x"
17 | },
18 | {
19 | "idiom" : "mac",
20 | "size" : "32x32",
21 | "scale" : "2x"
22 | },
23 | {
24 | "idiom" : "mac",
25 | "size" : "128x128",
26 | "scale" : "1x"
27 | },
28 | {
29 | "idiom" : "mac",
30 | "size" : "128x128",
31 | "scale" : "2x"
32 | },
33 | {
34 | "idiom" : "mac",
35 | "size" : "256x256",
36 | "scale" : "1x"
37 | },
38 | {
39 | "idiom" : "mac",
40 | "size" : "256x256",
41 | "scale" : "2x"
42 | },
43 | {
44 | "idiom" : "mac",
45 | "size" : "512x512",
46 | "scale" : "1x"
47 | },
48 | {
49 | "idiom" : "mac",
50 | "size" : "512x512",
51 | "scale" : "2x"
52 | }
53 | ],
54 | "info" : {
55 | "version" : 1,
56 | "author" : "xcode"
57 | }
58 | }
--------------------------------------------------------------------------------
/Examples/Example-Mac/PINRemoteImage/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Examples/Example-Mac/PINRemoteImage/Assets.xcassets/white-pinterest-logo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "white-pinterest-logo@1x.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "white-pinterest-logo@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/Examples/Example-Mac/PINRemoteImage/Assets.xcassets/white-pinterest-logo.imageset/white-pinterest-logo@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Examples/Example-Mac/PINRemoteImage/Assets.xcassets/white-pinterest-logo.imageset/white-pinterest-logo@1x.png
--------------------------------------------------------------------------------
/Examples/Example-Mac/PINRemoteImage/Assets.xcassets/white-pinterest-logo.imageset/white-pinterest-logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Examples/Example-Mac/PINRemoteImage/Assets.xcassets/white-pinterest-logo.imageset/white-pinterest-logo@2x.png
--------------------------------------------------------------------------------
/Examples/Example-Mac/PINRemoteImage/DegradedViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // DegradedViewController.h
3 | // PINRemoteImage
4 | //
5 | // Created by Michael Schneider on 1/6/16.
6 | // Copyright © 2016 mischneider. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface DegradedViewController : NSViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/Examples/Example-Mac/PINRemoteImage/GIFViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // GIFViewController.h
3 | // PINRemoteImage
4 | //
5 | // Created by Garrett Moon on 4/23/18.
6 | // Copyright © 2018 mischneider. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface GIFViewController : NSViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/Examples/Example-Mac/PINRemoteImage/GIFViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // GIFViewController.m
3 | // PINRemoteImage
4 | //
5 | // Created by Garrett Moon on 4/23/18.
6 | // Copyright © 2018 mischneider. All rights reserved.
7 | //
8 |
9 | #import "GIFViewController.h"
10 |
11 | #import
12 |
13 | @interface GIFViewController ()
14 |
15 | @property (weak) IBOutlet PINAnimatedImageView *animatedImageView;
16 |
17 | @end
18 |
19 | @implementation GIFViewController
20 |
21 | - (void)viewWillAppear {
22 | [super viewWillAppear];
23 | [self.animatedImageView pin_setImageFromURL:[NSURL URLWithString:@"https://i.pinimg.com/originals/f5/23/f1/f523f141646b613f78566ba964208990.gif"]];
24 | }
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/Examples/Example-Mac/PINRemoteImage/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1
25 | LSMinimumSystemVersion
26 | $(MACOSX_DEPLOYMENT_TARGET)
27 | NSHumanReadableCopyright
28 | Copyright © 2016 mischneider. All rights reserved.
29 | NSMainNibFile
30 | MainMenu
31 | NSPrincipalClass
32 | NSApplication
33 |
34 |
35 |
--------------------------------------------------------------------------------
/Examples/Example-Mac/PINRemoteImage/PINViewWithBackgroundColor.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINViewWithBackgroundColor.h
3 | // PINRemoteImage
4 | //
5 | // Created by Michael Schneider on 1/5/16.
6 | // Copyright © 2016 mischneider. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface PINViewWithBackgroundColor : NSView
12 |
13 | @property (nonatomic, strong) NSColor *backgroundColor;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Examples/Example-Mac/PINRemoteImage/ProcessingViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ProcessingViewController.h
3 | // PINRemoteImage
4 | //
5 | // Created by Michael Schneider on 1/6/16.
6 | // Copyright © 2016 mischneider. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ProcessingViewController : NSViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/Examples/Example-Mac/PINRemoteImage/ProgressiveViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ProgressiveViewController.h
3 | // PINRemoteImage
4 | //
5 | // Created by Michael Schneider on 1/6/16.
6 | // Copyright © 2016 mischneider. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ProgressiveViewController : NSViewController
12 |
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/Examples/Example-Mac/PINRemoteImage/ScrollViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ScrollViewController.h
3 | // PINRemoteImage
4 | //
5 | // Created by Michael Schneider on 1/6/16.
6 | // Copyright © 2016 mischneider. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ScrollViewController : NSViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/Examples/Example-Mac/PINRemoteImage/WebPViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // WebPViewController.h
3 | // PINRemoteImage
4 | //
5 | // Created by Michael Schneider on 1/6/16.
6 | // Copyright © 2016 mischneider. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface WebPViewController : NSViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/Examples/Example-Mac/PINRemoteImage/WebPViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // WebPViewController.m
3 | // PINRemoteImage
4 | //
5 | // Created by Michael Schneider on 1/6/16.
6 | // Copyright © 2016 mischneider. All rights reserved.
7 | //
8 |
9 | #import "WebPViewController.h"
10 |
11 | #import
12 |
13 | @interface WebPViewController ()
14 | @property (weak) IBOutlet NSImageView *imageView;
15 | @end
16 |
17 | @implementation WebPViewController
18 |
19 | #pragma mark - Lifecycle
20 |
21 | - (instancetype)init
22 | {
23 | self = [super initWithNibName:NSStringFromClass(self.class) bundle:nil];
24 | if (self == nil) { return self; }
25 | return self;
26 | }
27 |
28 |
29 | #pragma mark - NSViewController
30 |
31 | - (void)viewWillAppear
32 | {
33 | [super viewWillAppear];
34 |
35 | [self.imageView pin_setImageFromURL:[NSURL URLWithString:@"https://raw.githubusercontent.com/samdutton/simpl/main/picturetype/kittens.webp"]];
36 | }
37 |
38 | @end
39 |
--------------------------------------------------------------------------------
/Examples/Example-Mac/PINRemoteImage/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // PINRemoteImage
4 | //
5 | // Created by Michael Schneider on 1/3/16.
6 | // Copyright © 2016 mischneider. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | int main(int argc, const char * argv[]) {
12 | return NSApplicationMain(argc, argv);
13 | }
14 |
--------------------------------------------------------------------------------
/Examples/Example-Mac/Podfile:
--------------------------------------------------------------------------------
1 | platform :macos, 11.0
2 |
3 | target 'Example-Mac' do
4 | pod "PINRemoteImage/OSX", :path => "../../"
5 | pod "PINRemoteImage/PINCache", :path => "../../"
6 | pod "PINCache"
7 | end
8 |
--------------------------------------------------------------------------------
/Examples/Example-Mac/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - PINCache (3.0.4):
3 | - PINCache/Arc-exception-safe (= 3.0.4)
4 | - PINCache/Core (= 3.0.4)
5 | - PINCache/Arc-exception-safe (3.0.4):
6 | - PINCache/Core
7 | - PINCache/Core (3.0.4):
8 | - PINOperation (~> 1.2.3)
9 | - PINOperation (1.2.3)
10 | - PINRemoteImage/Core (3.0.4):
11 | - PINOperation
12 | - PINRemoteImage/OSX (3.0.4):
13 | - PINRemoteImage/Core
14 | - PINRemoteImage/PINCache (3.0.4):
15 | - PINCache (~> 3.0.4)
16 | - PINRemoteImage/Core
17 |
18 | DEPENDENCIES:
19 | - PINCache
20 | - PINRemoteImage/OSX (from `../../`)
21 | - PINRemoteImage/PINCache (from `../../`)
22 |
23 | SPEC REPOS:
24 | trunk:
25 | - PINCache
26 | - PINOperation
27 |
28 | EXTERNAL SOURCES:
29 | PINRemoteImage:
30 | :path: "../../"
31 |
32 | SPEC CHECKSUMS:
33 | PINCache: d9a87a0ff397acffe9e2f0db972ac14680441158
34 | PINOperation: fb563bcc9c32c26d6c78aaff967d405aa2ee74a7
35 | PINRemoteImage: 6256a644f4996991f124811763c7286b2a63ff94
36 |
37 | PODFILE CHECKSUM: a04c05adb7772d865f0951358a8d41d8a62f76f4
38 |
39 | COCOAPODS: 1.15.2
40 |
--------------------------------------------------------------------------------
/Examples/Example-Shared/Kitten.h:
--------------------------------------------------------------------------------
1 | //
2 | // Kitten.h
3 | // PINRemoteImage
4 | //
5 | // Created by Michael Schneider on 1/6/16.
6 | // Copyright © 2016 mischneider. All rights reserved.
7 | //
8 | #import
9 |
10 | #ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
11 | #import
12 | #else
13 | #import
14 | #endif
15 |
16 | @interface Kitten : NSObject
17 |
18 | @property (nonatomic, strong) NSURL *imageURL;
19 | @property (nonatomic, strong) id dominantColor;
20 | @property (nonatomic, assign) CGSize imageSize;
21 |
22 | + (void)fetchKittenForWidth:(CGFloat)width completion:(void (^)(NSArray *kittens))completion;
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/Examples/Example-Xcode-SPM/Example-Xcode-SPM.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Examples/Example-Xcode-SPM/Example-Xcode-SPM.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/Example-Xcode-SPM/Example-Xcode-SPM/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/Example-Xcode-SPM/Example-Xcode-SPM/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/Example-Xcode-SPM/Example-Xcode-SPM/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // Example-Xcode-SPM
4 | //
5 | // Created by Petro Rovenskyy on 02.12.2020.
6 | //
7 |
8 | import UIKit
9 | import PINRemoteImage
10 |
11 | class ViewController: UIViewController {
12 | @IBOutlet weak var info: UILabel!
13 | @IBOutlet weak var imgView: PINAnimatedImageView!
14 |
15 | override func viewDidLoad() {
16 | super.viewDidLoad()
17 | // Do any additional setup after loading the view.
18 | self.info.text = "PINRemoteImage+SPM+Xcode=🥰"
19 | self.imgView.pin_updateWithProgress = true
20 | }
21 | override func viewWillAppear(_ animated: Bool) {
22 | super.viewWillAppear(animated)
23 | guard let imageURL = URL(string: "https://i.pinimg.com/originals/f5/23/f1/f523f141646b613f78566ba964208990.gif") else {
24 | return
25 | }
26 | self.imgView.pin_setImage(from: imageURL)
27 | }
28 |
29 |
30 | }
31 |
32 |
--------------------------------------------------------------------------------
/Examples/Example-tvOS/Example-tvOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Examples/Example-tvOS/Example-tvOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/Example-tvOS/Example-tvOS.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Examples/Example-tvOS/Example-tvOS.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "layers" : [
3 | {
4 | "filename" : "Front.imagestacklayer"
5 | },
6 | {
7 | "filename" : "Middle.imagestacklayer"
8 | },
9 | {
10 | "filename" : "Back.imagestacklayer"
11 | }
12 | ],
13 | "info" : {
14 | "version" : 1,
15 | "author" : "xcode"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "layers" : [
3 | {
4 | "filename" : "Front.imagestacklayer"
5 | },
6 | {
7 | "filename" : "Middle.imagestacklayer"
8 | },
9 | {
10 | "filename" : "Back.imagestacklayer"
11 | }
12 | ],
13 | "info" : {
14 | "version" : 1,
15 | "author" : "xcode"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "assets" : [
3 | {
4 | "size" : "1280x768",
5 | "idiom" : "tv",
6 | "filename" : "App Icon - Large.imagestack",
7 | "role" : "primary-app-icon"
8 | },
9 | {
10 | "size" : "400x240",
11 | "idiom" : "tv",
12 | "filename" : "App Icon - Small.imagestack",
13 | "role" : "primary-app-icon"
14 | },
15 | {
16 | "size" : "1920x720",
17 | "idiom" : "tv",
18 | "filename" : "Top Shelf Image.imageset",
19 | "role" : "top-shelf-image"
20 | }
21 | ],
22 | "info" : {
23 | "version" : 1,
24 | "author" : "xcode"
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Assets.xcassets/LaunchImage.launchimage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "orientation" : "landscape",
5 | "idiom" : "tv",
6 | "extent" : "full-screen",
7 | "minimum-system-version" : "9.0",
8 | "scale" : "1x"
9 | }
10 | ],
11 | "info" : {
12 | "version" : 1,
13 | "author" : "xcode"
14 | }
15 | }
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Assets.xcassets/white-pinterest-logo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "filename" : "white-pinterest-logo@1x.png",
6 | "scale" : "1x"
7 | }
8 | ],
9 | "info" : {
10 | "version" : 1,
11 | "author" : "xcode"
12 | }
13 | }
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Assets.xcassets/white-pinterest-logo.imageset/white-pinterest-logo@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Assets.xcassets/white-pinterest-logo.imageset/white-pinterest-logo@1x.png
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/CollectionViewCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CollectionViewCell.swift
3 | // PINRemoteImage.tvOSExample
4 | //
5 | // Created by Isaac Overacker on 2/6/16.
6 | //
7 | //
8 |
9 | import UIKit
10 |
11 | class CollectionViewCell: UICollectionViewCell {
12 |
13 | @IBOutlet weak var imageView: UIImageView!
14 |
15 | override func prepareForReuse() {
16 | super.prepareForReuse()
17 | self.imageView.image = nil
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/DegradedViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DegradedViewController.swift
3 | // PINRemoteImage.tvOSExample
4 | //
5 | // Created by Isaac Overacker on 2/6/16.
6 | //
7 | //
8 |
9 | import UIKit
10 | import PINRemoteImage
11 |
12 | class DegradedViewController: UIViewController {
13 |
14 | @IBOutlet weak var imageView: UIImageView!
15 |
16 | override func viewDidLoad() {
17 | super.viewDidLoad()
18 | PINRemoteImageManager.shared().setShouldUpgradeLowQualityImages(true, completion: nil)
19 | }
20 |
21 | override func didReceiveMemoryWarning() {
22 | super.didReceiveMemoryWarning()
23 | // Dispose of any resources that can be recreated.
24 | }
25 |
26 | override func viewWillAppear(_ animated: Bool) {
27 | super.viewWillAppear(animated)
28 |
29 | imageView.pin_setImage(from: [
30 | URL(string: "https://loremflickr.com/101/101")!,
31 | URL(string: "https://loremflickr.com/401/401")!,
32 | URL(string: "https://loremflickr.com/801/801")!
33 | ])
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/GIFViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GIFViewController.swift
3 | // PINRemoteImage.tvOSExample
4 | //
5 | // Created by Garrett Moon on 4/24/18.
6 | //
7 |
8 | import UIKit
9 | import PINRemoteImage
10 |
11 | class GIFViewController: UIViewController {
12 |
13 | @IBOutlet weak var imageView: PINAnimatedImageView!
14 |
15 | override func viewWillAppear(_ animated: Bool) {
16 | super.viewWillAppear(animated)
17 |
18 | imageView.pin_setImage(from: URL(string: "https://i.pinimg.com/originals/f5/23/f1/f523f141646b613f78566ba964208990.gif"))
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | CFBundleDevelopmentRegion
8 | en
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1
25 | LSRequiresIPhoneOS
26 |
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | arm64
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/Examples/Example-tvOS/PINRemoteImage.tvOSExample/WebPViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // WebPViewController.swift
3 | // PINRemoteImage.tvOSExample
4 | //
5 | // Created by Garrett Moon on 4/24/18.
6 | //
7 |
8 | import UIKit
9 | import PINRemoteImage
10 |
11 | class WebPViewController: UIViewController {
12 |
13 | @IBOutlet weak var imageView: UIImageView!
14 |
15 | override func viewWillAppear(_ animated: Bool) {
16 | super.viewWillAppear(animated)
17 |
18 | imageView.pin_setImage(from: URL(string: "https://raw.githubusercontent.com/samdutton/simpl/main/picturetype/kittens.webp"))
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Examples/Example-tvOS/Podfile:
--------------------------------------------------------------------------------
1 | use_frameworks!
2 |
3 | platform :tvos, 14.0
4 |
5 | target 'Example-tvOS' do
6 | pod "PINRemoteImage/iOS", :path => "../../"
7 | end
8 |
--------------------------------------------------------------------------------
/Examples/Example-tvOS/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - PINOperation (1.2.3)
3 | - PINRemoteImage/Core (3.0.4):
4 | - PINOperation
5 | - PINRemoteImage/iOS (3.0.4):
6 | - PINRemoteImage/Core
7 |
8 | DEPENDENCIES:
9 | - PINRemoteImage/iOS (from `../../`)
10 |
11 | SPEC REPOS:
12 | trunk:
13 | - PINOperation
14 |
15 | EXTERNAL SOURCES:
16 | PINRemoteImage:
17 | :path: "../../"
18 |
19 | SPEC CHECKSUMS:
20 | PINOperation: fb563bcc9c32c26d6c78aaff967d405aa2ee74a7
21 | PINRemoteImage: 6256a644f4996991f124811763c7286b2a63ff94
22 |
23 | PODFILE CHECKSUM: 92fdbb41115684253472b196b5b53ee177e9f4b9
24 |
25 | COCOAPODS: 1.15.2
26 |
--------------------------------------------------------------------------------
/Examples/Example/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Examples/Example/Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/Example/Example.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Examples/Example/Example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/Example/PINRemoteImage/APNGViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // APNGViewController.h
3 | // PINRemoteImage
4 | //
5 | // Created by SAGESSE on 2020/2/28.
6 | // Copyright © 2020 Garrett Moon. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import
12 |
13 | @interface APNGViewController : UIViewController
14 |
15 | @property (nonatomic, weak) IBOutlet PINAnimatedImageView *animatedImageView;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Examples/Example/PINRemoteImage/AnimatedWebPViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // AnimatedWebPViewController.h
3 | // Example
4 | //
5 | // Created by Andy Finnell on 5/15/24.
6 | // Copyright © 2024 Garrett Moon. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import
12 |
13 | NS_ASSUME_NONNULL_BEGIN
14 |
15 | @interface AnimatedWebPViewController : UIViewController
16 |
17 | @property (nonatomic, weak) IBOutlet PINAnimatedImageView *animatedImageView;
18 |
19 | @end
20 |
21 | NS_ASSUME_NONNULL_END
22 |
--------------------------------------------------------------------------------
/Examples/Example/PINRemoteImage/AnimatedWebPViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // AnimatedWebPViewController.m
3 | // Example
4 | //
5 | // Created by Andy Finnell on 5/15/24.
6 | // Copyright © 2024 Garrett Moon. All rights reserved.
7 | //
8 |
9 | #import "AnimatedWebPViewController.h"
10 | #import
11 |
12 | @interface AnimatedWebPViewController ()
13 |
14 | @end
15 |
16 | @implementation AnimatedWebPViewController
17 |
18 | - (void)viewWillAppear:(BOOL)animated
19 | {
20 | [super viewWillAppear:animated];
21 | [self.animatedImageView pin_setImageFromURL:[NSURL URLWithString:@"https://mathiasbynens.be/demo/animated-webp-supported.webp"]];
22 | }
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/Examples/Example/PINRemoteImage/DegradedViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // DegradedViewController.h
3 | // PINRemoteImage
4 | //
5 | // Created by Garrett Moon on 7/14/15.
6 | // Copyright (c) 2015 Garrett Moon. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface DegradedViewController : UIViewController
12 |
13 | @property (nonatomic, weak) IBOutlet UIImageView *imageView;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Examples/Example/PINRemoteImage/GIFViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // GIFViewController.h
3 | // PINRemoteImage
4 | //
5 | // Created by Garrett Moon on 4/17/18.
6 | // Copyright © 2018 Garrett Moon. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import
12 |
13 | @interface GIFViewController : UIViewController
14 |
15 | @property (nonatomic, weak) IBOutlet PINAnimatedImageView *animatedImageView;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Examples/Example/PINRemoteImage/Media.xcassets/white-pinterest-logo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x",
6 | "filename" : "white-pinterest-logo@1x.png"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x",
11 | "filename" : "white-pinterest-logo@2x.png"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/Examples/Example/PINRemoteImage/Media.xcassets/white-pinterest-logo.imageset/white-pinterest-logo@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Examples/Example/PINRemoteImage/Media.xcassets/white-pinterest-logo.imageset/white-pinterest-logo@1x.png
--------------------------------------------------------------------------------
/Examples/Example/PINRemoteImage/Media.xcassets/white-pinterest-logo.imageset/white-pinterest-logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Examples/Example/PINRemoteImage/Media.xcassets/white-pinterest-logo.imageset/white-pinterest-logo@2x.png
--------------------------------------------------------------------------------
/Examples/Example/PINRemoteImage/PINAppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINAppDelegate.h
3 | // PINRemoteImage
4 | //
5 | // Created by CocoaPods on 08/11/2014.
6 | // Copyright (c) 2014 Garrett Moon. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface PINAppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Examples/Example/PINRemoteImage/PINViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINViewController.h
3 | // PINRemoteImage
4 | //
5 | // Created by Garrett Moon on 08/11/2014.
6 | // Copyright (c) 2014 Garrett Moon. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface PINViewController : UIViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/Examples/Example/PINRemoteImage/ProcessingViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ProcessingViewController.h
3 | // PINRemoteImage
4 | //
5 | // Created by Garrett Moon on 7/16/15.
6 | // Copyright (c) 2015 Garrett Moon. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ProcessingViewController : UIViewController
12 |
13 | @property (nonatomic, weak) IBOutlet UIImageView *imageView;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Examples/Example/PINRemoteImage/ProgressiveViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ProgressiveViewController.h
3 | // PINRemoteImage
4 | //
5 | // Created by Garrett Moon on 7/14/15.
6 | // Copyright (c) 2015 Garrett Moon. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ProgressiveViewController : UIViewController
12 |
13 | @property (nonatomic, weak) IBOutlet UIImageView *imageView;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Examples/Example/PINRemoteImage/WebPViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // WebPViewController.h
3 | // PINRemoteImage
4 | //
5 | // Created by Garrett Moon on 7/14/15.
6 | // Copyright (c) 2015 Garrett Moon. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface WebPViewController : UIViewController
12 |
13 | @property (nonatomic, weak) IBOutlet UIImageView *imageView;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Examples/Example/PINRemoteImage/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/Examples/Example/PINRemoteImage/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // PINRemoteImage
4 | //
5 | // Created by Garrett Moon on 08/11/2014.
6 | // Copyright (c) 2014 Garrett Moon. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "PINAppDelegate.h"
12 |
13 | int main(int argc, char * argv[])
14 | {
15 | @autoreleasepool {
16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([PINAppDelegate class]));
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Examples/Example/Podfile:
--------------------------------------------------------------------------------
1 | platform :ios, 14.0
2 |
3 | def shared_pods
4 | pod "PINRemoteImage", :path => "../../"
5 | pod "PINRemoteImage/PINCache", :path => "../../"
6 | end
7 |
8 | target 'Example' do
9 | shared_pods
10 | end
11 |
--------------------------------------------------------------------------------
/Examples/Example/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - PINCache (3.0.4):
3 | - PINCache/Arc-exception-safe (= 3.0.4)
4 | - PINCache/Core (= 3.0.4)
5 | - PINCache/Arc-exception-safe (3.0.4):
6 | - PINCache/Core
7 | - PINCache/Core (3.0.4):
8 | - PINOperation (~> 1.2.3)
9 | - PINOperation (1.2.3)
10 | - PINRemoteImage (3.0.4):
11 | - PINRemoteImage/PINCache (= 3.0.4)
12 | - PINRemoteImage/Core (3.0.4):
13 | - PINOperation
14 | - PINRemoteImage/PINCache (3.0.4):
15 | - PINCache (~> 3.0.4)
16 | - PINRemoteImage/Core
17 |
18 | DEPENDENCIES:
19 | - PINRemoteImage (from `../../`)
20 | - PINRemoteImage/PINCache (from `../../`)
21 |
22 | SPEC REPOS:
23 | trunk:
24 | - PINCache
25 | - PINOperation
26 |
27 | EXTERNAL SOURCES:
28 | PINRemoteImage:
29 | :path: "../../"
30 |
31 | SPEC CHECKSUMS:
32 | PINCache: d9a87a0ff397acffe9e2f0db972ac14680441158
33 | PINOperation: fb563bcc9c32c26d6c78aaff967d405aa2ee74a7
34 | PINRemoteImage: 6256a644f4996991f124811763c7286b2a63ff94
35 |
36 | PODFILE CHECKSUM: b542b3c8c29f4086253ffdf2139d599970e1c2cb
37 |
38 | COCOAPODS: 1.15.2
39 |
--------------------------------------------------------------------------------
/Examples/Swift-Example/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment this line to define a global platform for your project
2 | platform :ios, '14.0'
3 | # Uncomment this line if you're using Swift
4 | use_frameworks!
5 |
6 | target 'Swift-Example' do
7 | pod 'PINRemoteImage', :path => '../../'
8 | end
9 |
10 |
--------------------------------------------------------------------------------
/Examples/Swift-Example/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - PINCache (3.0.4):
3 | - PINCache/Arc-exception-safe (= 3.0.4)
4 | - PINCache/Core (= 3.0.4)
5 | - PINCache/Arc-exception-safe (3.0.4):
6 | - PINCache/Core
7 | - PINCache/Core (3.0.4):
8 | - PINOperation (~> 1.2.3)
9 | - PINOperation (1.2.3)
10 | - PINRemoteImage (3.0.4):
11 | - PINRemoteImage/PINCache (= 3.0.4)
12 | - PINRemoteImage/Core (3.0.4):
13 | - PINOperation
14 | - PINRemoteImage/PINCache (3.0.4):
15 | - PINCache (~> 3.0.4)
16 | - PINRemoteImage/Core
17 |
18 | DEPENDENCIES:
19 | - PINRemoteImage (from `../../`)
20 |
21 | SPEC REPOS:
22 | trunk:
23 | - PINCache
24 | - PINOperation
25 |
26 | EXTERNAL SOURCES:
27 | PINRemoteImage:
28 | :path: "../../"
29 |
30 | SPEC CHECKSUMS:
31 | PINCache: d9a87a0ff397acffe9e2f0db972ac14680441158
32 | PINOperation: fb563bcc9c32c26d6c78aaff967d405aa2ee74a7
33 | PINRemoteImage: 6256a644f4996991f124811763c7286b2a63ff94
34 |
35 | PODFILE CHECKSUM: 493be0577869744e7a142367f13f9f5aa0e6fb4c
36 |
37 | COCOAPODS: 1.15.2
38 |
--------------------------------------------------------------------------------
/Examples/Swift-Example/Swift-Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Examples/Swift-Example/Swift-Example.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Examples/Swift-Example/Swift-Example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/Swift-Example/Swift-Example/APNGViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // APNGViewController.swift
3 | // Swift-Example
4 | //
5 | // Created by Garrett Moon on 4/24/18.
6 | // Copyright © 2018 Marius Landwehr. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import PINRemoteImage
11 |
12 | class APNGViewController: UIViewController {
13 |
14 | @IBOutlet weak var imageView: PINAnimatedImageView!
15 |
16 | override func viewWillAppear(_ animated: Bool) {
17 | super.viewWillAppear(animated)
18 |
19 | imageView.pin_setImage(from: URL(string: "https://upload.wikimedia.org/wikipedia/commons/1/14/Animated_PNG_example_bouncing_beach_ball.png"))
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Examples/Swift-Example/Swift-Example/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/Examples/Swift-Example/Swift-Example/DegradedViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DegradedViewController.swift
3 | // Swift-Example
4 | //
5 | // Created by Marius Landwehr on 23.01.16.
6 | // Copyright © 2016 Marius Landwehr. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import PINRemoteImage
11 |
12 | class DegradedViewController: UIViewController {
13 |
14 | @IBOutlet weak var imageView: UIImageView!
15 |
16 | override func viewDidLoad() {
17 | super.viewDidLoad()
18 |
19 | PINRemoteImageManager.shared().setShouldUpgradeLowQualityImages(true, completion: nil)
20 | }
21 |
22 | override func viewWillAppear(_ animated: Bool) {
23 | super.viewWillAppear(animated)
24 |
25 | imageView.pin_setImage(from: [
26 | URL(string: "https://loremflickr.com/101/101")!,
27 | URL(string: "https://loremflickr.com/401/401")!,
28 | URL(string: "https://loremflickr.com/801/801")!])
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Examples/Swift-Example/Swift-Example/GIFViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GIFViewController.swift
3 | // Swift-Example
4 | //
5 | // Created by Garrett Moon on 4/24/18.
6 | // Copyright © 2018 Marius Landwehr. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import PINRemoteImage
11 |
12 | class GIFViewController: UIViewController {
13 |
14 | @IBOutlet weak var imageView: PINAnimatedImageView!
15 |
16 | override func viewWillAppear(_ animated: Bool) {
17 | super.viewWillAppear(animated)
18 |
19 | imageView.pin_setImage(from: URL(string: "https://i.pinimg.com/originals/f5/23/f1/f523f141646b613f78566ba964208990.gif"))
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Examples/Swift-Example/Swift-Example/Media.xcassets/white-pinterest-logo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x",
6 | "filename" : "white-pinterest-logo@1x.png"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x",
11 | "filename" : "white-pinterest-logo@2x.png"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/Examples/Swift-Example/Swift-Example/Media.xcassets/white-pinterest-logo.imageset/white-pinterest-logo@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Examples/Swift-Example/Swift-Example/Media.xcassets/white-pinterest-logo.imageset/white-pinterest-logo@1x.png
--------------------------------------------------------------------------------
/Examples/Swift-Example/Swift-Example/Media.xcassets/white-pinterest-logo.imageset/white-pinterest-logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Examples/Swift-Example/Swift-Example/Media.xcassets/white-pinterest-logo.imageset/white-pinterest-logo@2x.png
--------------------------------------------------------------------------------
/Examples/Swift-Example/Swift-Example/WebPViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // WebPViewController.swift
3 | // Swift-Example
4 | //
5 | // Created by Marius Landwehr on 23.01.16.
6 | // Copyright © 2016 Marius Landwehr. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import PINRemoteImage
11 |
12 | class WebPViewController: UIViewController {
13 |
14 | @IBOutlet weak var imageView: UIImageView!
15 |
16 | override func viewWillAppear(_ animated: Bool) {
17 | super.viewWillAppear(animated)
18 |
19 | imageView.pin_setImage(from: URL(string: "https://raw.githubusercontent.com/samdutton/simpl/main/picturetype/kittens.webp"))
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/PINRemoteImage.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/PINRemoteImage.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/PINRemoteImage.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildSystemType
6 | Latest
7 |
8 |
9 |
--------------------------------------------------------------------------------
/PINRemoteImage.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/PINRemoteImage.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/PINRemoteImage/PINRemoteImageTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/PINRemoteImage/PINRemoteImageTests/PINRemoteImageTests.m:
--------------------------------------------------------------------------------
1 | //
2 | // PINRemoteImageTests.m
3 | // PINRemoteImageTests
4 | //
5 | // Created by Garrett Moon on 2/13/17.
6 | // Copyright © 2017 Pinterest. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface PINRemoteImageTests : XCTestCase
12 |
13 | @end
14 |
15 | @implementation PINRemoteImageTests
16 |
17 | - (void)setUp {
18 | [super setUp];
19 | // Put setup code here. This method is called before the invocation of each test method in the class.
20 | }
21 |
22 | - (void)tearDown {
23 | // Put teardown code here. This method is called after the invocation of each test method in the class.
24 | [super tearDown];
25 | }
26 |
27 | - (void)testExample {
28 | // This is an example of a functional test case.
29 | // Use XCTAssert and related functions to verify your tests produce the correct results.
30 | }
31 |
32 | - (void)testPerformanceExample {
33 | // This is an example of a performance test case.
34 | [self measureBlock:^{
35 | // Put the code you want to measure the time of here.
36 | }];
37 | }
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/RELEASE.md:
--------------------------------------------------------------------------------
1 | # Release Process
2 | This document describes the process for a public PINRemoteImage release.
3 |
4 | ### Process
5 | - Ensure the latest master build is green.
6 | - Run the github action 'Create Release'.
7 | - Check that the release was successfully published to [Github](https://github.com/pinterest/PINRemoteImage/releases) and [Cocoapods](https://cocoapods.org/pods/PINRemoteImage).
8 |
--------------------------------------------------------------------------------
/Scripts/tag-release-branch.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -ex
3 |
4 | echo "Tagging release branch"
5 | TAG=$NEW_VERSION
6 |
7 | echo "RELEASE_TAG=$TAG" >> $GITHUB_ENV
8 | git tag $TAG
9 | git push origin --tags
10 |
11 | echo "Setting Release Notes"
12 | cat CHANGELOG.md | awk '/^#/{f=1} f; /^#/ && ++c==3{exit}' | sed '$ d' > RELEASE_NOTES.md
13 |
--------------------------------------------------------------------------------
/Source/Classes/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Source/Classes/.gitkeep
--------------------------------------------------------------------------------
/Source/Classes/PINAlternateRepresentationProvider.m:
--------------------------------------------------------------------------------
1 | //
2 | // PINAlternateRepresentationProvider.m
3 | // Pods
4 | //
5 | // Created by Garrett Moon on 3/17/16.
6 | //
7 | //
8 |
9 | #import
10 |
11 | #import
12 | #import
13 |
14 | @implementation PINAlternateRepresentationProvider
15 |
16 | - (id)alternateRepresentationWithData:(NSData *)data options:(PINRemoteImageManagerDownloadOptions)options
17 | {
18 | if ([data pin_isAnimatedGIF]) {
19 | return [[PINCachedAnimatedImage alloc] initWithAnimatedImageData:data];
20 | }
21 | #if PIN_WEBP
22 | if ([data pin_isAnimatedWebP]) {
23 | return [[PINCachedAnimatedImage alloc] initWithAnimatedImageData:data];
24 | }
25 | #endif
26 | #if PIN_APNG
27 | if ([data pin_isAPNG]) {
28 | return [[PINCachedAnimatedImage alloc] initWithAnimatedImageData:data];
29 | }
30 | #endif
31 | return nil;
32 | }
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/Source/Classes/PINDisplayLink.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINDisplayLink.h
3 | // Pods
4 | //
5 | // Created by Garrett Moon on 4/23/18.
6 | //
7 |
8 | #import
9 |
10 | #import
11 |
12 | #if PIN_TARGET_IOS
13 | #define PINDisplayLink CADisplayLink
14 | #elif PIN_TARGET_MAC
15 | @interface PINDisplayLink : NSObject
16 |
17 | + (PINDisplayLink *)displayLinkWithTarget:(id)target selector:(SEL)sel;
18 | - (void)addToRunLoop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode;
19 | - (void)removeFromRunLoop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode;
20 |
21 | @property(getter=isPaused, nonatomic) BOOL paused;
22 | @property(nonatomic) NSInteger frameInterval;
23 |
24 | @end
25 | #endif
26 |
--------------------------------------------------------------------------------
/Source/Classes/PINRemoteImageBasicCache.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINRemoteImageBasicCache.h
3 | // Pods
4 | //
5 | // Created by Aleksei Shevchenko on 7/28/16.
6 | //
7 | //
8 |
9 | #import
10 | #import
11 |
12 | /**
13 | * Simplistic wrapper based on NSCache.
14 | *
15 | * No data is persisted on disk. The disk cache methods are no-op.
16 | */
17 | @interface PINRemoteImageBasicCache : NSObject
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/Source/Classes/PINRemoteImageCallbacks.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINRemoteImageCallbacks.h
3 | // Pods
4 | //
5 | // Created by Garrett Moon on 3/9/15.
6 | //
7 | //
8 |
9 | #import
10 |
11 | #import
12 |
13 | @interface PINRemoteImageCallbacks : NSObject
14 |
15 | @property (atomic, strong, nullable) PINRemoteImageManagerImageCompletion completionBlock;
16 | @property (atomic, strong, nullable) PINRemoteImageManagerImageCompletion progressImageBlock;
17 | @property (atomic, strong, nullable) PINRemoteImageManagerProgressDownload progressDownloadBlock;
18 | @property (assign, readonly) CFTimeInterval requestTime;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/Source/Classes/PINRemoteImageCallbacks.m:
--------------------------------------------------------------------------------
1 | //
2 | // PINRemoteImageCallbacks.m
3 | // Pods
4 | //
5 | // Created by Garrett Moon on 3/9/15.
6 | //
7 | //
8 |
9 | #import "PINRemoteImageCallbacks.h"
10 |
11 | @implementation PINRemoteImageCallbacks
12 |
13 | - (instancetype)init
14 | {
15 | if (self = [super init]) {
16 | _requestTime = CACurrentMediaTime();
17 | }
18 | return self;
19 | }
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/Source/Classes/PINRemoteImageManager+Private.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINRemoteImageManager+Private.h
3 | // PINRemoteImage
4 | //
5 | // Created by Garrett Moon on 5/18/17.
6 | // Copyright © 2017 Pinterest. All rights reserved.
7 | //
8 |
9 | #ifndef PINRemoteImageManager_Private_h
10 | #define PINRemoteImageManager_Private_h
11 |
12 | #import "PINRemoteImageDownloadQueue.h"
13 |
14 | typedef void (^PINRemoteImageManagerDataCompletion)(NSData *data, NSURLResponse *response, NSError *error);
15 |
16 | @interface PINRemoteImageManager (PrivateExtension)
17 |
18 | @property (nonatomic, strong, readonly) dispatch_queue_t callbackQueue;
19 | @property (nonatomic, strong, readonly) PINOperationQueue *concurrentOperationQueue;
20 | @property (nonatomic, strong, readonly) PINRemoteImageDownloadQueue *urlSessionTaskQueue;
21 | @property (nonatomic, strong, readonly) PINURLSessionManager *sessionManager;
22 |
23 | @property (nonatomic, readonly) NSArray *progressThresholds;
24 | @property (nonatomic, readonly) NSTimeInterval estimatedRemainingTimeThreshold;
25 | @property (nonatomic, readonly) BOOL shouldBlurProgressive;
26 | @property (nonatomic, readonly) CGSize maxProgressiveRenderSize;
27 |
28 | @end
29 |
30 | #endif /* PINRemoteImageManager_Private_h */
31 |
--------------------------------------------------------------------------------
/Source/Classes/PINRemoteImageMemoryContainer.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINRemoteImageMemoryContainer.h
3 | // Pods
4 | //
5 | // Created by Garrett Moon on 3/17/16.
6 | //
7 | //
8 |
9 | #import
10 |
11 | #import
12 | #import
13 | #import "PINRemoteLock.h"
14 |
15 | @class PINImage;
16 |
17 | @interface PINRemoteImageMemoryContainer : NSObject
18 |
19 | @property (nonatomic, strong) PINImage *image;
20 | @property (nonatomic, strong) NSData *data;
21 | @property (nonatomic, strong) PINRemoteLock *lock;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/Source/Classes/PINRemoteImageMemoryContainer.m:
--------------------------------------------------------------------------------
1 | //
2 | // PINRemoteImageMemoryContainer.m
3 | // Pods
4 | //
5 | // Created by Garrett Moon on 3/17/16.
6 | //
7 | //
8 |
9 | #import "PINRemoteImageMemoryContainer.h"
10 |
11 | @implementation PINRemoteImageMemoryContainer
12 |
13 | - (instancetype)init
14 | {
15 | if (self = [super init]) {
16 | _lock = [[PINRemoteLock alloc] initWithName:@"PINRemoteImageMemoryContainer" lockType:PINRemoteLockTypeNonRecursive];
17 | }
18 | return self;
19 | }
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/Source/Classes/PINRemoteImageProcessorTask.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINRemoteImageProcessorTask.h
3 | // Pods
4 | //
5 | // Created by Garrett Moon on 3/9/15.
6 | //
7 | //
8 |
9 | #import "PINRemoteImageTask.h"
10 |
11 | @interface PINRemoteImageProcessorTask : PINRemoteImageTask
12 |
13 | @property (nonatomic, strong, nullable) NSUUID *downloadTaskUUID;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Source/Classes/PINRemoteImageTask+Subclassing.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINRemoteImageTask+Subclassing.h
3 | // PINRemoteImage
4 | //
5 | // Created by Garrett Moon on 5/22/17.
6 | // Copyright © 2017 Pinterest. All rights reserved.
7 | //
8 |
9 | #import "PINRemoteImageTask.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface PINRemoteImageTask (Subclassing)
14 |
15 | - (NSMutableDictionary *)l_callbackBlocks;
16 | - (BOOL)l_cancelWithUUID:(NSUUID *)UUID;
17 |
18 | @end
19 |
20 | NS_ASSUME_NONNULL_END
21 |
--------------------------------------------------------------------------------
/Source/Classes/PINRemoteLock.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINRemoteLock.h
3 | // Pods
4 | //
5 | // Created by Garrett Moon on 3/17/16.
6 | //
7 | //
8 |
9 | #import
10 |
11 | /** The type of lock, either recursive or non-recursive */
12 | typedef NS_ENUM(NSUInteger, PINRemoteLockType) {
13 | /** A non-recursive version of the lock. The default. */
14 | PINRemoteLockTypeNonRecursive = 0,
15 | /** A recursive version of the lock. More expensive. */
16 | PINRemoteLockTypeRecursive,
17 | };
18 |
19 | @interface PINRemoteLock : NSObject
20 |
21 | - (instancetype)initWithName:(NSString *)lockName lockType:(PINRemoteLockType)lockType NS_DESIGNATED_INITIALIZER;
22 | - (instancetype)initWithName:(NSString *)lockName;
23 | - (void)lockWithBlock:(dispatch_block_t)block;
24 |
25 | - (void)lock;
26 | - (void)unlock;
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/Source/Classes/PINRemoteWeakProxy.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINRemoteWeakProxy.h
3 | // PINRemoteImage
4 | //
5 | // Created by Garrett Moon on 4/24/18.
6 | // Copyright © 2018 Pinterest. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface PINRemoteWeakProxy : NSProxy
12 |
13 | + (PINRemoteWeakProxy *)weakProxyWithTarget:(id)target;
14 | - (instancetype)initWithTarget:(id)target;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Source/Classes/PINResume.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINResume.h
3 | // PINRemoteImage
4 | //
5 | // Created by Garrett Moon on 3/10/17.
6 | // Copyright © 2017 Pinterest. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface PINResume : NSObject
14 |
15 | - (id)init NS_UNAVAILABLE;
16 | + (PINResume *)resumeData:(NSData *)resumeData ifRange:(NSString *)ifRange totalBytes:(long long)totalBytes;
17 |
18 | @property (nonatomic, strong, readonly) NSData *resumeData;
19 | @property (nonatomic, copy, readonly) NSString *ifRange;
20 | @property (nonatomic, assign, readonly) long long totalBytes;
21 |
22 | @end
23 |
24 | NS_ASSUME_NONNULL_END
25 |
--------------------------------------------------------------------------------
/Source/Classes/include/PINRemoteImage/NSData+ImageDetectors.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSData+ImageDetectors.h
3 | // Pods
4 | //
5 | // Created by Garrett Moon on 11/19/14.
6 | //
7 | //
8 |
9 | #import
10 |
11 | #import
12 |
13 | @interface NSData (PINImageDetectors)
14 |
15 | - (BOOL)pin_isGIF;
16 | - (BOOL)pin_isAnimatedGIF;
17 | #if PIN_WEBP
18 | - (BOOL)pin_isWebP;
19 | - (BOOL)pin_isAnimatedWebP;
20 | #endif
21 | #if PIN_APNG
22 | - (BOOL)pin_isAPNG;
23 | #endif
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/Source/Classes/include/PINRemoteImage/NSHTTPURLResponse+MaxAge.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSHTTPURLResponse+MaxAge.h
3 | //
4 | // Created by Kevin Smith on 6/15/18.
5 | //
6 | //
7 |
8 | #import
9 |
10 | @interface NSHTTPURLResponse (MaxAge)
11 |
12 | - (NSNumber *)findMaxAge;
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/Source/Classes/include/PINRemoteImage/PINAPNGAnimatedImage.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINAPNGAnimatedImage.h
3 | // PINRemoteImage
4 | //
5 | // Created by SAGESSE on 2020/2/28.
6 | // Copyright © 2020 Pinterest. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import
12 |
13 | @interface PINAPNGAnimatedImage : PINAnimatedImage
14 |
15 | - (instancetype)init NS_UNAVAILABLE;
16 | - (instancetype)initWithAnimatedImageData:(NSData *)animatedImageData NS_DESIGNATED_INITIALIZER;
17 |
18 | @end
19 |
20 |
--------------------------------------------------------------------------------
/Source/Classes/include/PINRemoteImage/PINAlternateRepresentationProvider.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINAlternateRepresentationProvider.h
3 | // Pods
4 | //
5 | // Created by Garrett Moon on 3/17/16.
6 | //
7 | //
8 |
9 | #import
10 |
11 | #import
12 |
13 | @protocol PINRemoteImageManagerAlternateRepresentationProvider
14 | @required
15 |
16 | /**
17 | @discussion This method will be called with data off the wire or stored in the cache. Return an object to have it returned as the alternativeRepresentation object in the PINRemoteImageManagerResult. @warning this method can be called on the main thread, be careful of doing expensive work.
18 | */
19 | - (id)alternateRepresentationWithData:(NSData *)data options:(PINRemoteImageManagerDownloadOptions)options;
20 |
21 | @end
22 |
23 | @interface PINAlternateRepresentationProvider : NSObject
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/Source/Classes/include/PINRemoteImage/PINAnimatedImageView+PINRemoteImage.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINAnimatedImageView+PINRemoteImage.h
3 | // Pods
4 | //
5 | // Created by Garrett Moon on 4/19/18.
6 | //
7 |
8 | #import
9 | #import
10 |
11 | @interface PINAnimatedImageView (PINRemoteImage)
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/Source/Classes/include/PINRemoteImage/PINAnimatedImageView.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINAnimatedImageView.h
3 | // Pods
4 | //
5 | // Created by Garrett Moon on 4/17/18.
6 | //
7 |
8 | #import
9 |
10 | #if PIN_TARGET_IOS
11 | #import
12 | #elif PIN_TARGET_MAC
13 | #import
14 | #endif
15 |
16 | #import
17 |
18 | @interface PINAnimatedImageView : PINImageView
19 |
20 | - (nonnull instancetype)initWithAnimatedImage:(nonnull PINCachedAnimatedImage *)animatedImage NS_DESIGNATED_INITIALIZER;
21 | - (nonnull instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER;
22 | - (nullable instancetype)initWithCoder:(nonnull NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
23 |
24 | @property (nullable, nonatomic, strong) PINCachedAnimatedImage *animatedImage;
25 | @property (nullable, nonatomic, strong) NSString *animatedImageRunLoopMode;
26 | @property (nonatomic, assign, getter=isPlaybackPaused) BOOL playbackPaused;
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/Source/Classes/include/PINRemoteImage/PINButton+PINRemoteImage.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIButton+PINRemoteImage.h
3 | // Pods
4 | //
5 | // Created by Garrett Moon on 8/18/14.
6 | //
7 | //
8 |
9 | #import
10 |
11 | #if PIN_TARGET_IOS
12 | #import
13 | #elif PIN_TARGET_MAC
14 | #import
15 | #endif
16 |
17 | #import
18 | #import
19 |
20 | @interface PINButton (PINRemoteImage)
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/Source/Classes/include/PINRemoteImage/PINCache+PINRemoteImageCaching.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINCache+PINRemoteImageCaching.h
3 | // Pods
4 | //
5 | // Created by Aleksei Shevchenko on 7/28/16.
6 | //
7 | //
8 |
9 | #if !__has_include()
10 | #import "PINCache.h"
11 | #else
12 | #import
13 | #endif
14 |
15 | #import
16 | #import
17 |
18 | @interface PINCache (PINRemoteImageCaching)
19 |
20 | @end
21 |
22 | @interface PINRemoteImageManager (PINCache)
23 |
24 | @property (nonatomic, nullable, readonly) PINCache *pinCache;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/Source/Classes/include/PINRemoteImage/PINGIFAnimatedImage.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINGIFAnimatedImage.h
3 | // PINRemoteImage
4 | //
5 | // Created by Garrett Moon on 9/17/17.
6 | // Copyright © 2017 Pinterest. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import
12 |
13 | @interface PINGIFAnimatedImage : PINAnimatedImage
14 |
15 | - (instancetype)init NS_UNAVAILABLE;
16 | - (instancetype)initWithAnimatedImageData:(NSData *)animatedImageData NS_DESIGNATED_INITIALIZER;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/Source/Classes/include/PINRemoteImage/PINImage+ScaledImage.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIImage+ScaledImage.h
3 | // Pods
4 | //
5 | // Created by Michael Schneider on 2/9/17.
6 | //
7 | //
8 |
9 | #import
10 |
11 | #import
12 |
13 | #if PIN_TARGET_IOS
14 | #import
15 | #elif PIN_TARGET_MAC
16 | #import
17 | #endif
18 |
19 | @interface PINImage (PINScaledImage)
20 |
21 | - (PINImage *)pin_scaledImageForKey:(NSString *)key;
22 | + (PINImage *)pin_scaledImageForImage:(PINImage *)image withKey:(NSString *)key;
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/Source/Classes/include/PINRemoteImage/PINImageView+PINRemoteImage.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIImageView+PINRemoteImage.h
3 | // Pods
4 | //
5 | // Created by Garrett Moon on 8/17/14.
6 | //
7 | //
8 |
9 | #import
10 |
11 | #if PIN_TARGET_IOS
12 | #import
13 | #elif PIN_TARGET_MAC
14 | #import
15 | #endif
16 |
17 | #import
18 | #import
19 |
20 | @interface PINImageView (PINRemoteImage)
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/Source/Classes/include/PINRemoteImage/PINRemoteImageDataConvertible.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINRemoteImageDataConvertible.h
3 | // PINRemoteImage
4 | //
5 | // Created by Andy Finnell on 5/23/24.
6 | // Copyright © 2024 Pinterest. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | /**
12 | Protocol for describing a class that convert into image data.
13 | */
14 | @protocol PINRemoteImageDataConvertible
15 |
16 | @property (nonatomic, readonly) NSData *data;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/Source/Classes/include/PINRemoteImage/PINRequestRetryStrategy.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINRequestRetryStrategy.h
3 | // Pods
4 | //
5 | // Created by Hovhannes Safaryan on 9/24/16.
6 | //
7 | //
8 |
9 | #import
10 |
11 | /*
12 | Decide whether request should be retried based on the error.
13 | **/
14 |
15 | @protocol PINRequestRetryStrategy
16 |
17 | - (BOOL)shouldRetryWithError:(NSError *)error;
18 | - (int)nextDelay;
19 | - (void)incrementRetryCount;
20 | - (int)numberOfRetries;
21 |
22 | @end
23 |
24 | @interface PINRequestExponentialRetryStrategy : NSObject
25 |
26 | - (instancetype)initWithRetryMaxCount:(int)retryMaxCount delayBase:(int)delayBase;
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/Source/Classes/include/PINRemoteImage/PINWebPAnimatedImage.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINWebPAnimatedImage.h
3 | // PINRemoteImage
4 | //
5 | // Created by Garrett Moon on 9/14/17.
6 | // Copyright © 2017 Pinterest. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | #import
13 |
14 | @interface PINWebPAnimatedImage : PINAnimatedImage
15 |
16 | - (instancetype)init NS_UNAVAILABLE;
17 | - (instancetype)initWithAnimatedImageData:(NSData *)animatedImageData NS_DESIGNATED_INITIALIZER;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/Source/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | $(CURRENT_PROJECT_VERSION)
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Source/PINRemoteImage.modulemap:
--------------------------------------------------------------------------------
1 | framework module PINRemoteImage {
2 | umbrella header "PINRemoteImage.h"
3 |
4 | textual header "PINRemoteImageMacros.h"
5 | header "PINAnimatedImageView+PINRemoteImage.h"
6 | header "PINButton+PINRemoteImage.h"
7 | header "PINImageView+PINRemoteImage.h"
8 |
9 | export *
10 | module * { export * }
11 | }
12 |
--------------------------------------------------------------------------------
/Source/PrivacyInfo.xcprivacy:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | NSPrivacyTracking
6 |
7 | NSPrivacyTrackingDomains
8 |
9 | NSPrivacyCollectedDataTypes
10 |
11 | NSPrivacyAccessedAPITypes
12 |
13 |
14 | NSPrivacyAccessedAPIType
15 | NSPrivacyAccessedAPICategoryUserDefaults
16 | NSPrivacyAccessedAPITypeReasons
17 |
18 | C56D.1
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/Tests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Tests/Media.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Tests/Media.xcassets/DynamicImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Light.png",
5 | "idiom" : "universal"
6 | },
7 | {
8 | "appearances" : [
9 | {
10 | "appearance" : "luminosity",
11 | "value" : "dark"
12 | }
13 | ],
14 | "filename" : "Dark.png",
15 | "idiom" : "universal"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Tests/Media.xcassets/DynamicImage.imageset/Dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Tests/Media.xcassets/DynamicImage.imageset/Dark.png
--------------------------------------------------------------------------------
/Tests/Media.xcassets/DynamicImage.imageset/Light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Tests/Media.xcassets/DynamicImage.imageset/Light.png
--------------------------------------------------------------------------------
/Tests/NSDate+PINCacheTests.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | NS_ASSUME_NONNULL_BEGIN
4 |
5 | @interface NSDate (PINCacheTests)
6 |
7 | /** Swizzles +[NSDate date] to always return the specified date. */
8 | + (void)startMockingDateWithDate:(NSDate *)date;
9 |
10 | /** Stops swizzling +[NSDate date] and returns to original implementation */
11 | + (void)stopMockingDate;
12 |
13 | @end
14 |
15 | NS_ASSUME_NONNULL_END
16 |
--------------------------------------------------------------------------------
/Tests/PINAnimatedImage+PINAnimatedImageTesting.h:
--------------------------------------------------------------------------------
1 | //
2 | // PINAnimatedImage+PINAnimatedImageTesting.h
3 | // PINRemoteImageTests
4 | //
5 | // Created by Garrett Moon on 10/16/17.
6 | // Copyright © 2017 Pinterest. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface PINAnimatedImage (PINAnimatedImageTesting)
13 |
14 | + (NSUInteger)greatestCommonDivisorOfA:(NSUInteger)a andB:(NSUInteger)b;
15 |
16 | @end
17 |
18 | @interface PINAnimatedImageView (PINAnimatedImageViewTesting)
19 |
20 | - (NSUInteger)frameIndexAtPlayHeadPosition:(CFTimeInterval)playHead;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/Tests/PINAnimatedImage+PINAnimatedImageTesting.m:
--------------------------------------------------------------------------------
1 | //
2 | // PINAnimatedImage+PINAnimatedImageTesting.m
3 | // PINRemoteImageTests
4 | //
5 | // Created by Garrett Moon on 10/16/17.
6 | // Copyright © 2017 Pinterest. All rights reserved.
7 | //
8 |
9 | #import "PINAnimatedImage+PINAnimatedImageTesting.h"
10 |
--------------------------------------------------------------------------------
/Tests/PINRemoteImageTests-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | //
2 | // Use this file to import your target's public headers that you would like to expose to Swift.
3 | //
4 |
5 | #import "PINAnimatedImage+PINAnimatedImageTesting.h"
6 | #import "TestAnimatedImage.h"
7 |
--------------------------------------------------------------------------------
/Tests/TestAnimatedImage.h:
--------------------------------------------------------------------------------
1 | //
2 | // TestAnimatedImage.h
3 | // PINRemoteImage
4 | //
5 | // Created by Greg Bolsinga on 3/10/20.
6 | // Copyright © 2020 Pinterest. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface TestAnimatedImage : NSObject
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/Tests/TestAnimatedImage.m:
--------------------------------------------------------------------------------
1 | //
2 | // TestAnimatedImage.m
3 | // PINRemoteImage
4 | //
5 | // Created by Greg Bolsinga on 3/10/20.
6 | // Copyright © 2020 Pinterest. All rights reserved.
7 | //
8 |
9 | #import "TestAnimatedImage.h"
10 |
11 | @implementation TestAnimatedImage
12 |
13 | @synthesize bytesPerFrame;
14 |
15 | @synthesize data;
16 |
17 | @synthesize error;
18 |
19 | @synthesize frameCount;
20 |
21 | @synthesize frameInterval;
22 |
23 | @synthesize height;
24 |
25 | @synthesize loopCount;
26 |
27 | @synthesize totalDuration;
28 |
29 | @synthesize width;
30 |
31 | - (CFTimeInterval)durationAtIndex:(NSUInteger)index {
32 | return 0;
33 | }
34 |
35 | - (nullable CGImageRef)imageAtIndex:(NSUInteger)index cacheProvider:(nullable id)cacheProvider {
36 | return nil;
37 | }
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/Tests/fireworks.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/Tests/fireworks.gif
--------------------------------------------------------------------------------
/build_docs.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | appledoc \
4 | --company-id com.pinterest \
5 | --project-name PINRemoteImage \
6 | --project-company Pinterest \
7 | --project-version 1.0 \
8 | --docset-bundle-id %COMPANYID.%PROJECTID \
9 | --docset-bundle-name "%PROJECT %VERSION" \
10 | --docset-bundle-filename %COMPANYID.%PROJECTID-%VERSIONID.docset \
11 | --ignore "*.m" \
12 | --ignore "Assets" \
13 | --no-repeat-first-par \
14 | --explicit-crossref \
15 | --clean-output \
16 | --keep-intermediate-files \
17 | --output ./docs \
18 | Pod
19 |
20 | mv docs/docset docs/com.pinterest.PINRemoteImage-1.0.docset
21 | rm docs/docset-installed.txt
22 |
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleIdentifier
8 | com.pinterest.PINRemoteImage
9 | CFBundleName
10 | PINRemoteImage 1.0
11 | CFBundleShortVersionString
12 | 1.0
13 | CFBundleVersion
14 | 1.0
15 |
16 |
17 |
18 |
19 | DocSetFeedName
20 | PINRemoteImage Documentation
21 |
22 | DocSetMinimumXcodeVersion
23 | 3.0
24 |
25 | DashDocSetFamily
26 | appledoc
27 | DocSetPublisherIdentifier
28 | com.pinterest.documentation
29 | DocSetPublisherName
30 | Pinterest
31 | NSHumanReadableCopyright
32 | Copyright © 2016 Pinterest. All rights reserved.
33 |
34 |
35 |
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/Documents/css/scss/_index.scss:
--------------------------------------------------------------------------------
1 | .index-container {
2 | display: flex;
3 | flex-direction: row;
4 | flex-wrap: wrap;
5 |
6 | @media (max-width: $mobile-max-width) {
7 | flex-direction: column;
8 | }
9 |
10 | .index-column {
11 | flex: 1 1 33%;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/Documents/css/scss/_print.scss:
--------------------------------------------------------------------------------
1 | @media print {
2 | body {
3 | background: #fff;
4 | padding: 8px;
5 | }
6 |
7 | header {
8 | position: static;
9 | background: #fff;
10 | color: #000;
11 | }
12 |
13 | aside {
14 | display: none;
15 | }
16 |
17 | .container {
18 | max-width: none;
19 | padding: 0;
20 | }
21 |
22 | article {
23 | margin-top: 0;
24 |
25 | #content {
26 | border: 0;
27 | background: #fff;
28 | padding: 15px 0 0 0;
29 |
30 | .title {
31 | margin-top: 0;
32 | padding-top: 0;
33 | }
34 | }
35 | }
36 |
37 | .method-info {
38 | &, & .pointy-thing {
39 | background: #fff;
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/Documents/css/scss/_variables.scss:
--------------------------------------------------------------------------------
1 | $body-font: -apple-system-font, "Helvetica Neue", Helvetica, sans-serif;
2 | $code-font: "Source Code Pro", Monaco, Menlo, Consolas, monospace;
3 |
4 | $body-background: #f2f2f2;
5 | $content-background: #fff;
6 | $content-border: #e9e9e9;
7 | $tint-color: #08c;
8 | $object-background: #f9f9f9;
9 | $object-border: #e9e9e9;
10 |
11 | $mobile-max-width: 650px;
12 |
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/Documents/css/scss/_xcode.scss:
--------------------------------------------------------------------------------
1 | .xcode {
2 | header, aside {
3 | display: none;
4 | }
5 |
6 | .container {
7 | padding: 0;
8 | }
9 |
10 | article {
11 | margin-top: 0;
12 |
13 | #content {
14 | border: 0;
15 | margin: 0;
16 | }
17 | }
18 |
19 | .method-info {
20 | &, .section-method.hide & {
21 | max-height: auto;
22 | overflow: visible;
23 |
24 | &.hiding {
25 | display: block;
26 | }
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/Documents/css/scss/style.scss:
--------------------------------------------------------------------------------
1 | @import "variables", "normalize", "layout", "index", "object", "print", "xcode";
2 |
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/Documents/img/button_bar_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/Documents/img/button_bar_background.png
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/Documents/img/disclosure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/Documents/img/disclosure.png
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/Documents/img/disclosure_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/Documents/img/disclosure_open.png
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/Documents/img/library_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/Documents/img/library_background.png
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/Documents/img/title_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/Documents/img/title_background.png
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/Tokens14.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/Tokens15.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/Tokens16.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/Tokens17.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/Tokens3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | //apple_ref/occ/cl/PINRemoteImageCategoryManager
7 | PINRemoteImageCategoryManager is a class that handles subclassing image display classes. PINImage+PINRemoteImage, UIButton+PINRemoteImage, etc, all delegate their work to this class. If you'd like to create a category to display an image on a view, you should mimic one of the above categories.
8 | PINRemoteImageCategoryManager.h
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/docSet.dsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/docSet.dsidx
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/docSet.dsidx-shm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/docSet.dsidx-shm
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/docSet.dsidx-wal:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/docSet.dsidx-wal
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/docSet.mom:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/docSet.mom
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/docSet.skidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/docSet.skidx
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/docSet.toc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/docSet.toc
--------------------------------------------------------------------------------
/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/docSet.tokencache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/docs/com.pinterest.PINRemoteImage-1.0.docset/Contents/Resources/docSet.tokencache
--------------------------------------------------------------------------------
/docs/html/css/scss/_index.scss:
--------------------------------------------------------------------------------
1 | .index-container {
2 | display: flex;
3 | flex-direction: row;
4 | flex-wrap: wrap;
5 |
6 | @media (max-width: $mobile-max-width) {
7 | flex-direction: column;
8 | }
9 |
10 | .index-column {
11 | flex: 1 1 33%;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/docs/html/css/scss/_print.scss:
--------------------------------------------------------------------------------
1 | @media print {
2 | body {
3 | background: #fff;
4 | padding: 8px;
5 | }
6 |
7 | header {
8 | position: static;
9 | background: #fff;
10 | color: #000;
11 | }
12 |
13 | aside {
14 | display: none;
15 | }
16 |
17 | .container {
18 | max-width: none;
19 | padding: 0;
20 | }
21 |
22 | article {
23 | margin-top: 0;
24 |
25 | #content {
26 | border: 0;
27 | background: #fff;
28 | padding: 15px 0 0 0;
29 |
30 | .title {
31 | margin-top: 0;
32 | padding-top: 0;
33 | }
34 | }
35 | }
36 |
37 | .method-info {
38 | &, & .pointy-thing {
39 | background: #fff;
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/docs/html/css/scss/_variables.scss:
--------------------------------------------------------------------------------
1 | $body-font: -apple-system-font, "Helvetica Neue", Helvetica, sans-serif;
2 | $code-font: "Source Code Pro", Monaco, Menlo, Consolas, monospace;
3 |
4 | $body-background: #f2f2f2;
5 | $content-background: #fff;
6 | $content-border: #e9e9e9;
7 | $tint-color: #08c;
8 | $object-background: #f9f9f9;
9 | $object-border: #e9e9e9;
10 |
11 | $mobile-max-width: 650px;
12 |
--------------------------------------------------------------------------------
/docs/html/css/scss/_xcode.scss:
--------------------------------------------------------------------------------
1 | .xcode {
2 | header, aside {
3 | display: none;
4 | }
5 |
6 | .container {
7 | padding: 0;
8 | }
9 |
10 | article {
11 | margin-top: 0;
12 |
13 | #content {
14 | border: 0;
15 | margin: 0;
16 | }
17 | }
18 |
19 | .method-info {
20 | &, .section-method.hide & {
21 | max-height: auto;
22 | overflow: visible;
23 |
24 | &.hiding {
25 | display: block;
26 | }
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/docs/html/css/scss/style.scss:
--------------------------------------------------------------------------------
1 | @import "variables", "normalize", "layout", "index", "object", "print", "xcode";
2 |
--------------------------------------------------------------------------------
/docs/html/img/button_bar_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/docs/html/img/button_bar_background.png
--------------------------------------------------------------------------------
/docs/html/img/disclosure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/docs/html/img/disclosure.png
--------------------------------------------------------------------------------
/docs/html/img/disclosure_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/docs/html/img/disclosure_open.png
--------------------------------------------------------------------------------
/docs/html/img/library_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/docs/html/img/library_background.png
--------------------------------------------------------------------------------
/docs/html/img/title_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/docs/html/img/title_background.png
--------------------------------------------------------------------------------
/progressive.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pinterest/PINRemoteImage/26818dc4ad9ca5ce3064e23524c4ac06e873076b/progressive.gif
--------------------------------------------------------------------------------