The response has been limited to 50k tokens of the smallest files in the repo. You can remove this limitation by removing the max tokens filter.
├── .changeset
    ├── README.md
    └── config.json
├── .editorconfig
├── .eslintrc.json
├── .github
    ├── CONTRIBUTING.md
    ├── FUNDING.yml
    ├── ISSUE_TEMPLATE
    │   ├── bug_report.md
    │   ├── custom.md
    │   └── feature_request.md
    ├── PULL_REQUEST_TEMPLATE.md
    ├── dependabot.yml
    └── workflows
    │   ├── nodejs.yml
    │   └── release.yml
├── .gitignore
├── .pre-commit-hooks.yaml
├── .prettierignore
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── TODO.md
├── apps
    └── jscpd
    │   ├── .npmignore
    │   ├── CHANGELOG.md
    │   ├── LICENSE
    │   ├── README.md
    │   ├── __tests__
    │       ├── formats.test.ts
    │       ├── modes.test.ts
    │       ├── options.test.ts
    │       └── reporters.test.ts
    │   ├── bin
    │       ├── jscpd
    │       └── jscpd.ts
    │   ├── nodemon.json
    │   ├── package.json
    │   ├── src
    │       ├── index.ts
    │       ├── init
    │       │   ├── cli.ts
    │       │   ├── hooks.ts
    │       │   ├── ignore.ts
    │       │   ├── index.ts
    │       │   ├── options.ts
    │       │   ├── reporters.ts
    │       │   ├── store.ts
    │       │   └── subscribers.ts
    │       ├── options.ts
    │       └── print
    │       │   ├── files.ts
    │       │   ├── index.ts
    │       │   ├── options.ts
    │       │   └── supported-format.ts
    │   ├── tsconfig.build.json
    │   ├── tsconfig.json
    │   └── tsup.config.ts
├── assets
    ├── jscpd-badge.svg
    ├── logo-small-box.svg
    ├── logo-small.svg
    ├── logo.svg
    ├── screenshot-1.png
    ├── screenshot-2.png
    └── screenshot.png
├── build-utils
    ├── prismjs-languages-concat.ts
    └── publish-util.ts
├── examples
    └── api
    │   ├── example-detectClones.ts
    │   ├── example-jscpd.ts
    │   ├── example-persist-store.ts
    │   └── example_github_action.yml
├── fixtures
    ├── .jscpd.json
    ├── apl
    │   ├── file1.apl
    │   ├── file1.dyalog
    │   ├── file2.apl
    │   └── file2.dyalog
    ├── brainfuck
    │   ├── file1.b
    │   ├── file1.bf
    │   ├── file2.b
    │   └── file2.bf
    ├── clike
    │   ├── file1.c
    │   ├── file1.c++
    │   ├── file1.cc
    │   ├── file1.cpp
    │   ├── file1.cs
    │   ├── file1.cxx
    │   ├── file1.h
    │   ├── file1.h++
    │   ├── file1.hh
    │   ├── file1.hpp
    │   ├── file1.hxx
    │   ├── file1.java
    │   ├── file1.kt
    │   ├── file1.m
    │   ├── file1.mm
    │   ├── file1.nut
    │   ├── file1.scala
    │   ├── file2.c
    │   ├── file2.c++
    │   ├── file2.cc
    │   ├── file2.cpp
    │   ├── file2.cs
    │   ├── file2.cxx
    │   ├── file2.h
    │   ├── file2.h++
    │   ├── file2.hh
    │   ├── file2.hpp
    │   ├── file2.hxx
    │   ├── file2.java
    │   ├── file2.kt
    │   ├── file2.m
    │   ├── file2.mm
    │   ├── file2.nut
    │   └── file2.scala
    ├── clojure
    │   ├── file1.clj
    │   ├── file1.cljc
    │   ├── file1.cljs
    │   ├── file1.cljx
    │   ├── file1.edn
    │   ├── file2.clj
    │   ├── file2.cljc
    │   ├── file2.cljs
    │   ├── file2.cljx
    │   └── file2.edn
    ├── cmake
    │   ├── file1.cmake
    │   ├── file1.cmake.in
    │   ├── file2.cmake
    │   └── file2.cmake.in
    ├── cobol
    │   ├── file1.cob
    │   ├── file1.cpy
    │   ├── file2.cob
    │   └── file2.cpy
    ├── coffeescript
    │   ├── file1.coffee
    │   └── file2.coffee
    ├── commonlisp
    │   ├── file1.cl
    │   ├── file1.el
    │   ├── file1.lisp
    │   ├── file2.cl
    │   ├── file2.el
    │   └── file2.lisp
    ├── crystal
    │   ├── file1.cr
    │   └── file2.cr
    ├── css
    │   ├── file1.css
    │   ├── file1.gss
    │   ├── file1.less
    │   ├── file1.scss
    │   ├── file10.css
    │   ├── file2.css
    │   ├── file2.gss
    │   ├── file2.less
    │   └── file2.scss
    ├── custom
    │   ├── file.cc1
    │   └── file.ccc
    ├── cypher
    │   ├── file1.cyp
    │   ├── file1.cypher
    │   ├── file2.cyp
    │   └── file2.cypher
    ├── d
    │   ├── file1.d
    │   └── file2.d
    ├── dart
    │   ├── file1.dart
    │   └── file2.dart
    ├── diff
    │   ├── file1.diff
    │   ├── file1.patch
    │   ├── file2.diff
    │   └── file2.patch
    ├── dtd
    │   ├── file1.dtd
    │   └── file2.dtd
    ├── dylan
    │   ├── file1.dyl
    │   ├── file1.dylan
    │   ├── file1.intr
    │   ├── file2.dyl
    │   ├── file2.dylan
    │   └── file2.intr
    ├── ecl
    │   ├── file1.ecl
    │   └── file2.ecl
    ├── eiffel
    │   ├── file1.e
    │   └── file2.e
    ├── elm
    │   ├── file1.elm
    │   └── file2.elm
    ├── erlang
    │   ├── file1.erl
    │   └── file2.erl
    ├── factor
    │   ├── file1.factor
    │   └── file2.factor
    ├── folder1
    │   ├── file2.c
    │   └── file_1.js
    ├── folder2
    │   └── file_2.js
    ├── forth
    │   ├── file1.4th
    │   ├── file1.forth
    │   ├── file1.fth
    │   ├── file2.4th
    │   ├── file2.forth
    │   └── file2.fth
    ├── fortran
    │   ├── file1.f
    │   ├── file1.f77
    │   ├── file1.f90
    │   ├── file1.for
    │   ├── file2.f
    │   ├── file2.f77
    │   ├── file2.f90
    │   └── file2.for
    ├── gas
    │   ├── file1.s
    │   └── file2.s
    ├── gherkin
    │   ├── file1.feature
    │   └── file2.feature
    ├── go
    │   ├── file1.go
    │   └── file2.go
    ├── groovy
    │   ├── file1.gradle
    │   ├── file1.groovy
    │   ├── file2.gradle
    │   └── file2.groovy
    ├── haml
    │   ├── file1.haml
    │   └── file2.haml
    ├── haskell-literate
    │   ├── file1.lhs
    │   └── file2.lhs
    ├── haskell
    │   ├── file1.hs
    │   └── file2.hs
    ├── haxe
    │   ├── file1.hx
    │   ├── file1.hxml
    │   ├── file2.hx
    │   └── file2.hxml
    ├── htmlembedded
    │   ├── file1.aspx
    │   ├── file1.ejs
    │   ├── file1.erb
    │   ├── file1.jsp
    │   ├── file2.aspx
    │   ├── file2.ejs
    │   ├── file2.erb
    │   └── file2.jsp
    ├── htmlmixed
    │   ├── file1.htm
    │   ├── file1.html
    │   ├── file2.htm
    │   └── file2.html
    ├── idl
    │   ├── file1.pro
    │   └── file2.pro
    ├── ignore-case
    │   ├── file1.txt
    │   └── file2.txt
    ├── ignore-pattern
    │   ├── file_1.js
    │   └── file_2.js
    ├── ignore
    │   ├── file1.htm
    │   ├── file2.htm
    │   ├── file_1.js
    │   └── file_2.js
    ├── javascript
    │   ├── file1.cts
    │   ├── file1.js
    │   ├── file1.json
    │   ├── file1.jsonld
    │   ├── file1.map
    │   ├── file1.mts
    │   ├── file1.ts
    │   ├── file2.cts
    │   ├── file2.js
    │   ├── file2.json
    │   ├── file2.jsonld
    │   ├── file2.map
    │   ├── file2.mts
    │   ├── file2.ts
    │   ├── file_1.cjs
    │   ├── file_1.js
    │   ├── file_1.mjs
    │   ├── file_2.cjs
    │   ├── file_2.js
    │   ├── file_2.mjs
    │   ├── file_3.js
    │   └── file_4.js
    ├── jsx
    │   ├── file1.jsx
    │   ├── file1.tsx
    │   ├── file2.jsx
    │   └── file2.tsx
    ├── julia
    │   ├── file1.jl
    │   └── file2.jl
    ├── livescript
    │   ├── file1.ls
    │   └── file2.ls
    ├── lua
    │   ├── file1.lua
    │   └── file2.lua
    ├── markdown
    │   ├── file1.markdown
    │   ├── file1.md
    │   ├── file1.mkd
    │   ├── file2.markdown
    │   ├── file2.md
    │   └── file2.mkd
    ├── markup.html
    ├── mathematica
    │   ├── file1.m
    │   ├── file1.nb
    │   ├── file2.m
    │   └── file2.nb
    ├── mbox
    │   ├── file1.mbox
    │   └── file2.mbox
    ├── mixed-formats
    │   ├── file.css
    │   ├── file.html
    │   └── file.js
    ├── mllike
    │   ├── file1.fs
    │   ├── file1.ml
    │   ├── file1.mli
    │   ├── file1.mll
    │   ├── file1.mly
    │   ├── file2.fs
    │   ├── file2.ml
    │   ├── file2.mli
    │   ├── file2.mll
    │   └── file2.mly
    ├── modelica
    │   ├── file1.mo
    │   └── file2.mo
    ├── modes
    │   ├── file1.ts
    │   └── file2.ts
    ├── mscgen
    │   ├── file1.msc
    │   ├── file1.mscgen
    │   ├── file1.mscin
    │   ├── file1.msgenny
    │   ├── file1.xu
    │   ├── file2.msc
    │   ├── file2.mscgen
    │   ├── file2.mscin
    │   ├── file2.msgenny
    │   └── file2.xu
    ├── mumps
    │   ├── file1.mps
    │   └── file2.mps
    ├── nsis
    │   ├── file1.nsh
    │   ├── file1.nsi
    │   ├── file2.nsh
    │   └── file2.nsi
    ├── ntriples
    │   ├── file1.nt
    │   └── file2.nt
    ├── null
    │   ├── file1.conf
    │   ├── file1.def
    │   ├── file1.list
    │   ├── file1.text
    │   ├── file1.txt
    │   ├── file2.conf
    │   ├── file2.def
    │   ├── file2.list
    │   ├── file2.text
    │   └── file2.txt
    ├── objective-c
    │   ├── file_1.h
    │   ├── file_1.m
    │   ├── file_2.h
    │   └── file_2.m
    ├── octave
    │   ├── file1.m
    │   └── file2.m
    ├── one-file
    │   └── one-file.js
    ├── oz
    │   ├── file1.oz
    │   └── file2.oz
    ├── pascal
    │   ├── file1.p
    │   ├── file1.pas
    │   ├── file2.p
    │   └── file2.pas
    ├── pegjs
    │   ├── file1.jsonld
    │   └── file2.jsonld
    ├── perl
    │   ├── file1.pl
    │   ├── file1.pm
    │   ├── file2.pl
    │   └── file2.pm
    ├── php
    │   ├── file1.php
    │   ├── file1.php3
    │   ├── file1.php4
    │   ├── file1.php5
    │   ├── file1.phtml
    │   ├── file2.php
    │   ├── file2.php3
    │   ├── file2.php4
    │   ├── file2.php5
    │   └── file2.phtml
    ├── pig
    │   ├── file1.pig
    │   └── file2.pig
    ├── powershell
    │   ├── file1.ps1
    │   ├── file1.psd1
    │   ├── file1.psm1
    │   ├── file2.ps1
    │   ├── file2.psd1
    │   └── file2.psm1
    ├── properties
    │   ├── file1.in
    │   ├── file1.ini
    │   ├── file1.properties
    │   ├── file2.in
    │   ├── file2.ini
    │   └── file2.properties
    ├── protobuf
    │   ├── file1.proto
    │   └── file2.proto
    ├── pug
    │   ├── file1.jade
    │   ├── file1.pug
    │   ├── file2.jade
    │   └── file2.pug
    ├── puppet
    │   ├── file1.pp
    │   └── file2.pp
    ├── python
    │   ├── file1.BUILD
    │   ├── file1.bzl
    │   ├── file1.pxd
    │   ├── file1.pxi
    │   ├── file1.py
    │   ├── file1.pyw
    │   ├── file1.pyx
    │   ├── file2.BUILD
    │   ├── file2.bzl
    │   ├── file2.pxd
    │   ├── file2.pxi
    │   ├── file2.py
    │   ├── file2.pyw
    │   └── file2.pyx
    ├── q
    │   ├── file1.q
    │   └── file2.q
    ├── r
    │   ├── file1.r
    │   └── file2.r
    ├── rpm
    │   ├── file1.spec
    │   └── file2.spec
    ├── rst
    │   ├── file1.rst
    │   └── file2.rst
    ├── ruby
    │   ├── file1.rb
    │   └── file2.rb
    ├── rust
    │   ├── file1.rs
    │   └── file2.rs
    ├── sas
    │   ├── file1.sas
    │   └── file2.sas
    ├── sass
    │   ├── file1.sass
    │   └── file2.sass
    ├── scheme
    │   ├── file1.scm
    │   ├── file1.ss
    │   ├── file2.scm
    │   └── file2.ss
    ├── shell
    │   ├── file1.bash
    │   ├── file1.ksh
    │   ├── file1.sh
    │   ├── file2.bash
    │   ├── file2.ksh
    │   └── file2.sh
    ├── sieve
    │   ├── file1.sieve
    │   ├── file1.siv
    │   ├── file2.sieve
    │   └── file2.siv
    ├── slim
    │   ├── file1.slim
    │   └── file2.slim
    ├── smalltalk
    │   ├── file1.st
    │   └── file2.st
    ├── smarty
    │   ├── file1.tpl
    │   └── file2.tpl
    ├── soy
    │   ├── file1.soy
    │   └── file2.soy
    ├── sparql
    │   ├── file1.rq
    │   ├── file1.sparql
    │   ├── file2.rq
    │   └── file2.sparql
    ├── sql
    │   ├── file1.cql
    │   ├── file1.pls
    │   ├── file1.sql
    │   ├── file2.cql
    │   ├── file2.pls
    │   └── file2.sql
    ├── stex
    │   ├── file1.ltx
    │   ├── file1.text
    │   ├── file2.ltx
    │   └── file2.text
    ├── stylus
    │   ├── file1.styl
    │   └── file2.styl
    ├── swift
    │   ├── file1.swift
    │   └── file2.swift
    ├── tcl
    │   ├── file1.tcl
    │   └── file2.tcl
    ├── text
    │   ├── file1.txt
    │   └── file2.txt
    ├── textile
    │   ├── file1.textile
    │   └── file2.textile
    ├── toml
    │   ├── file1.toml
    │   └── file2.toml
    ├── troff
    │   ├── file1.1
    │   ├── file1.2
    │   ├── file1.3
    │   ├── file1.4
    │   ├── file1.5
    │   ├── file1.6
    │   ├── file1.7
    │   ├── file1.8
    │   ├── file1.9
    │   ├── file2.1
    │   ├── file2.2
    │   ├── file2.3
    │   ├── file2.4
    │   ├── file2.5
    │   ├── file2.6
    │   ├── file2.7
    │   ├── file2.8
    │   └── file2.9
    ├── ttcn-cfg
    │   ├── file1.cfg
    │   └── file2.cfg
    ├── ttcn
    │   ├── file1.ttcn
    │   ├── file1.ttcn3
    │   ├── file1.ttcnpp
    │   ├── file2.ttcn
    │   ├── file2.ttcn3
    │   └── file2.ttcnpp
    ├── turtle
    │   ├── file1.ttl
    │   └── file2.ttl
    ├── twig
    │   ├── file_1.twig
    │   └── file_2.twig
    ├── vb
    │   ├── file1.vb
    │   └── file2.vb
    ├── vbscript
    │   ├── file1.vbs
    │   └── file2.vbs
    ├── velocity
    │   ├── file1.vtl
    │   └── file2.vtl
    ├── verilog
    │   ├── file1.v
    │   └── file2.v
    ├── vhdl
    │   ├── file1.vhd
    │   ├── file1.vhdl
    │   ├── file2.vhd
    │   └── file2.vhdl
    ├── vue
    │   ├── file1.vue
    │   └── file2.vue
    ├── webidl
    │   ├── file1.webidl
    │   └── file2.webidl
    ├── xml
    │   ├── file1.svg
    │   ├── file1.xml
    │   ├── file1.xsd
    │   ├── file1.xsl
    │   ├── file2.svg
    │   ├── file2.xml
    │   ├── file2.xsd
    │   └── file2.xsl
    ├── xquery
    │   ├── file1.xquery
    │   ├── file1.xy
    │   ├── file2.xquery
    │   └── file2.xy
    ├── yacas
    │   ├── file1.ys
    │   └── file2.ys
    ├── yaml
    │   ├── file1.yaml
    │   ├── file1.yml
    │   ├── file2.yaml
    │   └── file2.yml
    └── z80
    │   ├── file1.z80
    │   └── file2.z80
├── package.json
├── packages
    ├── badge-reporter
    │   ├── CHANGELOG.md
    │   ├── LICENSE
    │   ├── README.md
    │   ├── nodemon.json
    │   ├── package.json
    │   ├── src
    │   │   └── index.ts
    │   ├── tsconfig.json
    │   └── tsup.config.ts
    ├── core
    │   ├── .npmignore
    │   ├── CHANGELOG.md
    │   ├── LICENSE
    │   ├── README.md
    │   ├── nodemon.json
    │   ├── package.json
    │   ├── src
    │   │   ├── detector.ts
    │   │   ├── index.ts
    │   │   ├── interfaces
    │   │   │   ├── blamed-lines.interface.ts
    │   │   │   ├── clone-validator.interface.ts
    │   │   │   ├── clone.interface.ts
    │   │   │   ├── index.ts
    │   │   │   ├── map-frame.interface.ts
    │   │   │   ├── options.interface.ts
    │   │   │   ├── source-validator.interface.ts
    │   │   │   ├── statistic.interface.ts
    │   │   │   ├── store.interface.ts
    │   │   │   ├── subscriber.interface.ts
    │   │   │   ├── token-location.interface.ts
    │   │   │   ├── token.interface.ts
    │   │   │   ├── tokenizer.interface.ts
    │   │   │   ├── tokens-map.interface.ts
    │   │   │   └── validation-result.interface.ts
    │   │   ├── mode.ts
    │   │   ├── options.ts
    │   │   ├── rabin-karp.ts
    │   │   ├── statistic.ts
    │   │   ├── store
    │   │   │   └── memory.ts
    │   │   └── validators
    │   │   │   ├── index.ts
    │   │   │   ├── lines-length-clone.validator.ts
    │   │   │   └── validator.ts
    │   ├── tsconfig.json
    │   └── tsup.config.ts
    ├── finder
    │   ├── .npmignore
    │   ├── CHANGELOG.md
    │   ├── LICENSE
    │   ├── README.md
    │   ├── __tests__
    │   │   ├── in-files-detector.test.ts
    │   │   └── utils.test.ts
    │   ├── nodemon.json
    │   ├── package.json
    │   ├── src
    │   │   ├── files.ts
    │   │   ├── hooks
    │   │   │   ├── blamer.ts
    │   │   │   ├── fragment.ts
    │   │   │   └── index.ts
    │   │   ├── in-files-detector.ts
    │   │   ├── index.ts
    │   │   ├── interfaces
    │   │   │   ├── entry-with-content.interface.ts
    │   │   │   ├── hook.interface.ts
    │   │   │   ├── index.ts
    │   │   │   └── reporter.interface.ts
    │   │   ├── reporters
    │   │   │   ├── console-full.ts
    │   │   │   ├── console.ts
    │   │   │   ├── csv.ts
    │   │   │   ├── index.ts
    │   │   │   ├── json.ts
    │   │   │   ├── markdown.ts
    │   │   │   ├── silent.ts
    │   │   │   ├── threshold.ts
    │   │   │   ├── xcode.ts
    │   │   │   └── xml.ts
    │   │   ├── subscribers
    │   │   │   ├── index.ts
    │   │   │   ├── progress.ts
    │   │   │   └── verbose.ts
    │   │   ├── utils
    │   │   │   ├── clone-found.ts
    │   │   │   ├── options.ts
    │   │   │   └── reports.ts
    │   │   └── validators
    │   │   │   ├── index.ts
    │   │   │   └── skip-local.validator.ts
    │   ├── tsconfig.json
    │   └── tsup.config.ts
    ├── html-reporter
    │   ├── .gitignore
    │   ├── .npmignore
    │   ├── CHANGELOG.md
    │   ├── LICENSE
    │   ├── README.md
    │   ├── nodemon.json
    │   ├── package.json
    │   ├── public
    │   │   ├── js
    │   │   │   └── prism.js
    │   │   └── styles
    │   │   │   ├── prism.css
    │   │   │   └── tailwind.css
    │   ├── src
    │   │   ├── index.ts
    │   │   └── templates
    │   │   │   └── main.pug
    │   ├── tsconfig.json
    │   └── tsup.config.ts
    ├── leveldb-store
    │   ├── .npmignore
    │   ├── CHANGELOG.md
    │   ├── LICENSE
    │   ├── README.md
    │   ├── nodemon.json
    │   ├── package.json
    │   ├── src
    │   │   └── index.ts
    │   ├── tsconfig.json
    │   └── tsup.config.ts
    ├── redis-store
    │   ├── .npmignore
    │   ├── CHANGELOG.md
    │   ├── LICENSE
    │   ├── README.md
    │   ├── nodemon.json
    │   ├── package.json
    │   ├── src
    │   │   └── index.ts
    │   ├── tsconfig.json
    │   └── tsup.config.ts
    ├── sarif-reporter
    │   ├── CHANGELOG.md
    │   ├── LICENSE
    │   ├── README.md
    │   ├── nodemon.json
    │   ├── package.json
    │   ├── src
    │   │   └── index.ts
    │   ├── tsconfig.build.json
    │   ├── tsconfig.json
    │   └── tsup.config.ts
    ├── tokenizer
    │   ├── .npmignore
    │   ├── CHANGELOG.md
    │   ├── LICENSE
    │   ├── README.md
    │   ├── nodemon.json
    │   ├── package.json
    │   ├── src
    │   │   ├── formats.ts
    │   │   ├── grammar-loader.ts
    │   │   ├── hash.ts
    │   │   ├── index.ts
    │   │   ├── interfaces
    │   │   │   ├── format-meta.interface.ts
    │   │   │   ├── index.ts
    │   │   │   └── source-options.interface.ts
    │   │   ├── languages
    │   │   │   ├── plsql.ts
    │   │   │   ├── sql.ts
    │   │   │   └── tap.ts
    │   │   ├── token-map.ts
    │   │   └── tokenize.ts
    │   ├── tsconfig.json
    │   └── tsup.config.ts
    └── tsconfig
    │   ├── CHANGELOG.md
    │   ├── README.md
    │   ├── package.json
    │   └── pkg.json
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
├── supported_formats.md
└── turbo.json


/.changeset/README.md:
--------------------------------------------------------------------------------
1 | # Changesets
2 | 
3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
4 | with multi-package repos, or single-package repos to help you version and publish your code. You can
5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets)
6 | 
7 | We have a quick list of common questions to get you started engaging with this project in
8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
9 | 


--------------------------------------------------------------------------------
/.changeset/config.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "$schema": "https://unpkg.com/@changesets/config@3.0.0/schema.json",
 3 |   "changelog": "@changesets/cli/changelog",
 4 |   "commit": false,
 5 |   "fixed": [],
 6 |   "linked": [],
 7 |   "access": "restricted",
 8 |   "baseBranch": "master",
 9 |   "updateInternalDependencies": "patch",
10 |   "ignore": []
11 | }
12 | 


--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
 1 | # editorconfig.org
 2 | root = true
 3 | 
 4 | [*]
 5 | indent_style = space
 6 | indent_size = 2
 7 | end_of_line = lf
 8 | charset = utf-8
 9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 | 


--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "env": {
 3 |     "browser": true,
 4 |     "node": true,
 5 |     "es6": true,
 6 |     "es2017": true
 7 |   },
 8 |   "extends": [
 9 |     "eslint:recommended",
10 |     "plugin:sonarjs/recommended",
11 |     "plugin:@typescript-eslint/eslint-recommended",
12 |     "plugin:@typescript-eslint/recommended",
13 |     "plugin:@typescript-eslint/recommended-requiring-type-checking"
14 |   ],
15 |   "parser": "@typescript-eslint/parser",
16 |   "parserOptions": {
17 |     "project": "tsconfig.json",
18 |     "tsconfigRootDir": "./packages/"
19 |   },
20 |   "plugins": [
21 |     "@typescript-eslint"
22 |   ],
23 |   "rules": {
24 |     "@typescript-eslint/interface-name-prefix": [
25 |       "off"
26 |     ],
27 |     "@typescript-eslint/no-var-requires": [
28 |       "off"
29 |     ]
30 |   }
31 | }
32 | 


--------------------------------------------------------------------------------
/.github/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing Guidelines
2 | 
3 | Thank you for start reading the document. Currently, jscpd has not strict contribution rules. Will be here soon...
4 | 


--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | open_collective: jscpd
2 | 


--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
 1 | ---
 2 | name: Bug report
 3 | about: Create a report to help us improve
 4 | 
 5 | ---
 6 | 
 7 | **Describe the bug**
 8 | A clear and concise description of what the bug is.
 9 | 
10 | **To Reproduce**
11 | Steps to reproduce the behavior:
12 | 1. Go to '...'
13 | 2. Click on '....'
14 | 3. Scroll down to '....'
15 | 4. See error
16 | 
17 | **Expected behavior**
18 | A clear and concise description of what you expected to happen.
19 | 
20 | **Screenshots**
21 | If applicable, add screenshots to help explain your problem.
22 | 
23 | **Desktop (please complete the following information):**
24 |  - OS: [e.g. iOS]
25 |  - OS Version [e.g. 22]
26 |  - NodeJS Version [e.g. 9, 10, 11]
27 |  - jscpd version [e.g. 0.6.x, 1.0.x, 2.0.3]
28 | 
29 | 
30 | **Additional context**
31 | Add any other context about the problem here.
32 | 


--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/custom.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Custom issue template
3 | about: Describe this issue template's purpose here.
4 | 
5 | ---
6 | 
7 | 
8 | 


--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
 1 | ---
 2 | name: Feature request
 3 | about: Suggest an idea for this project
 4 | 
 5 | ---
 6 | 
 7 | **Is your feature request related to a problem? Please describe.**
 8 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
 9 | 
10 | **Describe the solution you'd like**
11 | A clear and concise description of what you want to happen.
12 | 
13 | **Describe alternatives you've considered**
14 | A clear and concise description of any alternative solutions or features you've considered.
15 | 
16 | **Additional context**
17 | Add any other context or screenshots about the feature request here.
18 | 


--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
 1 | * **What kind of change does this PR introduce?** (Bug fix, feature, docs update, ...)
 2 | 
 3 | 
 4 | 
 5 | * **What is the current behavior?** (You can also link to an open issue here)
 6 | 
 7 | 
 8 | 
 9 | * **What is the new behavior (if this is a feature change)?**
10 | 
11 | 
12 | 
13 | * **Other information**:
14 | 


--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
 1 | # To get started with Dependabot version updates, you'll need to specify which
 2 | # package ecosystems to update and where the package manifests are located.
 3 | # Please see the documentation for all configuration options:
 4 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
 5 | 
 6 | version: 2
 7 | updates:
 8 |   - package-ecosystem: "npm" # See documentation for possible values
 9 |     directory: "/" # Location of package manifests
10 |     schedule:
11 |       interval: "weekly"
12 | 


--------------------------------------------------------------------------------
/.github/workflows/nodejs.yml:
--------------------------------------------------------------------------------
 1 | name: jscpd CI
 2 | 
 3 | on: [push, pull_request]
 4 | 
 5 | jobs:
 6 |   build:
 7 | 
 8 |     runs-on: ubuntu-latest
 9 | 
10 |     strategy:
11 |       matrix:
12 |         node-version: [20.x, 22.x]
13 | 
14 |     steps:
15 |     - uses: actions/checkout@v4
16 |     - name: Use Node.js ${{ matrix.node-version }}
17 |       uses: actions/setup-node@v4
18 |       with:
19 |         node-version: ${{ matrix.node-version }}
20 |     - name: pnpm install
21 |       run: |
22 |         npm i pnpm -g
23 | 
24 |     - name: Install dependencies
25 |       run: pnpm install
26 | 
27 |     - name: Build
28 |       run: pnpm build
29 | 
30 |     - name: Lint
31 |       run: pnpm lint
32 | 
33 |     - name: Test
34 |       run: pnpm test
35 | 
36 |     - name: jscpd
37 |       run: ./apps/jscpd/bin/jscpd ./fixtures
38 | 


--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
 1 | node_modules
 2 | dist
 3 | results
 4 | .nyc_output
 5 | *.tsbuildinfo
 6 | coverage
 7 | .idea
 8 | report
 9 | .DS_Store
10 | .eslintcache
11 | .jscpd
12 | docs
13 | .cache
14 | tmp
15 | sandbox
16 | tmp/
17 | .turbo
18 | build/
19 | 


--------------------------------------------------------------------------------
/.pre-commit-hooks.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | - id: jscpd
3 |   name: Check for duplicated code
4 |   entry: jscpd
5 |   args: ["--gitignore", "--exitCode", "'1'"]
6 |   language: node
7 |   types: [text]
8 | 


--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | # package.json is formatted by package managers, so we ignore it here
2 | package.json


--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
 1 | The MIT License (MIT)
 2 | 
 3 | Copyright (c) 2013-2024 Andrey Kucherenko
 4 | 
 5 | Permission is hereby granted, free of charge, to any person obtaining a copy
 6 | of this software and associated documentation files (the "Software"), to deal
 7 | in the Software without restriction, including without limitation the rights
 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 | 
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 | 
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 | 


--------------------------------------------------------------------------------
/TODO.md:
--------------------------------------------------------------------------------
 1 | # JSCPD
 2 | > Copy/paste detector for source code
 3 | 
 4 | ## TODO list
 5 | 
 6 | List of items to implement:
 7 |  - Add validators
 8 |     - Files
 9 |     ? Sources(TokenMap)
10 |     - Clones
11 |  - Split options for `core` and `finder`
12 |  - Add examples of usage for `core` and `finder`
13 |  - Add documentation
14 |  - Add in browser detector
15 |  - Detection server support
16 |  - Register old reporters (like badge)
17 | 


--------------------------------------------------------------------------------
/apps/jscpd/.npmignore:
--------------------------------------------------------------------------------
1 | src
2 | __tests__
3 | tsconfig.json
4 | tsconfig.build.json
5 | 


--------------------------------------------------------------------------------
/apps/jscpd/LICENSE:
--------------------------------------------------------------------------------
 1 | The MIT License (MIT)
 2 | 
 3 | Copyright (c) 2013-2020 Andrey Kucherenko
 4 | 
 5 | Permission is hereby granted, free of charge, to any person obtaining a copy
 6 | of this software and associated documentation files (the "Software"), to deal
 7 | in the Software without restriction, including without limitation the rights
 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 | 
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 | 
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 | 


--------------------------------------------------------------------------------
/apps/jscpd/bin/jscpd:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | 
3 | require('../dist/bin/jscpd')
4 | 


--------------------------------------------------------------------------------
/apps/jscpd/bin/jscpd.ts:
--------------------------------------------------------------------------------
 1 | import {jscpd} from "../src";
 2 | 
 3 | (async () => {
 4 |   try {
 5 |     await jscpd(process.argv, process.exit)
 6 |   } catch(e) {
 7 |     console.log(e);
 8 |     process.exit(1);
 9 |   }
10 | })()
11 | 
12 | export * from '../src'
13 | 


--------------------------------------------------------------------------------
/apps/jscpd/nodemon.json:
--------------------------------------------------------------------------------
1 | {
2 |   "$schema": "https://json.schemastore.org/nodemon.json",
3 |   "watch": ["./src/**"],
4 |   "ignoreRoot": [],
5 |   "ext": "ts,js",
6 |   "exec": "pnpm build"
7 | }
8 | 


--------------------------------------------------------------------------------
/apps/jscpd/src/init/hooks.ts:
--------------------------------------------------------------------------------
 1 | import {BlamerHook, FragmentsHook, InFilesDetector} from '@jscpd/finder';
 2 | import {IOptions} from '@jscpd/core';
 3 | 
 4 | export function registerHooks(options: IOptions, detector: InFilesDetector): void {
 5 |   detector.registerHook(new FragmentsHook());
 6 |   if (options.blame) {
 7 |     detector.registerHook(new BlamerHook());
 8 |   }
 9 | }
10 | 


--------------------------------------------------------------------------------
/apps/jscpd/src/init/ignore.ts:
--------------------------------------------------------------------------------
 1 | import {IOptions} from '@jscpd/core';
 2 | import {existsSync} from "fs";
 3 | 
 4 | const gitignoreToGlob = require('gitignore-to-glob');
 5 | 
 6 | export function initIgnore(options: IOptions): string[] {
 7 | 	const ignore: string[] = options.ignore || [];
 8 | 
 9 | 	if (options.gitignore && existsSync(process.cwd() + '/.gitignore')) {
10 | 		let gitignorePatterns: string[] = gitignoreToGlob(process.cwd() + '/.gitignore') || [];
11 | 		gitignorePatterns = gitignorePatterns.map((pattern) =>
12 | 			pattern.substr(pattern.length - 1) === '/' ? `${pattern}**/*` : pattern,
13 | 		);
14 | 		ignore.push(...gitignorePatterns);
15 | 		ignore.map((pattern) => pattern.replace('!', ''));
16 | 	}
17 | 	return ignore;
18 | }
19 | 


--------------------------------------------------------------------------------
/apps/jscpd/src/init/index.ts:
--------------------------------------------------------------------------------
1 | export * from './cli';
2 | export * from './options';
3 | export * from './ignore';
4 | 


--------------------------------------------------------------------------------
/apps/jscpd/src/init/options.ts:
--------------------------------------------------------------------------------
 1 | import {Command} from 'commander';
 2 | import {getModeHandler, IOptions} from '@jscpd/core';
 3 | import {getSupportedFormats} from '@jscpd/tokenizer';
 4 | import {initIgnore} from './ignore';
 5 | import {prepareOptions} from '../options';
 6 | 
 7 | export function initOptionsFromCli(cli: Command): IOptions {
 8 | 	const options: IOptions = prepareOptions(cli);
 9 | 
10 | 	options.format = options.format || getSupportedFormats();
11 | 
12 | 	options.mode = getModeHandler(options.mode);
13 | 
14 | 	options.ignore = initIgnore(options);
15 | 
16 | 	return options;
17 | }
18 | 


--------------------------------------------------------------------------------
/apps/jscpd/src/init/store.ts:
--------------------------------------------------------------------------------
 1 | import {IMapFrame, IStore, MemoryStore} from '@jscpd/core';
 2 | import {red} from 'colors/safe';
 3 | 
 4 | export function getStore(storeName: string | undefined): IStore<IMapFrame> {
 5 |   if (storeName) {
 6 |     const packageName = '@jscpd/' + storeName + '-store';
 7 |     try {
 8 |       const store = require(packageName).default;
 9 |       return new store();
10 |     } catch (e) {
11 |       console.error(red('store name ' + storeName + ' not installed.'))
12 |     }
13 |   }
14 |   return new MemoryStore<IMapFrame>();
15 | }
16 | 


--------------------------------------------------------------------------------
/apps/jscpd/src/init/subscribers.ts:
--------------------------------------------------------------------------------
 1 | import {InFilesDetector, ProgressSubscriber, VerboseSubscriber} from '@jscpd/finder';
 2 | import {IOptions} from '@jscpd/core';
 3 | 
 4 | export function registerSubscribers(options: IOptions, detector: InFilesDetector): void {
 5 |   if (options.verbose) {
 6 |     detector.registerSubscriber(new VerboseSubscriber(options));
 7 |   }
 8 | 
 9 |   if (!options.silent) {
10 |     detector.registerSubscriber(new ProgressSubscriber(options));
11 |   }
12 | }
13 | 


--------------------------------------------------------------------------------
/apps/jscpd/src/print/files.ts:
--------------------------------------------------------------------------------
 1 | import {bold, grey} from 'colors/safe';
 2 | import {EntryWithContent} from '@jscpd/finder';
 3 | 
 4 | export function printFiles(files: EntryWithContent[]): void {
 5 | 	files.forEach((stats: EntryWithContent) => {
 6 | 		console.log(grey(stats.path));
 7 | 	});
 8 | 	console.log(bold(`Found ${files.length} files to detect.`));
 9 | }
10 | 


--------------------------------------------------------------------------------
/apps/jscpd/src/print/index.ts:
--------------------------------------------------------------------------------
1 | export * from './files';
2 | export * from './options';
3 | export * from './supported-format';
4 | 


--------------------------------------------------------------------------------
/apps/jscpd/src/print/options.ts:
--------------------------------------------------------------------------------
1 | import {IOptions} from '@jscpd/core';
2 | import {bold, white} from 'colors/safe';
3 | 
4 | export function printOptions(options: IOptions): void {
5 |   console.log(bold(white('Options:')));
6 |   console.dir(options);
7 | }
8 | 


--------------------------------------------------------------------------------
/apps/jscpd/src/print/supported-format.ts:
--------------------------------------------------------------------------------
1 | import {bold, white} from 'colors/safe';
2 | import {getSupportedFormats} from '@jscpd/tokenizer';
3 | 
4 | export function printSupportedFormat(): void {
5 | 	console.log(bold(white('Supported formats: ')));
6 | 	console.log(getSupportedFormats().join(', '));
7 | 	process.exit(0);
8 | }
9 | 


--------------------------------------------------------------------------------
/apps/jscpd/tsconfig.build.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "extends": "../tsconfig.build.json",
 3 | 
 4 |   "compilerOptions": {
 5 |     "outDir": "./dist"
 6 |   },
 7 | 
 8 |   "include": [
 9 |     "src/**/*"
10 |   ]
11 | }
12 | 


--------------------------------------------------------------------------------
/apps/jscpd/tsconfig.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "extends": "@tsconfig/node20/tsconfig.json",
 3 |   "compilerOptions": {
 4 |     "outDir": "dist/src",
 5 |     "baseUrl": ".",
 6 |     "module": "esnext",
 7 |     "moduleResolution": "bundler",
 8 |     "allowUnusedLabels": false,
 9 |     "allowUnreachableCode": false,
10 |     "noFallthroughCasesInSwitch": true,
11 |     "noUncheckedIndexedAccess": true,
12 |     "noUnusedLocals": true,
13 |     "noUnusedParameters": true,
14 |     "forceConsistentCasingInFileNames": true,
15 |     "declaration": true,
16 |     "sourceMap": true,
17 |     "resolveJsonModule": true
18 |   },
19 |   "include": ["src"],
20 |   "exclude": ["dist", "bundle", "node_modules"],
21 |   "ts-node": {
22 |     // these options are overrides used only by ts-node
23 |     // same as the --compilerOptions flag and the TS_NODE_COMPILER_OPTIONS environment variable
24 |     "compilerOptions": {
25 |       "module": "commonjs"
26 |     }
27 |   },
28 | }
29 | 


--------------------------------------------------------------------------------
/apps/jscpd/tsup.config.ts:
--------------------------------------------------------------------------------
 1 | import { defineConfig } from "tsup";
 2 | 
 3 | export default defineConfig({
 4 |   entry: ["bin/jscpd.ts", "src/index.ts"],
 5 |   splitting: true,
 6 |   sourcemap: true,
 7 |   clean: true,
 8 |   format: ["esm", "cjs"],
 9 | });
10 | 


--------------------------------------------------------------------------------
/assets/jscpd-badge.svg:
--------------------------------------------------------------------------------
 1 | <svg width="101.6" height="20" viewBox="0 0 1016 200" xmlns="http://www.w3.org/2000/svg">
 2 |   <g>
 3 |     <rect fill="#555" width="726" height="200"/>
 4 |     <rect fill="#3C1" x="726" width="290" height="200"/>
 5 |   </g>
 6 |   <g fill="#fff" text-anchor="start" font-family="Verdana,DejaVu Sans,sans-serif" font-size="110">
 7 |     <text x="60" y="148" textLength="626" fill="#000" opacity="0.1">Copy/Paste</text>
 8 |     <text x="50" y="138" textLength="626">Copy/Paste</text>
 9 |     <text x="781" y="148" textLength="190" fill="#000" opacity="0.1">0%</text>
10 |     <text x="771" y="138" textLength="190">0%</text>
11 |   </g>
12 |   
13 | </svg>


--------------------------------------------------------------------------------
/assets/logo-small-box.svg:
--------------------------------------------------------------------------------
 1 | <svg width="204" height="85" xmlns="http://www.w3.org/2000/svg">
 2 |   <g>
 3 |     <title>jscpd v1.0.0</title>
 4 |     <g id="svg_5">
 5 |       <text font-weight="normal" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="70" id="svg_1" y="58.5" x="0" stroke-width="0" stroke="#000" fill="#007bff">js</text>
 6 |       <text font-weight="normal" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="70" id="svg_3" y="58.5" x="78" stroke-width="0" stroke="#000" fill="#B200B2">cpd</text>
 7 |       <text xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="12" id="version" y="82" x="47" stroke-width="0" stroke="#000" fill="#c0c0c0">Copy/Paste Detector</text>
 8 |     </g>
 9 |   </g>
10 | </svg>
11 | 


--------------------------------------------------------------------------------
/assets/logo-small.svg:
--------------------------------------------------------------------------------
 1 | <svg width="1000" height="300" xmlns="http://www.w3.org/2000/svg" clip-rule="evenodd">
 2 |   <g>
 3 |     <title transform="translate(398,110) ">jscpd</title>
 4 |     <g id="svg_5">
 5 |       <text fill="#007bff" stroke="#000" stroke-width="0" x="398" y="168.5" id="svg_1" font-size="70" font-family="'Courier New', Courier, monospace" text-anchor="start" xml:space="preserve" font-weight="normal">js</text>
 6 |    <text fill="#B200B2" stroke="#000" stroke-width="0" x="476" y="168.5" id="svg_3" font-size="70" font-family="'Courier New', Courier, monospace" text-anchor="start" xml:space="preserve" font-weight="normal">cpd</text>
 7 |       <!--<text fill="#c0c0c0" stroke="#000" stroke-width="0" x="545" y="180.5" id="version" font-size="10" font-family="'Courier New', Courier, monospace" text-anchor="start" xml:space="preserve">v1.0.0</text>-->
 8 |       <text transform="matrix(1,0,0,1,0,0) " font-weight="normal" xml:space="preserve" text-anchor="start" font-family="'Courier New', Courier, monospace" font-size="15" id="svg_2" y="200" x="420" stroke-width="0" stroke="#000" fill="#b2b2b2">Copy/Paste Detector</text>
 9 |     </g>
10 |   </g>
11 | </svg>
12 | 


--------------------------------------------------------------------------------
/assets/screenshot-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/assets/screenshot-1.png


--------------------------------------------------------------------------------
/assets/screenshot-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/assets/screenshot-2.png


--------------------------------------------------------------------------------
/assets/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/assets/screenshot.png


--------------------------------------------------------------------------------
/build-utils/prismjs-languages-concat.ts:
--------------------------------------------------------------------------------
 1 | import {readFileSync, writeFileSync} from 'fs-extra';
 2 | import {sync} from 'fast-glob';
 3 | 
 4 | const files = sync('node_modules/prismjs/components/prism-*.min.js', {
 5 |   onlyFiles: true,
 6 | }).map((file: string) => readFileSync(file));
 7 | 
 8 | writeFileSync(process.argv[2], files.join('\n'));
 9 | 
10 | 


--------------------------------------------------------------------------------
/build-utils/publish-util.ts:
--------------------------------------------------------------------------------
 1 | import {readJsonSync, writeJsonSync} from 'fs-extra';
 2 | 
 3 | const changePackageJsonFields = (path: string, pairs: { name: string; value: string }[] = []): void => {
 4 |   const pkg = readJsonSync(path);
 5 |   pairs.forEach((pair: { name: string; value: string }) => {
 6 |     pkg[pair.name] = pair.value;
 7 |   });
 8 |   writeJsonSync(path, pkg, {spaces: 2});
 9 | };
10 | 
11 | if (!module.parent) {
12 |   const [, , path, value] = process.argv;
13 |   changePackageJsonFields(path, [
14 |     {name: 'main', value},
15 |     {name: 'types', value},
16 |   ]);
17 | }
18 | 


--------------------------------------------------------------------------------
/examples/api/example-detectClones.ts:
--------------------------------------------------------------------------------
 1 | import {detectClones} from "../../apps/jscpd";
 2 | 
 3 | (async () => {
 4 |   const clones = await detectClones({
 5 |     path: [
 6 |       __dirname + '/../fixtures'
 7 |     ],
 8 |     silent: true
 9 |   });
10 |   console.log(clones);
11 | })()
12 | 


--------------------------------------------------------------------------------
/examples/api/example-jscpd.ts:
--------------------------------------------------------------------------------
1 | import {IClone} from '@jscpd/core';
2 | import {jscpd} from '../../apps/jscpd';
3 | 
4 | (async () => {
5 |   const clones: IClone[] = await jscpd(['', '', __dirname + '/../fixtures', '-m', 'weak', '--silent']);
6 |   console.log(clones);
7 | })();
8 | 


--------------------------------------------------------------------------------
/examples/api/example-persist-store.ts:
--------------------------------------------------------------------------------
 1 | import {detectClones} from "../../apps/jscpd";
 2 | import {IMapFrame, MemoryStore} from "@jscpd/core";
 3 | 
 4 | (async () => {
 5 |   const store = new MemoryStore<IMapFrame>();
 6 | 
 7 |   await detectClones({
 8 |     path: [
 9 |       __dirname + '/../fixtures'
10 |     ],
11 |   }, store);
12 | 
13 |   await detectClones({
14 |     path: [
15 |       __dirname + '/../fixtures'
16 |     ],
17 |     silent: true
18 |   }, store);
19 | })()
20 | 


--------------------------------------------------------------------------------
/fixtures/.jscpd.json:
--------------------------------------------------------------------------------
1 | {
2 |   "path": [
3 |     "./yaml"
4 |   ],
5 |   "silent": true
6 | }
7 | 


--------------------------------------------------------------------------------
/fixtures/apl/file1.apl:
--------------------------------------------------------------------------------
 1 | :Namespace each_tests
 2 | 
 3 | I←{⍬≡⍴⍵:⍵ ⋄ ⊃((⎕DR ⍵)323)⎕DR ⍵}¯5000+?100⍴10000
 4 | F←100÷⍨?100⍴10000
 5 | B←?10⍴2
 6 | 
 7 | each∆dpii_TEST←'each∆R1'#.util.MK∆T2  I	I
 8 | each∆dpiis_TEST←'each∆R1'#.util.MK∆T2 4	5
 9 | each∆dpff_TEST←'each∆R1'#.util.MK∆T2  F	F
10 | each∆dpif_TEST←'each∆R1'#.util.MK∆T2  I	F
11 | each∆dpfi_TEST←'each∆R1'#.util.MK∆T2  F	I
12 | each∆duffs_TEST←'each∆R2'#.util.MK∆T2 5.5	3.1
13 | each∆duii_TEST←'each∆R2'#.util.MK∆T2  I	I
14 | each∆duff_TEST←'each∆R2'#.util.MK∆T2  F	F
15 | each∆duif_TEST←'each∆R2'#.util.MK∆T2  I	F
16 | each∆dufi_TEST←'each∆R2'#.util.MK∆T2  F	I
17 | each∆mui_TEST←'each∆R3'#.util.MK∆T2   I	(I~0)
18 | each∆muf_TEST←'each∆R3'#.util.MK∆T2   F	F
19 | each∆mub_TEST←'each∆R6'#.util.MK∆T2   B	B
20 | each∆mpi_TEST←'each∆R4'#.util.MK∆T2   I	(I~0)
21 | each∆mpf_TEST←'each∆R4'#.util.MK∆T2   F	F
22 | each∆mpb_TEST←'each∆R5'#.util.MK∆T2   B	B
23 | each∆durep_TEST←'each∆R7'#.util.MK∆T2 I (⍉⍪I)
24 | 
25 | :EndNamespace


--------------------------------------------------------------------------------
/fixtures/apl/file2.apl:
--------------------------------------------------------------------------------
 1 | :Namespace each_tests
 2 | 
 3 | I←{⍬≡⍴⍵:⍵ ⋄ ⊃((⎕DR ⍵)323)⎕DR ⍵}¯5000+?100⍴10000
 4 | F←100÷⍨?100⍴10000
 5 | B←?10⍴2
 6 | 
 7 | each∆dpii_TEST←'each∆R1'#.util.MK∆T2  I	I
 8 | each∆dpiis_TEST←'each∆R1'#.util.MK∆T2 4	5
 9 | each∆dpff_TEST←'each∆R1'#.util.MK∆T2  F	F
10 | each∆dpif_TEST←'each∆R1'#.util.MK∆T2  I	F
11 | each∆dpfi_TEST←'each∆R1'#.util.MK∆T2  F	I
12 | each∆duffs_TEST←'each∆R2'#.util.MK∆T2 5.5	3.1
13 | each∆duii_TEST←'each∆R2'#.util.MK∆T2  I	I
14 | each∆duff_TEST←'each∆R2'#.util.MK∆T2  F	F
15 | each∆duif_TEST←'each∆R2'#.util.MK∆T2  I	F
16 | each∆dufi_TEST←'each∆R2'#.util.MK∆T2  F	I
17 | each∆mui_TEST←'each∆R3'#.util.MK∆T2   I	(I~0)
18 | each∆muf_TEST←'each∆R3'#.util.MK∆T2   F	F
19 | each∆mub_TEST←'each∆R6'#.util.MK∆T2   B	B
20 | each∆mpi_TEST←'each∆R4'#.util.MK∆T2   I	(I~0)
21 | 
22 | :EndNamespace


--------------------------------------------------------------------------------
/fixtures/clike/file1.c:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * Copy the size of snapshot frame "sn" to frame "fr".  Do the same for all
 3 |  * following frames and children.
 4 |  * Returns a pointer to the old current window, or NULL.
 5 |  */
 6 | static win_T *restore_snapshot_rec(frame_T *sn, frame_T *fr)
 7 | {
 8 |   win_T       *wp = NULL;
 9 |   win_T       *wp2;
10 | 
11 |   fr->fr_height = sn->fr_height;
12 |   fr->fr_width = sn->fr_width;
13 |   if (fr->fr_layout == FR_LEAF) {
14 |     frame_new_height(fr, fr->fr_height, FALSE, FALSE);
15 |     frame_new_width(fr, fr->fr_width, FALSE, FALSE);
16 |     wp = sn->fr_win;
17 |   }
18 |   return wp;
19 | }
20 | 


--------------------------------------------------------------------------------
/fixtures/clike/file1.c++:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clike/file1.c++


--------------------------------------------------------------------------------
/fixtures/clike/file1.cc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clike/file1.cc


--------------------------------------------------------------------------------
/fixtures/clike/file1.cxx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clike/file1.cxx


--------------------------------------------------------------------------------
/fixtures/clike/file1.h:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * Copy the size of snapshot frame "sn" to frame "fr".  Do the same for all
 3 |  * following frames and children.
 4 |  * Returns a pointer to the old current window, or NULL.
 5 |  */
 6 | static win_T *restore_snapshot_rec(frame_T *sn, frame_T *fr)
 7 | {
 8 |   win_T       *wp = NULL;
 9 |   win_T       *wp2;
10 | 
11 |   fr->fr_height = sn->fr_height;
12 |   fr->fr_width = sn->fr_width;
13 |   if (fr->fr_layout == FR_LEAF) {
14 |     frame_new_height(fr, fr->fr_height, FALSE, FALSE);
15 |     frame_new_width(fr, fr->fr_width, FALSE, FALSE);
16 |     wp = sn->fr_win;
17 |   }
18 |   return wp;
19 | }
20 | 


--------------------------------------------------------------------------------
/fixtures/clike/file1.h++:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clike/file1.h++


--------------------------------------------------------------------------------
/fixtures/clike/file1.hh:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clike/file1.hh


--------------------------------------------------------------------------------
/fixtures/clike/file1.hxx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clike/file1.hxx


--------------------------------------------------------------------------------
/fixtures/clike/file1.kt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clike/file1.kt


--------------------------------------------------------------------------------
/fixtures/clike/file1.m:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clike/file1.m


--------------------------------------------------------------------------------
/fixtures/clike/file1.mm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clike/file1.mm


--------------------------------------------------------------------------------
/fixtures/clike/file1.nut:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clike/file1.nut


--------------------------------------------------------------------------------
/fixtures/clike/file2.c:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * Copy the size of snapshot frame "sn" to frame "fr".  Do the same for all
 3 |  * following frames and children.
 4 |  * Returns a pointer to the old current window, or NULL.
 5 |  */
 6 | static win_T *restore_snapshot_rec(frame_T *sn, frame_T *fr)
 7 | {
 8 |   win_T       *wp = NULL;
 9 |   win_T       *wp2;
10 | 
11 |   fr->fr_height = sn->fr_height;
12 |   fr->fr_width = sn->fr_width;
13 |   if (fr->fr_layout == FR_LEAF) {
14 |     frame_new_height(fr, fr->fr_height, FALSE, FALSE);
15 |     frame_new_width(fr, fr->fr_width, FALSE, FALSE);
16 |     wp = sn->fr_win;
17 |   }
18 |   win_T       *wp = NULL;
19 |   win_T       *wp2;
20 | 
21 |   fr->fr_height = sn->fr_height;
22 |   fr->fr_width = sn->fr_width;
23 |   if (fr->fr_layout == FR_LEAF) {
24 |     frame_new_height(fr, fr->fr_height, FALSE, FALSE);
25 |     frame_new_width(fr, fr->fr_width, FALSE, FALSE);
26 |     wp = sn->fr_win;
27 |   }
28 |   return wp;
29 | }
30 | 


--------------------------------------------------------------------------------
/fixtures/clike/file2.c++:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clike/file2.c++


--------------------------------------------------------------------------------
/fixtures/clike/file2.cc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clike/file2.cc


--------------------------------------------------------------------------------
/fixtures/clike/file2.cxx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clike/file2.cxx


--------------------------------------------------------------------------------
/fixtures/clike/file2.h:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * Copy the size of snapshot frame "sn" to frame "fr".  Do the same for all
 3 |  * following frames and children.
 4 |  * Returns a pointer to the old current window, or NULL.
 5 |  */
 6 | static win_T *restore_snapshot_rec(frame_T *sn, frame_T *fr)
 7 | {
 8 |   win_T       *wp = NULL;
 9 |   win_T       *wp2;
10 | 
11 |   fr->fr_height = sn->fr_height;
12 |   fr->fr_width = sn->fr_width;
13 |   if (fr->fr_layout == FR_LEAF) {
14 |     frame_new_height(fr, fr->fr_height, FALSE, FALSE);
15 |     frame_new_width(fr, fr->fr_width, FALSE, FALSE);
16 |     wp = sn->fr_win;
17 |   }
18 |   win_T       *wp = NULL;
19 |   win_T       *wp2;
20 | 
21 |   fr->fr_height = sn->fr_height;
22 |   fr->fr_width = sn->fr_width;
23 |   if (fr->fr_layout == FR_LEAF) {
24 |     frame_new_height(fr, fr->fr_height, FALSE, FALSE);
25 |     frame_new_width(fr, fr->fr_width, FALSE, FALSE);
26 |     wp = sn->fr_win;
27 |   }
28 |   return wp;
29 | }
30 | 


--------------------------------------------------------------------------------
/fixtures/clike/file2.h++:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clike/file2.h++


--------------------------------------------------------------------------------
/fixtures/clike/file2.hh:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clike/file2.hh


--------------------------------------------------------------------------------
/fixtures/clike/file2.hxx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clike/file2.hxx


--------------------------------------------------------------------------------
/fixtures/clike/file2.kt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clike/file2.kt


--------------------------------------------------------------------------------
/fixtures/clike/file2.m:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clike/file2.m


--------------------------------------------------------------------------------
/fixtures/clike/file2.mm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clike/file2.mm


--------------------------------------------------------------------------------
/fixtures/clike/file2.nut:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clike/file2.nut


--------------------------------------------------------------------------------
/fixtures/clojure/file1.clj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clojure/file1.clj


--------------------------------------------------------------------------------
/fixtures/clojure/file1.cljc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clojure/file1.cljc


--------------------------------------------------------------------------------
/fixtures/clojure/file1.cljs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clojure/file1.cljs


--------------------------------------------------------------------------------
/fixtures/clojure/file1.cljx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clojure/file1.cljx


--------------------------------------------------------------------------------
/fixtures/clojure/file1.edn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clojure/file1.edn


--------------------------------------------------------------------------------
/fixtures/clojure/file2.clj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clojure/file2.clj


--------------------------------------------------------------------------------
/fixtures/clojure/file2.cljc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clojure/file2.cljc


--------------------------------------------------------------------------------
/fixtures/clojure/file2.cljs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clojure/file2.cljs


--------------------------------------------------------------------------------
/fixtures/clojure/file2.cljx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clojure/file2.cljx


--------------------------------------------------------------------------------
/fixtures/clojure/file2.edn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/clojure/file2.edn


--------------------------------------------------------------------------------
/fixtures/cmake/file1.cmake:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/cmake/file1.cmake


--------------------------------------------------------------------------------
/fixtures/cmake/file1.cmake.in:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/cmake/file1.cmake.in


--------------------------------------------------------------------------------
/fixtures/cmake/file2.cmake:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/cmake/file2.cmake


--------------------------------------------------------------------------------
/fixtures/cmake/file2.cmake.in:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/cmake/file2.cmake.in


--------------------------------------------------------------------------------
/fixtures/cobol/file1.cob:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/cobol/file1.cob


--------------------------------------------------------------------------------
/fixtures/cobol/file1.cpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/cobol/file1.cpy


--------------------------------------------------------------------------------
/fixtures/cobol/file2.cob:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/cobol/file2.cob


--------------------------------------------------------------------------------
/fixtures/cobol/file2.cpy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/cobol/file2.cpy


--------------------------------------------------------------------------------
/fixtures/coffeescript/file2.coffee:
--------------------------------------------------------------------------------
 1 | console.log "!!!"
 2 | 
 3 | shjs = require "shelljs"
 4 | 
 5 | class Clone
 6 |   constructor: (@firstFile, @secondFile, @firstFileStart, @secondFileStart, @linesCount, @tokensCount)->
 7 | 
 8 |   getLines: ->
 9 |     code = shjs.cat(@firstFile)
10 |     lines = code.split '\n'
11 |     start = @firstFileStart
12 |     end = start + @linesCount
13 |     lines[start..end].join("\n")
14 | 
15 | exports.Clone = Clone
16 | 


--------------------------------------------------------------------------------
/fixtures/commonlisp/file1.cl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/commonlisp/file1.cl


--------------------------------------------------------------------------------
/fixtures/commonlisp/file1.el:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/commonlisp/file1.el


--------------------------------------------------------------------------------
/fixtures/commonlisp/file1.lisp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/commonlisp/file1.lisp


--------------------------------------------------------------------------------
/fixtures/commonlisp/file2.cl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/commonlisp/file2.cl


--------------------------------------------------------------------------------
/fixtures/commonlisp/file2.el:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/commonlisp/file2.el


--------------------------------------------------------------------------------
/fixtures/commonlisp/file2.lisp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/commonlisp/file2.lisp


--------------------------------------------------------------------------------
/fixtures/crystal/file1.cr:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/crystal/file1.cr


--------------------------------------------------------------------------------
/fixtures/crystal/file2.cr:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/crystal/file2.cr


--------------------------------------------------------------------------------
/fixtures/css/file1.css:
--------------------------------------------------------------------------------
 1 | @base: #f938ab;
 2 | 
 3 | .box-shadow(@style, @c) when (iscolor(@c)) {
 4 |   -webkit-box-shadow: @style @c;
 5 |   -moz-box-shadow:    @style @c;
 6 |   box-shadow:         @style @c;
 7 | }
 8 | .box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) {
 9 |   .box-shadow(@style, rgba(0, 0, 0, @alpha));
10 | }
11 | .box {
12 |   color: saturate(@base, 5%);
13 |   border-color: lighten(@base, 30%);
14 |   div { .box-shadow(0 0 5px, 30%) }
15 | }
16 | .box3 {
17 |   color: saturate(@base, 5%);
18 |   border-color: lighten(@base, 30%);
19 |   div { .box-shadow(0 0 5px, 30%) }
20 |     .box2 {
21 |       color: saturate(@base, 5%);
22 |       border-color: lighten(@base, 30%);
23 |       div { .box-shadow(0 0 5px, 30%) }
24 |     }
25 | }


--------------------------------------------------------------------------------
/fixtures/css/file1.gss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/css/file1.gss


--------------------------------------------------------------------------------
/fixtures/css/file1.less:
--------------------------------------------------------------------------------
 1 | @base: #f938ab;
 2 | 
 3 | .box-shadow(@style, @c) when (iscolor(@c)) {
 4 |   -webkit-box-shadow: @style @c;
 5 |   -moz-box-shadow:    @style @c;
 6 |   box-shadow:         @style @c;
 7 | }
 8 | .box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) {
 9 |   .box-shadow(@style, rgba(0, 0, 0, @alpha));
10 | }
11 | .box {
12 |   color: saturate(@base, 5%);
13 |   border-color: lighten(@base, 30%);
14 |   div { .box-shadow(0 0 5px, 30%) }
15 | }
16 | .box3 {
17 |   color: saturate(@base, 5%);
18 |   border-color: lighten(@base, 30%);
19 |   div { .box-shadow(0 0 5px, 30%) }
20 |     .box2 {
21 |       color: saturate(@base, 5%);
22 |       border-color: lighten(@base, 30%);
23 |       div { .box-shadow(0 0 5px, 30%) }
24 |     }
25 | }
26 | 
27 | .box3 {
28 |   color: saturate(@base, 5%);
29 |   border-color: lighten(@base, 30%);
30 |   div { .box-shadow(0 0 5px, 30%) }
31 |   .box2 {
32 |     color: saturate(@base, 5%);
33 |     border-color: lighten(@base, 30%);
34 |     div { .box-shadow(0 0 5px, 30%) }
35 |   }
36 | }
37 | 


--------------------------------------------------------------------------------
/fixtures/css/file1.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/css/file1.scss


--------------------------------------------------------------------------------
/fixtures/css/file10.css:
--------------------------------------------------------------------------------
 1 | @base: #f938ab;
 2 | 
 3 | .box-shadow(@style, @c) when (iscolor(@c)) {
 4 |   -webkit-box-shadow: @style @c;
 5 |   -moz-box-shadow:    @style @c;
 6 |   box-shadow:         @style @c;
 7 | }
 8 | .box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) {
 9 |   .box-shadow(@style, rgba(0, 0, 0, @alpha));
10 | }
11 | .box {
12 |   color: saturate(@base, 5%);
13 |   border-color: lighten(@base, 30%);
14 |   div { .box-shadow(0 0 5px, 30%) }
15 | }
16 | .box3 {
17 |   color: saturate(@base, 5%);
18 |   border-color: lighten(@base, 30%);
19 |   div { .box-shadow(0 0 5px, 30%) }
20 |     .box2 {
21 |       color: saturate(@base, 5%);
22 |       border-color: lighten(@base, 30%);
23 |       div { .box-shadow(0 0 5px, 30%) }
24 |     }
25 | }


--------------------------------------------------------------------------------
/fixtures/css/file2.css:
--------------------------------------------------------------------------------
 1 | @base: #f938ab;
 2 | 
 3 | .box-shadow(@style, @c) when (iscolor(@c)) {
 4 |   -webkit-box-shadow: @style @c;
 5 |   -moz-box-shadow:    @style @c;
 6 |   box-shadow:         @style @c;
 7 | }
 8 | .box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) {
 9 |   .box-shadow(@style, rgba(0, 0, 0, @alpha));
10 | }
11 | .box {
12 |   color: saturate(@base, 5%);
13 |   border-color: lighten(@base, 30%);
14 |   div { .box-shadow(0 0 5px, 30%) }
15 | }
16 | .box3 {
17 |   color: saturate(@base, 5%);
18 |   border-color: lighten(@base, 30%);
19 |   div { .box-shadow(0 0 5px, 30%) }
20 | }


--------------------------------------------------------------------------------
/fixtures/css/file2.gss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/css/file2.gss


--------------------------------------------------------------------------------
/fixtures/css/file2.less:
--------------------------------------------------------------------------------
 1 | @base: #f938ab;
 2 | 
 3 | .box-shadow(@style, @c) when (iscolor(@c)) {
 4 |   -webkit-box-shadow: @style @c;
 5 |   -moz-box-shadow:    @style @c;
 6 |   box-shadow:         @style @c;
 7 | }
 8 | .box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) {
 9 |   .box-shadow(@style, rgba(0, 0, 0, @alpha));
10 | }
11 | .box {
12 |   color: saturate(@base, 5%);
13 |   border-color: lighten(@base, 30%);
14 |   div { .box-shadow(0 0 5px, 30%) }
15 | }
16 | .box3 {
17 |   color: saturate(@base, 5%);
18 |   border-color: lighten(@base, 30%);
19 |   div { .box-shadow(0 0 5px, 30%) }
20 | }


--------------------------------------------------------------------------------
/fixtures/css/file2.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/css/file2.scss


--------------------------------------------------------------------------------
/fixtures/custom/file.cc1:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * Copy the size of snapshot frame "sn" to frame "fr".  Do the same for all
 3 |  * following frames and children.
 4 |  * Returns a pointer to the old current window, or NULL.
 5 |  */
 6 | static win_T *restore_snapshot_rec(frame_T *sn, frame_T *fr)
 7 | {
 8 |   win_T       *wp = NULL;
 9 |   win_T       *wp2;
10 | 
11 |   fr->fr_height = sn->fr_height;
12 |   fr->fr_width = sn->fr_width;
13 |   if (fr->fr_layout == FR_LEAF) {
14 |     frame_new_height(fr, fr->fr_height, FALSE, FALSE);
15 |     frame_new_width(fr, fr->fr_width, FALSE, FALSE);
16 |     wp = sn->fr_win;
17 |   }
18 |   win_T       *wp = NULL;
19 |   win_T       *wp2;
20 | 
21 |   fr->fr_height = sn->fr_height;
22 |   fr->fr_width = sn->fr_width;
23 |   if (fr->fr_layout == FR_LEAF) {
24 |     frame_new_height(fr, fr->fr_height, FALSE, FALSE);
25 |     frame_new_width(fr, fr->fr_width, FALSE, FALSE);
26 |     wp = sn->fr_win;
27 |   }
28 |   return wp;
29 | }
30 | 


--------------------------------------------------------------------------------
/fixtures/custom/file.ccc:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * Copy the size of snapshot frame "sn" to frame "fr".  Do the same for all
 3 |  * following frames and children.
 4 |  * Returns a pointer to the old current window, or NULL.
 5 |  */
 6 | static win_T *restore_snapshot_rec(frame_T *sn, frame_T *fr)
 7 | {
 8 |   win_T       *wp = NULL;
 9 |   win_T       *wp2;
10 | 
11 |   fr->fr_height = sn->fr_height;
12 |   fr->fr_width = sn->fr_width;
13 |   if (fr->fr_layout == FR_LEAF) {
14 |     frame_new_height(fr, fr->fr_height, FALSE, FALSE);
15 |     frame_new_width(fr, fr->fr_width, FALSE, FALSE);
16 |     wp = sn->fr_win;
17 |   }
18 |   win_T       *wp = NULL;
19 |   win_T       *wp2;
20 | 
21 |   fr->fr_height = sn->fr_height;
22 |   fr->fr_width = sn->fr_width;
23 |   if (fr->fr_layout == FR_LEAF) {
24 |     frame_new_height(fr, fr->fr_height, FALSE, FALSE);
25 |     frame_new_width(fr, fr->fr_width, FALSE, FALSE);
26 |     wp = sn->fr_win;
27 |   }
28 |   return wp;
29 | }
30 | 


--------------------------------------------------------------------------------
/fixtures/cypher/file1.cyp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/cypher/file1.cyp


--------------------------------------------------------------------------------
/fixtures/cypher/file1.cypher:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/cypher/file1.cypher


--------------------------------------------------------------------------------
/fixtures/cypher/file2.cyp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/cypher/file2.cyp


--------------------------------------------------------------------------------
/fixtures/cypher/file2.cypher:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/cypher/file2.cypher


--------------------------------------------------------------------------------
/fixtures/diff/file1.diff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/diff/file1.diff


--------------------------------------------------------------------------------
/fixtures/diff/file1.patch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/diff/file1.patch


--------------------------------------------------------------------------------
/fixtures/diff/file2.diff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/diff/file2.diff


--------------------------------------------------------------------------------
/fixtures/diff/file2.patch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/diff/file2.patch


--------------------------------------------------------------------------------
/fixtures/dtd/file1.dtd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/dtd/file1.dtd


--------------------------------------------------------------------------------
/fixtures/dtd/file2.dtd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/dtd/file2.dtd


--------------------------------------------------------------------------------
/fixtures/dylan/file1.dyl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/dylan/file1.dyl


--------------------------------------------------------------------------------
/fixtures/dylan/file1.dylan:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/dylan/file1.dylan


--------------------------------------------------------------------------------
/fixtures/dylan/file1.intr:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/dylan/file1.intr


--------------------------------------------------------------------------------
/fixtures/dylan/file2.dyl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/dylan/file2.dyl


--------------------------------------------------------------------------------
/fixtures/dylan/file2.dylan:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/dylan/file2.dylan


--------------------------------------------------------------------------------
/fixtures/dylan/file2.intr:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/dylan/file2.intr


--------------------------------------------------------------------------------
/fixtures/ecl/file1.ecl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/ecl/file1.ecl


--------------------------------------------------------------------------------
/fixtures/ecl/file2.ecl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/ecl/file2.ecl


--------------------------------------------------------------------------------
/fixtures/eiffel/file1.e:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/eiffel/file1.e


--------------------------------------------------------------------------------
/fixtures/eiffel/file2.e:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/eiffel/file2.e


--------------------------------------------------------------------------------
/fixtures/elm/file1.elm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/elm/file1.elm


--------------------------------------------------------------------------------
/fixtures/elm/file2.elm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/elm/file2.elm


--------------------------------------------------------------------------------
/fixtures/factor/file1.factor:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/factor/file1.factor


--------------------------------------------------------------------------------
/fixtures/factor/file2.factor:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/factor/file2.factor


--------------------------------------------------------------------------------
/fixtures/folder1/file2.c:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * Copy the size of snapshot frame "sn" to frame "fr".  Do the same for all
 3 |  * following frames and children.
 4 |  * Returns a pointer to the old current window, or NULL.
 5 |  */
 6 | static win_T *restore_snapshot_rec(frame_T *sn, frame_T *fr)
 7 | {
 8 |   win_T       *wp = NULL;
 9 |   win_T       *wp2;
10 | 
11 |   fr->fr_height = sn->fr_height;
12 |   fr->fr_width = sn->fr_width;
13 |   if (fr->fr_layout == FR_LEAF) {
14 |     frame_new_height(fr, fr->fr_height, FALSE, FALSE);
15 |     frame_new_width(fr, fr->fr_width, FALSE, FALSE);
16 |     wp = sn->fr_win;
17 |   }
18 |   win_T       *wp = NULL;
19 |   win_T       *wp2;
20 | 
21 |   fr->fr_height = sn->fr_height;
22 |   fr->fr_width = sn->fr_width;
23 |   if (fr->fr_layout == FR_LEAF) {
24 |     frame_new_height(fr, fr->fr_height, FALSE, FALSE);
25 |     frame_new_width(fr, fr->fr_width, FALSE, FALSE);
26 |     wp = sn->fr_win;
27 |   }
28 |   return wp;
29 | }
30 | 


--------------------------------------------------------------------------------
/fixtures/forth/file1.4th:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/forth/file1.4th


--------------------------------------------------------------------------------
/fixtures/forth/file1.forth:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/forth/file1.forth


--------------------------------------------------------------------------------
/fixtures/forth/file1.fth:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/forth/file1.fth


--------------------------------------------------------------------------------
/fixtures/forth/file2.4th:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/forth/file2.4th


--------------------------------------------------------------------------------
/fixtures/forth/file2.forth:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/forth/file2.forth


--------------------------------------------------------------------------------
/fixtures/forth/file2.fth:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/forth/file2.fth


--------------------------------------------------------------------------------
/fixtures/fortran/file1.f:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/fortran/file1.f


--------------------------------------------------------------------------------
/fixtures/fortran/file1.f77:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/fortran/file1.f77


--------------------------------------------------------------------------------
/fixtures/fortran/file1.f90:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/fortran/file1.f90


--------------------------------------------------------------------------------
/fixtures/fortran/file1.for:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/fortran/file1.for


--------------------------------------------------------------------------------
/fixtures/fortran/file2.f:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/fortran/file2.f


--------------------------------------------------------------------------------
/fixtures/fortran/file2.f77:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/fortran/file2.f77


--------------------------------------------------------------------------------
/fixtures/fortran/file2.f90:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/fortran/file2.f90


--------------------------------------------------------------------------------
/fixtures/fortran/file2.for:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/fortran/file2.for


--------------------------------------------------------------------------------
/fixtures/gas/file1.s:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/gas/file1.s


--------------------------------------------------------------------------------
/fixtures/gas/file2.s:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/gas/file2.s


--------------------------------------------------------------------------------
/fixtures/gherkin/file1.feature:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/gherkin/file1.feature


--------------------------------------------------------------------------------
/fixtures/gherkin/file2.feature:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/gherkin/file2.feature


--------------------------------------------------------------------------------
/fixtures/go/file1.go:
--------------------------------------------------------------------------------
 1 | package bfs
 2 | 
 3 | import (
 4 |   "github.com/arnauddri/algorithms/algorithms/graphs/bfs"
 5 |   "github.com/arnauddri/algorithms/data-structures/graph"
 6 | )
 7 | 
 8 | func ShortestPath(g *graph.DirGraph, start graph.VertexId) (dist map[graph.VertexId]int) {
 9 |   dist = make(map[graph.VertexId]int)
10 |   visited := make(map[graph.VertexId]bool)
11 | 
12 |   getDist := func(v graph.VertexId) {
13 |     neighbours := g.GetNeighbours(v).VerticesIter()
14 |     visited[v] = true
15 | 
16 |     for neighbour := range neighbours {
17 | 
18 |       ok, _ := visited[neighbour]
19 |       if !ok {
20 |         dist[neighbour] = dist[v] + 1
21 |       }
22 |     }
23 |   }
24 | 
25 |   bfs.Bfs(g, start, getDist)
26 | 
27 |   return
28 | }
29 | 
30 | func GetDist(g *graph.DirGraph, from graph.VertexId, to graph.VertexId) int {
31 |   return ShortestPath(g, from)[to]
32 | }
33 | 


--------------------------------------------------------------------------------
/fixtures/go/file2.go:
--------------------------------------------------------------------------------
 1 | package bfs
 2 | 
 3 | import (
 4 |   "github.com/arnauddri/algorithms/algorithms/graphs/bfs"
 5 |   "github.com/arnauddri/algorithms/data-structures/graph"
 6 | )
 7 | 
 8 | func ShortestPath(g *graph.DirGraph, start graph.VertexId) (dist map[graph.VertexId]int) {
 9 |   dist = make(map[graph.VertexId]int)
10 |   visited := make(map[graph.VertexId]bool)
11 | 
12 |   getDist := func(v graph.VertexId) {
13 |     neighbours := g.GetNeighbours(v).VerticesIter()
14 |     visited[v] = true
15 | 
16 |     for neighbour := range neighbours {
17 | 
18 |       ok, _ := visited[neighbour]
19 |       if !ok {
20 |         dist[neighbour] = dist[v] + 1
21 |       }
22 |     }
23 |   }
24 | 
25 |   bfs.Bfs(g, start, getDist)
26 | 
27 |   return
28 | }
29 | 
30 | 
31 | func test() {
32 |   return
33 | }
34 | 


--------------------------------------------------------------------------------
/fixtures/groovy/file1.gradle:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/groovy/file1.gradle


--------------------------------------------------------------------------------
/fixtures/groovy/file1.groovy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/groovy/file1.groovy


--------------------------------------------------------------------------------
/fixtures/groovy/file2.gradle:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/groovy/file2.gradle


--------------------------------------------------------------------------------
/fixtures/groovy/file2.groovy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/groovy/file2.groovy


--------------------------------------------------------------------------------
/fixtures/haml/file1.haml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/haml/file1.haml


--------------------------------------------------------------------------------
/fixtures/haml/file2.haml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/haml/file2.haml


--------------------------------------------------------------------------------
/fixtures/haskell-literate/file1.lhs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/haskell-literate/file1.lhs


--------------------------------------------------------------------------------
/fixtures/haskell-literate/file2.lhs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/haskell-literate/file2.lhs


--------------------------------------------------------------------------------
/fixtures/haxe/file1.hxml:
--------------------------------------------------------------------------------
 1 | -cp test
 2 | -js path/to/file.js
 3 | #-remap nme:flash
 4 | --next
 5 | -D source-map-content
 6 | -cmd 'test'
 7 | -lib lime
 8 | -cp test
 9 | -js path/to/file.js
10 | #-remap nme:flash
11 | --next
12 | -D source-map-content
13 | -cmd 'test'
14 | -lib lime
15 | 


--------------------------------------------------------------------------------
/fixtures/haxe/file2.hxml:
--------------------------------------------------------------------------------
 1 | #-remap nme:flash
 2 | --next
 3 | -D source-map-content
 4 | -cmd 'test'
 5 | -lib lime
 6 | -cp test
 7 | -js path/to/file.js
 8 | #-remap nme:flash
 9 | --next
10 | -D source-map-content
11 | -cmd 'test'
12 | -lib lime
13 | 


--------------------------------------------------------------------------------
/fixtures/htmlembedded/file1.aspx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/htmlembedded/file1.aspx


--------------------------------------------------------------------------------
/fixtures/htmlembedded/file1.ejs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/htmlembedded/file1.ejs


--------------------------------------------------------------------------------
/fixtures/htmlembedded/file1.erb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/htmlembedded/file1.erb


--------------------------------------------------------------------------------
/fixtures/htmlembedded/file1.jsp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/htmlembedded/file1.jsp


--------------------------------------------------------------------------------
/fixtures/htmlembedded/file2.aspx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/htmlembedded/file2.aspx


--------------------------------------------------------------------------------
/fixtures/htmlembedded/file2.ejs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/htmlembedded/file2.ejs


--------------------------------------------------------------------------------
/fixtures/htmlembedded/file2.erb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/htmlembedded/file2.erb


--------------------------------------------------------------------------------
/fixtures/htmlembedded/file2.jsp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/htmlembedded/file2.jsp


--------------------------------------------------------------------------------
/fixtures/htmlmixed/file1.htm:
--------------------------------------------------------------------------------
 1 | <div class="orderSearchReport">
 2 | 
 3 | 	<!-- This title must be here due to an IE8 + KO bug that happens to affect the next element -->
 4 |     <h4  style="visibility: hidden">Order Search</h4>
 5 | 
 6 | 	 <!-- ko if: errorMessages() && errorMessages().length -->
 7 |     <ul class="validationErrors">
 8 |         <li data-bind="foreach: errorMessages()">
 9 |         <div class="ui-state-error">
10 |             <span class="ui-icon ui-icon-alert">&nbsp;</span>
11 |             <span data-bind="text: $data"></span>
12 |         </div>
13 |         </li>
14 |     </ul>
15 | 	<!-- /ko -->
16 | 	
17 | 	<!-- ko if: message() -->
18 | 		<div class="ui-state-highlight">
19 | 			<span class="ui-icon ui-icon-info">&nbsp;</span>
20 | 			<span data-bind="text: message"></span>
21 | 		</div>
22 | 	<!-- /ko -->
23 | 	
24 | </div>
25 | 


--------------------------------------------------------------------------------
/fixtures/htmlmixed/file1.html:
--------------------------------------------------------------------------------
 1 | <!doctype html>
 2 | <html lang="en">
 3 | <head>
 4 |     <meta charset="UTF-8">
 5 |     <meta name="viewport"
 6 |           content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
 7 |     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 8 |     <title>Document</title>
 9 | </head>
10 | <body>
11 | <div>
12 |     <script>alert('test')</script>
13 |     <h1>Test File</h1>
14 |     <p>Ololo</p>
15 | </div>
16 | </body>
17 | </html>
18 | 


--------------------------------------------------------------------------------
/fixtures/htmlmixed/file2.htm:
--------------------------------------------------------------------------------
 1 | <div class="orderSearchReport">
 2 | 
 3 | 	<!-- This title must be here due to an IE8 + KO bug that happens to affect the next element -->
 4 |     <h4  style="visibility: hidden">Order Search</h4>
 5 | 
 6 | 	 <!-- ko if: errorMessages() && errorMessages().length -->
 7 |     <ul class="validationErrors">
 8 |         <li data-bind="foreach: errorMessages()">
 9 |         <div class="ui-state-error">
10 |             <span class="ui-icon ui-icon-alert">&nbsp;</span>
11 |             <span data-bind="text: $data"></span>
12 |         </div>
13 |         </li>
14 |     </ul>
15 | 	<!-- /ko -->
16 | 	
17 | 	<!-- ko if: message() -->
18 | 		<div class="ui-state-highlight">
19 | 			<span class="ui-icon ui-icon-info">&nbsp;</span>
20 | 			<span data-bind="text: message"></span>
21 | 		</div>
22 | 	<!-- /ko -->
23 | 	
24 | </div>
25 | 


--------------------------------------------------------------------------------
/fixtures/htmlmixed/file2.html:
--------------------------------------------------------------------------------
 1 | <!doctype html>
 2 | <html lang="en">
 3 | <head>
 4 |     <meta charset="UTF-8">
 5 |     <meta name="viewport"
 6 |           content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
 7 |     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 8 |     <title>Document</title>
 9 | </head>
10 | <body>
11 | <div>
12 |     <script>alert('test')</script>
13 |     <h1>Test File</h1>
14 |     <p>Ololo</p>
15 | </div>
16 | <!--<div></div>-->
17 | </body>
18 | </html>
19 | 


--------------------------------------------------------------------------------
/fixtures/idl/file1.pro:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/idl/file1.pro


--------------------------------------------------------------------------------
/fixtures/idl/file2.pro:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/idl/file2.pro


--------------------------------------------------------------------------------
/fixtures/ignore-case/file1.txt:
--------------------------------------------------------------------------------
 1 | ВОЛХВЫ ПРИШЛИ. МЛАДЕНЕЦ КРЕПКО СПАЛ.
 2 | ЗВЕЗДА СВЕТИЛА ЯРКО С НЕБОСВОДА.
 3 | ХОЛОДНЫЙ ВЕТЕР СНЕГ В СУГРОБ СГРЕБАЛ.
 4 | ШУРШАЛ ПЕСОК. КОСТЕР ТРЕЩАЛ У ВХОДА.
 5 | ДЫМ ШЕЛ СВЕЧОЙ. ОГОНЬ ВИЛСЯ КРЮЧКОМ.
 6 | И ТЕНИ СТАНОВИЛИСЬ ТО КОРОЧЕ,
 7 | ТО ВДРУГ ДЛИННЕЙ. НИКТО НЕ ЗНАЛ КРУГОМ,
 8 | ЧТО ЖИЗНИ СЧЕТ НАЧНЕТСЯ С ЭТОЙ НОЧИ.
 9 | ВОЛХВЫ ПРИШЛИ. МЛАДЕНЕЦ КРЕПКО СПАЛ.
10 | КРУТЫЕ СВОДЫ ЯСЛИ ОКРУЖАЛИ.
11 | КРУЖИЛСЯ СНЕГ. КЛУБИЛСЯ БЕЛЫЙ ПАР.
12 | ЛЕЖАЛ МЛАДЕНЕЦ, И ДАРЫ ЛЕЖАЛИ.
13 | 


--------------------------------------------------------------------------------
/fixtures/ignore-pattern/file_1.js:
--------------------------------------------------------------------------------
 1 | import a from 'a';
 2 | import b from 'b';
 3 | import c from 'c';
 4 | import d from 'd';
 5 | import e from 'e';
 6 | import f from 'f';
 7 | 
 8 | const USER_1 = Symbol('USER_1');
 9 | const USER_2 = Symbol('USER_2');
10 | const USER_3 = Symbol('USER_3');
11 | const USER_4 = Symbol('USER_4');
12 | const USER_5 = Symbol('USER_5');
13 | const USER_6 = Symbol('USER_6');
14 | 
15 | function fibonacci(num, memo) {
16 |     memo = memo || {};
17 |   
18 |     if (memo[num]) return memo[num];
19 |     if (num <= 1) return 1;
20 |   
21 |     return memo[num] = fibonacci(num - 1, memo) + fibonacci(num - 2, memo);
22 | }
23 | 
24 | export { fibonacci }
25 | 


--------------------------------------------------------------------------------
/fixtures/ignore-pattern/file_2.js:
--------------------------------------------------------------------------------
 1 | import a from 'a';
 2 | import b from 'b';
 3 | import c from 'c';
 4 | import d from 'd';
 5 | import e from 'e';
 6 | import f from 'f';
 7 | 
 8 | const DELIM = Symbol('|');
 9 | 
10 | const USER_1 = Symbol('USER_1');
11 | const USER_2 = Symbol('USER_2');
12 | const USER_3 = Symbol('USER_3');
13 | const USER_4 = Symbol('USER_4');
14 | const USER_5 = Symbol('USER_5');
15 | 
16 | export function factorial(n){
17 |     let answer = 1;
18 |     if (n == 0 || n == 1){
19 |       return answer;
20 |     }else{
21 |       for(var i = n; i >= 1; i--){
22 |         answer = answer * i;
23 |       }
24 |       return answer;
25 |     }  
26 | }


--------------------------------------------------------------------------------
/fixtures/ignore/file1.htm:
--------------------------------------------------------------------------------
 1 | <!--
 2 | // jscpd:ignore-start
 3 | -->
 4 | <div class="orderSearchReport">
 5 | 
 6 | 	<!-- This title must be here due to an IE8 + KO bug that happens to affect the next element -->
 7 |     <h4  style="visibility: hidden">Order Search</h4>
 8 | 
 9 | 	 <!-- ko if: errorMessages() && errorMessages().length -->
10 |     <ul class="validationErrors">
11 |         <li data-bind="foreach: errorMessages()">
12 |         <div class="ui-state-error">
13 |             <span class="ui-icon ui-icon-alert">&nbsp;</span>
14 |             <span data-bind="text: $data"></span>
15 |         </div>
16 |         </li>
17 |     </ul>
18 | 	<!-- /ko -->
19 | 
20 | 	<!-- ko if: message() -->
21 | 		<div class="ui-state-highlight">
22 | 			<span class="ui-icon ui-icon-info">&nbsp;</span>
23 | 			<span data-bind="text: message"></span>
24 | 		</div>
25 | 	<!-- /ko -->
26 | 
27 | </div>
28 | <!--
29 | // jscpd:ignore-end
30 | -->
31 | 


--------------------------------------------------------------------------------
/fixtures/ignore/file2.htm:
--------------------------------------------------------------------------------
 1 | <div class="orderSearchReport">
 2 | 
 3 | 	<!-- This title must be here due to an IE8 + KO bug that happens to affect the next element -->
 4 |     <h4  style="visibility: hidden">Order Search</h4>
 5 | 
 6 | 	 <!-- ko if: errorMessages() && errorMessages().length -->
 7 |     <ul class="validationErrors">
 8 |         <li data-bind="foreach: errorMessages()">
 9 |         <div class="ui-state-error">
10 |             <span class="ui-icon ui-icon-alert">&nbsp;</span>
11 |             <span data-bind="text: $data"></span>
12 |         </div>
13 |         </li>
14 |     </ul>
15 | 	<!-- /ko -->
16 | 	
17 | 	<!-- ko if: message() -->
18 | 		<div class="ui-state-highlight">
19 | 			<span class="ui-icon ui-icon-info">&nbsp;</span>
20 | 			<span data-bind="text: message"></span>
21 | 		</div>
22 | 	<!-- /ko -->
23 | 	
24 | </div>
25 | 


--------------------------------------------------------------------------------
/fixtures/javascript/file1.js:
--------------------------------------------------------------------------------
 1 | /**
 2 |  * Hello
 3 |  * @type {{html: {template: string}, webpack: (function(*))}}
 4 |  */
 5 | module.exports = {
 6 |     html: {
 7 |         template: 'src/index.html'
 8 |     },
 9 |     webpack (config) {
10 |         config.module.rules.push({
11 |             test: /\.(code|path)$/,
12 |             use: [{ loader: 'raw-loader' }]
13 |         })
14 |         config.module.rules.push({
15 |             test: /\.(code|path)$/,
16 |             use: [{ loader: 'raw-loader' }]
17 |         })
18 |         config.module.rules.push({
19 |             test: /\.(code|path)$/,
20 |             use: [{ loader: 'raw-loader' }]
21 |         })
22 |         return config
23 |     }
24 | }


--------------------------------------------------------------------------------
/fixtures/javascript/file1.json:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/javascript/file1.json


--------------------------------------------------------------------------------
/fixtures/javascript/file1.jsonld:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/javascript/file1.jsonld


--------------------------------------------------------------------------------
/fixtures/javascript/file1.map:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/javascript/file1.map


--------------------------------------------------------------------------------
/fixtures/javascript/file2.js:
--------------------------------------------------------------------------------
 1 | /**
 2 |  * Hello
 3 |  * @type {{html: {template: string}, webpack: (function(*))}}
 4 |  */
 5 | module.exports = {
 6 |     html: {
 7 |         template: 'src/index.html'
 8 |     },
 9 |     webpack (config) {
10 |         config.module.rules.push({
11 |             test: /\.(code|path)$/,
12 |             use: [{ loader: 'raw-loader' }]
13 |         })
14 |         config.module.rules.push({
15 |             test: /\.(code|path)$/,
16 |             use: [{ loader: 'raw-loader' }]
17 |         })
18 |         config.module.rules.push({
19 |             test: /\.(code|path)$/,
20 |             use: [{ loader: 'raw-loader' }]
21 |         })
22 | 
23 | 
24 | 
25 |         return config
26 |     }
27 | }


--------------------------------------------------------------------------------
/fixtures/javascript/file2.json:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/javascript/file2.json


--------------------------------------------------------------------------------
/fixtures/javascript/file2.jsonld:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/javascript/file2.jsonld


--------------------------------------------------------------------------------
/fixtures/javascript/file2.map:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/javascript/file2.map


--------------------------------------------------------------------------------
/fixtures/jsx/file1.jsx:
--------------------------------------------------------------------------------
 1 | import classNames from 'classnames';
 2 | import React from 'react';
 3 | import PropTypes from 'prop-types';
 4 | 
 5 | import Media from './Media';
 6 | import { bsClass, getClassSet, prefix, splitBsProps }
 7 |     from './utils/bootstrapUtils';
 8 | 
 9 | const propTypes = {
10 |     /**
11 |      * Align the media to the top, middle, or bottom of the media object.
12 |      */
13 |     align: PropTypes.oneOf(['top', 'middle', 'bottom']),
14 | };
15 | 
16 | class MediaRight extends React.Component {
17 |     render() {
18 |         const { align, className, ...props } = this.props;
19 |         const [bsProps, elementProps] = splitBsProps(props);
20 | 
21 |         const classes = getClassSet(bsProps);
22 | 
23 |         return (
24 |             <div
25 |                 {...elementProps}
26 |                 className={classNames(className, classes)}
27 |             />
28 |         );
29 |     }
30 | }
31 | 
32 | MediaRight.propTypes = propTypes;
33 | 
34 | export default bsClass('media-right', MediaRight);


--------------------------------------------------------------------------------
/fixtures/jsx/file1.tsx:
--------------------------------------------------------------------------------
 1 | import classNames from 'classnames';
 2 | import React from 'react';
 3 | import PropTypes from 'prop-types';
 4 | 
 5 | import Media from './Media';
 6 | import { bsClass, getClassSet, prefix, splitBsProps }
 7 |     from './utils/bootstrapUtils';
 8 | 
 9 | const propTypes = {
10 |     /**
11 |      * Align the media to the top, middle, or bottom of the media object.
12 |      */
13 |     align: PropTypes.oneOf(['top', 'middle', 'bottom']),
14 | };
15 | 
16 | class MediaRight extends React.Component {
17 |     render() {
18 |         const { align, className, ...props } = this.props;
19 |         const [bsProps, elementProps] = splitBsProps(props);
20 | 
21 |         const classes = getClassSet(bsProps);
22 | 
23 |         if (align) {
24 |             // The class is e.g. `media-top`, not `media-right-top`.
25 |             classes[prefix(Media.defaultProps, align)] = true;
26 |         }
27 | 
28 |         return (
29 |             <div
30 |                 {...elementProps}
31 |                 className={classNames(className, classes)}
32 |             />
33 |         );
34 |     }
35 | }
36 | 
37 | MediaRight.propTypes = propTypes;
38 | 
39 | export default bsClass('media-right', MediaRight);


--------------------------------------------------------------------------------
/fixtures/jsx/file2.tsx:
--------------------------------------------------------------------------------
 1 | import classNames from 'classnames';
 2 | import React from 'react';
 3 | import PropTypes from 'prop-types';
 4 | 
 5 | import Media from './Media';
 6 | import { bsClass, getClassSet, prefix, splitBsProps }
 7 |     from './utils/bootstrapUtils';
 8 | 
 9 | const propTypes = {
10 |     /**
11 |      * Align the media to the top, middle, or bottom of the media object.
12 |      */
13 |     align: PropTypes.oneOf(['top', 'middle', 'bottom']),
14 | };
15 | 
16 | class MediaRight extends React.Component {
17 |     render() {
18 |         const { align, className, ...props } = this.props;
19 |         const [bsProps, elementProps] = splitBsProps(props);
20 | 
21 |         const classes = getClassSet(bsProps);
22 | 
23 |         if (align) {
24 |             // The class is e.g. `media-top`, not `media-right-top`.
25 |             classes[prefix(Media.defaultProps, align)] = true;
26 |         }
27 | 
28 |         return (
29 |             <div
30 |                 {...elementProps}
31 |                 className={classNames(className, classes)}
32 |             />
33 |         );
34 |     }
35 | }
36 | 
37 | export default bsClass('media-right', MediaRight);


--------------------------------------------------------------------------------
/fixtures/julia/file1.jl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/julia/file1.jl


--------------------------------------------------------------------------------
/fixtures/julia/file2.jl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/julia/file2.jl


--------------------------------------------------------------------------------
/fixtures/livescript/file1.ls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/livescript/file1.ls


--------------------------------------------------------------------------------
/fixtures/livescript/file2.ls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/livescript/file2.ls


--------------------------------------------------------------------------------
/fixtures/lua/file1.lua:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/lua/file1.lua


--------------------------------------------------------------------------------
/fixtures/lua/file2.lua:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/lua/file2.lua


--------------------------------------------------------------------------------
/fixtures/markdown/file1.markdown:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/markdown/file1.markdown


--------------------------------------------------------------------------------
/fixtures/markdown/file1.mkd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/markdown/file1.mkd


--------------------------------------------------------------------------------
/fixtures/markdown/file2.markdown:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/markdown/file2.markdown


--------------------------------------------------------------------------------
/fixtures/markdown/file2.mkd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/markdown/file2.mkd


--------------------------------------------------------------------------------
/fixtures/markup.html:
--------------------------------------------------------------------------------
 1 | <!DOCTYPE html>
 2 | <html lang="en">
 3 | <head>
 4 |     <meta charset="UTF-8">
 5 |     <title>Title</title>
 6 |     <script>
 7 |         /* jscpd:ignore-start */
 8 |         var a = {};
 9 |         /* jscpd:ignore-end */
10 |         console.log('qweqweqw');
11 |         alert('!!!!' + a);
12 |     </script>
13 |     <style>
14 |         .content {
15 |             color: blue;
16 |             width: 400px;
17 |             border: 1px solid red;
18 |         }
19 |     </style>
20 | </head>
21 | <body>
22 |     <div class="content">
23 |         <h1>Hello</h1>
24 |     </div>
25 | </body>
26 | </html>
27 | 


--------------------------------------------------------------------------------
/fixtures/mathematica/file1.m:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mathematica/file1.m


--------------------------------------------------------------------------------
/fixtures/mathematica/file1.nb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mathematica/file1.nb


--------------------------------------------------------------------------------
/fixtures/mathematica/file2.m:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mathematica/file2.m


--------------------------------------------------------------------------------
/fixtures/mathematica/file2.nb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mathematica/file2.nb


--------------------------------------------------------------------------------
/fixtures/mbox/file1.mbox:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mbox/file1.mbox


--------------------------------------------------------------------------------
/fixtures/mbox/file2.mbox:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mbox/file2.mbox


--------------------------------------------------------------------------------
/fixtures/mixed-formats/file.css:
--------------------------------------------------------------------------------
 1 | .gg-adidas {
 2 | 	position: relative;
 3 | 	box-sizing: border-box;
 4 | 	display: block;
 5 | 	width: 23px;
 6 | 	height: 15px;
 7 | 	transform: scale(var(--ggs,1));
 8 | 	overflow: hidden
 9 | }
10 | 
11 | .gg-adidas::before {
12 | 	content: "";
13 | 	position: absolute;
14 | 	box-sizing: border-box;
15 | 	display: block;
16 | 	width: 5px;
17 | 	height: 18px;
18 | 	background: currentColor;
19 | 	transform: rotate(-30deg);
20 | 	left: 4px;
21 | 	bottom: -14px;
22 | 	box-shadow: 7px -2px,14px -4px
23 | }
24 | 


--------------------------------------------------------------------------------
/fixtures/mixed-formats/file.js:
--------------------------------------------------------------------------------
 1 | /**
 2 |  * @author mrdoob / http://mrdoob.com/
 3 |  */
 4 | 
 5 | function arrayMin( array ) {
 6 | 
 7 | 	if ( array.length === 0 ) return Infinity;
 8 | 
 9 | 	var min = array[ 0 ];
10 | 
11 | 	for ( var i = 1, l = array.length; i < l; ++ i ) {
12 | 
13 | 		if ( array[ i ] < min ) min = array[ i ];
14 | 
15 | 	}
16 | 
17 | 	return min;
18 | 
19 | }
20 | 
21 | function arrayMax( array ) {
22 | 
23 | 	if ( array.length === 0 ) return - Infinity;
24 | 
25 | 	var max = array[ 0 ];
26 | 
27 | 	for ( var i = 1, l = array.length; i < l; ++ i ) {
28 | 
29 | 		if ( array[ i ] > max ) max = array[ i ];
30 | 
31 | 	}
32 | 
33 | 	return max;
34 | 
35 | }
36 | 
37 | export { arrayMin, arrayMax };
38 | 


--------------------------------------------------------------------------------
/fixtures/mllike/file1.fs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mllike/file1.fs


--------------------------------------------------------------------------------
/fixtures/mllike/file1.ml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mllike/file1.ml


--------------------------------------------------------------------------------
/fixtures/mllike/file1.mli:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mllike/file1.mli


--------------------------------------------------------------------------------
/fixtures/mllike/file1.mll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mllike/file1.mll


--------------------------------------------------------------------------------
/fixtures/mllike/file1.mly:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mllike/file1.mly


--------------------------------------------------------------------------------
/fixtures/mllike/file2.fs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mllike/file2.fs


--------------------------------------------------------------------------------
/fixtures/mllike/file2.ml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mllike/file2.ml


--------------------------------------------------------------------------------
/fixtures/mllike/file2.mli:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mllike/file2.mli


--------------------------------------------------------------------------------
/fixtures/mllike/file2.mll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mllike/file2.mll


--------------------------------------------------------------------------------
/fixtures/mllike/file2.mly:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mllike/file2.mly


--------------------------------------------------------------------------------
/fixtures/modelica/file1.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/modelica/file1.mo


--------------------------------------------------------------------------------
/fixtures/modelica/file2.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/modelica/file2.mo


--------------------------------------------------------------------------------
/fixtures/mscgen/file1.msc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mscgen/file1.msc


--------------------------------------------------------------------------------
/fixtures/mscgen/file1.mscgen:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mscgen/file1.mscgen


--------------------------------------------------------------------------------
/fixtures/mscgen/file1.mscin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mscgen/file1.mscin


--------------------------------------------------------------------------------
/fixtures/mscgen/file1.msgenny:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mscgen/file1.msgenny


--------------------------------------------------------------------------------
/fixtures/mscgen/file1.xu:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mscgen/file1.xu


--------------------------------------------------------------------------------
/fixtures/mscgen/file2.msc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mscgen/file2.msc


--------------------------------------------------------------------------------
/fixtures/mscgen/file2.mscgen:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mscgen/file2.mscgen


--------------------------------------------------------------------------------
/fixtures/mscgen/file2.mscin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mscgen/file2.mscin


--------------------------------------------------------------------------------
/fixtures/mscgen/file2.msgenny:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mscgen/file2.msgenny


--------------------------------------------------------------------------------
/fixtures/mscgen/file2.xu:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mscgen/file2.xu


--------------------------------------------------------------------------------
/fixtures/mumps/file1.mps:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mumps/file1.mps


--------------------------------------------------------------------------------
/fixtures/mumps/file2.mps:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/mumps/file2.mps


--------------------------------------------------------------------------------
/fixtures/nsis/file1.nsh:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/nsis/file1.nsh


--------------------------------------------------------------------------------
/fixtures/nsis/file1.nsi:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/nsis/file1.nsi


--------------------------------------------------------------------------------
/fixtures/nsis/file2.nsh:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/nsis/file2.nsh


--------------------------------------------------------------------------------
/fixtures/nsis/file2.nsi:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/nsis/file2.nsi


--------------------------------------------------------------------------------
/fixtures/ntriples/file1.nt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/ntriples/file1.nt


--------------------------------------------------------------------------------
/fixtures/ntriples/file2.nt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/ntriples/file2.nt


--------------------------------------------------------------------------------
/fixtures/null/file1.conf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/null/file1.conf


--------------------------------------------------------------------------------
/fixtures/null/file1.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/null/file1.def


--------------------------------------------------------------------------------
/fixtures/null/file1.list:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/null/file1.list


--------------------------------------------------------------------------------
/fixtures/null/file1.text:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/null/file1.text


--------------------------------------------------------------------------------
/fixtures/null/file1.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/null/file1.txt


--------------------------------------------------------------------------------
/fixtures/null/file2.conf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/null/file2.conf


--------------------------------------------------------------------------------
/fixtures/null/file2.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/null/file2.def


--------------------------------------------------------------------------------
/fixtures/null/file2.list:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/null/file2.list


--------------------------------------------------------------------------------
/fixtures/null/file2.text:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/null/file2.text


--------------------------------------------------------------------------------
/fixtures/null/file2.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/null/file2.txt


--------------------------------------------------------------------------------
/fixtures/octave/file1.m:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/octave/file1.m


--------------------------------------------------------------------------------
/fixtures/octave/file2.m:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/octave/file2.m


--------------------------------------------------------------------------------
/fixtures/oz/file1.oz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/oz/file1.oz


--------------------------------------------------------------------------------
/fixtures/oz/file2.oz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/oz/file2.oz


--------------------------------------------------------------------------------
/fixtures/pascal/file1.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/pascal/file1.p


--------------------------------------------------------------------------------
/fixtures/pascal/file1.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/pascal/file1.pas


--------------------------------------------------------------------------------
/fixtures/pascal/file2.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/pascal/file2.p


--------------------------------------------------------------------------------
/fixtures/pascal/file2.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/pascal/file2.pas


--------------------------------------------------------------------------------
/fixtures/pegjs/file1.jsonld:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/pegjs/file1.jsonld


--------------------------------------------------------------------------------
/fixtures/pegjs/file2.jsonld:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/pegjs/file2.jsonld


--------------------------------------------------------------------------------
/fixtures/php/file1.php3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/php/file1.php3


--------------------------------------------------------------------------------
/fixtures/php/file1.php4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/php/file1.php4


--------------------------------------------------------------------------------
/fixtures/php/file1.php5:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/php/file1.php5


--------------------------------------------------------------------------------
/fixtures/php/file1.phtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/php/file1.phtml


--------------------------------------------------------------------------------
/fixtures/php/file2.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | namespace Bernard\Queue;
 4 | 
 5 | use Bernard\Envelope;
 6 | use SplQueue;
 7 | 
 8 | /**
 9 |  * Wrapper around SplQueue
10 |  *
11 |  * @package Bernard
12 |  */
13 | class InMemoryQueue extends AbstractQueue
14 | {
15 |     protected $queue;
16 | 
17 |     /**
18 |      * {@inheritDoc}
19 |      */
20 |     public function __construct($name)
21 |     {
22 |         parent::__construct($name);
23 | 
24 |         $this->queue = new SplQueue;
25 |         $this->queue->setIteratorMode(SplQueue::IT_MODE_DELETE | SplQueue::IT_MODE_FIFO);
26 |     }
27 | 
28 |     /**
29 |      * {@inheritDoc}
30 |      */
31 |     public function count()
32 |     {
33 |         $this->errorIfClosed();
34 | 
35 |         return $this->queue->count();
36 |     }
37 | 
38 |     /**
39 |      * {@inheritDoc}
40 |      */
41 |     public function enqueue(Envelope $envelope)
42 |     {
43 |         $this->errorIfClosed();
44 | 
45 |         $this->queue->enqueue($envelope);
46 |     }
47 | 
48 |     /**
49 |      * {@inheritDoc}
50 |      */
51 |     public function dequeuez()
52 |     {
53 | 
54 |         usleep(10000);
55 | 
56 |         return null;
57 |     }
58 | }


--------------------------------------------------------------------------------
/fixtures/php/file2.php3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/php/file2.php3


--------------------------------------------------------------------------------
/fixtures/php/file2.php4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/php/file2.php4


--------------------------------------------------------------------------------
/fixtures/php/file2.php5:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/php/file2.php5


--------------------------------------------------------------------------------
/fixtures/php/file2.phtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/php/file2.phtml


--------------------------------------------------------------------------------
/fixtures/pig/file1.pig:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/pig/file1.pig


--------------------------------------------------------------------------------
/fixtures/pig/file2.pig:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/pig/file2.pig


--------------------------------------------------------------------------------
/fixtures/powershell/file1.ps1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/powershell/file1.ps1


--------------------------------------------------------------------------------
/fixtures/powershell/file1.psd1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/powershell/file1.psd1


--------------------------------------------------------------------------------
/fixtures/powershell/file1.psm1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/powershell/file1.psm1


--------------------------------------------------------------------------------
/fixtures/powershell/file2.ps1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/powershell/file2.ps1


--------------------------------------------------------------------------------
/fixtures/powershell/file2.psd1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/powershell/file2.psd1


--------------------------------------------------------------------------------
/fixtures/powershell/file2.psm1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/powershell/file2.psm1


--------------------------------------------------------------------------------
/fixtures/properties/file1.in:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/properties/file1.in


--------------------------------------------------------------------------------
/fixtures/properties/file1.ini:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/properties/file1.ini


--------------------------------------------------------------------------------
/fixtures/properties/file1.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/properties/file1.properties


--------------------------------------------------------------------------------
/fixtures/properties/file2.in:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/properties/file2.in


--------------------------------------------------------------------------------
/fixtures/properties/file2.ini:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/properties/file2.ini


--------------------------------------------------------------------------------
/fixtures/properties/file2.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/properties/file2.properties


--------------------------------------------------------------------------------
/fixtures/protobuf/file1.proto:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/protobuf/file1.proto


--------------------------------------------------------------------------------
/fixtures/protobuf/file2.proto:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/protobuf/file2.proto


--------------------------------------------------------------------------------
/fixtures/pug/file1.jade:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/pug/file1.jade


--------------------------------------------------------------------------------
/fixtures/pug/file2.jade:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/pug/file2.jade


--------------------------------------------------------------------------------
/fixtures/python/file1.BUILD:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/python/file1.BUILD


--------------------------------------------------------------------------------
/fixtures/python/file1.bzl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/python/file1.bzl


--------------------------------------------------------------------------------
/fixtures/python/file1.pxd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/python/file1.pxd


--------------------------------------------------------------------------------
/fixtures/python/file1.pxi:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/python/file1.pxi


--------------------------------------------------------------------------------
/fixtures/python/file1.py:
--------------------------------------------------------------------------------
 1 | # hello
 2 | 
 3 | 
 4 | def hello():
 5 |     print("hello")
 6 | 
 7 | 
 8 | def hello1():
 9 |     print("hello")
10 | 
11 | 
12 | def hello3():
13 |     print("hello")
14 | 
15 | 
16 | class A(object):
17 |     def __init__(self):
18 |         print("qwe")
19 |         self.test = None
20 |         if self.test:
21 |             print(self.test)
22 | 
23 |     def hello4(self):
24 |         pass
25 | 
26 | 
27 | if __name__ == "__main__":
28 |     a = A()
29 | 


--------------------------------------------------------------------------------
/fixtures/python/file1.pyw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/python/file1.pyw


--------------------------------------------------------------------------------
/fixtures/python/file1.pyx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/python/file1.pyx


--------------------------------------------------------------------------------
/fixtures/python/file2.BUILD:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/python/file2.BUILD


--------------------------------------------------------------------------------
/fixtures/python/file2.bzl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/python/file2.bzl


--------------------------------------------------------------------------------
/fixtures/python/file2.pxd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/python/file2.pxd


--------------------------------------------------------------------------------
/fixtures/python/file2.pxi:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/python/file2.pxi


--------------------------------------------------------------------------------
/fixtures/python/file2.py:
--------------------------------------------------------------------------------
 1 | # hello
 2 | 
 3 | 
 4 | def hello():
 5 |     print("hello")
 6 | 
 7 | 
 8 | def hello1():
 9 |     print("hello")
10 | 
11 | 
12 | def hello3():
13 |     print("hello")
14 | 
15 | 
16 | class A(object):
17 |     def __init__(self):
18 |         print("qwe")
19 |         self.test = None
20 |         if self.test:
21 |             print(self.test)
22 | 
23 |     def hello4(self):
24 |         pass
25 | 
26 |     def hello5(self):
27 |         pass
28 | 
29 | 
30 | if __name__ == "__main__":
31 |     a = A()
32 | 


--------------------------------------------------------------------------------
/fixtures/python/file2.pyw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/python/file2.pyw


--------------------------------------------------------------------------------
/fixtures/python/file2.pyx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/python/file2.pyx


--------------------------------------------------------------------------------
/fixtures/q/file1.q:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/q/file1.q


--------------------------------------------------------------------------------
/fixtures/q/file2.q:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/q/file2.q


--------------------------------------------------------------------------------
/fixtures/rpm/file1.spec:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/rpm/file1.spec


--------------------------------------------------------------------------------
/fixtures/rpm/file2.spec:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/rpm/file2.spec


--------------------------------------------------------------------------------
/fixtures/rst/file1.rst:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/rst/file1.rst


--------------------------------------------------------------------------------
/fixtures/rst/file2.rst:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/rst/file2.rst


--------------------------------------------------------------------------------
/fixtures/ruby/file1.rb:
--------------------------------------------------------------------------------
 1 | require 'json'
 2 | require 'scan/manager'
 3 | require 'scan/options'
 4 | require 'scan/runner'
 5 | require 'scan/detect_values'
 6 | require 'scan/test_command_generator'
 7 | require 'scan/xcpretty_reporter_options_generator.rb'
 8 | require 'scan/test_result_parser'
 9 | require 'scan/error_handler'
10 | require 'scan/slack_poster'
11 | 
12 | require 'fastlane_core'
13 | 
14 | module Scan
15 |   class << self
16 |     attr_accessor :config
17 | 
18 |     attr_accessor :project
19 | 
20 |     attr_accessor :cache
21 | 
22 |     attr_accessor :devices
23 | 
24 |     def config=(value)
25 |       @config = value
26 |       DetectValues.set_additional_default_values
27 |       @cache = {}
28 |     end
29 | 
30 |     def scanfile_name
31 |       "Scanfile"
32 |     end
33 |   end
34 | 
35 |   Helper = FastlaneCore::Helper # you gotta love Ruby: Helper.* should use the Helper class contained in FastlaneCore
36 |   UI = FastlaneCore::UI
37 |   ROOT = Pathname.new(File.expand_path('../..', __FILE__))
38 | 
39 |   DESCRIPTION = "The easiest way to run tests of your iOS and Mac app"
40 | end


--------------------------------------------------------------------------------
/fixtures/ruby/file2.rb:
--------------------------------------------------------------------------------
 1 | require 'json'
 2 | require 'scan/manager'
 3 | require 'scan/options'
 4 | require 'scan/runner'
 5 | require 'scan/detect_values'
 6 | require 'scan/test_command_generator'
 7 | require 'scan/xcpretty_reporter_options_generator.rb'
 8 | require 'scan/test_result_parser'
 9 | require 'scan/error_handler'
10 | require 'scan/slack_poster'
11 | 
12 | require 'fastlane_core'
13 | 
14 | module Scan
15 |   class << self
16 |     attr_accessor :config
17 | 
18 |     attr_accessor :project
19 | 
20 |     attr_accessor :cache
21 | 
22 |     attr_accessor :devices
23 | 
24 |     def config=(value)
25 |       @config = value
26 |       DetectValues.set_additional_default_values
27 |       @cache = {}
28 |     end
29 | 
30 |     def scanfile_name
31 |       "Scanfile"
32 |     end
33 |   end
34 | 
35 |   Helper = FastlaneCore::Helper # you gotta love Ruby: Helper.* should use the Helper class contained in FastlaneCore
36 |   UI = FastlaneCore::UI
37 |   ROOT = Pathname.new(File.expand_path('../..', __FILE__))
38 | 
39 |   DESCRIPTION = "The easiest way to run tests of your iOS and Mac app"
40 | end


--------------------------------------------------------------------------------
/fixtures/sas/file1.sas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/sas/file1.sas


--------------------------------------------------------------------------------
/fixtures/sas/file2.sas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/sas/file2.sas


--------------------------------------------------------------------------------
/fixtures/sass/file1.sass:
--------------------------------------------------------------------------------
 1 | //hello
 2 | 
 3 | $linkColor: #00F
 4 | 
 5 | a
 6 |   color: $linkColor
 7 | 
 8 | @mixin border-radius($radius,$border,$color)
 9 |   -webkit-border-radius: $radius
10 |     -moz-border-radius: $radius
11 |       -ms-border-radius: $radius
12 |         border-radius: $radius
13 |     border: $border solid $color
14 | 
15 | 
16 | .box
17 |   @include border-radius(10 px, 1 px, red)
18 | 
19 | $linkColor: #00F
20 | 
21 | a
22 |   color: $linkColor
23 | 
24 | @mixin border-radius($radius,$border,$color)
25 |   -webkit-border-radius: $radius
26 |     -moz-border-radius: $radius
27 |       -ms-border-radius: $radius
28 |         border-radius: $radius
29 |     border: $border solid $color
30 | 
31 | 
32 | .box
33 |   @include border-radius(10 px, 1 px, red)
34 | 
35 | 
36 | #header
37 |   background: #FFFFFF
38 | 
39 |   .error
40 |     color: #FF0000
41 | 
42 |   a
43 |     text-decoration: none
44 |     &:hover
45 |       text-decoration: underline
46 | 


--------------------------------------------------------------------------------
/fixtures/sass/file2.sass:
--------------------------------------------------------------------------------
 1 | //hello
 2 | 
 3 | $linkColor: #00F
 4 | 
 5 | a
 6 |   color: $linkColor
 7 | 
 8 | @mixin border-radius($radius,$border,$color)
 9 |   -webkit-border-radius: $radius
10 |     -moz-border-radius: $radius
11 |       -ms-border-radius: $radius
12 |         border-radius: $radius
13 |     border: $border solid $color
14 | 
15 | 
16 | .box
17 |   @include border-radius(10 px, 1 px, red)
18 | 
19 | $linkColor: #00F
20 | 
21 | 
22 | //hello comment
23 | 
24 | a
25 |   color: $linkColor
26 | 
27 | @mixin border-radius($radius,$border,$color)
28 |   -webkit-border-radius: $radius
29 |     -moz-border-radius: $radius
30 |       -ms-border-radius: $radius
31 |         border-radius: $radius
32 |     border: $border solid $color
33 | 
34 | 
35 | .box
36 |   @include border-radius(10 px, 1 px, red)
37 | 
38 | 
39 | #header
40 |   background: #FFFFFF
41 | 
42 |   .error
43 |     color: #FF0000
44 | 
45 |   a
46 |     text-decoration: none
47 |     &:hover
48 |       text-decoration: underline
49 | 


--------------------------------------------------------------------------------
/fixtures/scheme/file1.scm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/scheme/file1.scm


--------------------------------------------------------------------------------
/fixtures/scheme/file1.ss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/scheme/file1.ss


--------------------------------------------------------------------------------
/fixtures/scheme/file2.scm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/scheme/file2.scm


--------------------------------------------------------------------------------
/fixtures/scheme/file2.ss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/scheme/file2.ss


--------------------------------------------------------------------------------
/fixtures/shell/file1.bash:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/shell/file1.bash


--------------------------------------------------------------------------------
/fixtures/shell/file1.ksh:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/shell/file1.ksh


--------------------------------------------------------------------------------
/fixtures/shell/file1.sh:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/shell/file1.sh


--------------------------------------------------------------------------------
/fixtures/shell/file2.bash:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/shell/file2.bash


--------------------------------------------------------------------------------
/fixtures/shell/file2.ksh:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/shell/file2.ksh


--------------------------------------------------------------------------------
/fixtures/shell/file2.sh:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/shell/file2.sh


--------------------------------------------------------------------------------
/fixtures/sieve/file1.sieve:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/sieve/file1.sieve


--------------------------------------------------------------------------------
/fixtures/sieve/file1.siv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/sieve/file1.siv


--------------------------------------------------------------------------------
/fixtures/sieve/file2.sieve:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/sieve/file2.sieve


--------------------------------------------------------------------------------
/fixtures/sieve/file2.siv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/sieve/file2.siv


--------------------------------------------------------------------------------
/fixtures/slim/file1.slim:
--------------------------------------------------------------------------------
 1 | doctype html
 2 | html
 3 |   head
 4 |     title Slim Examples
 5 |     meta name="keywords" content="template language"
 6 |     meta name="author" content=author
 7 |     javascript:
 8 |         alert('Slim supports embedded javascript!')
 9 | 
10 |   body
11 |     h1 Markup examples
12 | 
13 |     #content
14 |       p This example shows you what a basic Slim file looks like.
15 | 
16 |       == yield
17 | 
18 |       - unless items.empty?
19 |         table
20 |           - items.each do |item|
21 |             tr
22 |               td.name = item.name
23 |               td.price = item.price
24 |       - else
25 |         p
26 |          | No items found.  Please add some inventory.
27 |            Thank you!
28 | 
29 |     div id="footer"
30 |       = render 'footer'
31 |       | Copyright © #{year} #{author}
32 | 
33 |     div id="footer1"
34 |       = render 'footer'
35 |       | Copyright © #{year} #{author}


--------------------------------------------------------------------------------
/fixtures/slim/file2.slim:
--------------------------------------------------------------------------------
 1 | doctype html
 2 | html
 3 |   head
 4 |     title Slim Examples
 5 |     meta name="keywords" content="template language"
 6 |     meta name="author" content=author
 7 |     javascript:
 8 |         alert('Slim supports embedded javascript!')
 9 | 
10 |   body
11 |     h1 Markup examples
12 | 
13 |     #content
14 |       p This example shows you what a basic Slim file looks like.
15 | 
16 |       == yield
17 | 
18 |       - unless items.empty?
19 |         table
20 |           - items.each do |item|
21 |             tr
22 |               td.name = item.name
23 |               td.price = item.price
24 |       - else
25 |         p
26 |          | No items found.  Please add some inventory.
27 |            Thank you!
28 | 
29 |     div id="footer"
30 |       = render 'footer'
31 |       | Copyright © #{year} #{author}


--------------------------------------------------------------------------------
/fixtures/smalltalk/file1.st:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/smalltalk/file1.st


--------------------------------------------------------------------------------
/fixtures/smalltalk/file2.st:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/smalltalk/file2.st


--------------------------------------------------------------------------------
/fixtures/smarty/file1.tpl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/smarty/file1.tpl


--------------------------------------------------------------------------------
/fixtures/smarty/file2.tpl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/smarty/file2.tpl


--------------------------------------------------------------------------------
/fixtures/soy/file1.soy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/soy/file1.soy


--------------------------------------------------------------------------------
/fixtures/soy/file2.soy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/soy/file2.soy


--------------------------------------------------------------------------------
/fixtures/sparql/file1.rq:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/sparql/file1.rq


--------------------------------------------------------------------------------
/fixtures/sparql/file1.sparql:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/sparql/file1.sparql


--------------------------------------------------------------------------------
/fixtures/sparql/file2.rq:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/sparql/file2.rq


--------------------------------------------------------------------------------
/fixtures/sparql/file2.sparql:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/sparql/file2.sparql


--------------------------------------------------------------------------------
/fixtures/sql/file1.cql:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/sql/file1.cql


--------------------------------------------------------------------------------
/fixtures/sql/file1.pls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/sql/file1.pls


--------------------------------------------------------------------------------
/fixtures/sql/file1.sql:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/sql/file1.sql


--------------------------------------------------------------------------------
/fixtures/sql/file2.cql:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/sql/file2.cql


--------------------------------------------------------------------------------
/fixtures/sql/file2.pls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/sql/file2.pls


--------------------------------------------------------------------------------
/fixtures/sql/file2.sql:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/sql/file2.sql


--------------------------------------------------------------------------------
/fixtures/stex/file1.ltx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/stex/file1.ltx


--------------------------------------------------------------------------------
/fixtures/stex/file1.text:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/stex/file1.text


--------------------------------------------------------------------------------
/fixtures/stex/file2.ltx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/stex/file2.ltx


--------------------------------------------------------------------------------
/fixtures/stex/file2.text:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/stex/file2.text


--------------------------------------------------------------------------------
/fixtures/stylus/file1.styl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/stylus/file1.styl


--------------------------------------------------------------------------------
/fixtures/stylus/file2.styl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/stylus/file2.styl


--------------------------------------------------------------------------------
/fixtures/swift/file1.swift:
--------------------------------------------------------------------------------
 1 | //
 2 | //  SwiftMath.swift
 3 | //  TSwift
 4 | //
 5 | //  Created by Hunk on 14-6-8.
 6 | //  Copyright (c) 2014年 Hunk. All rights reserved.
 7 | //
 8 | 
 9 | import Foundation
10 | 
11 | class SwiftMath : NSObject
12 | {
13 |     var name : String?
14 |     init(name: String)
15 |     {
16 |         self.name = name
17 | 
18 |         println(self.name)
19 |     }
20 | 
21 |     func sum(num1 :Int, num2 :Int) -> Int
22 |     {
23 |         return (num1 + num2)
24 |     }
25 | 
26 |     func multiply(num1: Int, num2 :Int) -> Int
27 |     {
28 |         return num1 * num2
29 |     }
30 | }
31 | 


--------------------------------------------------------------------------------
/fixtures/swift/file2.swift:
--------------------------------------------------------------------------------
 1 | 
 2 | import Foundation
 3 | 
 4 | class SwiftMath : NSObject
 5 | {
 6 |     var name : String?
 7 |     init(name: String)
 8 |     {
 9 |         self.name = name
10 | 
11 |         println(self.name)
12 |     }
13 | 
14 |     func sum(num1 :Int, num2 :Int) -> Int
15 |     {
16 |         return (num1 + num2)
17 |     }
18 | 
19 |     func multiply(num1: Int, num2 :Int) -> Int
20 |     {
21 |         return num1 * num2
22 |     }
23 | 
24 |     func multiply_1(num1: Int, num2 :Int) -> Int
25 |     {
26 |         return num1 * num2
27 |     }
28 | }
29 | 


--------------------------------------------------------------------------------
/fixtures/tcl/file1.tcl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/tcl/file1.tcl


--------------------------------------------------------------------------------
/fixtures/tcl/file2.tcl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/tcl/file2.tcl


--------------------------------------------------------------------------------
/fixtures/text/file1.txt:
--------------------------------------------------------------------------------
 1 | Волхвы пришли. Младенец крепко спал.
 2 | Звезда светила ярко с небосвода.
 3 | Холодный ветер снег в сугроб сгребал.
 4 | Шуршал песок. Костер трещал у входа.
 5 | Дым шел свечой. Огонь вился крючком.
 6 | И тени становились то короче,
 7 | то вдруг длинней. Никто не знал кругом,
 8 | что жизни счет начнется с этой ночи.
 9 | Волхвы пришли. Младенец крепко спал.
10 | Крутые своды ясли окружали.
11 | Кружился снег. Клубился белый пар.
12 | Лежал младенец, и дары лежали.
13 | 


--------------------------------------------------------------------------------
/fixtures/textile/file1.textile:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/textile/file1.textile


--------------------------------------------------------------------------------
/fixtures/textile/file2.textile:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/textile/file2.textile


--------------------------------------------------------------------------------
/fixtures/toml/file1.toml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/toml/file1.toml


--------------------------------------------------------------------------------
/fixtures/toml/file2.toml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/toml/file2.toml


--------------------------------------------------------------------------------
/fixtures/troff/file1.1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/troff/file1.1


--------------------------------------------------------------------------------
/fixtures/troff/file1.2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/troff/file1.2


--------------------------------------------------------------------------------
/fixtures/troff/file1.3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/troff/file1.3


--------------------------------------------------------------------------------
/fixtures/troff/file1.4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/troff/file1.4


--------------------------------------------------------------------------------
/fixtures/troff/file1.5:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/troff/file1.5


--------------------------------------------------------------------------------
/fixtures/troff/file1.6:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/troff/file1.6


--------------------------------------------------------------------------------
/fixtures/troff/file1.7:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/troff/file1.7


--------------------------------------------------------------------------------
/fixtures/troff/file1.8:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/troff/file1.8


--------------------------------------------------------------------------------
/fixtures/troff/file1.9:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/troff/file1.9


--------------------------------------------------------------------------------
/fixtures/troff/file2.1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/troff/file2.1


--------------------------------------------------------------------------------
/fixtures/troff/file2.2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/troff/file2.2


--------------------------------------------------------------------------------
/fixtures/troff/file2.3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/troff/file2.3


--------------------------------------------------------------------------------
/fixtures/troff/file2.4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/troff/file2.4


--------------------------------------------------------------------------------
/fixtures/troff/file2.5:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/troff/file2.5


--------------------------------------------------------------------------------
/fixtures/troff/file2.6:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/troff/file2.6


--------------------------------------------------------------------------------
/fixtures/troff/file2.7:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/troff/file2.7


--------------------------------------------------------------------------------
/fixtures/troff/file2.8:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/troff/file2.8


--------------------------------------------------------------------------------
/fixtures/troff/file2.9:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/troff/file2.9


--------------------------------------------------------------------------------
/fixtures/ttcn-cfg/file1.cfg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/ttcn-cfg/file1.cfg


--------------------------------------------------------------------------------
/fixtures/ttcn-cfg/file2.cfg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/ttcn-cfg/file2.cfg


--------------------------------------------------------------------------------
/fixtures/ttcn/file1.ttcn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/ttcn/file1.ttcn


--------------------------------------------------------------------------------
/fixtures/ttcn/file1.ttcn3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/ttcn/file1.ttcn3


--------------------------------------------------------------------------------
/fixtures/ttcn/file1.ttcnpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/ttcn/file1.ttcnpp


--------------------------------------------------------------------------------
/fixtures/ttcn/file2.ttcn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/ttcn/file2.ttcn


--------------------------------------------------------------------------------
/fixtures/ttcn/file2.ttcn3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/ttcn/file2.ttcn3


--------------------------------------------------------------------------------
/fixtures/ttcn/file2.ttcnpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/ttcn/file2.ttcnpp


--------------------------------------------------------------------------------
/fixtures/turtle/file1.ttl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/turtle/file1.ttl


--------------------------------------------------------------------------------
/fixtures/turtle/file2.ttl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/turtle/file2.ttl


--------------------------------------------------------------------------------
/fixtures/twig/file_1.twig:
--------------------------------------------------------------------------------
 1 | {% extends "layout.html" %}
 2 | {% block title %}The Page Title{% endblock %}
 3 | {% block body %}
 4 |   <p>Hello World</p>
 5 |   <ul>
 6 |   {% for item in seq %}
 7 |     <li>${item|escape}</li>
 8 |     <li>${item|escape}</li>
 9 |     <li>${item|escape}</li>
10 |     <li>${item|escape}</li>
11 |   {% endfor %}
12 |   </ul>
13 |   <p>{% super %}</p>
14 |   <div class="fromhelper">
15 |     {% include "helper.html" %}
16 |   </div>
17 |  <div class="fromhelper">
18 |     {% include "helper.html" %}
19 |   </div>
20 |  <div class="fromhelper">
21 |     {% include "helper.html" %}
22 |   </div>
23 |  <div class="fromhelper">
24 |     {% include "helper.html" %}
25 |   </div>
26 |  <div class="fromhelper">
27 |     {% include "helper.html" %}
28 |   </div>
29 | {% endblock %}
30 | 


--------------------------------------------------------------------------------
/fixtures/twig/file_2.twig:
--------------------------------------------------------------------------------
 1 | {% extends "layout.html" %}
 2 | {% block title %}The Page Title{% endblock %}
 3 | {% block body %}
 4 |   <p>Hello World</p>
 5 |   <ul>
 6 |   {% for item in seq %}
 7 |     <li>${item|escape}</li>
 8 |     <li>${item|escape}</li>
 9 |     <li>${item|escape}</li>
10 |     <li>${item|escape}</li>
11 |   {% endfor %}
12 |   </ul>
13 |   <p>{% super %}</p>
14 |   <div class="fromhelper">
15 |     {% include "helper.html" %}
16 |   </div>
17 |  <div class="fromhelper">
18 |     {% include "helper.html" %}
19 |   </div>
20 |  <div class="fromhelper">
21 |     {% include "helper.html" %}
22 |   </div>
23 |  <div class="fromhelper">
24 |     {% include "helper.html" %}
25 |   </div>
26 |  <div class="fromhelper">
27 |     {% include "helper.html" %}
28 |   </div>
29 |  <div class="fromhelper">
30 |     {% include "helper.html" %}
31 |   </div>
32 | {% endblock %}
33 | 


--------------------------------------------------------------------------------
/fixtures/vb/file1.vb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/vb/file1.vb


--------------------------------------------------------------------------------
/fixtures/vb/file2.vb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/vb/file2.vb


--------------------------------------------------------------------------------
/fixtures/vbscript/file1.vbs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/vbscript/file1.vbs


--------------------------------------------------------------------------------
/fixtures/vbscript/file2.vbs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/vbscript/file2.vbs


--------------------------------------------------------------------------------
/fixtures/velocity/file1.vtl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/velocity/file1.vtl


--------------------------------------------------------------------------------
/fixtures/velocity/file2.vtl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/velocity/file2.vtl


--------------------------------------------------------------------------------
/fixtures/verilog/file1.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/verilog/file1.v


--------------------------------------------------------------------------------
/fixtures/verilog/file2.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/verilog/file2.v


--------------------------------------------------------------------------------
/fixtures/vhdl/file1.vhd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/vhdl/file1.vhd


--------------------------------------------------------------------------------
/fixtures/vhdl/file1.vhdl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/vhdl/file1.vhdl


--------------------------------------------------------------------------------
/fixtures/vhdl/file2.vhd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/vhdl/file2.vhd


--------------------------------------------------------------------------------
/fixtures/vhdl/file2.vhdl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/vhdl/file2.vhdl


--------------------------------------------------------------------------------
/fixtures/webidl/file1.webidl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/webidl/file1.webidl


--------------------------------------------------------------------------------
/fixtures/webidl/file2.webidl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/webidl/file2.webidl


--------------------------------------------------------------------------------
/fixtures/xml/file1.xml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/xml/file1.xml


--------------------------------------------------------------------------------
/fixtures/xml/file1.xsd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/xml/file1.xsd


--------------------------------------------------------------------------------
/fixtures/xml/file2.xml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/xml/file2.xml


--------------------------------------------------------------------------------
/fixtures/xml/file2.xsd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/xml/file2.xsd


--------------------------------------------------------------------------------
/fixtures/xquery/file1.xquery:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/xquery/file1.xquery


--------------------------------------------------------------------------------
/fixtures/xquery/file1.xy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/xquery/file1.xy


--------------------------------------------------------------------------------
/fixtures/xquery/file2.xquery:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/xquery/file2.xquery


--------------------------------------------------------------------------------
/fixtures/xquery/file2.xy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/xquery/file2.xy


--------------------------------------------------------------------------------
/fixtures/yacas/file1.ys:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/yacas/file1.ys


--------------------------------------------------------------------------------
/fixtures/yacas/file2.ys:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/yacas/file2.ys


--------------------------------------------------------------------------------
/fixtures/yaml/file1.yaml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/yaml/file1.yaml


--------------------------------------------------------------------------------
/fixtures/yaml/file1.yml:
--------------------------------------------------------------------------------
 1 | auth-source-ldap:
 2 |   - name: ldap-is-not-web-scale
 3 |     host: 10.11.12.13
 4 |     port: 389
 5 |     account: uid=binduser,cn=users,dc=test,dc=example,dc=com
 6 |     account-password: 123qwe
 7 |     base-dn: dc=test,dc=example,dc=com
 8 |     attr-login: uid
 9 |     attr-firstname: firstName
10 |     attr-lastname: lastName
11 |     attr-mail: mail
12 |     attr-photo: picture
13 |     onthefly-register: false
14 |     usergroup-sync: false
15 |     tls: false
16 |     groups-base: cn=groups,dc=test,dc=example,dc=com
17 |     ldap-filter:
18 |     server-type: posix
19 |     usergroup-sync1: false
20 |     tls2: false
21 |     groups-base3: cn=groups,dc=test,dc=example,dc=com
22 |     ldap-filter4:
23 |     server-type5: posix
24 | 


--------------------------------------------------------------------------------
/fixtures/yaml/file2.yaml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kucherenko/jscpd/e8381ad59d3b0b8d8699b3c3e63df8f5ba56161e/fixtures/yaml/file2.yaml


--------------------------------------------------------------------------------
/fixtures/yaml/file2.yml:
--------------------------------------------------------------------------------
 1 | auth-source-ldap:
 2 |   - name: ldap-is-not-web-scale
 3 |     host: 10.11.12.13
 4 |     port: 389
 5 |     account: uid=binduser,cn=users,dc=test,dc=example,dc=com
 6 |     account-password: 123qwe
 7 |     base-dn: dc=test,dc=example,dc=com
 8 |     attr-login: uid
 9 |     attr-firstname: firstName
10 |     attr-lastname: lastName
11 |     attr-mail: mail
12 |     attr-photo: picture
13 |     onthefly-register: false
14 |     usergroup-sync: false
15 |     tls: false
16 |     groups-base: cn=groups,dc=test,dc=example,dc=com
17 |     ldap-filter:
18 |     server-type: posix
19 | 


--------------------------------------------------------------------------------
/fixtures/z80/file1.z80:
--------------------------------------------------------------------------------
 1 | #include    "ti83plus.inc"
 2 | #define     progStart   $9D95
 3 |     .org progStart-2
 4 |     .db $BB,$6D
 5 | 
 6 |     bcall(_ClrLCDFull)
 7 |     ld hl,0
 8 |     ld (CurCol),hl
 9 |     ld hl,Message
10 |     bcall(_PutS) ; Displays the string
11 |     bcall(_NewLine)
12 |     ret
13 | Message:
14 |     .db "Hello world!",0


--------------------------------------------------------------------------------
/fixtures/z80/file2.z80:
--------------------------------------------------------------------------------
 1 | #include    "ti83plus.inc"
 2 | #define     progStart   $9D95
 3 |     .org progStart-2
 4 |     .db $BB,$6D
 5 | 
 6 |     bcall(_ClrLCDFull)
 7 |     ld hl,0
 8 |     ld (CurCol),hl
 9 |     ld hl,Message
10 |     bcall(_PutS) ; Displays the string
11 |     bcall(_NewLine)
12 |     ret
13 | Message:
14 |     .db "Hello world!",0


--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "name": "jscpd-monorepo",
 3 |   "private": true,
 4 |   "npmClient": "yarn",
 5 |   "useWorkspaces": true,
 6 |   "version": "4.0.0-rc.0",
 7 |   "scripts": {
 8 |     "build": "turbo run build",
 9 |     "commit": "cz",
10 |     "generate": "turbo run generate",
11 |     "dev": "turbo run dev --parallel",
12 |     "lint": "turbo run lint",
13 |     "lint:fix": "turbo run lint:fix",
14 |     "test": "turbo run test",
15 |     "cleanup": "turbo run cleanup",
16 |     "typecheck": "turbo run typecheck",
17 |     "publish-packages": "changeset version && changeset publish"
18 |   },
19 |   "devDependencies": {
20 |     "@changesets/cli": "^2.27.7",
21 |     "commitizen": "^4.3.0",
22 |     "cz-conventional-changelog": "^3.3.0",
23 |     "turbo": "^1.13.3"
24 |   },
25 |   "config": {
26 |     "commitizen": {
27 |       "path": "cz-conventional-changelog"
28 |     }
29 |   },
30 |   "readmeFilename": "README.md",
31 |   "dependencies": {
32 |     "@vitest/coverage-v8": "^2.0.5"
33 |   }
34 | }
35 | 


--------------------------------------------------------------------------------
/packages/badge-reporter/CHANGELOG.md:
--------------------------------------------------------------------------------
 1 | # @jscpd/badge-reporter
 2 | 
 3 | ## 4.0.1
 4 | 
 5 | ### Patch Changes
 6 | 
 7 | - f50a42d: publish first public version in v4
 8 | 
 9 | ## 4.0.0
10 | 
11 | ### Major Changes
12 | 
13 | - aac6f4e: make great refactoring of the code, update versions of packages (typescript, pug, etc), change builder - use tsup, change test runner to vitest, move monorepo from lerna to turborepo, add changeset as tool for releases
14 | 


--------------------------------------------------------------------------------
/packages/badge-reporter/LICENSE:
--------------------------------------------------------------------------------
 1 | The MIT License (MIT)
 2 | 
 3 | Copyright (c) 2013-2020 Andrey Kucherenko
 4 | 
 5 | Permission is hereby granted, free of charge, to any person obtaining a copy
 6 | of this software and associated documentation files (the "Software"), to deal
 7 | in the Software without restriction, including without limitation the rights
 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 | 
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 | 
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 | 


--------------------------------------------------------------------------------
/packages/badge-reporter/README.md:
--------------------------------------------------------------------------------
 1 | # `@jscpd/badge-reporter`
 2 | 
 3 | > The badge reporter for [jscpd](https://github.com/kucherenko/jscpd).
 4 | 
 5 | Generate badges like that:
 6 | 
 7 | ![jscpd-badge-green](https://raw.githubusercontent.com/kucherenko/jscpd/master/assets/jscpd-badge.svg?sanitize=true)
 8 | 
 9 | ## Getting started
10 | 
11 | ### Install
12 | 
13 | ```bash
14 | npm install @jscpd/badge-reporter
15 | ```
16 | 
17 | ### Usage
18 | 
19 | ```bash
20 | jscpd [...options] --reporters badge /path/to/source
21 | ```
22 | 
23 | ### Options
24 | 
25 | ```typescript
26 | 
27 | interface IBadgeOptions {
28 |   color?: string, // color of badge, if threshold > current - green, if  threshold < current - red, no threshold provided - grey
29 |   subject?: string, // label of the badge, default "Copy/Paste"
30 |   style?: string, // "flat" of undefined, default - undefined
31 |   icon?: string, // 'data:image/svg+xml;base64,...' icon
32 |   iconWidth?: number, // width of the icon
33 |   path?: string, // path to badge, default is 'jscpd-badge.svg' in output folder
34 | }
35 | 
36 | ```
37 | 
38 | [MIT](LICENSE) © Andrey Kucherenko
39 | 


--------------------------------------------------------------------------------
/packages/badge-reporter/nodemon.json:
--------------------------------------------------------------------------------
1 | {
2 |   "$schema": "https://json.schemastore.org/nodemon.json",
3 |   "watch": ["./src/**"],
4 |   "ignoreRoot": [],
5 |   "ext": "ts,js",
6 |   "exec": "pnpm build"
7 | }
8 | 


--------------------------------------------------------------------------------
/packages/badge-reporter/tsconfig.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "extends": "@jscpd/tsconfig/pkg.json",
 3 |   "compilerOptions": {
 4 |     "outDir": "build",
 5 |     "baseUrl": "."
 6 |   },
 7 |   "include": ["src"],
 8 |   "exclude": ["dist", "bundle", "node_modules"]
 9 | }
10 | 


--------------------------------------------------------------------------------
/packages/badge-reporter/tsup.config.ts:
--------------------------------------------------------------------------------
 1 | import {defineConfig} from 'tsup'
 2 | 
 3 | export default defineConfig({
 4 |   entry: ['src/index.ts'],
 5 |   splitting: true,
 6 |   sourcemap: true,
 7 |   clean: true,
 8 |   format: ['esm', 'cjs']
 9 | })
10 | 


--------------------------------------------------------------------------------
/packages/core/.npmignore:
--------------------------------------------------------------------------------
1 | src
2 | __tests__
3 | tsconfig.json
4 | tsconfig.build.json
5 | 


--------------------------------------------------------------------------------
/packages/core/LICENSE:
--------------------------------------------------------------------------------
 1 | The MIT License (MIT)
 2 | 
 3 | Copyright (c) 2013-2020 Andrey Kucherenko
 4 | 
 5 | Permission is hereby granted, free of charge, to any person obtaining a copy
 6 | of this software and associated documentation files (the "Software"), to deal
 7 | in the Software without restriction, including without limitation the rights
 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 | 
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 | 
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 | 


--------------------------------------------------------------------------------
/packages/core/nodemon.json:
--------------------------------------------------------------------------------
1 | {
2 |   "$schema": "https://json.schemastore.org/nodemon.json",
3 |   "watch": ["./src/**"],
4 |   "ignoreRoot": [],
5 |   "ext": "ts,js",
6 |   "exec": "pnpm build"
7 | }
8 | 


--------------------------------------------------------------------------------
/packages/core/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from './interfaces';
2 | export * from './detector';
3 | export * from './mode';
4 | export * from './options';
5 | export * from './statistic';
6 | export * from './store/memory';
7 | 


--------------------------------------------------------------------------------
/packages/core/src/interfaces/blamed-lines.interface.ts:
--------------------------------------------------------------------------------
1 | export interface IBlamedLines {
2 |   [line: string]: {
3 |     rev: string;
4 |     author: string;
5 |     date: string;
6 |     line: string;
7 |   };
8 | }
9 | 


--------------------------------------------------------------------------------
/packages/core/src/interfaces/clone-validator.interface.ts:
--------------------------------------------------------------------------------
1 | import {IClone, IOptions, IValidationResult} from '..';
2 | 
3 | export interface ICloneValidator {
4 | 	validate(clone: IClone, options: IOptions): IValidationResult;
5 | }
6 | 


--------------------------------------------------------------------------------
/packages/core/src/interfaces/clone.interface.ts:
--------------------------------------------------------------------------------
 1 | import {IBlamedLines, ITokenLocation} from '..';
 2 | 
 3 | export interface IClone {
 4 | 	format: string;
 5 | 	isNew?: boolean;
 6 | 	foundDate?: number;
 7 | 	duplicationA: {
 8 | 		sourceId: string;
 9 | 		start: ITokenLocation;
10 | 		end: ITokenLocation;
11 | 		range: [number, number];
12 | 		fragment?: string;
13 | 		blame?: IBlamedLines;
14 | 	};
15 | 	duplicationB: {
16 | 		sourceId: string;
17 | 		start: ITokenLocation;
18 | 		end: ITokenLocation;
19 | 		range: [number, number];
20 | 		fragment?: string;
21 | 		blame?: IBlamedLines;
22 | 	};
23 | }
24 | 


--------------------------------------------------------------------------------
/packages/core/src/interfaces/index.ts:
--------------------------------------------------------------------------------
 1 | export * from './clone.interface';
 2 | export * from './options.interface';
 3 | export * from './statistic.interface';
 4 | export * from './subscriber.interface';
 5 | export * from './store.interface';
 6 | export * from './blamed-lines.interface';
 7 | export * from './clone-validator.interface';
 8 | export * from './validation-result.interface';
 9 | export * from './token.interface';
10 | export * from './token-location.interface';
11 | export * from './map-frame.interface';
12 | export * from './tokens-map.interface';
13 | export * from './tokenizer.interface';
14 | 


--------------------------------------------------------------------------------
/packages/core/src/interfaces/map-frame.interface.ts:
--------------------------------------------------------------------------------
 1 | import {IToken} from '.';
 2 | 
 3 | export interface IMapFrame {
 4 | 	id: string;
 5 | 	sourceId: string;
 6 | 	start: IToken;
 7 | 	end: IToken;
 8 | 	isClone?: boolean;
 9 | 	localDuplicate?: boolean;
10 | }
11 | 


--------------------------------------------------------------------------------
/packages/core/src/interfaces/options.interface.ts:
--------------------------------------------------------------------------------
 1 | export interface IOptions {
 2 |   executionId?: string;
 3 |   minLines?: number;
 4 |   maxLines?: number;
 5 |   maxSize?: string;
 6 |   minTokens?: number;
 7 |   threshold?: number;
 8 |   formatsExts?: Record<string, string[]>;
 9 |   output?: string;
10 |   path?: string[];
11 |   pattern?: string;
12 |   ignorePattern?: string[];
13 |   // eslint-disable-next-line @typescript-eslint/no-explicit-any
14 |   mode?: any;
15 |   config?: string;
16 |   ignore?: string[];
17 |   format?: string[];
18 |   store?: string;
19 |   reporters?: string[];
20 |   listeners?: string[];
21 |   blame?: boolean;
22 |   cache?: boolean;
23 |   silent?: boolean;
24 |   debug?: boolean;
25 |   verbose?: boolean;
26 | 	list?: boolean;
27 | 	absolute?: boolean;
28 | 	noSymlinks?: boolean;
29 | 	skipLocal?: boolean;
30 | 	ignoreCase?: boolean;
31 | 	gitignore?: boolean;
32 |   // eslint-disable-next-line @typescript-eslint/no-explicit-any
33 | 	reportersOptions?: Record<string, any>;
34 | 	tokensToSkip?: string[];
35 | 	hashFunction?: (value: string) => string;
36 |   exitCode?: number;
37 | }
38 | 
39 | export type TOption = keyof IOptions;
40 | 


--------------------------------------------------------------------------------
/packages/core/src/interfaces/source-validator.interface.ts:
--------------------------------------------------------------------------------
1 | import {IClone} from '..';
2 | 
3 | export interface ISourceValidator {
4 | 	validate(clone: IClone): boolean;
5 | }
6 | 


--------------------------------------------------------------------------------
/packages/core/src/interfaces/statistic.interface.ts:
--------------------------------------------------------------------------------
 1 | export interface IStatisticRow {
 2 |   lines: number;
 3 |   tokens: number;
 4 |   sources: number;
 5 |   duplicatedLines: number;
 6 |   duplicatedTokens: number;
 7 |   clones: number;
 8 |   percentage: number;
 9 |   percentageTokens: number;
10 |   newDuplicatedLines: number;
11 |   newClones: number;
12 | }
13 | 
14 | export interface IStatisticFormat {
15 | 	sources: Record<string, IStatisticRow>;
16 | 	total: IStatisticRow;
17 | }
18 | 
19 | export interface IStatistic {
20 | 	total: IStatisticRow;
21 | 	detectionDate: string;
22 | 	formats: Record<string, IStatisticFormat>;
23 | }
24 | 


--------------------------------------------------------------------------------
/packages/core/src/interfaces/store.interface.ts:
--------------------------------------------------------------------------------
 1 | export interface IStore<TValue> {
 2 | 
 3 | 	namespace(name: string): void;
 4 | 
 5 | 	get(key: string): Promise<TValue>;
 6 | 
 7 | 	set(key: string, value: TValue): Promise<TValue>;
 8 | 
 9 | 	close(): void;
10 | }
11 | 


--------------------------------------------------------------------------------
/packages/core/src/interfaces/subscriber.interface.ts:
--------------------------------------------------------------------------------
 1 | import {DetectorEvents, IClone, ITokensMap, IValidationResult} from '..';
 2 | 
 3 | export interface ISubscriber {
 4 | 	subscribe(): Partial<Record<DetectorEvents, IHandler>>;
 5 | }
 6 | 
 7 | export interface IHandler {
 8 | 	(payload: IEventPayload): void;
 9 | }
10 | 
11 | export interface IEventPayload {
12 | 	clone?: IClone;
13 | 	source?: ITokensMap;
14 | 	validation?: IValidationResult;
15 | }
16 | 


--------------------------------------------------------------------------------
/packages/core/src/interfaces/token-location.interface.ts:
--------------------------------------------------------------------------------
1 | export interface ITokenLocation {
2 |   line: number;
3 |   column?: number;
4 |   position?: number;
5 | }
6 | 


--------------------------------------------------------------------------------
/packages/core/src/interfaces/token.interface.ts:
--------------------------------------------------------------------------------
 1 | import {ITokenLocation} from '.';
 2 | 
 3 | export interface IToken {
 4 | 	type: string;
 5 | 	value: string;
 6 | 	length: number;
 7 | 	format: string;
 8 | 	range: [number, number];
 9 | 	loc?: {
10 | 		start: ITokenLocation;
11 | 		end: ITokenLocation;
12 | 	};
13 | }
14 | 


--------------------------------------------------------------------------------
/packages/core/src/interfaces/tokenizer.interface.ts:
--------------------------------------------------------------------------------
1 | import {IOptions, ITokensMap} from '.';
2 | 
3 | export interface ITokenizer {
4 |   generateMaps(id: string, data: string, format: string, options: Partial<IOptions>): ITokensMap[];
5 | }
6 | 


--------------------------------------------------------------------------------
/packages/core/src/interfaces/tokens-map.interface.ts:
--------------------------------------------------------------------------------
 1 | import {IMapFrame} from '.';
 2 | 
 3 | export interface ITokensMap {
 4 | 
 5 |   getFormat(): string;
 6 | 
 7 |   getLinesCount(): number;
 8 | 
 9 |   getTokensCount(): number;
10 | 
11 |   getId(): string;
12 | 
13 |   next(): IteratorResult<IMapFrame | boolean>;
14 | 
15 | }
16 | 


--------------------------------------------------------------------------------
/packages/core/src/interfaces/validation-result.interface.ts:
--------------------------------------------------------------------------------
1 | import {IClone} from '..';
2 | 
3 | export interface IValidationResult {
4 | 	status: boolean;
5 | 	message?: string[];
6 | 	clone?: IClone;
7 | }
8 | 


--------------------------------------------------------------------------------
/packages/core/src/mode.ts:
--------------------------------------------------------------------------------
 1 | import {IOptions, IToken} from './interfaces';
 2 | 
 3 | export type IMode = (token: IToken, options?: IOptions) => boolean;
 4 | 
 5 | export function strict(token: IToken): boolean {
 6 | 	return token.type !== 'ignore';
 7 | }
 8 | 
 9 | export function mild(token: IToken): boolean {
10 | 	return strict(token) && token.type !== 'empty' && token.type !== 'new_line';
11 | }
12 | 
13 | export function weak(token: IToken): boolean {
14 |   return mild(token)
15 |     && token.format !== 'comment'
16 |     && token.type !== 'comment'
17 |     && token.type !== 'block-comment';
18 | }
19 | 
20 | const MODES: { [name: string]: IMode } = {
21 | 	mild,
22 | 	strict,
23 | 	weak,
24 | };
25 | 
26 | export function getModeByName(name: string): IMode {
27 | 	if (name in MODES) {
28 | 		return MODES[name] as IMode;
29 | 	}
30 | 	throw new Error(`Mode ${name} does not supported yet.`);
31 | }
32 | 
33 | export function getModeHandler(mode: string | IMode): IMode {
34 | 	return typeof mode === 'string' ? getModeByName(mode) : mode;
35 | }
36 | 


--------------------------------------------------------------------------------
/packages/core/src/options.ts:
--------------------------------------------------------------------------------
 1 | import {IOptions, TOption} from './interfaces';
 2 | import {getModeHandler} from "./mode";
 3 | 
 4 | 
 5 | export function getDefaultOptions(): IOptions {
 6 |   return {
 7 |     executionId: new Date().toISOString(),
 8 |     path: [process.cwd()],
 9 |     mode: getModeHandler('mild'),
10 |     minLines: 5,
11 |     maxLines: 1000,
12 |     maxSize: '100kb',
13 |     minTokens: 50,
14 |     output: './report',
15 |     reporters: ['console'],
16 |     ignore: [],
17 |     threshold: undefined,
18 |     formatsExts: {},
19 |     debug: false,
20 | 		silent: false,
21 | 		blame: false,
22 | 		cache: true,
23 | 		absolute: false,
24 | 		noSymlinks: false,
25 | 		skipLocal: false,
26 | 		ignoreCase: false,
27 | 		gitignore: false,
28 | 		reportersOptions: {},
29 |     exitCode: 0,
30 | 	};
31 | }
32 | 
33 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
34 | export function getOption(name: TOption, options?: IOptions): any {
35 |   const defaultOptions = getDefaultOptions();
36 |   return options ? options[name] || defaultOptions[name] : defaultOptions[name];
37 | }
38 | 


--------------------------------------------------------------------------------
/packages/core/src/store/memory.ts:
--------------------------------------------------------------------------------
 1 | import {IStore} from '..';
 2 | 
 3 | export class MemoryStore<IMapFrame> implements IStore<IMapFrame> {
 4 |   private _namespace: string = '';
 5 | 
 6 |   protected values: Record<string, Record<string, IMapFrame>> = {};
 7 | 
 8 |   public namespace(namespace: string): void {
 9 |     this._namespace = namespace;
10 |     this.values[namespace] = this.values[namespace] || {};
11 |   }
12 | 
13 |   public get(key: string): Promise<IMapFrame> {
14 |     return new Promise((resolve, reject) => {
15 |       // @ts-ignore
16 |       if (key in this.values[this._namespace]) {
17 |         // @ts-ignore
18 |         resolve(this.values[this._namespace][key]);
19 |       } else {
20 |         reject(new Error('not found'));
21 |       }
22 |     });
23 |   }
24 | 
25 |   public set(key: string, value: IMapFrame): Promise<IMapFrame> {
26 |     // @ts-ignore
27 |     this.values[this._namespace][key] = value;
28 |     return Promise.resolve(value);
29 |   }
30 | 
31 |   close(): void {
32 |     this.values = {};
33 |   }
34 | }
35 | 


--------------------------------------------------------------------------------
/packages/core/src/validators/index.ts:
--------------------------------------------------------------------------------
1 | export * from './lines-length-clone.validator';
2 | export * from './validator';
3 | 
4 | 


--------------------------------------------------------------------------------
/packages/core/src/validators/lines-length-clone.validator.ts:
--------------------------------------------------------------------------------
 1 | import {IClone, ICloneValidator, IOptions, IValidationResult} from '..';
 2 | 
 3 | export class LinesLengthCloneValidator implements ICloneValidator {
 4 | 
 5 | 	validate(clone: IClone, options: IOptions): IValidationResult {
 6 | 		const lines = clone.duplicationA.end.line - clone.duplicationA.start.line;
 7 | 		const status = lines >= Number(options?.minLines);
 8 | 
 9 | 		return {
10 | 			status,
11 | 			message: status ? ['ok'] : [`Lines of code less than limit (${lines} < ${options.minLines})`],
12 | 		};
13 | 	}
14 | 
15 | }
16 | 


--------------------------------------------------------------------------------
/packages/core/src/validators/validator.ts:
--------------------------------------------------------------------------------
 1 | import {IClone, ICloneValidator, IOptions, IValidationResult} from '..';
 2 | 
 3 | export function runCloneValidators(clone: IClone, options: IOptions, validators: ICloneValidator[]): IValidationResult {
 4 | 	return validators.reduce((acc: IValidationResult, validator: ICloneValidator): IValidationResult => {
 5 | 		const res = validator.validate(clone, options);
 6 | 		return {
 7 | 			...acc,
 8 | 			status: res.status && acc.status,
 9 | 			message: res.message ? [...(acc.message as any), ...res.message] : acc.message,
10 | 		};
11 | 
12 | 	}, {status: true, message: [], clone})
13 | }
14 | 


--------------------------------------------------------------------------------
/packages/core/tsconfig.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "extends": "@jscpd/tsconfig/pkg.json",
 3 |   "compilerOptions": {
 4 |     "outDir": "build",
 5 |     "baseUrl": "."
 6 |   },
 7 |   "include": ["src"],
 8 |   "exclude": ["dist", "bundle", "node_modules"]
 9 | }
10 | 


--------------------------------------------------------------------------------
/packages/core/tsup.config.ts:
--------------------------------------------------------------------------------
 1 | import {defineConfig} from 'tsup'
 2 | 
 3 | export default defineConfig({
 4 |   entry: ['src/index.ts'],
 5 |   splitting: true,
 6 |   sourcemap: true,
 7 |   clean: true,
 8 |   format: ['esm', 'cjs']
 9 | })
10 | 


--------------------------------------------------------------------------------
/packages/finder/.npmignore:
--------------------------------------------------------------------------------
1 | src
2 | __tests__
3 | tsconfig.json
4 | tsconfig.build.json
5 | 


--------------------------------------------------------------------------------
/packages/finder/LICENSE:
--------------------------------------------------------------------------------
 1 | The MIT License (MIT)
 2 | 
 3 | Copyright (c) 2013-2020 Andrey Kucherenko
 4 | 
 5 | Permission is hereby granted, free of charge, to any person obtaining a copy
 6 | of this software and associated documentation files (the "Software"), to deal
 7 | in the Software without restriction, including without limitation the rights
 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 | 
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 | 
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 | 


--------------------------------------------------------------------------------
/packages/finder/__tests__/in-files-detector.test.ts:
--------------------------------------------------------------------------------
 1 | import {expect, describe, it} from 'vitest'
 2 | import {Tokenizer} from "@jscpd/tokenizer";
 3 | import {MemoryStore, Statistic} from "@jscpd/core";
 4 | import {InFilesDetector} from "../src";
 5 | 
 6 | describe('jscpd finder: in-files-detector', () => {
 7 |   it('should not detect for empty files list', async () => {
 8 |     const detector = new InFilesDetector(new Tokenizer(), new MemoryStore(), new Statistic(), {});
 9 |     const detected = await detector.detect([]);
10 |     expect(detected).to.deep.equal([]);
11 |   });
12 | })
13 | 


--------------------------------------------------------------------------------
/packages/finder/__tests__/utils.test.ts:
--------------------------------------------------------------------------------
 1 | import {describe, it, expect} from 'vitest';
 2 | import {compareDates, escapeXml} from "../src/utils/reports";
 3 | 
 4 | describe('jscpd finder: utils', () => {
 5 |   describe('escapeXml', () => {
 6 |     it('should replace unsafe symbols', () => {
 7 |       expect(escapeXml(`<>&'"`)).to.eq('&lt;&gt;&amp;&apos;&quot;')
 8 |     });
 9 |   });
10 | 
11 |   describe('compareDates', () => {
12 |     it('should show left arrow', () => {
13 |       expect(compareDates('2020-11-09T15:32:02.397Z', '2018-11-09T15:32:02.397Z')).to.eq('<=');
14 |     });
15 |     it('should show right arrow', () => {
16 |       expect(compareDates('2019-11-09T15:32:02.397Z', '2019-11-10T15:32:02.397Z')).to.eq('=>');
17 |     });
18 |   });
19 | })
20 | 


--------------------------------------------------------------------------------
/packages/finder/nodemon.json:
--------------------------------------------------------------------------------
1 | {
2 |   "$schema": "https://json.schemastore.org/nodemon.json",
3 |   "watch": ["./src/**"],
4 |   "ignoreRoot": [],
5 |   "ext": "ts,js",
6 |   "exec": "pnpm build"
7 | }
8 | 


--------------------------------------------------------------------------------
/packages/finder/src/hooks/fragment.ts:
--------------------------------------------------------------------------------
 1 | import {IClone} from '@jscpd/core';
 2 | import {readFileSync} from "fs";
 3 | import {IHook} from '..';
 4 | 
 5 | export class FragmentsHook implements IHook {
 6 | 
 7 | 	process(clones: IClone[]): Promise<IClone[]> {
 8 | 		return Promise.all(
 9 | 			clones.map((clone: IClone) => FragmentsHook.addFragments(clone)),
10 | 		);
11 | 	}
12 | 
13 | 	static addFragments(clone: IClone): IClone {
14 | 		const codeA = readFileSync(clone.duplicationA.sourceId).toString();
15 | 		const codeB = readFileSync(clone.duplicationB.sourceId).toString();
16 | 		clone.duplicationA.fragment = codeA.substring(clone.duplicationA.range[0], clone.duplicationA.range[1]);
17 | 		clone.duplicationB.fragment = codeB.substring(clone.duplicationB.range[0], clone.duplicationB.range[1]);
18 | 		return clone;
19 | 	}
20 | 
21 | }
22 | 
23 | 


--------------------------------------------------------------------------------
/packages/finder/src/hooks/index.ts:
--------------------------------------------------------------------------------
1 | export * from './blamer';
2 | export * from './fragment';
3 | 


--------------------------------------------------------------------------------
/packages/finder/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from './in-files-detector';
2 | export * from './files';
3 | export * from './hooks';
4 | export * from './subscribers';
5 | export * from './reporters';
6 | export * from './validators';
7 | export * from './interfaces';
8 | export * from './utils/options';
9 | 


--------------------------------------------------------------------------------
/packages/finder/src/interfaces/entry-with-content.interface.ts:
--------------------------------------------------------------------------------
1 | import {Entry} from 'fast-glob';
2 | 
3 | export interface EntryWithContent extends Entry {
4 | 	content: string;
5 | }
6 | 


--------------------------------------------------------------------------------
/packages/finder/src/interfaces/hook.interface.ts:
--------------------------------------------------------------------------------
1 | import {IClone} from '@jscpd/core';
2 | 
3 | export interface IHook {
4 | 	process(clones: IClone[]): Promise<IClone[]>;
5 | }
6 | 


--------------------------------------------------------------------------------
/packages/finder/src/interfaces/index.ts:
--------------------------------------------------------------------------------
1 | export * from './entry-with-content.interface';
2 | export * from './hook.interface';
3 | export * from './reporter.interface';
4 | 
5 | 


--------------------------------------------------------------------------------
/packages/finder/src/interfaces/reporter.interface.ts:
--------------------------------------------------------------------------------
1 | import {IClone, IStatistic} from '@jscpd/core';
2 | 
3 | export interface IReporter {
4 | 	report(clones: IClone[], statistic: IStatistic | undefined): void;
5 | }
6 | 


--------------------------------------------------------------------------------
/packages/finder/src/reporters/index.ts:
--------------------------------------------------------------------------------
 1 | export * from './console';
 2 | export * from './console-full';
 3 | export * from './json';
 4 | export * from './csv';
 5 | export * from './markdown';
 6 | export * from './xml';
 7 | export * from './silent';
 8 | export * from './threshold';
 9 | export * from './xcode'
10 | 


--------------------------------------------------------------------------------
/packages/finder/src/reporters/silent.ts:
--------------------------------------------------------------------------------
 1 | import {bold} from 'colors/safe';
 2 | import {IClone, IStatistic} from '@jscpd/core';
 3 | import {IReporter} from '..';
 4 | 
 5 | export class SilentReporter implements IReporter {
 6 | 
 7 | 	public report(clones: IClone[], statistic: IStatistic): void {
 8 | 		if (statistic) {
 9 | 			console.log(
10 | 				`Duplications detection: Found ${bold(clones.length.toString())} ` +
11 | 				`exact clones with ${bold(statistic.total.duplicatedLines.toString())}(${statistic.total.percentage}%) ` +
12 | 				`duplicated lines in ${bold(statistic.total.sources.toString())} ` +
13 | 				`(${Object.keys(statistic.formats).length} formats) files.`,
14 | 			);
15 | 		}
16 | 	}
17 | }
18 | 


--------------------------------------------------------------------------------
/packages/finder/src/reporters/threshold.ts:
--------------------------------------------------------------------------------
 1 | import {red} from 'colors/safe';
 2 | import {IClone, IOptions, IStatistic} from '@jscpd/core';
 3 | import {IReporter} from '..';
 4 | 
 5 | export class ThresholdReporter implements IReporter {
 6 | 	constructor(private options: IOptions) {
 7 | 	}
 8 | 
 9 | 	// @ts-ignore
10 |   public report(clones: IClone[], statistic: IStatistic | undefined): void {
11 |     if (statistic && this.options.threshold !== undefined && this.options.threshold < statistic.total.percentage) {
12 |       const message = `ERROR: jscpd found too many duplicates (${statistic.total.percentage}%) over threshold (${this.options.threshold}%)`;
13 |       console.error(red(message));
14 |       throw new Error(message);
15 |     }
16 | 	}
17 | }
18 | 


--------------------------------------------------------------------------------
/packages/finder/src/reporters/xcode.ts:
--------------------------------------------------------------------------------
 1 | import {IClone, IOptions} from '@jscpd/core';
 2 | import {IReporter} from '..';
 3 | import {getPath} from '../utils/reports';
 4 | 
 5 | export class XcodeReporter implements IReporter {
 6 | 	constructor(private readonly options: IOptions) {
 7 | 	}
 8 | 
 9 | 	public report(clones: IClone[]): void {
10 | 		clones.forEach((clone: IClone) => {
11 | 			this.cloneFound(clone);
12 | 		});
13 | 		console.log(`Found ${clones.length} clones.`);
14 | 	}
15 | 
16 | 	private cloneFound(clone: IClone): void {
17 | 		const pathA = getPath(clone.duplicationA.sourceId, {...this.options, absolute: true});
18 | 		const pathB = getPath(clone.duplicationB.sourceId, this.options);
19 | 		const startLineA = clone.duplicationA.start.line;
20 | 		const characterA = clone.duplicationA.start.column;
21 | 		const endLineA = clone.duplicationA.end.line;
22 | 		const startLineB = clone.duplicationB.start.line;
23 | 		const endLineB = clone.duplicationB.end.line;
24 | 		console.log(`${pathA}:${startLineA}:${characterA}: warning: Found ${endLineA - startLineA} lines (${startLineA}-${endLineA}) duplicated on file ${pathB} (${startLineB}-${endLineB})`);
25 | 	}
26 | }
27 | 


--------------------------------------------------------------------------------
/packages/finder/src/subscribers/index.ts:
--------------------------------------------------------------------------------
1 | export * from './progress';
2 | export * from './verbose';
3 | 


--------------------------------------------------------------------------------
/packages/finder/src/subscribers/progress.ts:
--------------------------------------------------------------------------------
 1 | import {DetectorEvents, IClone, IEventPayload, IHandler, IOptions, ISubscriber} from '@jscpd/core';
 2 | import {cloneFound} from '../utils/clone-found';
 3 | 
 4 | export class ProgressSubscriber implements ISubscriber {
 5 | 
 6 | 	constructor(private readonly options: IOptions) {
 7 | 	}
 8 | 
 9 | 	subscribe(): Partial<Record<DetectorEvents, IHandler>> {
10 | 		return {
11 |       CLONE_FOUND: (payload: IEventPayload): void => cloneFound(payload.clone as IClone, this.options),
12 |     };
13 | 	}
14 | }
15 | 


--------------------------------------------------------------------------------
/packages/finder/src/utils/clone-found.ts:
--------------------------------------------------------------------------------
 1 | import {IClone, IOptions} from '@jscpd/core';
 2 | import {red} from 'colors/safe';
 3 | import {getPathConsoleString, getSourceLocation} from './reports';
 4 | 
 5 | export function cloneFound(clone: IClone, options: IOptions): void {
 6 | 	const {duplicationA, duplicationB, format, isNew} = clone;
 7 | 	console.log('Clone found (' + format + '):' + (isNew ? red('*') : ''));
 8 | 	console.log(
 9 | 		` - ${getPathConsoleString(duplicationA.sourceId, options)} [${getSourceLocation(
10 | 			duplicationA.start,
11 | 			duplicationA.end,
12 | 		)}] (${duplicationA.end.line - duplicationA.start.line} lines${duplicationA.end.position ? ', ' + (duplicationA.end.position - (duplicationA.start.position as number)) + ' tokens' : ''})`,
13 | 	);
14 | 	console.log(
15 | 		`   ${getPathConsoleString(duplicationB.sourceId, options)} [${getSourceLocation(
16 | 			duplicationB.start,
17 | 			duplicationB.end,
18 | 		)}]`,
19 | 	);
20 | 	console.log('');
21 | }
22 | 


--------------------------------------------------------------------------------
/packages/finder/src/utils/options.ts:
--------------------------------------------------------------------------------
 1 | export function parseFormatsExtensions(extensions = ''): { [key: string]: string[] } | undefined {
 2 | 	const result: { [key: string]: string[] } = {};
 3 | 
 4 | 	if (!extensions) {
 5 | 		return undefined;
 6 | 	}
 7 | 
 8 | 	extensions.split(';').forEach((format: string) => {
 9 | 		const pair = format.split(':');
10 | 		// @ts-ignore
11 |     result[pair[0]] = pair[1].split(',');
12 | 	});
13 | 
14 | 	return result;
15 | }
16 | 


--------------------------------------------------------------------------------
/packages/finder/src/validators/index.ts:
--------------------------------------------------------------------------------
1 | export * from './skip-local.validator';
2 | 


--------------------------------------------------------------------------------
/packages/finder/src/validators/skip-local.validator.ts:
--------------------------------------------------------------------------------
 1 | import {getOption, IClone, ICloneValidator, IOptions, IValidationResult} from '@jscpd/core';
 2 | import {isAbsolute, relative} from "path";
 3 | 
 4 | export class SkipLocalValidator implements ICloneValidator {
 5 | 
 6 | 	validate(clone: IClone, options: IOptions): IValidationResult {
 7 | 		const status = !this.shouldSkipClone(clone, options);
 8 | 		return {
 9 | 			status,
10 | 			clone,
11 | 			message: [
12 | 				`Sources of duplication located in same local folder (${clone.duplicationA.sourceId}, ${clone.duplicationB.sourceId})`
13 | 			]
14 | 		};
15 | 	}
16 | 
17 | 	public shouldSkipClone(clone: IClone, options: IOptions): boolean {
18 | 		const path: string[] = getOption('path', options);
19 | 		return path.some(
20 | 			(dir) => SkipLocalValidator.isRelative(clone.duplicationA.sourceId, dir) && SkipLocalValidator.isRelative(clone.duplicationB.sourceId, dir)
21 | 		);
22 | 	}
23 | 
24 | 	private static isRelative(file: string, path: string): boolean {
25 | 		const rel = relative(path, file);
26 | 		return rel !== '' && !rel.startsWith('..') && !isAbsolute(rel);
27 | 	}
28 | 
29 | }
30 | 


--------------------------------------------------------------------------------
/packages/finder/tsconfig.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "extends": "@jscpd/tsconfig/pkg.json",
 3 |   "compilerOptions": {
 4 |     "outDir": "build",
 5 |     "baseUrl": "."
 6 |   },
 7 |   "include": ["src"],
 8 |   "exclude": ["dist", "bundle", "node_modules"]
 9 | }
10 | 


--------------------------------------------------------------------------------
/packages/finder/tsup.config.ts:
--------------------------------------------------------------------------------
 1 | import {defineConfig} from 'tsup'
 2 | 
 3 | export default defineConfig({
 4 |   entry: ['src/index.ts'],
 5 |   splitting: true,
 6 |   sourcemap: true,
 7 |   clean: true,
 8 |   format: ['esm', 'cjs']
 9 | })
10 | 


--------------------------------------------------------------------------------
/packages/html-reporter/.gitignore:
--------------------------------------------------------------------------------
1 | html
2 | 


--------------------------------------------------------------------------------
/packages/html-reporter/.npmignore:
--------------------------------------------------------------------------------
1 | src
2 | __tests__
3 | mockups
4 | tsconfig.json
5 | tsconfig.build.json
6 | 


--------------------------------------------------------------------------------
/packages/html-reporter/CHANGELOG.md:
--------------------------------------------------------------------------------
 1 | # @jscpd/html-reporter
 2 | 
 3 | ## 4.0.1
 4 | 
 5 | ### Patch Changes
 6 | 
 7 | - f50a42d: publish first public version in v4
 8 | 
 9 | ## 4.0.0
10 | 
11 | ### Major Changes
12 | 
13 | - aac6f4e: make great refactoring of the code, update versions of packages (typescript, pug, etc), change builder - use tsup, change test runner to vitest, move monorepo from lerna to turborepo, add changeset as tool for releases
14 | 
15 | ### Patch Changes
16 | 
17 | - Updated dependencies [aac6f4e]
18 |   - @jscpd/finder@4.0.0
19 | 


--------------------------------------------------------------------------------
/packages/html-reporter/LICENSE:
--------------------------------------------------------------------------------
 1 | The MIT License (MIT)
 2 | 
 3 | Copyright (c) 2013-2020 Andrey Kucherenko
 4 | 
 5 | Permission is hereby granted, free of charge, to any person obtaining a copy
 6 | of this software and associated documentation files (the "Software"), to deal
 7 | in the Software without restriction, including without limitation the rights
 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 | 
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 | 
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 | 


--------------------------------------------------------------------------------
/packages/html-reporter/README.md:
--------------------------------------------------------------------------------
 1 | # `html-reporter`
 2 | 
 3 | > TODO: description
 4 | 
 5 | ## Usage
 6 | 
 7 | ```
 8 | const htmlReporter = require('html-reporter');
 9 | 
10 | // TODO: DEMONSTRATE API
11 | ```
12 | 


--------------------------------------------------------------------------------
/packages/html-reporter/nodemon.json:
--------------------------------------------------------------------------------
1 | {
2 |   "$schema": "https://json.schemastore.org/nodemon.json",
3 |   "watch": ["./src/**"],
4 |   "ignoreRoot": [],
5 |   "ext": "ts,js",
6 |   "exec": "pnpm build"
7 | }
8 | 


--------------------------------------------------------------------------------
/packages/html-reporter/tsconfig.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "extends": "@jscpd/tsconfig/pkg.json",
 3 |   "compilerOptions": {
 4 |     "outDir": "build",
 5 |     "baseUrl": "."
 6 |   },
 7 |   "include": ["src"],
 8 |   "exclude": ["dist", "bundle", "node_modules"]
 9 | }
10 | 


--------------------------------------------------------------------------------
/packages/html-reporter/tsup.config.ts:
--------------------------------------------------------------------------------
 1 | import {defineConfig} from 'tsup'
 2 | 
 3 | export default defineConfig({
 4 |   entry: ['src/index.ts'],
 5 |   splitting: false,
 6 |   sourcemap: true,
 7 |   clean: true,
 8 |   format: ['esm', 'cjs'],
 9 |   shims: true,
10 | })
11 | 


--------------------------------------------------------------------------------
/packages/leveldb-store/.npmignore:
--------------------------------------------------------------------------------
1 | src
2 | __tests__
3 | tsconfig.json
4 | tsconfig.build.json
5 | 


--------------------------------------------------------------------------------
/packages/leveldb-store/LICENSE:
--------------------------------------------------------------------------------
 1 | The MIT License (MIT)
 2 | 
 3 | Copyright (c) 2013-2020 Andrey Kucherenko
 4 | 
 5 | Permission is hereby granted, free of charge, to any person obtaining a copy
 6 | of this software and associated documentation files (the "Software"), to deal
 7 | in the Software without restriction, including without limitation the rights
 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 | 
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 | 
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 | 


--------------------------------------------------------------------------------
/packages/leveldb-store/README.md:
--------------------------------------------------------------------------------
 1 | # `@jscpd/leveldb-store`
 2 | 
 3 | > store for jscpd, used for large repositories
 4 | 
 5 | ## Installation
 6 | 
 7 | ```
 8 | npm install @jscpd/leveldb-store --save
 9 | ```
10 | 
11 | ## Usage
12 | 
13 | ```
14 | import {Tokenizer} from '@jscpd/tokenizer';
15 | import {
16 |     Detector,
17 |     IOptions,
18 |     IClone,
19 |     IStore,
20 |     ITokenizer
21 | } from '@jscpd/core';
22 | import LeveldbStore from '@jscpd/leveldb-store';
23 | 
24 | const options: IOptions = {
25 |     minLines: 5,
26 |     maxLines: 500,
27 | }
28 | 
29 | const tokenizer: ITokenizer = new Tokenizer();
30 | 
31 | const store: IStore = new LeveldbStore();
32 | 
33 | const detector = new Detector(tokenizer, store, [], options);
34 | 
35 | ```
36 | 
37 | ![ga tracker](https://www.google-analytics.com/collect?v=1&a=257770996&t=pageview&dl=https%3A%2F%2Fgithub.com%2Fkucherenko%2Fjscpd&ul=en-us&de=UTF-8&cid=978224512.1377738459&tid=UA-730549-17&z=887657232 "ga tracker")
38 | 
39 | ## License
40 | 
41 | [MIT](LICENSE) © Andrey Kucherenko
42 | 


--------------------------------------------------------------------------------
/packages/leveldb-store/nodemon.json:
--------------------------------------------------------------------------------
1 | {
2 |   "$schema": "https://json.schemastore.org/nodemon.json",
3 |   "watch": ["./src/**"],
4 |   "ignoreRoot": [],
5 |   "ext": "ts,js",
6 |   "exec": "pnpm build"
7 | }
8 | 


--------------------------------------------------------------------------------
/packages/leveldb-store/tsconfig.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "extends": "@jscpd/tsconfig/pkg.json",
 3 |   "compilerOptions": {
 4 |     "outDir": "build",
 5 |     "baseUrl": "."
 6 |   },
 7 |   "include": ["src"],
 8 |   "exclude": ["dist", "bundle", "node_modules"]
 9 | }
10 | 


--------------------------------------------------------------------------------
/packages/leveldb-store/tsup.config.ts:
--------------------------------------------------------------------------------
 1 | import {defineConfig} from 'tsup'
 2 | 
 3 | export default defineConfig({
 4 |   entry: ['src/index.ts'],
 5 |   splitting: true,
 6 |   sourcemap: true,
 7 |   clean: true,
 8 |   format: ['esm', 'cjs']
 9 | })
10 | 


--------------------------------------------------------------------------------
/packages/redis-store/.npmignore:
--------------------------------------------------------------------------------
1 | src
2 | __tests__
3 | tsconfig.json
4 | tsconfig.build.json
5 | 


--------------------------------------------------------------------------------
/packages/redis-store/CHANGELOG.md:
--------------------------------------------------------------------------------
 1 | ## 3.3.0-rc.3 (2020-05-04)
 2 | 
 3 | ## 4.0.1
 4 | 
 5 | ### Patch Changes
 6 | 
 7 | - f50a42d: publish first public version in v4
 8 | - Updated dependencies [f50a42d]
 9 |   - @jscpd/tokenizer@4.0.1
10 |   - @jscpd/core@4.0.1
11 | 
12 | ## 4.0.0
13 | 
14 | ### Major Changes
15 | 
16 | - aac6f4e: make great refactoring of the code, update versions of packages (typescript, pug, etc), change builder - use tsup, change test runner to vitest, move monorepo from lerna to turborepo, add changeset as tool for releases
17 | 
18 | ### Patch Changes
19 | 
20 | - Updated dependencies [aac6f4e]
21 |   - @jscpd/tokenizer@4.0.0
22 |   - @jscpd/core@4.0.0
23 | 
24 | * feat: 🎸 add redis store ([2e33bfe](https://github.com/kucherenko/jscpd/commit/2e33bfe))
25 | 
26 | ## 3.3.0-rc.3 (2020-05-02)
27 | 
28 | - v3.3.0-rc.3 ([9f388ff](https://github.com/kucherenko/jscpd/commit/9f388ff))
29 | - docs: ✏️ update README for the packages ([76492e6](https://github.com/kucherenko/jscpd/commit/76492e6))
30 | - feat: 🎸 start redis store development ([c0a1584](https://github.com/kucherenko/jscpd/commit/c0a1584))
31 | 


--------------------------------------------------------------------------------
/packages/redis-store/LICENSE:
--------------------------------------------------------------------------------
 1 | The MIT License (MIT)
 2 | 
 3 | Copyright (c) 2013-2020 Andrey Kucherenko
 4 | 
 5 | Permission is hereby granted, free of charge, to any person obtaining a copy
 6 | of this software and associated documentation files (the "Software"), to deal
 7 | in the Software without restriction, including without limitation the rights
 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 | 
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 | 
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 | 


--------------------------------------------------------------------------------
/packages/redis-store/README.md:
--------------------------------------------------------------------------------
 1 | # `@jscpd/leveldb-store`
 2 | 
 3 | **!NOT implemented yet**
 4 | 
 5 | > store for jscpd, used [redis](https://redis.io/) data store for hashes
 6 | 
 7 | ## Installation
 8 | 
 9 | ```
10 | npm install @jscpd/redis-store --save
11 | ```
12 | 
13 | ## Usage
14 | 
15 | ```
16 | import {Tokenizer} from '@jscpd/tokenizer';
17 | import {
18 |     Detector,
19 |     IOptions,
20 |     IClone,
21 |     IStore,
22 |     ITokenizer
23 | } from '@jscpd/core';
24 | import RedisdbStore from '@jscpd/redis-store';
25 | 
26 | const options: IOptions = {
27 |     minLines: 5,
28 |     maxLines: 500,
29 | }
30 | 
31 | const tokenizer: ITokenizer = new Tokenizer();
32 | 
33 | const store: IStore = new RedisdbStore();
34 | 
35 | const detector = new Detector(tokenizer, store, [], options);
36 | 
37 | ```
38 | 
39 | ![ga tracker](https://www.google-analytics.com/collect?v=1&a=257770996&t=pageview&dl=https%3A%2F%2Fgithub.com%2Fkucherenko%2Fjscpd&ul=en-us&de=UTF-8&cid=978224512.1377738459&tid=UA-730549-17&z=887657232 "ga tracker")
40 | 
41 | ## License
42 | 
43 | [MIT](LICENSE) © Andrey Kucherenko
44 | 


--------------------------------------------------------------------------------
/packages/redis-store/nodemon.json:
--------------------------------------------------------------------------------
1 | {
2 |   "$schema": "https://json.schemastore.org/nodemon.json",
3 |   "watch": ["./src/**"],
4 |   "ignoreRoot": [],
5 |   "ext": "ts,js",
6 |   "exec": "pnpm build"
7 | }
8 | 


--------------------------------------------------------------------------------
/packages/redis-store/src/index.ts:
--------------------------------------------------------------------------------
 1 | import {IMapFrame, IStore} from '@jscpd/core';
 2 | import Redis from "ioredis";
 3 | 
 4 | export default class RedisStore implements IStore<IMapFrame> {
 5 |   private name: string  = '';
 6 |   private redis
 7 | 
 8 |   constructor() {
 9 |     this.redis = new Redis();
10 |   }
11 | 
12 |   close(): void {
13 |     this.redis.disconnect();
14 |   }
15 | 
16 |   get(key: string): Promise<IMapFrame> {
17 |     return this.redis.get(this.name + ':' + key).then(value => {
18 |       if (!value) {
19 |         throw new Error('not found')
20 |       }
21 |       return JSON.parse(value)
22 |     });
23 |   }
24 | 
25 |   namespace(name: string): void {
26 |     this.name = name;
27 |   }
28 | 
29 |   async set(key: string, value: IMapFrame): Promise<IMapFrame> {
30 |     await this.redis.set(this.name + ':' + key, JSON.stringify(value));
31 |     return value
32 |   }
33 | }
34 | 


--------------------------------------------------------------------------------
/packages/redis-store/tsconfig.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "extends": "@jscpd/tsconfig/pkg.json",
 3 |   "compilerOptions": {
 4 |     "outDir": "build",
 5 |     "baseUrl": "."
 6 |   },
 7 |   "include": ["src"],
 8 |   "exclude": ["dist", "bundle", "node_modules"]
 9 | }
10 | 


--------------------------------------------------------------------------------
/packages/redis-store/tsup.config.ts:
--------------------------------------------------------------------------------
 1 | import {defineConfig} from 'tsup'
 2 | 
 3 | export default defineConfig({
 4 |   entry: ['src/index.ts'],
 5 |   splitting: true,
 6 |   sourcemap: true,
 7 |   clean: true,
 8 |   format: ['esm', 'cjs']
 9 | })
10 | 


--------------------------------------------------------------------------------
/packages/sarif-reporter/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # jscpd-sarif-reporter
2 | 
3 | ## 4.0.3
4 | 
5 | ### Patch Changes
6 | 
7 | - fix issue with packages
8 | 


--------------------------------------------------------------------------------
/packages/sarif-reporter/LICENSE:
--------------------------------------------------------------------------------
 1 | The MIT License (MIT)
 2 | 
 3 | Copyright (c) 2013-2024 Andrey Kucherenko
 4 | 
 5 | Permission is hereby granted, free of charge, to any person obtaining a copy
 6 | of this software and associated documentation files (the "Software"), to deal
 7 | in the Software without restriction, including without limitation the rights
 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 | 
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 | 
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 | 


--------------------------------------------------------------------------------
/packages/sarif-reporter/README.md:
--------------------------------------------------------------------------------
 1 | # `@jscpd/sarif-reporter`
 2 | 
 3 | > The sarif reporter for [jscpd](https://github.com/kucherenko/jscpd).
 4 | 
 5 | Generate report in sarif format for jscpd.
 6 | 
 7 | ## Getting started
 8 | 
 9 | ### Install
10 | 
11 | ```bash
12 | npm install @jscpd/sarif-reporter
13 | ```
14 | 
15 | ### Usage
16 | 
17 | ```bash
18 | jscpd [...options] --reporters sarif /path/to/source
19 | ```
20 | 
21 | 
22 | [MIT](LICENSE) © Andrey Kucherenko
23 | 


--------------------------------------------------------------------------------
/packages/sarif-reporter/nodemon.json:
--------------------------------------------------------------------------------
1 | {
2 |   "$schema": "https://json.schemastore.org/nodemon.json",
3 |   "watch": ["./src/**"],
4 |   "ignoreRoot": [],
5 |   "ext": "ts,js",
6 |   "exec": "pnpm build"
7 | }
8 | 


--------------------------------------------------------------------------------
/packages/sarif-reporter/tsconfig.build.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "extends": "../tsconfig.build.json",
 3 | 
 4 |   "compilerOptions": {
 5 |     "outDir": "./dist"
 6 |   },
 7 | 
 8 |   "include": [
 9 |     "src/**/*"
10 |   ]
11 | }
12 | 


--------------------------------------------------------------------------------
/packages/sarif-reporter/tsconfig.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "extends": "@jscpd/tsconfig/pkg.json",
 3 |   "compilerOptions": {
 4 |     "outDir": "build",
 5 |     "baseUrl": "."
 6 |   },
 7 |   "include": ["src"],
 8 |   "exclude": ["dist", "bundle", "node_modules"]
 9 | }
10 | 


--------------------------------------------------------------------------------
/packages/sarif-reporter/tsup.config.ts:
--------------------------------------------------------------------------------
 1 | import {defineConfig} from 'tsup'
 2 | 
 3 | export default defineConfig({
 4 |   entry: ['src/index.ts'],
 5 |   splitting: false,
 6 |   sourcemap: true,
 7 |   clean: true,
 8 |   format: ['esm', 'cjs'],
 9 |   shims: true,
10 | })
11 | 


--------------------------------------------------------------------------------
/packages/tokenizer/.npmignore:
--------------------------------------------------------------------------------
1 | src
2 | __tests__
3 | tsconfig.json
4 | tsconfig.build.json
5 | 


--------------------------------------------------------------------------------
/packages/tokenizer/LICENSE:
--------------------------------------------------------------------------------
 1 | The MIT License (MIT)
 2 | 
 3 | Copyright (c) 2013-2020 Andrey Kucherenko
 4 | 
 5 | Permission is hereby granted, free of charge, to any person obtaining a copy
 6 | of this software and associated documentation files (the "Software"), to deal
 7 | in the Software without restriction, including without limitation the rights
 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 | 
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 | 
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 | 


--------------------------------------------------------------------------------
/packages/tokenizer/README.md:
--------------------------------------------------------------------------------
 1 | # `@jscpd/tokenizer`
 2 | 
 3 | > tokenizer is package from @jscpd used for convert programming code to list of tokens
 4 | 
 5 | 
 6 | ## Installation
 7 | 
 8 | ```
 9 | npm install @jscpd/tokenizer --save
10 | ```
11 | 
12 | ## Usage
13 | 
14 | ```
15 | import {IOptions,  ITokensMap} from '@jscpd/core';
16 | import {Tokenizer} from '@jscpd/tokenizer';
17 | 
18 | const tokenizer = new Tokenizer();
19 | const options: IOptions = {};
20 | 
21 | const maps: ITokensMap[] = tokenizer.generateMaps('source_id', 'let a = "11"', 'javascript', options);
22 | 
23 | ```
24 | 
25 | ![ga tracker](https://www.google-analytics.com/collect?v=1&a=257770996&t=pageview&dl=https%3A%2F%2Fgithub.com%2Fkucherenko%2Fjscpd&ul=en-us&de=UTF-8&cid=978224512.1377738459&tid=UA-730549-17&z=887657232 "ga tracker")
26 | 
27 | ## License
28 | 
29 | [MIT](LICENSE) © Andrey Kucherenko
30 | 


--------------------------------------------------------------------------------
/packages/tokenizer/nodemon.json:
--------------------------------------------------------------------------------
1 | {
2 |   "$schema": "https://json.schemastore.org/nodemon.json",
3 |   "watch": ["./src/**"],
4 |   "ignoreRoot": [],
5 |   "ext": "ts,js",
6 |   "exec": "pnpm build"
7 | }
8 | 


--------------------------------------------------------------------------------
/packages/tokenizer/src/hash.ts:
--------------------------------------------------------------------------------
1 | import SparkMD5 from "spark-md5";
2 | 
3 | export function hash(value: string): string {
4 | 	return SparkMD5.hash(value);
5 | }
6 | 


--------------------------------------------------------------------------------
/packages/tokenizer/src/index.ts:
--------------------------------------------------------------------------------
 1 | import {IOptions, ITokenizer, ITokensMap} from '@jscpd/core';
 2 | import {createTokenMapBasedOnCode} from './tokenize';
 3 | 
 4 | export * from './interfaces';
 5 | export * from './tokenize';
 6 | export * from './token-map';
 7 | export * from './formats';
 8 | 
 9 | export class Tokenizer implements ITokenizer {
10 |   generateMaps(id: string, data: string, format: string, options: Partial<IOptions>): ITokensMap[] {
11 |     return createTokenMapBasedOnCode(id, data, format, options);
12 |   }
13 | }
14 | 


--------------------------------------------------------------------------------
/packages/tokenizer/src/interfaces/format-meta.interface.ts:
--------------------------------------------------------------------------------
1 | export interface IFormatMeta {
2 |   exts: string[];
3 |   parent?: string;
4 | }
5 | 


--------------------------------------------------------------------------------
/packages/tokenizer/src/interfaces/index.ts:
--------------------------------------------------------------------------------
1 | export * from './format-meta.interface';
2 | export * from './source-options.interface';
3 | 


--------------------------------------------------------------------------------
/packages/tokenizer/src/interfaces/source-options.interface.ts:
--------------------------------------------------------------------------------
 1 | export interface ISourceOptions {
 2 | 	id: string;
 3 | 	format: string;
 4 | 	source?: string;
 5 | 	isNew?: boolean;
 6 | 	detectionDate?: number;
 7 | 	lastUpdateDate?: number;
 8 | 	lines?: number;
 9 | 	range?: number[];
10 | }
11 | 


--------------------------------------------------------------------------------
/packages/tokenizer/src/languages/tap.ts:
--------------------------------------------------------------------------------
 1 | const grammar = {
 2 |   language: 'tap',
 3 |   init(Prism: any) {
 4 |     Prism.languages.tap = {
 5 |       fail: /not ok[^#{\n\r]*/,
 6 |       pass: /ok[^#{\n\r]*/,
 7 |       pragma: /pragma [+-][a-z]+/,
 8 |       bailout: /bail out!.*/i,
 9 |       version: /TAP version \d+/i,
10 |       plan: /\d+\.\.\d+(?: +#.*)?/,
11 |       subtest: {
12 |         pattern: /# Subtest(?:: .*)?/,
13 |         greedy: true
14 |       },
15 |       punctuation: /[{}]/,
16 |       directive: /#.*/,
17 |       yamlish: {
18 |         pattern: /(^[ \t]*)---[\s\S]*?[\r\n][ \t]*\.\.\.$/m,
19 |         lookbehind: true,
20 |         inside: Prism.languages.yaml,
21 |         alias: 'language-yaml'
22 |       }
23 |     };
24 |   },
25 | }
26 | export default grammar;
27 | 


--------------------------------------------------------------------------------
/packages/tokenizer/tsconfig.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "extends": "@jscpd/tsconfig/pkg.json",
 3 |   "compilerOptions": {
 4 |     "outDir": "build",
 5 |     "baseUrl": "."
 6 |   },
 7 |   "include": ["src"],
 8 |   "exclude": ["dist", "bundle", "node_modules"]
 9 | }
10 | 


--------------------------------------------------------------------------------
/packages/tokenizer/tsup.config.ts:
--------------------------------------------------------------------------------
 1 | import {defineConfig} from 'tsup'
 2 | 
 3 | export default defineConfig({
 4 |   entry: ['src/index.ts'],
 5 |   splitting: true,
 6 |   sourcemap: true,
 7 |   clean: true,
 8 |   format: ['esm', 'cjs']
 9 | })
10 | 


--------------------------------------------------------------------------------
/packages/tsconfig/CHANGELOG.md:
--------------------------------------------------------------------------------
 1 | # @jscpd/tsconfig
 2 | 
 3 | ## 5.0.1
 4 | 
 5 | ### Patch Changes
 6 | 
 7 | - f50a42d: publish first public version in v4
 8 | 
 9 | ## 5.0.0
10 | 
11 | ### Major Changes
12 | 
13 | - aac6f4e: make great refactoring of the code, update versions of packages (typescript, pug, etc), change builder - use tsup, change test runner to vitest, move monorepo from lerna to turborepo, add changeset as tool for releases
14 | 


--------------------------------------------------------------------------------
/packages/tsconfig/README.md:
--------------------------------------------------------------------------------
1 | # `tsconfig`
2 | 
3 | These are base shared `tsconfig.json`s from which all other `tsconfig.json`'s inherit from.
4 | 


--------------------------------------------------------------------------------
/packages/tsconfig/package.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "name": "@jscpd/tsconfig",
 3 |   "version": "5.0.1",
 4 |   "private": true,
 5 |   "files": [
 6 |     "pkg.json"
 7 |   ],
 8 |   "dependencies": {
 9 |     "@tsconfig/node20": "^20.1.4"
10 |   }
11 | }
12 | 


--------------------------------------------------------------------------------
/packages/tsconfig/pkg.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "extends": "@tsconfig/node20/tsconfig.json",
 3 |   "compilerOptions": {
 4 |     "module": "esnext",
 5 |     "moduleResolution": "bundler",
 6 |     "allowUnusedLabels": false,
 7 |     "allowUnreachableCode": false,
 8 |     "noFallthroughCasesInSwitch": true,
 9 |     "noUncheckedIndexedAccess": true,
10 |     "noUnusedLocals": true,
11 |     "noUnusedParameters": true,
12 |     "forceConsistentCasingInFileNames": true,
13 |     "declaration": true,
14 |     "sourceMap": true,
15 |     "resolveJsonModule": true,
16 |     "types": ["vitest/globals"]
17 |   },
18 |   "ts-node": {
19 |     "compilerOptions": {
20 |       "module": "commonjs"
21 |     }
22 |   }
23 | }
24 | 


--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 |   - "apps/*"
3 |   - "packages/*"
4 | 


--------------------------------------------------------------------------------