├── .dockerignore ├── .github └── FUNDING.yml ├── .gitignore ├── Dockerfile ├── LICENSE ├── README.md ├── docker-compose.yml ├── gulpfile.js ├── healthcheck.js ├── opentelemetry-collector.yml ├── opentelemetry.js ├── package-lock.json ├── package.json ├── prometheus.yaml ├── public ├── css │ ├── all.min.css │ ├── bootstrap.min.css │ ├── font-awesome.min.css │ ├── fonts │ │ ├── KaTeX_AMS-Regular.ttf │ │ ├── KaTeX_AMS-Regular.woff │ │ ├── KaTeX_AMS-Regular.woff2 │ │ ├── KaTeX_Caligraphic-Bold.ttf │ │ ├── KaTeX_Caligraphic-Bold.woff │ │ ├── KaTeX_Caligraphic-Bold.woff2 │ │ ├── KaTeX_Caligraphic-Regular.ttf │ │ ├── KaTeX_Caligraphic-Regular.woff │ │ ├── KaTeX_Caligraphic-Regular.woff2 │ │ ├── KaTeX_Fraktur-Bold.ttf │ │ ├── KaTeX_Fraktur-Bold.woff │ │ ├── KaTeX_Fraktur-Bold.woff2 │ │ ├── KaTeX_Fraktur-Regular.ttf │ │ ├── KaTeX_Fraktur-Regular.woff │ │ ├── KaTeX_Fraktur-Regular.woff2 │ │ ├── KaTeX_Main-Bold.ttf │ │ ├── KaTeX_Main-Bold.woff │ │ ├── KaTeX_Main-Bold.woff2 │ │ ├── KaTeX_Main-BoldItalic.ttf │ │ ├── KaTeX_Main-BoldItalic.woff │ │ ├── KaTeX_Main-BoldItalic.woff2 │ │ ├── KaTeX_Main-Italic.ttf │ │ ├── KaTeX_Main-Italic.woff │ │ ├── KaTeX_Main-Italic.woff2 │ │ ├── KaTeX_Main-Regular.ttf │ │ ├── KaTeX_Main-Regular.woff │ │ ├── KaTeX_Main-Regular.woff2 │ │ ├── KaTeX_Math-BoldItalic.ttf │ │ ├── KaTeX_Math-BoldItalic.woff │ │ ├── KaTeX_Math-BoldItalic.woff2 │ │ ├── KaTeX_Math-Italic.ttf │ │ ├── KaTeX_Math-Italic.woff │ │ ├── KaTeX_Math-Italic.woff2 │ │ ├── KaTeX_SansSerif-Bold.ttf │ │ ├── KaTeX_SansSerif-Bold.woff │ │ ├── KaTeX_SansSerif-Bold.woff2 │ │ ├── KaTeX_SansSerif-Italic.ttf │ │ ├── KaTeX_SansSerif-Italic.woff │ │ ├── KaTeX_SansSerif-Italic.woff2 │ │ ├── KaTeX_SansSerif-Regular.ttf │ │ ├── KaTeX_SansSerif-Regular.woff │ │ ├── KaTeX_SansSerif-Regular.woff2 │ │ ├── KaTeX_Script-Regular.ttf │ │ ├── KaTeX_Script-Regular.woff │ │ ├── KaTeX_Script-Regular.woff2 │ │ ├── KaTeX_Size1-Regular.ttf │ │ ├── KaTeX_Size1-Regular.woff │ │ ├── KaTeX_Size1-Regular.woff2 │ │ ├── KaTeX_Size2-Regular.ttf │ │ ├── KaTeX_Size2-Regular.woff │ │ ├── KaTeX_Size2-Regular.woff2 │ │ ├── KaTeX_Size3-Regular.ttf │ │ ├── KaTeX_Size3-Regular.woff │ │ ├── KaTeX_Size3-Regular.woff2 │ │ ├── KaTeX_Size4-Regular.ttf │ │ ├── KaTeX_Size4-Regular.woff │ │ ├── KaTeX_Size4-Regular.woff2 │ │ ├── KaTeX_Typewriter-Regular.ttf │ │ ├── KaTeX_Typewriter-Regular.woff │ │ └── KaTeX_Typewriter-Regular.woff2 │ ├── github-markdown.min.css │ ├── katex.min.css │ ├── notebook.css │ ├── prism-okaidia.css │ ├── prism.css │ └── style.css ├── favicon.ico ├── favicon │ ├── android-chrome-192x192.png │ ├── android-chrome-256x256.png │ ├── apple-touch-icon.png │ ├── browserconfig.xml │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── mstile-150x150.png │ ├── safari-pinned-tab.svg │ └── site.webmanifest ├── fonts │ ├── fa-brands-400.eot │ ├── fa-brands-400.svg │ ├── fa-brands-400.ttf │ ├── fa-brands-400.woff │ ├── fa-brands-400.woff2 │ ├── fa-regular-400.eot │ ├── fa-regular-400.svg │ ├── fa-regular-400.ttf │ ├── fa-regular-400.woff │ ├── fa-regular-400.woff2 │ ├── fa-solid-900.eot │ ├── fa-solid-900.svg │ ├── fa-solid-900.ttf │ ├── fa-solid-900.woff │ └── fa-solid-900.woff2 ├── i18n │ └── locale-en.json ├── imgs │ ├── anonymize.png │ ├── dashboard.png │ └── explorer.png ├── index.html ├── partials │ ├── 404.htm │ ├── admin │ │ ├── conferences.htm │ │ ├── queues.htm │ │ ├── repositories.htm │ │ ├── user.htm │ │ └── users.htm │ ├── anonymize.htm │ ├── anonymizePullRequest.htm │ ├── claim.htm │ ├── conference.htm │ ├── conferences.htm │ ├── dashboard.htm │ ├── explorer.htm │ ├── faq.htm │ ├── header.htm │ ├── home.htm │ ├── loading.htm │ ├── newConference.htm │ ├── pageView.htm │ ├── pr-dashboard.htm │ ├── profile.htm │ ├── pullRequest.htm │ └── status.htm ├── robots.txt └── script │ ├── admin.js │ ├── app.js │ ├── bundle.min.js │ ├── external │ ├── ace │ │ ├── ace.js │ │ ├── ext-beautify.js │ │ ├── ext-code_lens.js │ │ ├── ext-elastic_tabstops_lite.js │ │ ├── ext-emmet.js │ │ ├── ext-error_marker.js │ │ ├── ext-keybinding_menu.js │ │ ├── ext-language_tools.js │ │ ├── ext-linking.js │ │ ├── ext-modelist.js │ │ ├── ext-options.js │ │ ├── ext-prompt.js │ │ ├── ext-rtl.js │ │ ├── ext-searchbox.js │ │ ├── ext-settings_menu.js │ │ ├── ext-spellcheck.js │ │ ├── ext-split.js │ │ ├── ext-static_highlight.js │ │ ├── ext-statusbar.js │ │ ├── ext-textarea.js │ │ ├── ext-themelist.js │ │ ├── ext-whitespace.js │ │ ├── keybinding-emacs.js │ │ ├── keybinding-sublime.js │ │ ├── keybinding-vim.js │ │ ├── keybinding-vscode.js │ │ ├── mode-abap.js │ │ ├── mode-abc.js │ │ ├── mode-actionscript.js │ │ ├── mode-ada.js │ │ ├── mode-alda.js │ │ ├── mode-apache_conf.js │ │ ├── mode-apex.js │ │ ├── mode-applescript.js │ │ ├── mode-aql.js │ │ ├── mode-asciidoc.js │ │ ├── mode-asl.js │ │ ├── mode-assembly_x86.js │ │ ├── mode-autohotkey.js │ │ ├── mode-batchfile.js │ │ ├── mode-c9search.js │ │ ├── mode-c_cpp.js │ │ ├── mode-cirru.js │ │ ├── mode-clojure.js │ │ ├── mode-cobol.js │ │ ├── mode-coffee.js │ │ ├── mode-coldfusion.js │ │ ├── mode-crystal.js │ │ ├── mode-csharp.js │ │ ├── mode-csound_document.js │ │ ├── mode-csound_orchestra.js │ │ ├── mode-csound_score.js │ │ ├── mode-csp.js │ │ ├── mode-css.js │ │ ├── mode-curly.js │ │ ├── mode-d.js │ │ ├── mode-dart.js │ │ ├── mode-diff.js │ │ ├── mode-django.js │ │ ├── mode-dockerfile.js │ │ ├── mode-dot.js │ │ ├── mode-drools.js │ │ ├── mode-edifact.js │ │ ├── mode-eiffel.js │ │ ├── mode-ejs.js │ │ ├── mode-elixir.js │ │ ├── mode-elm.js │ │ ├── mode-erlang.js │ │ ├── mode-forth.js │ │ ├── mode-fortran.js │ │ ├── mode-fsharp.js │ │ ├── mode-fsl.js │ │ ├── mode-ftl.js │ │ ├── mode-gcode.js │ │ ├── mode-gherkin.js │ │ ├── mode-gitignore.js │ │ ├── mode-glsl.js │ │ ├── mode-gobstones.js │ │ ├── mode-golang.js │ │ ├── mode-graphqlschema.js │ │ ├── mode-groovy.js │ │ ├── mode-haml.js │ │ ├── mode-handlebars.js │ │ ├── mode-haskell.js │ │ ├── mode-haskell_cabal.js │ │ ├── mode-haxe.js │ │ ├── mode-hjson.js │ │ ├── mode-html.js │ │ ├── mode-html_elixir.js │ │ ├── mode-html_ruby.js │ │ ├── mode-ini.js │ │ ├── mode-io.js │ │ ├── mode-jack.js │ │ ├── mode-jade.js │ │ ├── mode-java.js │ │ ├── mode-javascript.js │ │ ├── mode-json.js │ │ ├── mode-json5.js │ │ ├── mode-jsoniq.js │ │ ├── mode-jsp.js │ │ ├── mode-jssm.js │ │ ├── mode-jsx.js │ │ ├── mode-julia.js │ │ ├── mode-kotlin.js │ │ ├── mode-latex.js │ │ ├── mode-less.js │ │ ├── mode-liquid.js │ │ ├── mode-lisp.js │ │ ├── mode-livescript.js │ │ ├── mode-logiql.js │ │ ├── mode-logtalk.js │ │ ├── mode-lsl.js │ │ ├── mode-lua.js │ │ ├── mode-luapage.js │ │ ├── mode-lucene.js │ │ ├── mode-makefile.js │ │ ├── mode-markdown.js │ │ ├── mode-mask.js │ │ ├── mode-matlab.js │ │ ├── mode-maze.js │ │ ├── mode-mediawiki.js │ │ ├── mode-mel.js │ │ ├── mode-mixal.js │ │ ├── mode-mushcode.js │ │ ├── mode-mysql.js │ │ ├── mode-nginx.js │ │ ├── mode-nim.js │ │ ├── mode-nix.js │ │ ├── mode-nsis.js │ │ ├── mode-nunjucks.js │ │ ├── mode-objectivec.js │ │ ├── mode-ocaml.js │ │ ├── mode-pascal.js │ │ ├── mode-perl.js │ │ ├── mode-perl6.js │ │ ├── mode-pgsql.js │ │ ├── mode-php.js │ │ ├── mode-php_laravel_blade.js │ │ ├── mode-pig.js │ │ ├── mode-plain_text.js │ │ ├── mode-powershell.js │ │ ├── mode-praat.js │ │ ├── mode-prisma.js │ │ ├── mode-prolog.js │ │ ├── mode-properties.js │ │ ├── mode-protobuf.js │ │ ├── mode-puppet.js │ │ ├── mode-python.js │ │ ├── mode-qml.js │ │ ├── mode-r.js │ │ ├── mode-razor.js │ │ ├── mode-rdoc.js │ │ ├── mode-red.js │ │ ├── mode-redshift.js │ │ ├── mode-rhtml.js │ │ ├── mode-rst.js │ │ ├── mode-ruby.js │ │ ├── mode-rust.js │ │ ├── mode-sass.js │ │ ├── mode-scad.js │ │ ├── mode-scala.js │ │ ├── mode-scheme.js │ │ ├── mode-scss.js │ │ ├── mode-sh.js │ │ ├── mode-sjs.js │ │ ├── mode-slim.js │ │ ├── mode-smarty.js │ │ ├── mode-snippets.js │ │ ├── mode-soy_template.js │ │ ├── mode-space.js │ │ ├── mode-sparql.js │ │ ├── mode-sql.js │ │ ├── mode-sqlserver.js │ │ ├── mode-stylus.js │ │ ├── mode-svg.js │ │ ├── mode-swift.js │ │ ├── mode-tcl.js │ │ ├── mode-terraform.js │ │ ├── mode-tex.js │ │ ├── mode-text.js │ │ ├── mode-textile.js │ │ ├── mode-toml.js │ │ ├── mode-tsx.js │ │ ├── mode-turtle.js │ │ ├── mode-twig.js │ │ ├── mode-typescript.js │ │ ├── mode-vala.js │ │ ├── mode-vbscript.js │ │ ├── mode-velocity.js │ │ ├── mode-verilog.js │ │ ├── mode-vhdl.js │ │ ├── mode-visualforce.js │ │ ├── mode-wollok.js │ │ ├── mode-xml.js │ │ ├── mode-xquery.js │ │ ├── mode-yaml.js │ │ ├── mode-zeek.js │ │ ├── snippets │ │ │ ├── abap.js │ │ │ ├── abc.js │ │ │ ├── actionscript.js │ │ │ ├── ada.js │ │ │ ├── alda.js │ │ │ ├── apache_conf.js │ │ │ ├── apex.js │ │ │ ├── applescript.js │ │ │ ├── aql.js │ │ │ ├── asciidoc.js │ │ │ ├── asl.js │ │ │ ├── assembly_x86.js │ │ │ ├── autohotkey.js │ │ │ ├── batchfile.js │ │ │ ├── c9search.js │ │ │ ├── c_cpp.js │ │ │ ├── cirru.js │ │ │ ├── clojure.js │ │ │ ├── cobol.js │ │ │ ├── coffee.js │ │ │ ├── coldfusion.js │ │ │ ├── crystal.js │ │ │ ├── csharp.js │ │ │ ├── csound_document.js │ │ │ ├── csound_orchestra.js │ │ │ ├── csound_score.js │ │ │ ├── csp.js │ │ │ ├── css.js │ │ │ ├── curly.js │ │ │ ├── d.js │ │ │ ├── dart.js │ │ │ ├── diff.js │ │ │ ├── django.js │ │ │ ├── dockerfile.js │ │ │ ├── dot.js │ │ │ ├── drools.js │ │ │ ├── edifact.js │ │ │ ├── eiffel.js │ │ │ ├── ejs.js │ │ │ ├── elixir.js │ │ │ ├── elm.js │ │ │ ├── erlang.js │ │ │ ├── forth.js │ │ │ ├── fortran.js │ │ │ ├── fsharp.js │ │ │ ├── fsl.js │ │ │ ├── ftl.js │ │ │ ├── gcode.js │ │ │ ├── gherkin.js │ │ │ ├── gitignore.js │ │ │ ├── glsl.js │ │ │ ├── gobstones.js │ │ │ ├── golang.js │ │ │ ├── graphqlschema.js │ │ │ ├── groovy.js │ │ │ ├── haml.js │ │ │ ├── handlebars.js │ │ │ ├── haskell.js │ │ │ ├── haskell_cabal.js │ │ │ ├── haxe.js │ │ │ ├── hjson.js │ │ │ ├── html.js │ │ │ ├── html_elixir.js │ │ │ ├── html_ruby.js │ │ │ ├── ini.js │ │ │ ├── io.js │ │ │ ├── jack.js │ │ │ ├── jade.js │ │ │ ├── java.js │ │ │ ├── javascript.js │ │ │ ├── json.js │ │ │ ├── json5.js │ │ │ ├── jsoniq.js │ │ │ ├── jsp.js │ │ │ ├── jssm.js │ │ │ ├── jsx.js │ │ │ ├── julia.js │ │ │ ├── kotlin.js │ │ │ ├── latex.js │ │ │ ├── less.js │ │ │ ├── liquid.js │ │ │ ├── lisp.js │ │ │ ├── livescript.js │ │ │ ├── logiql.js │ │ │ ├── logtalk.js │ │ │ ├── lsl.js │ │ │ ├── lua.js │ │ │ ├── luapage.js │ │ │ ├── lucene.js │ │ │ ├── makefile.js │ │ │ ├── markdown.js │ │ │ ├── mask.js │ │ │ ├── matlab.js │ │ │ ├── maze.js │ │ │ ├── mediawiki.js │ │ │ ├── mel.js │ │ │ ├── mixal.js │ │ │ ├── mushcode.js │ │ │ ├── mysql.js │ │ │ ├── nginx.js │ │ │ ├── nim.js │ │ │ ├── nix.js │ │ │ ├── nsis.js │ │ │ ├── nunjucks.js │ │ │ ├── objectivec.js │ │ │ ├── ocaml.js │ │ │ ├── pascal.js │ │ │ ├── perl.js │ │ │ ├── perl6.js │ │ │ ├── pgsql.js │ │ │ ├── php.js │ │ │ ├── php_laravel_blade.js │ │ │ ├── pig.js │ │ │ ├── plain_text.js │ │ │ ├── powershell.js │ │ │ ├── praat.js │ │ │ ├── prisma.js │ │ │ ├── prolog.js │ │ │ ├── properties.js │ │ │ ├── protobuf.js │ │ │ ├── puppet.js │ │ │ ├── python.js │ │ │ ├── qml.js │ │ │ ├── r.js │ │ │ ├── razor.js │ │ │ ├── rdoc.js │ │ │ ├── red.js │ │ │ ├── redshift.js │ │ │ ├── rhtml.js │ │ │ ├── rst.js │ │ │ ├── ruby.js │ │ │ ├── rust.js │ │ │ ├── sass.js │ │ │ ├── scad.js │ │ │ ├── scala.js │ │ │ ├── scheme.js │ │ │ ├── scss.js │ │ │ ├── sh.js │ │ │ ├── sjs.js │ │ │ ├── slim.js │ │ │ ├── smarty.js │ │ │ ├── snippets.js │ │ │ ├── soy_template.js │ │ │ ├── space.js │ │ │ ├── sparql.js │ │ │ ├── sql.js │ │ │ ├── sqlserver.js │ │ │ ├── stylus.js │ │ │ ├── svg.js │ │ │ ├── swift.js │ │ │ ├── tcl.js │ │ │ ├── terraform.js │ │ │ ├── tex.js │ │ │ ├── text.js │ │ │ ├── textile.js │ │ │ ├── toml.js │ │ │ ├── tsx.js │ │ │ ├── turtle.js │ │ │ ├── twig.js │ │ │ ├── typescript.js │ │ │ ├── vala.js │ │ │ ├── vbscript.js │ │ │ ├── velocity.js │ │ │ ├── verilog.js │ │ │ ├── vhdl.js │ │ │ ├── visualforce.js │ │ │ ├── wollok.js │ │ │ ├── xml.js │ │ │ ├── xquery.js │ │ │ ├── yaml.js │ │ │ └── zeek.js │ │ ├── theme-ambiance.js │ │ ├── theme-chaos.js │ │ ├── theme-chrome.js │ │ ├── theme-clouds.js │ │ ├── theme-clouds_midnight.js │ │ ├── theme-cobalt.js │ │ ├── theme-crimson_editor.js │ │ ├── theme-dawn.js │ │ ├── theme-dracula.js │ │ ├── theme-dreamweaver.js │ │ ├── theme-eclipse.js │ │ ├── theme-github.js │ │ ├── theme-gob.js │ │ ├── theme-gruvbox.js │ │ ├── theme-idle_fingers.js │ │ ├── theme-iplastic.js │ │ ├── theme-katzenmilch.js │ │ ├── theme-kr_theme.js │ │ ├── theme-kuroir.js │ │ ├── theme-merbivore.js │ │ ├── theme-merbivore_soft.js │ │ ├── theme-mono_industrial.js │ │ ├── theme-monokai.js │ │ ├── theme-nord_dark.js │ │ ├── theme-pastel_on_dark.js │ │ ├── theme-solarized_dark.js │ │ ├── theme-solarized_light.js │ │ ├── theme-sqlserver.js │ │ ├── theme-terminal.js │ │ ├── theme-textmate.js │ │ ├── theme-tomorrow.js │ │ ├── theme-tomorrow_night.js │ │ ├── theme-tomorrow_night_blue.js │ │ ├── theme-tomorrow_night_bright.js │ │ ├── theme-tomorrow_night_eighties.js │ │ ├── theme-twilight.js │ │ ├── theme-vibrant_ink.js │ │ ├── theme-xcode.js │ │ ├── worker-base.js │ │ ├── worker-coffee.js │ │ ├── worker-css.js │ │ ├── worker-html.js │ │ ├── worker-javascript.js │ │ ├── worker-json.js │ │ ├── worker-lua.js │ │ ├── worker-php.js │ │ ├── worker-xml.js │ │ └── worker-xquery.js │ ├── angular-animate.min.js │ ├── angular-route.min.js │ ├── angular-sanitize.min.js │ ├── angular-translate-loader-static-files.min.js │ ├── angular-translate.min.js │ ├── angular.min.js │ ├── ansi_up.min.js │ ├── bootstrap.min.js │ ├── github-emojis.js │ ├── jquery-3.4.1.min.js │ ├── katex-auto-render.min.js │ ├── katex.min.js │ ├── marked-emoji.js │ ├── marked-katex-extension.umd.min.js │ ├── marked.min.js │ ├── notebook.min.js │ ├── org.js │ ├── pdf.compat.js │ ├── pdf.js │ ├── pdf.worker.js │ ├── popper.min.js │ ├── prism.min.js │ ├── purify.min.js │ └── ui-ace.min.js │ ├── langColors.js │ ├── ng-pdfviewer.min.js │ └── utils.js ├── src ├── cli │ └── index.ts ├── config.ts ├── core │ ├── AnonymizedFile.ts │ ├── AnonymousError.ts │ ├── Conference.ts │ ├── GitHubUtils.ts │ ├── PullRequest.ts │ ├── Repository.ts │ ├── User.ts │ ├── anonymize-utils.ts │ ├── model │ │ ├── anonymizedPullRequests │ │ │ ├── anonymizedPullRequests.model.ts │ │ │ ├── anonymizedPullRequests.schema.ts │ │ │ └── anonymizedPullRequests.types.ts │ │ ├── anonymizedRepositories │ │ │ ├── anonymizedRepositories.model.ts │ │ │ ├── anonymizedRepositories.schema.ts │ │ │ └── anonymizedRepositories.types.ts │ │ ├── conference │ │ │ ├── conferences.model.ts │ │ │ ├── conferences.schema.ts │ │ │ └── conferences.types.ts │ │ ├── files │ │ │ ├── files.model.ts │ │ │ ├── files.schema.ts │ │ │ └── files.types.ts │ │ ├── repositories │ │ │ ├── repositories.model.ts │ │ │ ├── repositories.schema.ts │ │ │ └── repositories.types.ts │ │ └── users │ │ │ ├── users.model.ts │ │ │ ├── users.schema.ts │ │ │ └── users.types.ts │ ├── source │ │ ├── GitHubBase.ts │ │ ├── GitHubDownload.ts │ │ ├── GitHubRepository.ts │ │ ├── GitHubStream.ts │ │ ├── Source.ts │ │ └── Zip.ts │ ├── storage.ts │ ├── storage │ │ ├── FileSystem.ts │ │ ├── S3.ts │ │ └── Storage.ts │ └── types.ts ├── queue │ ├── index.ts │ └── processes │ │ ├── downloadRepository.ts │ │ ├── removeCache.ts │ │ └── removeRepository.ts ├── server │ ├── database.ts │ ├── index.ts │ ├── routes │ │ ├── admin.ts │ │ ├── conference.ts │ │ ├── connection.ts │ │ ├── file.ts │ │ ├── index.ts │ │ ├── option.ts │ │ ├── pullRequest-private.ts │ │ ├── pullRequest-public.ts │ │ ├── repository-private.ts │ │ ├── repository-public.ts │ │ ├── route-utils.ts │ │ ├── user.ts │ │ └── webview.ts │ └── schedule.ts └── streamer │ ├── index.ts │ └── route.ts └── tsconfig.json /.dockerignore: -------------------------------------------------------------------------------- 1 | /repositories 2 | db_backups 3 | build 4 | node_modules 5 | .github -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: tdurieux 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: tdurieux 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: tdurieux 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | build 3 | /repositories 4 | repo/ 5 | db_backups 6 | message.txt 7 | # Created by https://www.gitignore.io/api/node 8 | # Edit at https://www.gitignore.io/?templates=node 9 | 10 | ### Node ### 11 | # Logs 12 | logs 13 | *.log 14 | npm-debug.log* 15 | yarn-debug.log* 16 | yarn-error.log* 17 | lerna-debug.log* 18 | 19 | # Diagnostic reports (https://nodejs.org/api/report.html) 20 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 21 | 22 | # Runtime data 23 | pids 24 | *.pid 25 | *.seed 26 | *.pid.lock 27 | 28 | # Directory for instrumented libs generated by jscoverage/JSCover 29 | lib-cov 30 | 31 | # Coverage directory used by tools like istanbul 32 | coverage 33 | *.lcov 34 | 35 | # nyc test coverage 36 | .nyc_output 37 | 38 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 39 | .grunt 40 | 41 | # Bower dependency directory (https://bower.io/) 42 | bower_components 43 | 44 | # node-waf configuration 45 | .lock-wscript 46 | 47 | # Compiled binary addons (https://nodejs.org/api/addons.html) 48 | build/Release 49 | 50 | # Dependency directories 51 | node_modules/ 52 | jspm_packages/ 53 | 54 | # TypeScript v1 declaration files 55 | typings/ 56 | 57 | # TypeScript cache 58 | *.tsbuildinfo 59 | 60 | # Optional npm cache directory 61 | .npm 62 | 63 | # Optional eslint cache 64 | .eslintcache 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # dotenv environment variables file 76 | .env 77 | .env.test 78 | 79 | # parcel-bundler cache (https://parceljs.org/) 80 | .cache 81 | 82 | # next.js build output 83 | .next 84 | 85 | # nuxt.js build output 86 | .nuxt 87 | 88 | # rollup.js default build output 89 | dist/ 90 | 91 | # Uncomment the public line if your project uses Gatsby 92 | # https://nextjs.org/blog/next-9-1#public-directory-support 93 | # https://create-react-app.dev/docs/using-the-public-folder/#docsNav 94 | # public 95 | 96 | # Storybook build outputs 97 | .out 98 | .storybook-out 99 | 100 | # vuepress build output 101 | .vuepress/dist 102 | 103 | # Serverless directories 104 | .serverless/ 105 | 106 | # FuseBox cache 107 | .fusebox/ 108 | 109 | # DynamoDB Local files 110 | .dynamodb/ 111 | 112 | # Temporary folders 113 | tmp/ 114 | temp/ 115 | 116 | # End of https://www.gitignore.io/api/node 117 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:21-slim 2 | 3 | ENV PORT 5000 4 | EXPOSE $PORT 5 | 6 | WORKDIR /app 7 | 8 | COPY package.json . 9 | COPY package-lock.json . 10 | 11 | COPY gulpfile.js . 12 | COPY tsconfig.json . 13 | COPY healthcheck.js . 14 | 15 | COPY public ./public 16 | COPY src ./src 17 | 18 | RUN npm install && npm run build && npm cache clean --force 19 | COPY opentelemetry.js . 20 | 21 | CMD [ "node", "--require", "./opentelemetry.js", "./build/server/index.js"] -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | const { src, dest } = require("gulp"); 2 | const uglify = require("gulp-uglify"); 3 | const concat = require("gulp-concat"); 4 | var order = require("gulp-order"); 5 | const cleanCss = require("gulp-clean-css"); 6 | 7 | function defaultTask(cb) { 8 | const jsFiles = [ 9 | "public/script/external/angular.min.js", 10 | "public/script/external/angular-translate.min.js", 11 | "public/script/external/angular-translate-loader-static-files.min.js", 12 | "public/script/external/angular-sanitize.min.js", 13 | "public/script/external/angular-route.min.js", 14 | "public/script/external/pdf.compat.js", 15 | "public/script/external/pdf.js", 16 | "public/script/external/github-emojis.js", 17 | "public/script/external/marked-emoji.js", 18 | "public/script/external/marked.min.js", 19 | "public/script/external/purify.min.js", 20 | "public/script/external/ansi_up.min.js", 21 | "public/script/external/prism.min.js", 22 | "public/script/external/katex.min.js", 23 | "public/script/external/katex-auto-render.min.js", 24 | "public/script/external/marked-katex-extension.umd.min.js", 25 | "public/script/external/notebook.min.js", 26 | "public/script/external/org.js", 27 | "public/script/external/jquery-3.4.1.min.js", 28 | "public/script/external/popper.min.js", 29 | "public/script/external/bootstrap.min.js", 30 | "public/script/external/ace/ace.js", 31 | "public/script/external/ui-ace.min.js", 32 | "public/script/utils.js", 33 | "public/script/ng-pdfviewer.min.js", 34 | "public/script/app.js", 35 | "public/script/admin.js", 36 | ]; 37 | const cssFiles = [ 38 | "public/css/bootstrap.min.css", 39 | "public/css/font-awesome.min.css", 40 | "public/css/notebook.css", 41 | "public/css/katex.min.css", 42 | "public/css/github-markdown.min.css", 43 | "public/css/style.css", 44 | ]; 45 | src(jsFiles) 46 | .pipe(order(jsFiles, { base: "./" })) 47 | .pipe(concat("bundle.min.js")) 48 | .pipe(uglify()) 49 | .pipe(dest("public/script")) 50 | .on("end", cb); 51 | 52 | src(cssFiles) 53 | .pipe(order(cssFiles, { base: "./" })) 54 | .pipe(concat("all.min.css")) 55 | .pipe(cleanCss()) 56 | .pipe(dest("public/css")); 57 | } 58 | 59 | exports.default = defaultTask; 60 | -------------------------------------------------------------------------------- /healthcheck.js: -------------------------------------------------------------------------------- 1 | require("dotenv").config(); 2 | const http = require("http"); 3 | const config = require("./build/config"); 4 | 5 | const options = { 6 | path: "/healthcheck", 7 | method: "GET", 8 | host: "127.0.0.1", 9 | port: config.default.PORT, 10 | timeout: 2000, 11 | }; 12 | const request = http.request(options, (res) => { 13 | if (res.statusCode == 200 || res.statusCode == 404) { 14 | process.exit(0); 15 | } else { 16 | const reqURL = `${res.req.protocol}://${res.req.host}:${options.port}${res.req.path}`; 17 | console.log(reqURL, res.statusCode); 18 | process.exit(1); 19 | } 20 | }); 21 | 22 | request.on("error", (err) => { 23 | console.log("ERROR", err); 24 | process.exit(1); 25 | }); 26 | 27 | request.end(); 28 | -------------------------------------------------------------------------------- /opentelemetry-collector.yml: -------------------------------------------------------------------------------- 1 | receivers: 2 | otlp: 3 | protocols: 4 | grpc: 5 | 6 | exporters: 7 | prometheus: 8 | endpoint: "0.0.0.0:8889" 9 | const_labels: 10 | label1: value1 11 | 12 | debug: 13 | 14 | otlp: 15 | endpoint: jaeger:4317 16 | tls: 17 | insecure: true 18 | 19 | processors: 20 | batch: 21 | 22 | extensions: 23 | health_check: 24 | pprof: 25 | endpoint: :1888 26 | zpages: 27 | endpoint: :55679 28 | 29 | service: 30 | extensions: [health_check, pprof, zpages] 31 | pipelines: 32 | traces: 33 | receivers: [otlp] 34 | exporters: [debug, otlp] 35 | metrics: 36 | receivers: [otlp] 37 | exporters: [debug, prometheus] 38 | logs: 39 | receivers: [otlp] 40 | exporters: [debug] 41 | -------------------------------------------------------------------------------- /opentelemetry.js: -------------------------------------------------------------------------------- 1 | const opentelemetry = require("@opentelemetry/sdk-node"); 2 | const { 3 | getNodeAutoInstrumentations, 4 | } = require("@opentelemetry/auto-instrumentations-node"); 5 | const { 6 | OTLPTraceExporter, 7 | } = require("@opentelemetry/exporter-trace-otlp-grpc"); 8 | const { 9 | OTLPMetricExporter, 10 | } = require("@opentelemetry/exporter-metrics-otlp-grpc"); 11 | const { PeriodicExportingMetricReader } = require("@opentelemetry/sdk-metrics"); 12 | const { diag, DiagConsoleLogger, DiagLogLevel } = require("@opentelemetry/api"); 13 | 14 | // diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.INFO); 15 | 16 | const sdk = new opentelemetry.NodeSDK({ 17 | serviceName: process.env.SERVICE_NAME || "Anonymous-GitHub", 18 | logRecordProcessor: getNodeAutoInstrumentations().logRecordProcessor, 19 | traceExporter: new OTLPTraceExporter({ 20 | url: "http://opentelemetry:4317/v1/traces", 21 | }), 22 | metricReader: new PeriodicExportingMetricReader({ 23 | exporter: new OTLPMetricExporter({ 24 | url: "http://opentelemetry:4317/v1/metrics", 25 | }), 26 | }), 27 | instrumentations: [getNodeAutoInstrumentations()], 28 | }); 29 | sdk.start(); 30 | -------------------------------------------------------------------------------- /prometheus.yaml: -------------------------------------------------------------------------------- 1 | scrape_configs: 2 | - job_name: 'otel-collector' 3 | scrape_interval: 10s 4 | static_configs: 5 | - targets: ['opentelemetry:8889'] 6 | - targets: ['opentelemetry:8888'] -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_AMS-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_AMS-Regular.ttf -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_AMS-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_AMS-Regular.woff -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_AMS-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_AMS-Regular.woff2 -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Caligraphic-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Caligraphic-Bold.ttf -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Caligraphic-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Caligraphic-Bold.woff -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Caligraphic-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Caligraphic-Bold.woff2 -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Caligraphic-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Caligraphic-Regular.ttf -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Caligraphic-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Caligraphic-Regular.woff -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Caligraphic-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Caligraphic-Regular.woff2 -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Fraktur-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Fraktur-Bold.ttf -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Fraktur-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Fraktur-Bold.woff -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Fraktur-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Fraktur-Bold.woff2 -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Fraktur-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Fraktur-Regular.ttf -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Fraktur-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Fraktur-Regular.woff -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Fraktur-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Fraktur-Regular.woff2 -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Main-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Main-Bold.ttf -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Main-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Main-Bold.woff -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Main-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Main-Bold.woff2 -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Main-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Main-BoldItalic.ttf -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Main-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Main-BoldItalic.woff -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Main-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Main-BoldItalic.woff2 -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Main-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Main-Italic.ttf -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Main-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Main-Italic.woff -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Main-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Main-Italic.woff2 -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Main-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Main-Regular.ttf -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Main-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Main-Regular.woff -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Main-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Main-Regular.woff2 -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Math-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Math-BoldItalic.ttf -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Math-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Math-BoldItalic.woff -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Math-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Math-BoldItalic.woff2 -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Math-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Math-Italic.ttf -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Math-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Math-Italic.woff -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Math-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Math-Italic.woff2 -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_SansSerif-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_SansSerif-Bold.ttf -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_SansSerif-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_SansSerif-Bold.woff -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_SansSerif-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_SansSerif-Bold.woff2 -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_SansSerif-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_SansSerif-Italic.ttf -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_SansSerif-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_SansSerif-Italic.woff -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_SansSerif-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_SansSerif-Italic.woff2 -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_SansSerif-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_SansSerif-Regular.ttf -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_SansSerif-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_SansSerif-Regular.woff -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_SansSerif-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_SansSerif-Regular.woff2 -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Script-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Script-Regular.ttf -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Script-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Script-Regular.woff -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Script-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Script-Regular.woff2 -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Size1-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Size1-Regular.ttf -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Size1-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Size1-Regular.woff -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Size1-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Size1-Regular.woff2 -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Size2-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Size2-Regular.ttf -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Size2-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Size2-Regular.woff -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Size2-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Size2-Regular.woff2 -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Size3-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Size3-Regular.ttf -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Size3-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Size3-Regular.woff -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Size3-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Size3-Regular.woff2 -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Size4-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Size4-Regular.ttf -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Size4-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Size4-Regular.woff -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Size4-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Size4-Regular.woff2 -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Typewriter-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Typewriter-Regular.ttf -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Typewriter-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Typewriter-Regular.woff -------------------------------------------------------------------------------- /public/css/fonts/KaTeX_Typewriter-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/css/fonts/KaTeX_Typewriter-Regular.woff2 -------------------------------------------------------------------------------- /public/css/notebook.css: -------------------------------------------------------------------------------- 1 | .nb-notebook { 2 | line-height: 1.5; 3 | } 4 | 5 | .nb-stdout, .nb-stderr { 6 | white-space: pre-wrap; 7 | margin: 1em 0; 8 | padding: 0.1em 0.5em; 9 | } 10 | 11 | .nb-stderr { 12 | background-color: #FAA; 13 | } 14 | 15 | .nb-cell + .nb-cell { 16 | margin-top: 0.5em; 17 | } 18 | 19 | .nb-output table { 20 | border: 1px solid #000; 21 | border-collapse: collapse; 22 | } 23 | 24 | .nb-output th { 25 | font-weight: bold; 26 | } 27 | 28 | .nb-output th, .nb-output td { 29 | border: 1px solid #000; 30 | padding: 0.25em; 31 | text-align: left; 32 | vertical-align: middle; 33 | border-collapse: collapse; 34 | } 35 | 36 | .nb-notebook blockquote { 37 | border-left: 5px solid #CCC; 38 | margin-left: 0; 39 | padding-left: 1em; 40 | } 41 | 42 | .nb-cell { 43 | position: relative; 44 | } 45 | 46 | .nb-raw-cell { 47 | white-space: pre-wrap; 48 | background-color: #f5f2f0; 49 | font-family: Consolas, Monaco, 'Andale Mono', monospace; 50 | padding: 1em; 51 | margin: .5em 0; 52 | } 53 | 54 | .nb-output { 55 | min-height: 1em; 56 | width: 100%; 57 | overflow-x: scroll; 58 | border-right: 1px dotted #CCC; 59 | } 60 | 61 | .nb-output img { 62 | max-width: 100%; 63 | } 64 | 65 | .nb-output:before, .nb-input:before { 66 | position: absolute; 67 | font-family: monospace; 68 | color: #999; 69 | left: -7.5em; 70 | width: 7em; 71 | text-align: right; 72 | } 73 | 74 | .nb-input:before { 75 | content: "In [" attr(data-prompt-number) "]:"; 76 | } 77 | .nb-output:before { 78 | content: "Out [" attr(data-prompt-number) "]:"; 79 | } 80 | 81 | // Fix pandas dataframe formatting 82 | div[style="max-height:1000px;max-width:1500px;overflow:auto;"] { 83 | max-height: none !important; 84 | } 85 | 86 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/favicon.ico -------------------------------------------------------------------------------- /public/favicon/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/favicon/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/favicon/android-chrome-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/favicon/android-chrome-256x256.png -------------------------------------------------------------------------------- /public/favicon/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/favicon/apple-touch-icon.png -------------------------------------------------------------------------------- /public/favicon/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #00aba9 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /public/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /public/favicon/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/favicon/mstile-150x150.png -------------------------------------------------------------------------------- /public/favicon/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Anonymous Github", 3 | "short_name": "Anonymous Github", 4 | "icons": [ 5 | { 6 | "src": "/favicon/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/favicon/android-chrome-256x256.png", 12 | "sizes": "256x256", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#ffffff", 17 | "background_color": "#ffffff", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /public/fonts/fa-brands-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/fonts/fa-brands-400.eot -------------------------------------------------------------------------------- /public/fonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/fonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /public/fonts/fa-brands-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/fonts/fa-brands-400.woff -------------------------------------------------------------------------------- /public/fonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/fonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /public/fonts/fa-regular-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/fonts/fa-regular-400.eot -------------------------------------------------------------------------------- /public/fonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/fonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /public/fonts/fa-regular-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/fonts/fa-regular-400.woff -------------------------------------------------------------------------------- /public/fonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/fonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /public/fonts/fa-solid-900.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/fonts/fa-solid-900.eot -------------------------------------------------------------------------------- /public/fonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/fonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /public/fonts/fa-solid-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/fonts/fa-solid-900.woff -------------------------------------------------------------------------------- /public/fonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/fonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /public/imgs/anonymize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/imgs/anonymize.png -------------------------------------------------------------------------------- /public/imgs/dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/imgs/dashboard.png -------------------------------------------------------------------------------- /public/imgs/explorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdurieux/anonymous_github/b2d77faa6c6f35ad9ae6ed46e3a3fa4681ac84c2/public/imgs/explorer.png -------------------------------------------------------------------------------- /public/partials/404.htm: -------------------------------------------------------------------------------- 1 |
2 |

3 |
404
Page not found 4 |

5 |
6 | -------------------------------------------------------------------------------- /public/partials/claim.htm: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
10 |
Claim an anonymized repository
11 |
12 | Claim the ownership of an existing anonymized repository. 13 |
14 |
15 |
16 | 17 | 26 |
The repository is not found.
28 |
29 |
30 |
31 | 32 | 41 | The id is in the repository 43 | https://anonymous.4open.science/r/{id} 45 |
46 | 47 | 55 |
56 |
57 |
58 |
59 |
60 | -------------------------------------------------------------------------------- /public/partials/explorer.htm: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
6 |
12 | Last Update: {{options.lastUpdateDate|date}} 13 |
14 |
15 |
16 |
17 |
18 | 23 |
24 | Edit 30 | View raw 37 | Download file 44 | Download Repository 51 | Website 58 |
59 |
60 |
61 | 62 |
63 |
64 |
65 |
66 | -------------------------------------------------------------------------------- /public/partials/loading.htm: -------------------------------------------------------------------------------- 1 |
2 |

Loading...

3 |

4 |
5 | -------------------------------------------------------------------------------- /public/partials/pageView.htm: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 | 6 |
7 | 8 |
9 |
10 |
11 |

Error

12 |

Loading...

13 |

Empty repository!

14 |

Empty file!

15 |

Unsupported binary file. You can download the file: here.

-------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: /r/ -------------------------------------------------------------------------------- /public/script/external/ace/ext-error_marker.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/ext/error_marker"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/ext-linking.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/ext/linking",["require","exports","module","ace/editor","ace/config"],function(e,t,n){function i(e){var n=e.editor,r=e.getAccelKey();if(r){var n=e.editor,i=e.getDocumentPosition(),s=n.session,o=s.getTokenAt(i.row,i.column);t.previousLinkingHover&&t.previousLinkingHover!=o&&n._emit("linkHoverOut"),n._emit("linkHover",{position:i,token:o}),t.previousLinkingHover=o}else t.previousLinkingHover&&(n._emit("linkHoverOut"),t.previousLinkingHover=!1)}function s(e){var t=e.getAccelKey(),n=e.getButton();if(n==0&&t){var r=e.editor,i=e.getDocumentPosition(),s=r.session,o=s.getTokenAt(i.row,i.column);r._emit("linkClick",{position:i,token:o})}}var r=e("../editor").Editor;e("../config").defineOptions(r.prototype,"editor",{enableLinking:{set:function(e){e?(this.on("click",s),this.on("mousemove",i)):(this.off("click",s),this.off("mousemove",i))},value:!1}}),t.previousLinkingHover=!1}); (function() { 2 | ace.require(["ace/ext/linking"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/ext-spellcheck.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/ext/spellcheck",["require","exports","module","ace/lib/event","ace/editor","ace/config"],function(e,t,n){"use strict";var r=e("../lib/event");t.contextMenuHandler=function(e){var t=e.target,n=t.textInput.getElement();if(!t.selection.isEmpty())return;var i=t.getCursorPosition(),s=t.session.getWordRange(i.row,i.column),o=t.session.getTextRange(s);t.session.tokenRe.lastIndex=0;if(!t.session.tokenRe.test(o))return;var u="\x01\x01",a=o+" "+u;n.value=a,n.setSelectionRange(o.length,o.length+1),n.setSelectionRange(0,0),n.setSelectionRange(0,o.length);var f=!1;r.addListener(n,"keydown",function l(){r.removeListener(n,"keydown",l),f=!0}),t.textInput.setInputHandler(function(e){if(e==a)return"";if(e.lastIndexOf(a,0)===0)return e.slice(a.length);if(e.substr(n.selectionEnd)==a)return e.slice(0,-a.length);if(e.slice(-2)==u){var r=e.slice(0,-2);if(r.slice(-1)==" ")return f?r.substring(0,n.selectionEnd):(r=r.slice(0,-1),t.session.replace(s,r),"")}return e})};var i=e("../editor").Editor;e("../config").defineOptions(i.prototype,"editor",{spellcheck:{set:function(e){var n=this.textInput.getElement();n.spellcheck=!!e,e?this.on("nativecontextmenu",t.contextMenuHandler):this.removeListener("nativecontextmenu",t.contextMenuHandler)},value:!0}})}); (function() { 2 | ace.require(["ace/ext/spellcheck"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/ext-statusbar.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/ext/statusbar",["require","exports","module","ace/lib/dom","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=e("../lib/lang"),s=function(e,t){this.element=r.createElement("div"),this.element.className="ace_status-indicator",this.element.style.cssText="display: inline-block;",t.appendChild(this.element);var n=i.delayedCall(function(){this.updateStatus(e)}.bind(this)).schedule.bind(null,100);e.on("changeStatus",n),e.on("changeSelection",n),e.on("keyboardActivity",n)};(function(){this.updateStatus=function(e){function n(e,n){e&&t.push(e,n||"|")}var t=[];n(e.keyBinding.getStatusText(e)),e.commands.recording&&n("REC");var r=e.selection,i=r.lead;if(!r.isEmpty()){var s=e.getSelectionRange();n("("+(s.end.row-s.start.row)+":"+(s.end.column-s.start.column)+")"," ")}n(i.row+":"+i.column," "),r.rangeCount&&n("["+r.rangeCount+"]"," "),t.pop(),this.element.textContent=t.join("")}}).call(s.prototype),t.StatusBar=s}); (function() { 2 | ace.require(["ace/ext/statusbar"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/ext-themelist.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/ext/themelist",["require","exports","module"],function(e,t,n){"use strict";var r=[["Chrome"],["Clouds"],["Crimson Editor"],["Dawn"],["Dreamweaver"],["Eclipse"],["GitHub"],["IPlastic"],["Solarized Light"],["TextMate"],["Tomorrow"],["Xcode"],["Kuroir"],["KatzenMilch"],["SQL Server","sqlserver","light"],["Ambiance","ambiance","dark"],["Chaos","chaos","dark"],["Clouds Midnight","clouds_midnight","dark"],["Dracula","","dark"],["Cobalt","cobalt","dark"],["Gruvbox","gruvbox","dark"],["Green on Black","gob","dark"],["idle Fingers","idle_fingers","dark"],["krTheme","kr_theme","dark"],["Merbivore","merbivore","dark"],["Merbivore Soft","merbivore_soft","dark"],["Mono Industrial","mono_industrial","dark"],["Monokai","monokai","dark"],["Nord Dark","nord_dark","dark"],["Pastel on dark","pastel_on_dark","dark"],["Solarized Dark","solarized_dark","dark"],["Terminal","terminal","dark"],["Tomorrow Night","tomorrow_night","dark"],["Tomorrow Night Blue","tomorrow_night_blue","dark"],["Tomorrow Night Bright","tomorrow_night_bright","dark"],["Tomorrow Night 80s","tomorrow_night_eighties","dark"],["Twilight","twilight","dark"],["Vibrant Ink","vibrant_ink","dark"]];t.themesByName={},t.themes=r.map(function(e){var n=e[1]||e[0].replace(/ /g,"_").toLowerCase(),r={caption:e[0],theme:"ace/theme/"+n,isDark:e[2]=="dark",name:n};return t.themesByName[n]=r,r})}); (function() { 2 | ace.require(["ace/ext/themelist"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/mode-csp.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/csp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.createKeywordMapper({"constant.language":"child-src|connect-src|default-src|font-src|frame-src|img-src|manifest-src|media-src|object-src|script-src|style-src|worker-src|base-uri|plugin-types|sandbox|disown-opener|form-action|frame-ancestors|report-uri|report-to|upgrade-insecure-requests|block-all-mixed-content|require-sri-for|reflected-xss|referrer|policy-uri",variable:"'none'|'self'|'unsafe-inline'|'unsafe-eval'|'strict-dynamic'|'unsafe-hashed-attributes'"},"identifier",!0);this.$rules={start:[{token:"string.link",regex:/https?:[^;\s]*/},{token:"operator.punctuation",regex:/;/},{token:e,regex:/[^\s;]+/}]}};r.inherits(s,i),t.CspHighlightRules=s}),ace.define("ace/mode/csp",["require","exports","module","ace/mode/text","ace/mode/csp_highlight_rules","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./text").Mode,i=e("./csp_highlight_rules").CspHighlightRules,s=e("../lib/oop"),o=function(){this.HighlightRules=i};s.inherits(o,r),function(){this.$id="ace/mode/csp"}.call(o.prototype),t.Mode=o}); (function() { 2 | ace.require(["ace/mode/csp"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/mode-gcode.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/gcode_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="IF|DO|WHILE|ENDWHILE|CALL|ENDIF|SUB|ENDSUB|GOTO|REPEAT|ENDREPEAT|CALL",t="PI",n="ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"\\(.*\\)"},{token:"comment",regex:"([N])([0-9]+)"},{token:"string",regex:"([G])([0-9]+\\.?[0-9]?)"},{token:"string",regex:"([M])([0-9]+\\.?[0-9]?)"},{token:"constant.numeric",regex:"([-+]?([0-9]*\\.?[0-9]+\\.?))|(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)"},{token:r,regex:"[A-Z]"},{token:"keyword.operator",regex:"EQ|LT|GT|NE|GE|LE|OR|XOR"},{token:"paren.lparen",regex:"[\\[]"},{token:"paren.rparen",regex:"[\\]]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.GcodeHighlightRules=s}),ace.define("ace/mode/gcode",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gcode_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./gcode_highlight_rules").GcodeHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.$id="ace/mode/gcode"}.call(u.prototype),t.Mode=u}); (function() { 2 | ace.require(["ace/mode/gcode"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/mode-gitignore.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/gitignore_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment",regex:/^\s*#.*$/},{token:"keyword",regex:/^\s*!.*$/}]},this.normalizeRules()};s.metaData={fileTypes:["gitignore"],name:"Gitignore"},r.inherits(s,i),t.GitignoreHighlightRules=s}),ace.define("ace/mode/gitignore",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gitignore_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./gitignore_highlight_rules").GitignoreHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.lineCommentStart="#",this.$id="ace/mode/gitignore"}.call(o.prototype),t.Mode=o}); (function() { 2 | ace.require(["ace/mode/gitignore"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/mode-lisp.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/lisp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="case|do|let|loop|if|else|when",t="eq|neq|and|or",n="null|nil",r="cons|car|cdr|cond|lambda|format|setq|setf|quote|eval|append|list|listp|memberp|t|load|progn",i=this.createKeywordMapper({"keyword.control":e,"keyword.operator":t,"constant.language":n,"support.function":r},"identifier",!0);this.$rules={start:[{token:"comment",regex:";.*$"},{token:["storage.type.function-type.lisp","text","entity.name.function.lisp"],regex:"(?:\\b(?:(defun|defmethod|defmacro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)"},{token:["punctuation.definition.constant.character.lisp","constant.character.lisp"],regex:"(#)((?:\\w|[\\\\+-=<>'\"&#])+)"},{token:["punctuation.definition.variable.lisp","variable.other.global.lisp","punctuation.definition.variable.lisp"],regex:"(\\*)(\\S*)(\\*)"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"string",regex:'"(?=.)',next:"qqstring"}],qqstring:[{token:"constant.character.escape.lisp",regex:"\\\\."},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"}]}};r.inherits(s,i),t.LispHighlightRules=s}),ace.define("ace/mode/lisp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lisp_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./lisp_highlight_rules").LispHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.lineCommentStart=";",this.$id="ace/mode/lisp"}.call(o.prototype),t.Mode=o}); (function() { 2 | ace.require(["ace/mode/lisp"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/mode-plain_text.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/plain_text",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/behaviour"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./text_highlight_rules").TextHighlightRules,o=e("./behaviour").Behaviour,u=function(){this.HighlightRules=s,this.$behaviour=new o};r.inherits(u,i),function(){this.type="text",this.getNextLineIndent=function(e,t,n){return""},this.$id="ace/mode/plain_text"}.call(u.prototype),t.Mode=u}); (function() { 2 | ace.require(["ace/mode/plain_text"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/mode-properties.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/properties_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=/\\u[0-9a-fA-F]{4}|\\/;this.$rules={start:[{token:"comment",regex:/[!#].*$/},{token:"keyword",regex:/[=:]$/},{token:"keyword",regex:/[=:]/,next:"value"},{token:"constant.language.escape",regex:e},{defaultToken:"variable"}],value:[{regex:/\\$/,token:"string",next:"value"},{regex:/$/,token:"string",next:"start"},{token:"constant.language.escape",regex:e},{defaultToken:"string"}]}};r.inherits(s,i),t.PropertiesHighlightRules=s}),ace.define("ace/mode/properties",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/properties_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./properties_highlight_rules").PropertiesHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.$id="ace/mode/properties"}.call(o.prototype),t.Mode=o}); (function() { 2 | ace.require(["ace/mode/properties"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/mode-sql.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/sql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="select|insert|update|delete|from|where|and|or|group|by|order|limit|offset|having|as|case|when|then|else|end|type|left|right|join|on|outer|desc|asc|union|create|table|primary|key|if|foreign|not|references|default|null|inner|cross|natural|database|drop|grant",t="true|false",n="avg|count|first|last|max|min|sum|ucase|lcase|mid|len|round|rank|now|format|coalesce|ifnull|isnull|nvl",r="int|numeric|decimal|date|varchar|char|bigint|float|double|bit|binary|text|set|timestamp|money|real|number|integer",i=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t,"storage.type":r},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"comment",start:"/\\*",end:"\\*/"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"string",regex:"`.*?`"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]},this.normalizeRules()};r.inherits(s,i),t.SqlHighlightRules=s}),ace.define("ace/mode/sql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sql_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sql_highlight_rules").SqlHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.lineCommentStart="--",this.$id="ace/mode/sql",this.snippetFileId="ace/snippets/sql"}.call(o.prototype),t.Mode=o}); (function() { 2 | ace.require(["ace/mode/sql"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/mode-text.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/mode/text"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/mode-textile.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/textile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:function(e){return e.charAt(0)=="h"?"markup.heading."+e.charAt(1):"markup.heading"},regex:"h1|h2|h3|h4|h5|h6|bq|p|bc|pre",next:"blocktag"},{token:"keyword",regex:"[\\*]+|[#]+"},{token:"text",regex:".+"}],blocktag:[{token:"keyword",regex:"\\. ",next:"start"},{token:"keyword",regex:"\\(",next:"blocktagproperties"}],blocktagproperties:[{token:"keyword",regex:"\\)",next:"blocktag"},{token:"string",regex:"[a-zA-Z0-9\\-_]+"},{token:"keyword",regex:"#"}]}};r.inherits(s,i),t.TextileHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/textile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/textile_highlight_rules","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./textile_highlight_rules").TextileHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.type="text",this.getNextLineIndent=function(e,t,n){return e=="intag"?n:""},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/textile",this.snippetFileId="ace/snippets/textile"}.call(u.prototype),t.Mode=u}); (function() { 2 | ace.require(["ace/mode/textile"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/mode-vhdl.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/vhdl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="access|after|ailas|all|architecture|assert|attribute|begin|block|buffer|bus|case|component|configuration|disconnect|downto|else|elsif|end|entity|file|for|function|generate|generic|guarded|if|impure|in|inertial|inout|is|label|linkage|literal|loop|mapnew|next|of|on|open|others|out|port|process|pure|range|record|reject|report|return|select|severity|shared|signal|subtype|then|to|transport|type|unaffected|united|until|wait|when|while|with",t="bit|bit_vector|boolean|character|integer|line|natural|positive|real|register|signed|std_logic|std_logic_vector|string||text|time|unsigned|variable",n="array|constant",r="abs|and|mod|nand|nor|not|rem|rol|ror|sla|sll|srasrl|xnor|xor",i="true|false|null",s=this.createKeywordMapper({"keyword.operator":r,keyword:e,"constant.language":i,"storage.modifier":n,"storage.type":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"keyword",regex:"\\s*(?:library|package|use)\\b"},{token:s,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"&|\\*|\\+|\\-|\\/|<|=|>|\\||=>|\\*\\*|:=|\\/=|>=|<=|<>"},{token:"punctuation.operator",regex:"\\'|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[(]"},{token:"paren.rparen",regex:"[\\])]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.VHDLHighlightRules=s}),ace.define("ace/mode/vhdl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/vhdl_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./vhdl_highlight_rules").VHDLHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.lineCommentStart="--",this.$id="ace/mode/vhdl"}.call(o.prototype),t.Mode=o}); (function() { 2 | ace.require(["ace/mode/vhdl"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/abap.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/abap"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/abc.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/abc",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='\nsnippet zupfnoter.print\n %%%%hn.print {"startpos": ${1:pos_y}, "t":"${2:title}", "v":[${3:voices}], "s":[[${4:syncvoices}1,2]], "f":[${5:flowlines}], "sf":[${6:subflowlines}], "j":[${7:jumplines}]}\n\nsnippet zupfnoter.note\n %%%%hn.note {"pos": [${1:pos_x},${2:pos_y}], "text": "${3:text}", "style": "${4:style}"}\n\nsnippet zupfnoter.annotation\n %%%%hn.annotation {"id": "${1:id}", "pos": [${2:pos}], "text": "${3:text}"}\n\nsnippet zupfnoter.lyrics\n %%%%hn.lyrics {"pos": [${1:x_pos},${2:y_pos}]}\n\nsnippet zupfnoter.legend\n %%%%hn.legend {"pos": [${1:x_pos},${2:y_pos}]}\n\n\n\nsnippet zupfnoter.target\n "^:${1:target}"\n\nsnippet zupfnoter.goto\n "^@${1:target}@${2:distance}"\n\nsnippet zupfnoter.annotationref\n "^#${1:target}"\n\nsnippet zupfnoter.annotation\n "^!${1:text}@${2:x_offset},${3:y_offset}"\n\n\n',t.scope="abc"}); (function() { 2 | ace.require(["ace/snippets/abc"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/ada.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/ada"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/alda.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/alda"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/apache_conf.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/apache_conf"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/apex.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/apex"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/applescript.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/applescript"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/aql.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/aql"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/asciidoc.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/asciidoc"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/asl.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/asl"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/assembly_x86.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/assembly_x86"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/autohotkey.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/autohotkey"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/batchfile.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/batchfile"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/c9search.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/c9search"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/cirru.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/cirru"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/clojure.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/clojure",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='snippet comm\n (comment\n ${1}\n )\nsnippet condp\n (condp ${1:pred} ${2:expr}\n ${3})\nsnippet def\n (def ${1})\nsnippet defm\n (defmethod ${1:multifn} "${2:doc-string}" ${3:dispatch-val} [${4:args}]\n ${5})\nsnippet defmm\n (defmulti ${1:name} "${2:doc-string}" ${3:dispatch-fn})\nsnippet defma\n (defmacro ${1:name} "${2:doc-string}" ${3:dispatch-fn})\nsnippet defn\n (defn ${1:name} "${2:doc-string}" [${3:arg-list}]\n ${4})\nsnippet defp\n (defprotocol ${1:name}\n ${2})\nsnippet defr\n (defrecord ${1:name} [${2:fields}]\n ${3:protocol}\n ${4})\nsnippet deft\n (deftest ${1:name}\n (is (= ${2:assertion})))\n ${3})\nsnippet is\n (is (= ${1} ${2}))\nsnippet defty\n (deftype ${1:Name} [${2:fields}]\n ${3:Protocol}\n ${4})\nsnippet doseq\n (doseq [${1:elem} ${2:coll}]\n ${3})\nsnippet fn\n (fn [${1:arg-list}] ${2})\nsnippet if\n (if ${1:test-expr}\n ${2:then-expr}\n ${3:else-expr})\nsnippet if-let \n (if-let [${1:result} ${2:test-expr}]\n (${3:then-expr} $1)\n (${4:else-expr}))\nsnippet imp\n (:import [${1:package}])\n & {:keys [${1:keys}] :or {${2:defaults}}}\nsnippet let\n (let [${1:name} ${2:expr}]\n ${3})\nsnippet letfn\n (letfn [(${1:name) [${2:args}]\n ${3})])\nsnippet map\n (map ${1:func} ${2:coll})\nsnippet mapl\n (map #(${1:lambda}) ${2:coll})\nsnippet met\n (${1:name} [${2:this} ${3:args}]\n ${4})\nsnippet ns\n (ns ${1:name}\n ${2})\nsnippet dotimes\n (dotimes [_ 10]\n (time\n (dotimes [_ ${1:times}]\n ${2})))\nsnippet pmethod\n (${1:name} [${2:this} ${3:args}])\nsnippet refer\n (:refer-clojure :exclude [${1}])\nsnippet require\n (:require [${1:namespace} :as [${2}]])\nsnippet use\n (:use [${1:namespace} :only [${2}]])\nsnippet print\n (println ${1})\nsnippet reduce\n (reduce ${1:(fn [p n] ${3})} ${2})\nsnippet when\n (when ${1:test} ${2:body})\nsnippet when-let\n (when-let [${1:result} ${2:test}]\n ${3:body})\n',t.scope="clojure"}); (function() { 2 | ace.require(["ace/snippets/clojure"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/cobol.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/cobol"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/coldfusion.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/coldfusion"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/crystal.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/crystal"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/csharp.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/csharp"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/csound_document.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/csound_document",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# \nsnippet synth\n \n \n ${1}\n \n \n e\n \n \n",t.scope="csound_document"}); (function() { 2 | ace.require(["ace/snippets/csound_document"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/csound_orchestra.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/csound_orchestra",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# else\nsnippet else\n else\n ${1:/* statements */}\n# elseif\nsnippet elseif\n elseif ${1:/* condition */} then\n ${2:/* statements */}\n# if\nsnippet if\n if ${1:/* condition */} then\n ${2:/* statements */}\n endif\n# instrument block\nsnippet instr\n instr ${1:name}\n ${2:/* statements */}\n endin\n# i-time while loop\nsnippet iwhile\n i${1:Index} = ${2:0}\n while i${1:Index} < ${3:/* count */} do\n ${4:/* statements */}\n i${1:Index} += 1\n od\n# k-rate while loop\nsnippet kwhile\n k${1:Index} = ${2:0}\n while k${1:Index} < ${3:/* count */} do\n ${4:/* statements */}\n k${1:Index} += 1\n od\n# opcode\nsnippet opcode\n opcode ${1:name}, ${2:/* output types */ 0}, ${3:/* input types */ 0}\n ${4:/* statements */}\n endop\n# until loop\nsnippet until\n until ${1:/* condition */} do\n ${2:/* statements */}\n od\n# while loop\nsnippet while\n while ${1:/* condition */} do\n ${2:/* statements */}\n od\n",t.scope="csound_orchestra"}); (function() { 2 | ace.require(["ace/snippets/csound_orchestra"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/csound_score.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/csound_score"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/csp.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/csp"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/curly.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/curly"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/d.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/d"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/dart.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/dart",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet lib\n library ${1};\n ${2}\nsnippet im\n import '${1}';\n ${2}\nsnippet pa\n part '${1}';\n ${2}\nsnippet pao\n part of ${1};\n ${2}\nsnippet main\n void main() {\n ${1:/* code */}\n }\nsnippet st\n static ${1}\nsnippet fi\n final ${1}\nsnippet re\n return ${1}\nsnippet br\n break;\nsnippet th\n throw ${1}\nsnippet cl\n class ${1:`Filename(\"\", \"untitled\")`} ${2}\nsnippet imp\n implements ${1}\nsnippet ext\n extends ${1}\nsnippet if\n if (${1:true}) {\n ${2}\n }\nsnippet ife\n if (${1:true}) {\n ${2}\n } else {\n ${3}\n }\nsnippet el\n else\nsnippet sw\n switch (${1}) {\n ${2}\n }\nsnippet cs\n case ${1}:\n ${2}\nsnippet de\n default:\n ${1}\nsnippet for\n for (var ${2:i} = 0, len = ${1:things}.length; $2 < len; ${3:++}$2) {\n ${4:$1[$2]}\n }\nsnippet fore\n for (final ${2:item} in ${1:itemList}) {\n ${3:/* code */}\n }\nsnippet wh\n while (${1:/* condition */}) {\n ${2:/* code */}\n }\nsnippet dowh\n do {\n ${2:/* code */}\n } while (${1:/* condition */});\nsnippet as\n assert(${1:/* condition */});\nsnippet try\n try {\n ${2}\n } catch (${1:Exception e}) {\n }\nsnippet tryf\n try {\n ${2}\n } catch (${1:Exception e}) {\n } finally {\n }\n",t.scope="dart"}); (function() { 2 | ace.require(["ace/snippets/dart"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/diff.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/diff",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# DEP-3 (http://dep.debian.net/deps/dep3/) style patch header\nsnippet header DEP-3 style header\n Description: ${1}\n Origin: ${2:vendor|upstream|other}, ${3:url of the original patch}\n Bug: ${4:url in upstream bugtracker}\n Forwarded: ${5:no|not-needed|url}\n Author: ${6:`g:snips_author`}\n Reviewed-by: ${7:name and email}\n Last-Update: ${8:`strftime("%Y-%m-%d")`}\n Applied-Upstream: ${9:upstream version|url|commit}\n\n',t.scope="diff"}); (function() { 2 | ace.require(["ace/snippets/diff"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/dockerfile.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/dockerfile"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/dot.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/dot"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/drools.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/drools",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='\nsnippet rule\n rule "${1?:rule_name}"\n when\n ${2:// when...} \n then\n ${3:// then...}\n end\n\nsnippet query\n query ${1?:query_name}\n ${2:// find} \n end\n \nsnippet declare\n declare ${1?:type_name}\n ${2:// attributes} \n end\n\n',t.scope="drools"}); (function() { 2 | ace.require(["ace/snippets/drools"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/eiffel.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/eiffel"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/ejs.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/ejs"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/elixir.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/elixir"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/elm.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/elm"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/forth.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/forth"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/fortran.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/fortran"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/fsharp.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/fsharp"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/fsl.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/fsl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}); (function() { 2 | ace.require(["ace/snippets/fsl"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/ftl.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/ftl"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/gcode.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/gcode"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/gherkin.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/gherkin"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/gitignore.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/gitignore"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/glsl.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/glsl"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/golang.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/golang"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/graphqlschema.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/graphqlschema",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# Type Snippet\ntrigger type\nsnippet type\n type ${1:type_name} {\n ${2:type_siblings}\n }\n\n# Input Snippet\ntrigger input\nsnippet input\n input ${1:input_name} {\n ${2:input_siblings}\n }\n\n# Interface Snippet\ntrigger interface\nsnippet interface\n interface ${1:interface_name} {\n ${2:interface_siblings}\n }\n\n# Interface Snippet\ntrigger union\nsnippet union\n union ${1:union_name} = ${2:type} | ${3: type}\n\n# Enum Snippet\ntrigger enum\nsnippet enum\n enum ${1:enum_name} {\n ${2:enum_siblings}\n }\n",t.scope="graphqlschema"}); (function() { 2 | ace.require(["ace/snippets/graphqlschema"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/groovy.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/groovy"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/haml.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/haml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet t\n %table\n %tr\n %th\n ${1:headers}\n %tr\n %td\n ${2:headers}\nsnippet ul\n %ul\n %li\n ${1:item}\n %li\nsnippet =rp\n = render :partial => '${1:partial}'\nsnippet =rpl\n = render :partial => '${1:partial}', :locals => {}\nsnippet =rpc\n = render :partial => '${1:partial}', :collection => @$1\n\n",t.scope="haml"}); (function() { 2 | ace.require(["ace/snippets/haml"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/handlebars.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/handlebars"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/haskell.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/haskell",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet lang\n {-# LANGUAGE ${1:OverloadedStrings} #-}\nsnippet info\n -- |\n -- Module : ${1:Module.Namespace}\n -- Copyright : ${2:Author} ${3:2011-2012}\n -- License : ${4:BSD3}\n --\n -- Maintainer : ${5:email@something.com}\n -- Stability : ${6:experimental}\n -- Portability : ${7:unknown}\n --\n -- ${8:Description}\n --\nsnippet import\n import ${1:Data.Text}\nsnippet import2\n import ${1:Data.Text} (${2:head})\nsnippet importq\n import qualified ${1:Data.Text} as ${2:T}\nsnippet inst\n instance ${1:Monoid} ${2:Type} where\n ${3}\nsnippet type\n type ${1:Type} = ${2:Type}\nsnippet data\n data ${1:Type} = ${2:$1} ${3:Int}\nsnippet newtype\n newtype ${1:Type} = ${2:$1} ${3:Int}\nsnippet class\n class ${1:Class} a where\n ${2}\nsnippet module\n module `substitute(substitute(expand('%:r'), '[/\\\\]','.','g'),'^\\%(\\l*\\.\\)\\?','','')` (\n ) where\n `expand('%') =~ 'Main' ? \"\\n\\nmain = do\\n print \\\"hello world\\\"\" : \"\"`\n\nsnippet const\n ${1:name} :: ${2:a}\n $1 = ${3:undefined}\nsnippet fn\n ${1:fn} :: ${2:a} -> ${3:a}\n $1 ${4} = ${5:undefined}\nsnippet fn2\n ${1:fn} :: ${2:a} -> ${3:a} -> ${4:a}\n $1 ${5} = ${6:undefined}\nsnippet ap\n ${1:map} ${2:fn} ${3:list}\nsnippet do\n do\n \nsnippet \u03bb\n \\${1:x} -> ${2}\nsnippet \\\n \\${1:x} -> ${2}\nsnippet <-\n ${1:a} <- ${2:m a}\nsnippet \u2190\n ${1:a} <- ${2:m a}\nsnippet ->\n ${1:m a} -> ${2:a}\nsnippet \u2192\n ${1:m a} -> ${2:a}\nsnippet tup\n (${1:a}, ${2:b})\nsnippet tup2\n (${1:a}, ${2:b}, ${3:c})\nsnippet tup3\n (${1:a}, ${2:b}, ${3:c}, ${4:d})\nsnippet rec\n ${1:Record} { ${2:recFieldA} = ${3:undefined}\n , ${4:recFieldB} = ${5:undefined}\n }\nsnippet case\n case ${1:something} of\n ${2} -> ${3}\nsnippet let\n let ${1} = ${2}\n in ${3}\nsnippet where\n where\n ${1:fn} = ${2:undefined}\n",t.scope="haskell"}); (function() { 2 | ace.require(["ace/snippets/haskell"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/haskell_cabal.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/haskell_cabal"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/haxe.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/haxe"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/hjson.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/hjson"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/html_elixir.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/html_elixir"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/html_ruby.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/html_ruby"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/ini.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/ini"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/io.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/io",["require","exports","module"],function(e,t,n){"use strict";t.snippets=[{content:"assertEquals(${1:expected}, ${2:expr})",name:"assertEquals",scope:"io",tabTrigger:"ae"},{content:"${1:${2:newValue} := ${3:Object} }clone do(\n $0\n)",name:"clone do",scope:"io",tabTrigger:"cdo"},{content:'docSlot("${1:slotName}", "${2:documentation}")',name:"docSlot",scope:"io",tabTrigger:"ds"},{content:"(${1:header,}\n ${2:body}\n)$0",keyEquivalent:"@(",name:"Indented Bracketed Line",scope:"io",tabTrigger:"("},{content:"\n $0\n",keyEquivalent:"\r",name:"Special: Return Inside Empty Parenthesis",scope:"io meta.empty-parenthesis.io, io meta.comma-parenthesis.io"},{content:"${1:methodName} := method(${2:args,}\n $0\n)",name:"method",scope:"io",tabTrigger:"m"},{content:'newSlot("${1:slotName}", ${2:defaultValue}, "${3:docString}")$0',name:"newSlot",scope:"io",tabTrigger:"ns"},{content:"${1:name} := Object clone do(\n $0\n)",name:"Object clone do",scope:"io",tabTrigger:"ocdo"},{content:"test${1:SomeFeature} := method(\n $0\n)",name:"testMethod",scope:"io",tabTrigger:"ts"},{content:"${1:Something}Test := ${2:UnitTest} clone do(\n $0\n)",name:"UnitTest",scope:"io",tabTrigger:"ut"}],t.scope="io"}); (function() { 2 | ace.require(["ace/snippets/io"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/jack.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/jack"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/jade.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/jade"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/json.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/json"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/json5.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/json5"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/jsoniq.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/jsoniq",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='snippet for\n for $${1:item} in ${2:expr}\nsnippet return\n return ${1:expr}\nsnippet import\n import module namespace ${1:ns} = "${2:http://www.example.com/}";\nsnippet some\n some $${1:varname} in ${2:expr} satisfies ${3:expr}\nsnippet every\n every $${1:varname} in ${2:expr} satisfies ${3:expr}\nsnippet if\n if(${1:true}) then ${2:expr} else ${3:true}\nsnippet switch\n switch(${1:"foo"})\n case ${2:"foo"}\n return ${3:true}\n default return ${4:false}\nsnippet try\n try { ${1:expr} } catch ${2:*} { ${3:expr} }\nsnippet tumbling\n for tumbling window $${1:varname} in ${2:expr}\n start at $${3:start} when ${4:expr}\n end at $${5:end} when ${6:expr}\n return ${7:expr}\nsnippet sliding\n for sliding window $${1:varname} in ${2:expr}\n start at $${3:start} when ${4:expr}\n end at $${5:end} when ${6:expr}\n return ${7:expr}\nsnippet let\n let $${1:varname} := ${2:expr}\nsnippet group\n group by $${1:varname} := ${2:expr}\nsnippet order\n order by ${1:expr} ${2:descending}\nsnippet stable\n stable order by ${1:expr}\nsnippet count\n count $${1:varname}\nsnippet ordered\n ordered { ${1:expr} }\nsnippet unordered\n unordered { ${1:expr} }\nsnippet treat \n treat as ${1:expr}\nsnippet castable\n castable as ${1:atomicType}\nsnippet cast\n cast as ${1:atomicType}\nsnippet typeswitch\n typeswitch(${1:expr})\n case ${2:type} return ${3:expr}\n default return ${4:expr}\nsnippet var\n declare variable $${1:varname} := ${2:expr};\nsnippet fn\n declare function ${1:ns}:${2:name}(){\n ${3:expr}\n };\nsnippet module\n module namespace ${1:ns} = "${2:http://www.example.com}";\n',t.scope="jsoniq"}); (function() { 2 | ace.require(["ace/snippets/jsoniq"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/jssm.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/jssm"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/jsx.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/jsx"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/julia.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/julia"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/kotlin.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/kotlin"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/latex.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/latex"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/less.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/less"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/lisp.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/lisp"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/livescript.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/livescript"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/logiql.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/logiql"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/logtalk.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/logtalk"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/lua.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/lua",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet #!\n #!/usr/bin/env lua\n $1\nsnippet local\n local ${1:x} = ${2:1}\nsnippet fun\n function ${1:fname}(${2:...})\n ${3:-- body}\n end\nsnippet for\n for ${1:i}=${2:1},${3:10} do\n ${4:print(i)}\n end\nsnippet forp\n for ${1:i},${2:v} in pairs(${3:table_name}) do\n ${4:-- body}\n end\nsnippet fori\n for ${1:i},${2:v} in ipairs(${3:table_name}) do\n ${4:-- body}\n end\n",t.scope="lua"}); (function() { 2 | ace.require(["ace/snippets/lua"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/luapage.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/luapage"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/lucene.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/lucene"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/makefile.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/makefile",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet ifeq\n ifeq (${1:cond0},${2:cond1})\n ${3:code}\n endif\n",t.scope="makefile"}); (function() { 2 | ace.require(["ace/snippets/makefile"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/markdown.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/markdown",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Markdown\n\n# Includes octopress (http://octopress.org/) snippets\n\nsnippet [\n [${1:text}](http://${2:address} "${3:title}")\nsnippet [*\n [${1:link}](${2:`@*`} "${3:title}")${4}\n\nsnippet [:\n [${1:id}]: http://${2:url} "${3:title}"\nsnippet [:*\n [${1:id}]: ${2:`@*`} "${3:title}"\n\nsnippet ![\n ![${1:alttext}](${2:/images/image.jpg} "${3:title}")\nsnippet ![*\n ![${1:alt}](${2:`@*`} "${3:title}")${4}\n\nsnippet ![:\n ![${1:id}]: ${2:url} "${3:title}"\nsnippet ![:*\n ![${1:id}]: ${2:`@*`} "${3:title}"\n\nsnippet ===\nregex /^/=+/=*//\n ${PREV_LINE/./=/g}\n \n ${0}\nsnippet ---\nregex /^/-+/-*//\n ${PREV_LINE/./-/g}\n \n ${0}\nsnippet blockquote\n {% blockquote %}\n ${1:quote}\n {% endblockquote %}\n\nsnippet blockquote-author\n {% blockquote ${1:author}, ${2:title} %}\n ${3:quote}\n {% endblockquote %}\n\nsnippet blockquote-link\n {% blockquote ${1:author} ${2:URL} ${3:link_text} %}\n ${4:quote}\n {% endblockquote %}\n\nsnippet bt-codeblock-short\n ```\n ${1:code_snippet}\n ```\n\nsnippet bt-codeblock-full\n ``` ${1:language} ${2:title} ${3:URL} ${4:link_text}\n ${5:code_snippet}\n ```\n\nsnippet codeblock-short\n {% codeblock %}\n ${1:code_snippet}\n {% endcodeblock %}\n\nsnippet codeblock-full\n {% codeblock ${1:title} lang:${2:language} ${3:URL} ${4:link_text} %}\n ${5:code_snippet}\n {% endcodeblock %}\n\nsnippet gist-full\n {% gist ${1:gist_id} ${2:filename} %}\n\nsnippet gist-short\n {% gist ${1:gist_id} %}\n\nsnippet img\n {% img ${1:class} ${2:URL} ${3:width} ${4:height} ${5:title_text} ${6:alt_text} %}\n\nsnippet youtube\n {% youtube ${1:video_id} %}\n\n# The quote should appear only once in the text. It is inherently part of it.\n# See http://octopress.org/docs/plugins/pullquote/ for more info.\n\nsnippet pullquote\n {% pullquote %}\n ${1:text} {" ${2:quote} "} ${3:text}\n {% endpullquote %}\n',t.scope="markdown"}); (function() { 2 | ace.require(["ace/snippets/markdown"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/mask.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/mask"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/matlab.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/matlab"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/maze.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/maze",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet >\ndescription assignment\nscope maze\n -> ${1}= ${2}\n\nsnippet >\ndescription if\nscope maze\n -> IF ${2:**} THEN %${3:L} ELSE %${4:R}\n",t.scope="maze"}); (function() { 2 | ace.require(["ace/snippets/maze"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/mediawiki.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/mediawiki"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/mel.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/mel"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/mixal.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/mixal"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/mushcode.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/mushcode"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/mysql.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/mysql"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/nginx.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/nginx"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/nim.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/nim"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/nix.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/nix"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/nsis.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/nsis"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/nunjucks.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/nunjucks"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/objectivec.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/objectivec"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/ocaml.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/ocaml"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/pascal.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/pascal"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/perl6.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/perl6"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/pgsql.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/pgsql"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/php_laravel_blade.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/php_laravel_blade"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/pig.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/pig"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/plain_text.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/plain_text"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/powershell.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/powershell"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/praat.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/praat"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/prisma.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/prisma"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/prolog.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/prolog"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/properties.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/properties"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/protobuf.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/protobuf"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/puppet.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/puppet"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/qml.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/qml"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/razor.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/razor",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet if\n(${1} == ${2}) {\n ${3}\n}",t.scope="razor"}); (function() { 2 | ace.require(["ace/snippets/razor"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/rdoc.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/rdoc"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/red.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/red"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/redshift.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/redshift"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/rhtml.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/rhtml"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/rst.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/rst",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# rst\n\nsnippet :\n :${1:field name}: ${2:field body}\nsnippet *\n *${1:Emphasis}*\nsnippet **\n **${1:Strong emphasis}**\nsnippet _\n \\`${1:hyperlink-name}\\`_\n .. _\\`$1\\`: ${2:link-block}\nsnippet =\n ${1:Title}\n =====${2:=}\n ${3}\nsnippet -\n ${1:Title}\n -----${2:-}\n ${3}\nsnippet cont:\n .. contents::\n \n",t.scope="rst"}); (function() { 2 | ace.require(["ace/snippets/rst"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/rust.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/rust"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/sass.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/sass"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/scad.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/scad"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/scala.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/scala"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/scheme.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/scheme"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/scss.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/scss"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/sh.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/sh",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Shebang. Executing bash via /usr/bin/env makes scripts more portable.\nsnippet #!\n #!/usr/bin/env bash\n \nsnippet if\n if [[ ${1:condition} ]]; then\n ${2:#statements}\n fi\nsnippet elif\n elif [[ ${1:condition} ]]; then\n ${2:#statements}\nsnippet for\n for (( ${2:i} = 0; $2 < ${1:count}; $2++ )); do\n ${3:#statements}\n done\nsnippet fori\n for ${1:needle} in ${2:haystack} ; do\n ${3:#statements}\n done\nsnippet wh\n while [[ ${1:condition} ]]; do\n ${2:#statements}\n done\nsnippet until\n until [[ ${1:condition} ]]; do\n ${2:#statements}\n done\nsnippet case\n case ${1:word} in\n ${2:pattern})\n ${3};;\n esac\nsnippet go \n while getopts \'${1:o}\' ${2:opts} \n do \n case $$2 in\n ${3:o0})\n ${4:#staments};;\n esac\n done\n# Set SCRIPT_DIR variable to directory script is located.\nsnippet sdir\n SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"\n# getopt\nsnippet getopt\n __ScriptVersion="${1:version}"\n\n #=== FUNCTION ================================================================\n # NAME: usage\n # DESCRIPTION: Display usage information.\n #===============================================================================\n function usage ()\n {\n cat <<- EOT\n\n Usage : $${0:0} [options] [--] \n\n Options: \n -h|help Display this message\n -v|version Display script version\n\n EOT\n } # ---------- end of function usage ----------\n\n #-----------------------------------------------------------------------\n # Handle command line arguments\n #-----------------------------------------------------------------------\n\n while getopts ":hv" opt\n do\n case $opt in\n\n h|help ) usage; exit 0 ;;\n\n v|version ) echo "$${0:0} -- Version $__ScriptVersion"; exit 0 ;;\n\n \\? ) echo -e "\\n Option does not exist : $OPTARG\\n"\n usage; exit 1 ;;\n\n esac # --- end of case ---\n done\n shift $(($OPTIND-1))\n\n',t.scope="sh"}); (function() { 2 | ace.require(["ace/snippets/sh"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/sjs.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/sjs"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/slim.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/slim"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/smarty.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/smarty"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/snippets.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/snippets",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# snippets for making snippets :)\nsnippet snip\n snippet ${1:trigger}\n ${2}\nsnippet msnip\n snippet ${1:trigger} ${2:description}\n ${3}\nsnippet v\n {VISUAL}\n",t.scope="snippets"}); (function() { 2 | ace.require(["ace/snippets/snippets"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/soy_template.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/soy_template"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/space.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/space"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/sparql.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/sparql"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/sql.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/sql",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet tbl\n create table ${1:table} (\n ${2:columns}\n );\nsnippet col\n ${1:name} ${2:type} ${3:default ''} ${4:not null}\nsnippet ccol\n ${1:name} varchar2(${2:size}) ${3:default ''} ${4:not null}\nsnippet ncol\n ${1:name} number ${3:default 0} ${4:not null}\nsnippet dcol\n ${1:name} date ${3:default sysdate} ${4:not null}\nsnippet ind\n create index ${3:$1_$2} on ${1:table}(${2:column});\nsnippet uind\n create unique index ${1:name} on ${2:table}(${3:column});\nsnippet tblcom\n comment on table ${1:table} is '${2:comment}';\nsnippet colcom\n comment on column ${1:table}.${2:column} is '${3:comment}';\nsnippet addcol\n alter table ${1:table} add (${2:column} ${3:type});\nsnippet seq\n create sequence ${1:name} start with ${2:1} increment by ${3:1} minvalue ${4:1};\nsnippet s*\n select * from ${1:table}\n",t.scope="sql"}); (function() { 2 | ace.require(["ace/snippets/sql"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/stylus.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/stylus"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/svg.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/svg"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/swift.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/swift"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/tcl.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/tcl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# #!/usr/bin/env tclsh\nsnippet #!\n #!/usr/bin/env tclsh\n \n# Process\nsnippet pro\n proc ${1:function_name} {${2:args}} {\n ${3:#body ...}\n }\n#xif\nsnippet xif\n ${1:expr}? ${2:true} : ${3:false}\n# Conditional\nsnippet if\n if {${1}} {\n ${2:# body...}\n }\n# Conditional if..else\nsnippet ife\n if {${1}} {\n ${2:# body...}\n } else {\n ${3:# else...}\n }\n# Conditional if..elsif..else\nsnippet ifee\n if {${1}} {\n ${2:# body...}\n } elseif {${3}} {\n ${4:# elsif...}\n } else {\n ${5:# else...}\n }\n# If catch then\nsnippet ifc\n if { [catch {${1:#do something...}} ${2:err}] } {\n ${3:# handle failure...}\n }\n# Catch\nsnippet catch\n catch {${1}} ${2:err} ${3:options}\n# While Loop\nsnippet wh\n while {${1}} {\n ${2:# body...}\n }\n# For Loop\nsnippet for\n for {set ${2:var} 0} {$$2 < ${1:count}} {${3:incr} $2} {\n ${4:# body...}\n }\n# Foreach Loop\nsnippet fore\n foreach ${1:x} {${2:#list}} {\n ${3:# body...}\n }\n# after ms script...\nsnippet af\n after ${1:ms} ${2:#do something}\n# after cancel id\nsnippet afc\n after cancel ${1:id or script}\n# after idle\nsnippet afi\n after idle ${1:script}\n# after info id\nsnippet afin\n after info ${1:id}\n# Expr\nsnippet exp\n expr {${1:#expression here}}\n# Switch\nsnippet sw\n switch ${1:var} {\n ${3:pattern 1} {\n ${4:#do something}\n }\n default {\n ${2:#do something}\n }\n }\n# Case\nsnippet ca\n ${1:pattern} {\n ${2:#do something}\n }${3}\n# Namespace eval\nsnippet ns\n namespace eval ${1:path} {${2:#script...}}\n# Namespace current\nsnippet nsc\n namespace current\n",t.scope="tcl"}); (function() { 2 | ace.require(["ace/snippets/tcl"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/terraform.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/terraform"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/text.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/text"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/textile.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/textile",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Jekyll post header\nsnippet header\n ---\n title: ${1:title}\n layout: post\n date: ${2:date} ${3:hour:minute:second} -05:00\n ---\n\n# Image\nsnippet img\n !${1:url}(${2:title}):${3:link}!\n\n# Table\nsnippet |\n |${1}|${2}\n\n# Link\nsnippet link\n "${1:link text}":${2:url}\n\n# Acronym\nsnippet (\n (${1:Expand acronym})${2}\n\n# Footnote\nsnippet fn\n [${1:ref number}] ${3}\n\n fn$1. ${2:footnote}\n \n',t.scope="textile"}); (function() { 2 | ace.require(["ace/snippets/textile"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/toml.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/toml"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/tsx.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/tsx"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/turtle.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/turtle"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/twig.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/twig"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/typescript.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/typescript"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/vbscript.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/vbscript"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/velocity.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/velocity",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# macro\nsnippet #macro\n #macro ( ${1:macroName} ${2:\\$var1, [\\$var2, ...]} )\n ${3:## macro code}\n #end\n# foreach\nsnippet #foreach\n #foreach ( ${1:\\$item} in ${2:\\$collection} )\n ${3:## foreach code}\n #end\n# if\nsnippet #if\n #if ( ${1:true} )\n ${0}\n #end\n# if ... else\nsnippet #ife\n #if ( ${1:true} )\n ${2}\n #else\n ${0}\n #end\n#import\nsnippet #import\n #import ( "${1:path/to/velocity/format}" )\n# set\nsnippet #set\n #set ( $${1:var} = ${0} )\n',t.scope="velocity",t.includeScopes=["html","javascript","css"]}); (function() { 2 | ace.require(["ace/snippets/velocity"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/verilog.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/verilog"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/vhdl.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/vhdl"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/visualforce.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/visualforce"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/wollok.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/wollok",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='##\n## Basic Java packages and import\nsnippet im\n import\nsnippet w.l\n wollok.lang\nsnippet w.i\n wollok.lib\n\n## Class and object\nsnippet cl\n class ${1:`Filename("", "untitled")`} ${2}\nsnippet obj\n object ${1:`Filename("", "untitled")`} ${2:inherits Parent}${3}\nsnippet te\n test ${1:`Filename("", "untitled")`}\n\n##\n## Enhancements\nsnippet inh\n inherits\n\n##\n## Comments\nsnippet /*\n /*\n * ${1}\n */\n\n##\n## Control Statements\nsnippet el\n else\nsnippet if\n if (${1}) ${2}\n\n##\n## Create a Method\nsnippet m\n method ${1:method}(${2}) ${5}\n\n## \n## Tests\nsnippet as\n assert.equals(${1:expected}, ${2:actual})\n\n##\n## Exceptions\nsnippet ca\n catch ${1:e} : (${2:Exception} ) ${3}\nsnippet thr\n throw\nsnippet try\n try {\n ${3}\n } catch ${1:e} : ${2:Exception} {\n }\n\n##\n## Javadocs\nsnippet /**\n /**\n * ${1}\n */\n\n##\n## Print Methods\nsnippet print\n console.println("${1:Message}")\n\n##\n## Setter and Getter Methods\nsnippet set\n method set${1:}(${2:}) {\n $1 = $2\n }\nsnippet get\n method get${1:}() {\n return ${1:};\n }\n\n##\n## Terminate Methods or Loops\nsnippet re\n return',t.scope="wollok"}); (function() { 2 | ace.require(["ace/snippets/wollok"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/xml.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/xml"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/xquery.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/xquery",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='snippet for\n for $${1:item} in ${2:expr}\nsnippet return\n return ${1:expr}\nsnippet import\n import module namespace ${1:ns} = "${2:http://www.example.com/}";\nsnippet some\n some $${1:varname} in ${2:expr} satisfies ${3:expr}\nsnippet every\n every $${1:varname} in ${2:expr} satisfies ${3:expr}\nsnippet if\n if(${1:true}) then ${2:expr} else ${3:true}\nsnippet switch\n switch(${1:"foo"})\n case ${2:"foo"}\n return ${3:true}\n default return ${4:false}\nsnippet try\n try { ${1:expr} } catch ${2:*} { ${3:expr} }\nsnippet tumbling\n for tumbling window $${1:varname} in ${2:expr}\n start at $${3:start} when ${4:expr}\n end at $${5:end} when ${6:expr}\n return ${7:expr}\nsnippet sliding\n for sliding window $${1:varname} in ${2:expr}\n start at $${3:start} when ${4:expr}\n end at $${5:end} when ${6:expr}\n return ${7:expr}\nsnippet let\n let $${1:varname} := ${2:expr}\nsnippet group\n group by $${1:varname} := ${2:expr}\nsnippet order\n order by ${1:expr} ${2:descending}\nsnippet stable\n stable order by ${1:expr}\nsnippet count\n count $${1:varname}\nsnippet ordered\n ordered { ${1:expr} }\nsnippet unordered\n unordered { ${1:expr} }\nsnippet treat \n treat as ${1:expr}\nsnippet castable\n castable as ${1:atomicType}\nsnippet cast\n cast as ${1:atomicType}\nsnippet typeswitch\n typeswitch(${1:expr})\n case ${2:type} return ${3:expr}\n default return ${4:expr}\nsnippet var\n declare variable $${1:varname} := ${2:expr};\nsnippet fn\n declare function ${1:ns}:${2:name}(){\n ${3:expr}\n };\nsnippet module\n module namespace ${1:ns} = "${2:http://www.example.com}";\n',t.scope="xquery"}); (function() { 2 | ace.require(["ace/snippets/xquery"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/yaml.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/yaml"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/snippets/zeek.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/snippets/zeek"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/theme-clouds.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/theme/clouds",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-clouds",t.cssText='.ace-clouds .ace_gutter {background: #ebebeb;color: #333}.ace-clouds .ace_print-margin {width: 1px;background: #e8e8e8}.ace-clouds {background-color: #FFFFFF;color: #000000}.ace-clouds .ace_cursor {color: #000000}.ace-clouds .ace_marker-layer .ace_selection {background: #BDD5FC}.ace-clouds.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FFFFFF;}.ace-clouds .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-clouds .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #BFBFBF}.ace-clouds .ace_marker-layer .ace_active-line {background: #FFFBD1}.ace-clouds .ace_gutter-active-line {background-color : #dcdcdc}.ace-clouds .ace_marker-layer .ace_selected-word {border: 1px solid #BDD5FC}.ace-clouds .ace_invisible {color: #BFBFBF}.ace-clouds .ace_keyword,.ace-clouds .ace_meta,.ace-clouds .ace_support.ace_constant.ace_property-value {color: #AF956F}.ace-clouds .ace_keyword.ace_operator {color: #484848}.ace-clouds .ace_keyword.ace_other.ace_unit {color: #96DC5F}.ace-clouds .ace_constant.ace_language {color: #39946A}.ace-clouds .ace_constant.ace_numeric {color: #46A609}.ace-clouds .ace_constant.ace_character.ace_entity {color: #BF78CC}.ace-clouds .ace_invalid {background-color: #FF002A}.ace-clouds .ace_fold {background-color: #AF956F;border-color: #000000}.ace-clouds .ace_storage,.ace-clouds .ace_support.ace_class,.ace-clouds .ace_support.ace_function,.ace-clouds .ace_support.ace_other,.ace-clouds .ace_support.ace_type {color: #C52727}.ace-clouds .ace_string {color: #5D90CD}.ace-clouds .ace_comment {color: #BCC8BA}.ace-clouds .ace_entity.ace_name.ace_tag,.ace-clouds .ace_entity.ace_other.ace_attribute-name {color: #606060}.ace-clouds .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}); (function() { 2 | ace.require(["ace/theme/clouds"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/theme-eclipse.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/theme/eclipse",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssText='.ace-eclipse .ace_gutter {background: #ebebeb;border-right: 1px solid rgb(159, 159, 159);color: rgb(136, 136, 136);}.ace-eclipse .ace_print-margin {width: 1px;background: #ebebeb;}.ace-eclipse {background-color: #FFFFFF;color: black;}.ace-eclipse .ace_fold {background-color: rgb(60, 76, 114);}.ace-eclipse .ace_cursor {color: black;}.ace-eclipse .ace_storage,.ace-eclipse .ace_keyword,.ace-eclipse .ace_variable {color: rgb(127, 0, 85);}.ace-eclipse .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-eclipse .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-eclipse .ace_function {color: rgb(60, 76, 114);}.ace-eclipse .ace_string {color: rgb(42, 0, 255);}.ace-eclipse .ace_comment {color: rgb(113, 150, 130);}.ace-eclipse .ace_comment.ace_doc {color: rgb(63, 95, 191);}.ace-eclipse .ace_comment.ace_doc.ace_tag {color: rgb(127, 159, 191);}.ace-eclipse .ace_constant.ace_numeric {color: darkblue;}.ace-eclipse .ace_tag {color: rgb(25, 118, 116);}.ace-eclipse .ace_type {color: rgb(127, 0, 127);}.ace-eclipse .ace_xml-pe {color: rgb(104, 104, 91);}.ace-eclipse .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-eclipse .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-eclipse .ace_meta.ace_tag {color:rgb(25, 118, 116);}.ace-eclipse .ace_invisible {color: #ddd;}.ace-eclipse .ace_entity.ace_other.ace_attribute-name {color:rgb(127, 0, 127);}.ace-eclipse .ace_marker-layer .ace_step {background: rgb(255, 255, 0);}.ace-eclipse .ace_active-line {background: rgb(232, 242, 254);}.ace-eclipse .ace_gutter-active-line {background-color : #DADADA;}.ace-eclipse .ace_marker-layer .ace_selected-word {border: 1px solid rgb(181, 213, 255);}.ace-eclipse .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}',t.cssClass="ace-eclipse";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}); (function() { 2 | ace.require(["ace/theme/eclipse"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/theme-gruvbox.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/theme/gruvbox",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-gruvbox",t.cssText='.ace-gruvbox .ace_gutter-active-line {background-color: #3C3836;}.ace-gruvbox {color: #EBDAB4;background-color: #1D2021;}.ace-gruvbox .ace_invisible {color: #504945;}.ace-gruvbox .ace_marker-layer .ace_selection {background: rgba(179, 101, 57, 0.75)}.ace-gruvbox.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #002240;}.ace-gruvbox .ace_keyword {color: #8ec07c;}.ace-gruvbox .ace_comment {font-style: italic;color: #928375;}.ace-gruvbox .ace-statement {color: red;}.ace-gruvbox .ace_variable {color: #84A598;}.ace-gruvbox .ace_variable.ace_language {color: #D2879B;}.ace-gruvbox .ace_constant {color: #C2859A;}.ace-gruvbox .ace_constant.ace_language {color: #C2859A;}.ace-gruvbox .ace_constant.ace_numeric {color: #C2859A;}.ace-gruvbox .ace_string {color: #B8BA37;}.ace-gruvbox .ace_support {color: #F9BC41;}.ace-gruvbox .ace_support.ace_function {color: #F84B3C;}.ace-gruvbox .ace_storage {color: #8FBF7F;}.ace-gruvbox .ace_keyword.ace_operator {color: #EBDAB4;}.ace-gruvbox .ace_punctuation.ace_operator {color: yellow;}.ace-gruvbox .ace_marker-layer .ace_active-line {background: #3C3836;}.ace-gruvbox .ace_marker-layer .ace_selected-word {border-radius: 4px;border: 8px solid #3f475d;}.ace-gruvbox .ace_print-margin {width: 5px;background: #3C3836;}.ace-gruvbox .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQUFD4z6Crq/sfAAuYAuYl+7lfAAAAAElFTkSuQmCC") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}); (function() { 2 | ace.require(["ace/theme/gruvbox"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/theme-kuroir.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/theme/kuroir",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-kuroir",t.cssText=".ace-kuroir .ace_gutter {background: #e8e8e8;color: #333;}.ace-kuroir .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-kuroir {background-color: #E8E9E8;color: #363636;}.ace-kuroir .ace_cursor {color: #202020;}.ace-kuroir .ace_marker-layer .ace_selection {background: rgba(245, 170, 0, 0.57);}.ace-kuroir.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #E8E9E8;}.ace-kuroir .ace_marker-layer .ace_step {background: rgb(198, 219, 174);}.ace-kuroir .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(0, 0, 0, 0.29);}.ace-kuroir .ace_marker-layer .ace_active-line {background: rgba(203, 220, 47, 0.22);}.ace-kuroir .ace_gutter-active-line {background-color: rgba(203, 220, 47, 0.22);}.ace-kuroir .ace_marker-layer .ace_selected-word {border: 1px solid rgba(245, 170, 0, 0.57);}.ace-kuroir .ace_invisible {color: #BFBFBF}.ace-kuroir .ace_fold {border-color: #363636;}.ace-kuroir .ace_constant{color:#CD6839;}.ace-kuroir .ace_constant.ace_numeric{color:#9A5925;}.ace-kuroir .ace_support{color:#104E8B;}.ace-kuroir .ace_support.ace_function{color:#005273;}.ace-kuroir .ace_support.ace_constant{color:#CF6A4C;}.ace-kuroir .ace_storage{color:#A52A2A;}.ace-kuroir .ace_invalid.ace_illegal{color:#FD1224;background-color:rgba(255, 6, 0, 0.15);}.ace-kuroir .ace_invalid.ace_deprecated{text-decoration:underline;font-style:italic;color:#FD1732;background-color:#E8E9E8;}.ace-kuroir .ace_string{color:#639300;}.ace-kuroir .ace_string.ace_regexp{color:#417E00;background-color:#C9D4BE;}.ace-kuroir .ace_comment{color:rgba(148, 148, 148, 0.91);background-color:rgba(220, 220, 220, 0.56);}.ace-kuroir .ace_variable{color:#009ACD;}.ace-kuroir .ace_meta.ace_tag{color:#005273;}.ace-kuroir .ace_markup.ace_heading{color:#B8012D;background-color:rgba(191, 97, 51, 0.051);}.ace-kuroir .ace_markup.ace_list{color:#8F5B26;}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}); (function() { 2 | ace.require(["ace/theme/kuroir"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/theme-nord_dark.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/theme/nord_dark",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-nord-dark",t.cssText=".ace-nord-dark .ace_gutter {color: #616e88;}.ace-nord-dark .ace_print-margin {width: 1px;background: #4c566a;}.ace-nord-dark {background-color: #2e3440;color: #d8dee9;}.ace-nord-dark .ace_entity.ace_other.ace_attribute-name,.ace-nord-dark .ace_storage {color: #d8dee9;}.ace-nord-dark .ace_cursor {color: #d8dee9;},.ace-nord-dark .ace_string.ace_regexp {color: #bf616a;}.ace-nord-dark .ace_marker-layer .ace_active-line {background: #434c5ecc;}.ace-nord-dark .ace_marker-layer .ace_selection {background: #434c5ecc;}.ace-nord-dark.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #2e3440;}.ace-nord-dark .ace_marker-layer .ace_step {background: #ebcb8b;}.ace-nord-dark .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #88c0d066;}.ace-nord-dark .ace_gutter-active-line {background-color: #434c5ecc;}.ace-nord-dark .ace_marker-layer .ace_selected-word {border: 1px solid #88c0d066;}.ace-nord-dark .ace_invisible {color: #4c566a;}.ace-nord-dark .ace_keyword,.ace-nord-dark .ace_meta,.ace-nord-dark .ace_support.ace_class,.ace-nord-dark .ace_support.ace_type {color: #81a1c1;}.ace-nord-dark .ace_constant.ace_character,.ace-nord-dark .ace_constant.ace_other {color: #d8dee9;}.ace-nord-dark .ace_constant.ace_language {color: #5e81ac;}.ace-nord-dark .ace_constant.ace_escape {color: #ebcB8b;}.ace-nord-dark .ace_constant.ace_numeric {color: #b48ead;}.ace-nord-dark .ace_fold {background-color: #4c566a;border-color: #d8dee9;}.ace-nord-dark .ace_entity.ace_name.ace_function,.ace-nord-dark .ace_entity.ace_name.ace_tag,.ace-nord-dark .ace_support.ace_function,.ace-nord-dark .ace_variable,.ace-nord-dark .ace_variable.ace_language {color: #8fbcbb;}.ace-nord-dark .ace_string {color: #a3be8c;}.ace-nord-dark .ace_comment {color: #616e88;}.ace-nord-dark .ace_indent-guide {box-shadow: inset -1px 0 0 0 #434c5eb3;}",t.$selectionColorConflict=!0;var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}); (function() { 2 | ace.require(["ace/theme/nord_dark"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/ace/theme-xcode.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/theme/xcode",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-xcode",t.cssText=".ace-xcode .ace_gutter {background: #e8e8e8;color: #333}.ace-xcode .ace_print-margin {width: 1px;background: #e8e8e8}.ace-xcode {background-color: #FFFFFF;color: #000000}.ace-xcode .ace_cursor {color: #000000}.ace-xcode .ace_marker-layer .ace_selection {background: #B5D5FF}.ace-xcode.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FFFFFF;}.ace-xcode .ace_marker-layer .ace_step {background: rgb(198, 219, 174)}.ace-xcode .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #BFBFBF}.ace-xcode .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.071)}.ace-xcode .ace_gutter-active-line {background-color: rgba(0, 0, 0, 0.071)}.ace-xcode .ace_marker-layer .ace_selected-word {border: 1px solid #B5D5FF}.ace-xcode .ace_constant.ace_language,.ace-xcode .ace_keyword,.ace-xcode .ace_meta,.ace-xcode .ace_variable.ace_language {color: #C800A4}.ace-xcode .ace_invisible {color: #BFBFBF}.ace-xcode .ace_constant.ace_character,.ace-xcode .ace_constant.ace_other {color: #275A5E}.ace-xcode .ace_constant.ace_numeric {color: #3A00DC}.ace-xcode .ace_entity.ace_other.ace_attribute-name,.ace-xcode .ace_support.ace_constant,.ace-xcode .ace_support.ace_function {color: #450084}.ace-xcode .ace_fold {background-color: #C800A4;border-color: #000000}.ace-xcode .ace_entity.ace_name.ace_tag,.ace-xcode .ace_support.ace_class,.ace-xcode .ace_support.ace_type {color: #790EAD}.ace-xcode .ace_storage {color: #C900A4}.ace-xcode .ace_string {color: #DF0002}.ace-xcode .ace_comment {color: #008E00}.ace-xcode .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}); (function() { 2 | ace.require(["ace/theme/xcode"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /public/script/external/angular-translate-loader-static-files.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * angular-translate - v2.18.4 - 2021-01-14 3 | * 4 | * Copyright (c) 2021 The angular-translate team, Pascal Precht; Licensed MIT 5 | */ 6 | !function(e,i){"function"==typeof define&&define.amd?define([],function(){return i()}):"object"==typeof module&&module.exports?module.exports=i():i()}(0,function(){function e(n,a){"use strict";return function(r){if(!(r&&(angular.isArray(r.files)||angular.isString(r.prefix)&&angular.isString(r.suffix))))throw new Error("Couldn't load static files, no files and prefix or suffix specified!");r.files||(r.files=[{prefix:r.prefix,suffix:r.suffix}]);for(var e=function(e){if(!e||!angular.isString(e.prefix)||!angular.isString(e.suffix))throw new Error("Couldn't load static file, no prefix or suffix specified!");var i=[e.prefix,r.key,e.suffix].join("");return angular.isObject(r.fileMap)&&r.fileMap[i]&&(i=r.fileMap[i]),a(angular.extend({url:i,method:"GET"},r.$http)).then(function(e){return e.data},function(){return n.reject(r.key)})},i=[],t=r.files.length,f=0;f`; 52 | } 53 | }, 54 | }, 55 | ], 56 | }; 57 | } 58 | -------------------------------------------------------------------------------- /public/script/external/marked-katex-extension.umd.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Minified by jsDelivr using Terser v5.19.2. 3 | * Original file: /npm/marked-katex-extension@5.0.1/lib/index.umd.js 4 | * 5 | * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files 6 | */ 7 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).markedKatex=t(e.katex)}(this,(function(e){"use strict";const t=/^(\${1,2})(?!\$)((?:\\.|[^\\\n])*?(?:\\.|[^\\\n\$]))\1(?=[\s?!\.,:?!。,:]|$)/,n=/^(\${1,2})\n((?:\\[^]|[^\\])+?)\n\1(?:\n|$)/;function r(t,n){return r=>e.renderToString(r.text,{...t,displayMode:r.displayMode})+(n?"\n":"")}function i(e,n){return{name:"inlineKatex",level:"inline",start(e){let n,r=e;for(;r;){if(n=r.indexOf("$"),-1===n)return;if(0===n||" "===r.charAt(n-1)){if(r.substring(n).match(t))return n}r=r.substring(n+1).replace(/^\$+/,"")}},tokenizer(e,n){const r=e.match(t);if(r)return{type:"inlineKatex",raw:r[0],text:r[2].trim(),displayMode:2===r[1].length}},renderer:n}}function o(e,t){return{name:"blockKatex",level:"block",tokenizer(e,t){const r=e.match(n);if(r)return{type:"blockKatex",raw:r[0],text:r[2].trim(),displayMode:2===r[1].length}},renderer:t}}return function(e={}){return{extensions:[i(e,r(e,!1)),o(e,r(e,!0))]}}})); 8 | //# sourceMappingURL=/sm/25cb250346ed1262c6185eedae00cfd6f44bba21eb2c1bf521e994aa1d145555.map -------------------------------------------------------------------------------- /src/core/AnonymousError.ts: -------------------------------------------------------------------------------- 1 | import { CustomError } from "ts-custom-error"; 2 | import AnonymizedFile from "./AnonymizedFile"; 3 | import Repository from "./Repository"; 4 | import GitHubBase from "./source/GitHubBase"; 5 | import { GitHubRepository } from "./source/GitHubRepository"; 6 | import User from "./User"; 7 | 8 | /** 9 | * Custom error message 10 | */ 11 | export default class AnonymousError extends CustomError { 12 | value?: any; 13 | httpStatus?: number; 14 | cause?: Error; 15 | 16 | constructor( 17 | message: string, 18 | opt?: { 19 | httpStatus?: number; 20 | cause?: Error; 21 | object?: any; 22 | } 23 | ) { 24 | super(message); 25 | this.value = opt?.object; 26 | this.httpStatus = opt?.httpStatus; 27 | this.cause = opt?.cause; 28 | } 29 | 30 | toString(): string { 31 | let out = ""; 32 | let detail = this.value ? JSON.stringify(this.value) : null; 33 | if (this.value instanceof Repository) { 34 | detail = this.value.repoId; 35 | } else if (this.value instanceof AnonymizedFile) { 36 | detail = `/r/${this.value.repository.repoId}/${this.value.anonymizedPath}`; 37 | } else if (this.value instanceof GitHubRepository) { 38 | detail = `${this.value.fullName}`; 39 | } else if (this.value instanceof User) { 40 | detail = `${this.value.username}`; 41 | } else if (this.value instanceof GitHubBase) { 42 | detail = `GHDownload ${this.value.data.repoId}`; 43 | } 44 | out += this.message; 45 | if (detail) { 46 | out += `: ${detail}`; 47 | } 48 | if (this.cause) { 49 | out += `\n\tCause by ${this.cause}\n${this.cause.stack}`; 50 | } 51 | return out; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/core/model/anonymizedPullRequests/anonymizedPullRequests.model.ts: -------------------------------------------------------------------------------- 1 | import { model } from "mongoose"; 2 | 3 | import AnonymizedPullRequestSchema from "./anonymizedPullRequests.schema"; 4 | import { 5 | IAnonymizedPullRequestDocument, 6 | IAnonymizedPullRequestModel, 7 | } from "./anonymizedPullRequests.types"; 8 | 9 | const AnonymizedPullRequestModel = model( 10 | "AnonymizedPullRequest", 11 | AnonymizedPullRequestSchema 12 | ) as IAnonymizedPullRequestModel; 13 | 14 | export default AnonymizedPullRequestModel; 15 | -------------------------------------------------------------------------------- /src/core/model/anonymizedPullRequests/anonymizedPullRequests.schema.ts: -------------------------------------------------------------------------------- 1 | import { Schema } from "mongoose"; 2 | 3 | const AnonymizedPullRequestSchema = new Schema({ 4 | pullRequestId: { 5 | type: String, 6 | index: { unique: true }, 7 | }, 8 | status: { 9 | type: String, 10 | default: "preparing", 11 | }, 12 | statusDate: Date, 13 | statusMessage: String, 14 | anonymizeDate: Date, 15 | lastView: Date, 16 | pageView: Number, 17 | owner: Schema.Types.ObjectId, 18 | conference: String, 19 | source: { 20 | pullRequestId: Number, 21 | repositoryFullName: String, 22 | accessToken: String, 23 | }, 24 | options: { 25 | terms: [String], 26 | expirationMode: { type: String }, 27 | expirationDate: Date, 28 | update: Boolean, 29 | image: Boolean, 30 | link: Boolean, 31 | title: Boolean, 32 | body: Boolean, 33 | comments: Boolean, 34 | diff: Boolean, 35 | origin: Boolean, 36 | username: Boolean, 37 | date: Boolean, 38 | }, 39 | dateOfEntry: { 40 | type: Date, 41 | default: new Date(), 42 | }, 43 | pullRequest: { 44 | diff: String, 45 | title: String, 46 | body: String, 47 | creationDate: Date, 48 | updatedDate: Date, 49 | draft: Boolean, 50 | merged: Boolean, 51 | mergedDate: Date, 52 | state: String, 53 | baseRepositoryFullName: String, 54 | headRepositoryFullName: String, 55 | comments: [ 56 | { 57 | body: String, 58 | creationDate: Date, 59 | updatedDate: Date, 60 | author: String, 61 | }, 62 | ], 63 | }, 64 | }); 65 | 66 | export default AnonymizedPullRequestSchema; 67 | -------------------------------------------------------------------------------- /src/core/model/anonymizedPullRequests/anonymizedPullRequests.types.ts: -------------------------------------------------------------------------------- 1 | import { Document, Model } from "mongoose"; 2 | import { RepositoryStatus } from "../../types"; 3 | 4 | export interface IAnonymizedPullRequest { 5 | pullRequestId: string; 6 | status?: RepositoryStatus; 7 | statusMessage?: string; 8 | statusDate: Date; 9 | anonymizeDate: Date; 10 | source: { 11 | pullRequestId: number; 12 | repositoryFullName: string; 13 | accessToken?: string; 14 | }; 15 | owner: string; 16 | conference: string; 17 | options: { 18 | terms: string[]; 19 | expirationMode: "never" | "redirect" | "remove"; 20 | expirationDate?: Date; 21 | update: boolean; 22 | image: boolean; 23 | link: boolean; 24 | title: boolean; 25 | body: boolean; 26 | comments: boolean; 27 | diff: boolean; 28 | origin: boolean; 29 | username: boolean; 30 | date: boolean; 31 | }; 32 | pageView: number; 33 | lastView: Date; 34 | pullRequest: { 35 | diff: string; 36 | title: string; 37 | body: string; 38 | creationDate: Date; 39 | updatedDate: Date; 40 | draft?: boolean; 41 | merged?: boolean; 42 | mergedDate?: Date; 43 | state?: string; 44 | baseRepositoryFullName?: string; 45 | headRepositoryFullName?: string; 46 | comments?: { 47 | body: string; 48 | creationDate: Date; 49 | updatedDate: Date; 50 | author: string; 51 | }[]; 52 | }; 53 | } 54 | 55 | export interface IAnonymizedPullRequestDocument 56 | extends IAnonymizedPullRequest, 57 | Document { 58 | setLastUpdated: (this: IAnonymizedPullRequestDocument) => Promise; 59 | } 60 | export interface IAnonymizedPullRequestModel 61 | extends Model {} 62 | -------------------------------------------------------------------------------- /src/core/model/anonymizedRepositories/anonymizedRepositories.model.ts: -------------------------------------------------------------------------------- 1 | import { model } from "mongoose"; 2 | 3 | import { 4 | IAnonymizedRepositoryDocument, 5 | IAnonymizedRepositoryModel, 6 | } from "./anonymizedRepositories.types"; 7 | import AnonymizedRepositorySchema from "./anonymizedRepositories.schema"; 8 | 9 | const AnonymizedRepositoryModel = model( 10 | "AnonymizedRepository", 11 | AnonymizedRepositorySchema 12 | ) as IAnonymizedRepositoryModel; 13 | 14 | export default AnonymizedRepositoryModel; 15 | -------------------------------------------------------------------------------- /src/core/model/anonymizedRepositories/anonymizedRepositories.schema.ts: -------------------------------------------------------------------------------- 1 | import { Schema } from "mongoose"; 2 | 3 | const AnonymizedRepositorySchema = new Schema({ 4 | repoId: { 5 | type: String, 6 | index: { unique: true, collation: { locale: "en", strength: 2 } }, 7 | }, 8 | status: { 9 | type: String, 10 | default: "preparing", 11 | }, 12 | statusDate: Date, 13 | statusMessage: String, 14 | anonymizeDate: Date, 15 | lastView: Date, 16 | pageView: Number, 17 | accessToken: String, 18 | owner: { 19 | type: Schema.Types.ObjectId, 20 | ref: "user", 21 | index: true, 22 | }, 23 | conference: String, 24 | source: { 25 | type: { type: String }, 26 | branch: String, 27 | commit: String, 28 | commitDate: Date, 29 | repositoryId: String, 30 | repositoryName: String, 31 | accessToken: String, 32 | }, 33 | truckedFileList: { 34 | type: Boolean, 35 | default: false, 36 | }, 37 | options: { 38 | terms: [String], 39 | expirationMode: { type: String }, 40 | expirationDate: Date, 41 | update: Boolean, 42 | image: Boolean, 43 | pdf: Boolean, 44 | notebook: Boolean, 45 | link: Boolean, 46 | page: Boolean, 47 | pageSource: { 48 | branch: String, 49 | path: String, 50 | }, 51 | }, 52 | dateOfEntry: { 53 | type: Date, 54 | default: new Date(), 55 | }, 56 | size: { 57 | storage: { 58 | type: Number, 59 | default: 0, 60 | }, 61 | file: { 62 | type: Number, 63 | default: 0, 64 | }, 65 | }, 66 | isReseted: { 67 | type: Boolean, 68 | default: false, 69 | }, 70 | }); 71 | 72 | export default AnonymizedRepositorySchema; 73 | -------------------------------------------------------------------------------- /src/core/model/anonymizedRepositories/anonymizedRepositories.types.ts: -------------------------------------------------------------------------------- 1 | import { Document, Model } from "mongoose"; 2 | import { RepositoryStatus } from "../../types"; 3 | 4 | export interface IAnonymizedRepository { 5 | repoId: string; 6 | status?: RepositoryStatus; 7 | statusMessage?: string; 8 | statusDate: Date; 9 | anonymizeDate: Date; 10 | source: { 11 | type: "GitHubDownload" | "GitHubStream" | "Zip"; 12 | branch?: string; 13 | commit?: string; 14 | commitDate?: Date; 15 | repositoryId?: string; 16 | repositoryName?: string; 17 | accessToken?: string; 18 | }; 19 | owner: string; 20 | truckedFileList: boolean; 21 | conference: string; 22 | options: { 23 | terms: string[]; 24 | expirationMode: "never" | "redirect" | "remove"; 25 | expirationDate?: Date; 26 | update: boolean; 27 | image: boolean; 28 | pdf: boolean; 29 | notebook: boolean; 30 | link: boolean; 31 | page: boolean; 32 | pageSource?: { 33 | branch: string; 34 | path: string; 35 | }; 36 | }; 37 | pageView: number; 38 | lastView: Date; 39 | size: { 40 | storage: number; 41 | file: number; 42 | }; 43 | isReseted: boolean; 44 | } 45 | 46 | export interface IAnonymizedRepositoryDocument 47 | extends IAnonymizedRepository, 48 | Document { 49 | setLastUpdated: (this: IAnonymizedRepositoryDocument) => Promise; 50 | } 51 | export interface IAnonymizedRepositoryModel 52 | extends Model {} 53 | -------------------------------------------------------------------------------- /src/core/model/conference/conferences.model.ts: -------------------------------------------------------------------------------- 1 | import { model } from "mongoose"; 2 | 3 | import { IConferenceDocument, IConferenceModel } from "./conferences.types"; 4 | import ConferenceSchema from "./conferences.schema"; 5 | 6 | const ConferenceModel = model( 7 | "Conference", 8 | ConferenceSchema 9 | ) as IConferenceModel; 10 | 11 | export default ConferenceModel; 12 | -------------------------------------------------------------------------------- /src/core/model/conference/conferences.schema.ts: -------------------------------------------------------------------------------- 1 | import { Schema } from "mongoose"; 2 | 3 | const RepositorySchema = new Schema({ 4 | name: String, 5 | conferenceID: { 6 | type: String, 7 | index: { unique: true }, 8 | }, 9 | url: String, 10 | startDate: Date, 11 | endDate: Date, 12 | status: String, 13 | owners: { type: [Schema.Types.ObjectId] }, 14 | repositories: { 15 | type: [ 16 | { 17 | id: { type: Schema.Types.ObjectId }, 18 | addDate: { type: Date }, 19 | removeDate: { type: Date }, 20 | }, 21 | ], 22 | }, 23 | options: { 24 | expirationMode: String, 25 | expirationDate: Date, 26 | update: Boolean, 27 | image: Boolean, 28 | pdf: Boolean, 29 | notebook: Boolean, 30 | link: Boolean, 31 | page: Boolean, 32 | }, 33 | dateOfEntry: { 34 | type: Date, 35 | default: new Date(), 36 | }, 37 | plan: { 38 | planID: String, 39 | pricePerRepository: Number, 40 | quota: { 41 | repository: Number, 42 | size: Number, 43 | file: Number, 44 | }, 45 | }, 46 | billing: { 47 | name: String, 48 | email: String, 49 | address: String, 50 | address2: String, 51 | city: String, 52 | zip: String, 53 | country: String, 54 | vat: String, 55 | }, 56 | }); 57 | 58 | export default RepositorySchema; 59 | -------------------------------------------------------------------------------- /src/core/model/conference/conferences.types.ts: -------------------------------------------------------------------------------- 1 | import { Document, Model } from "mongoose"; 2 | import { ConferenceStatus } from "../../types"; 3 | 4 | export interface IConference { 5 | name: string; 6 | conferenceID: string; 7 | startDate: Date; 8 | endDate: Date; 9 | url: string; 10 | status: ConferenceStatus; 11 | owners: string[]; 12 | repositories: { 13 | id: string; 14 | addDate: Date; 15 | removeDate?: Date; 16 | }[]; 17 | options: { 18 | expirationMode: "never" | "redirect" | "remove"; 19 | expirationDate?: Date; 20 | update: boolean; 21 | image: boolean; 22 | pdf: boolean; 23 | notebook: boolean; 24 | link: boolean; 25 | page: boolean; 26 | }; 27 | plan: { 28 | planID: string; 29 | pricePerRepository: number; 30 | quota: { 31 | repository: number; 32 | size: number; 33 | file: number; 34 | }; 35 | }; 36 | billing?: { 37 | name: string; 38 | email: string; 39 | address: string; 40 | address2?: string; 41 | city: string; 42 | zip: string; 43 | country: string; 44 | vat?: string; 45 | }; 46 | } 47 | 48 | export interface IConferenceDocument extends IConference, Document {} 49 | export interface IConferenceModel extends Model {} 50 | -------------------------------------------------------------------------------- /src/core/model/files/files.model.ts: -------------------------------------------------------------------------------- 1 | import { model } from "mongoose"; 2 | import { join } from "path"; 3 | 4 | import { IFileDocument, IFileModel } from "./files.types"; 5 | import FileSchema from "./files.schema"; 6 | 7 | const FileModel = model("File", FileSchema) as IFileModel; 8 | export default FileModel; 9 | -------------------------------------------------------------------------------- /src/core/model/files/files.schema.ts: -------------------------------------------------------------------------------- 1 | import { Schema } from "mongoose"; 2 | 3 | const FileSchema = new Schema({ 4 | name: { type: String, index: true }, 5 | path: { type: String, index: true }, 6 | repoId: { type: String, index: true }, 7 | sha: { 8 | type: String, 9 | }, 10 | size: { 11 | type: Number, 12 | }, 13 | }); 14 | 15 | FileSchema.index({ path: 1, repoId: 1 }); 16 | 17 | FileSchema.methods.toString = function () { 18 | return `${this.path}/${this.name}`; 19 | }; 20 | 21 | export default FileSchema; 22 | -------------------------------------------------------------------------------- /src/core/model/files/files.types.ts: -------------------------------------------------------------------------------- 1 | import { Document, Model } from "mongoose"; 2 | 3 | export interface IFile { 4 | name: string; 5 | path: string; 6 | repoId: string; 7 | sha?: string; 8 | size?: number; 9 | } 10 | 11 | export interface IFileDocument extends IFile, Document { 12 | toString: (this: IFileDocument) => string; 13 | } 14 | export interface IFileModel extends Model {} 15 | -------------------------------------------------------------------------------- /src/core/model/repositories/repositories.model.ts: -------------------------------------------------------------------------------- 1 | import { model } from "mongoose"; 2 | 3 | import { IRepositoryDocument, IRepositoryModel } from "./repositories.types"; 4 | import RepositorySchema from "./repositories.schema"; 5 | 6 | const RepositoryModel = model( 7 | "Repository", 8 | RepositorySchema 9 | ) as IRepositoryModel; 10 | 11 | export default RepositoryModel; 12 | -------------------------------------------------------------------------------- /src/core/model/repositories/repositories.schema.ts: -------------------------------------------------------------------------------- 1 | import { Schema } from "mongoose"; 2 | 3 | const RepositorySchema = new Schema({ 4 | externalId: { 5 | type: String, 6 | index: { unique: true }, 7 | }, 8 | name: { 9 | type: String, 10 | index: true, 11 | }, 12 | url: String, 13 | source: { 14 | type: String, 15 | default: "github", 16 | }, 17 | hasPage: { type: Boolean, default: false }, 18 | pageSource: { 19 | branch: { type: String }, 20 | path: String, 21 | }, 22 | branches: [ 23 | { 24 | name: { type: String }, 25 | commit: String, 26 | readme: String, 27 | }, 28 | ], 29 | defaultBranch: String, 30 | size: Number, 31 | status: { 32 | type: String, 33 | default: "ready", 34 | }, 35 | dateOfEntry: { 36 | type: Date, 37 | default: new Date(), 38 | }, 39 | }); 40 | 41 | export default RepositorySchema; 42 | -------------------------------------------------------------------------------- /src/core/model/repositories/repositories.types.ts: -------------------------------------------------------------------------------- 1 | import { Document, Model } from "mongoose"; 2 | 3 | export interface IRepository { 4 | externalId: string; 5 | name: string; 6 | url?: string; 7 | source: "github"; 8 | size?: number; 9 | defaultBranch?: string; 10 | hasPage: boolean; 11 | pageSource?: { 12 | branch: string; 13 | path: string; 14 | }; 15 | branches?: { 16 | name: string; 17 | commit: string; 18 | readme?: string; 19 | }[]; 20 | } 21 | 22 | export interface IRepositoryDocument extends IRepository, Document { 23 | setLastUpdated: (this: IRepositoryDocument) => Promise; 24 | } 25 | export interface IRepositoryModel extends Model {} 26 | -------------------------------------------------------------------------------- /src/core/model/users/users.model.ts: -------------------------------------------------------------------------------- 1 | import { model } from "mongoose"; 2 | 3 | import { IUserDocument, IUserModel } from "./users.types"; 4 | import UserSchema from "./users.schema"; 5 | 6 | const UserModel = model("user", UserSchema) as IUserModel; 7 | 8 | export default UserModel; 9 | -------------------------------------------------------------------------------- /src/core/model/users/users.schema.ts: -------------------------------------------------------------------------------- 1 | import { Schema } from "mongoose"; 2 | 3 | const UserSchema = new Schema({ 4 | accessTokens: { 5 | github: { type: String }, 6 | }, 7 | accessTokenDates: { 8 | github: { type: Date }, 9 | }, 10 | externalIDs: { 11 | github: { type: String, index: true }, 12 | }, 13 | username: { 14 | type: String, 15 | index: { unique: true }, 16 | }, 17 | emails: [ 18 | { 19 | email: { type: String }, 20 | default: Boolean, 21 | }, 22 | ], 23 | isAdmin: { type: Boolean, default: false }, 24 | photo: String, 25 | repositories: [ 26 | { 27 | type: String, 28 | ref: "Repository", 29 | }, 30 | ], 31 | default: { 32 | terms: [String], 33 | options: { 34 | expirationMode: { type: String }, 35 | update: Boolean, 36 | image: Boolean, 37 | pdf: Boolean, 38 | notebook: Boolean, 39 | link: Boolean, 40 | page: { type: String }, 41 | }, 42 | }, 43 | status: { 44 | type: String, 45 | default: "active", 46 | }, 47 | dateOfEntry: { 48 | type: Date, 49 | default: new Date(), 50 | }, 51 | }); 52 | 53 | export default UserSchema; 54 | -------------------------------------------------------------------------------- /src/core/model/users/users.types.ts: -------------------------------------------------------------------------------- 1 | import { Document, Model } from "mongoose"; 2 | 3 | export interface IUser { 4 | accessTokens: { 5 | github: string; 6 | }; 7 | accessTokenDates?: { 8 | github: Date; 9 | }; 10 | externalIDs: { 11 | github: string; 12 | }; 13 | username: string; 14 | isAdmin: boolean; 15 | emails: { 16 | email: string; 17 | default: boolean; 18 | }[]; 19 | photo?: string; 20 | 21 | repositories?: number[]; 22 | default?: { 23 | terms: string[]; 24 | options: { 25 | expirationMode: "never" | "redirect" | ""; 26 | update: boolean; 27 | image: boolean; 28 | pdf: boolean; 29 | notebook: boolean; 30 | link: boolean; 31 | page: string | null; 32 | }; 33 | }; 34 | status?: "active" | "removed"; 35 | dateOfEntry?: Date; 36 | lastUpdated?: Date; 37 | } 38 | 39 | export interface IUserDocument extends IUser, Document { 40 | setLastUpdated: (this: IUserDocument) => Promise; 41 | } 42 | export interface IUserModel extends Model {} 43 | -------------------------------------------------------------------------------- /src/core/source/GitHubBase.ts: -------------------------------------------------------------------------------- 1 | import { Readable } from "stream"; 2 | 3 | import AnonymizedFile from "../AnonymizedFile"; 4 | import { SourceBase } from "./Source"; 5 | import { IFile } from "../model/files/files.types"; 6 | 7 | export interface GitHubBaseData { 8 | getToken: () => string | Promise; 9 | repoId: string; 10 | organization: string; 11 | repoName: string; 12 | commit: string; 13 | } 14 | 15 | export default abstract class GitHubBase implements SourceBase { 16 | abstract type: "GitHubDownload" | "GitHubStream" | "Zip"; 17 | accessToken: string | undefined; 18 | 19 | constructor(readonly data: GitHubBaseData) {} 20 | 21 | abstract getFileContent( 22 | file: AnonymizedFile, 23 | progress?: (status: string) => void 24 | ): Promise; 25 | 26 | abstract getFiles(progress?: (status: string) => void): Promise; 27 | } 28 | -------------------------------------------------------------------------------- /src/core/source/Source.ts: -------------------------------------------------------------------------------- 1 | import { Readable } from "stream"; 2 | 3 | import AnonymizedFile from "../AnonymizedFile"; 4 | import GitHubDownload from "./GitHubDownload"; 5 | import GitHubStream from "./GitHubStream"; 6 | import Zip from "./Zip"; 7 | import { IFile } from "../model/files/files.types"; 8 | 9 | export type Source = GitHubDownload | GitHubStream | Zip; 10 | 11 | export interface SourceBase { 12 | readonly type: string; 13 | 14 | /** 15 | * Retrieve the fie content 16 | * @param file the file of the content to retrieve 17 | */ 18 | getFileContent(file: AnonymizedFile): Promise; 19 | 20 | /** 21 | * Get all the files from a specific source 22 | */ 23 | getFiles(progress?: (status: string) => void): Promise; 24 | } 25 | -------------------------------------------------------------------------------- /src/core/source/Zip.ts: -------------------------------------------------------------------------------- 1 | import * as stream from "stream"; 2 | 3 | import AnonymizedFile from "../AnonymizedFile"; 4 | import storage from "../storage"; 5 | import { SourceBase } from "./Source"; 6 | 7 | export default class Zip implements SourceBase { 8 | type = "Zip"; 9 | url?: string; 10 | 11 | constructor(data: any, readonly repoId: string) { 12 | this.url = data.url; 13 | } 14 | 15 | async getFiles(progress?: (status: string) => void) { 16 | let nbFiles = 0; 17 | return storage.listFiles(this.repoId, "", { 18 | onEntry: () => { 19 | if (progress) { 20 | nbFiles++; 21 | progress("List file: " + nbFiles); 22 | } 23 | }, 24 | }); 25 | } 26 | 27 | async getFileContent(file: AnonymizedFile): Promise { 28 | return storage.read(file.repository.repoId, file.filePath); 29 | } 30 | 31 | toJSON(): any { 32 | return { 33 | type: this.type, 34 | }; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/core/storage.ts: -------------------------------------------------------------------------------- 1 | import config from "../config"; 2 | import FileSystem from "./storage/FileSystem"; 3 | import S3Storage from "./storage/S3"; 4 | 5 | export default (() => { 6 | return config.STORAGE == "s3" ? new S3Storage() : new FileSystem(); 7 | })(); 8 | -------------------------------------------------------------------------------- /src/core/types.ts: -------------------------------------------------------------------------------- 1 | export interface Branch { 2 | name: string; 3 | commit: string; 4 | readme?: string; 5 | } 6 | 7 | export enum RepositoryStatus { 8 | QUEUE = "queue", 9 | PREPARING = "preparing", 10 | DOWNLOAD = "download", 11 | READY = "ready", 12 | EXPIRED = "expired", 13 | EXPIRING = "expiring", 14 | REMOVED = "removed", 15 | REMOVING = "removing", 16 | ERROR = "error", 17 | } 18 | 19 | export type ConferenceStatus = "ready" | "expired" | "removed"; 20 | 21 | export type SourceStatus = "available" | "unavailable"; 22 | -------------------------------------------------------------------------------- /src/queue/processes/removeCache.ts: -------------------------------------------------------------------------------- 1 | import { Exception, trace } from "@opentelemetry/api"; 2 | import { SandboxedJob } from "bullmq"; 3 | import Repository from "../../core/Repository"; 4 | import { getRepository as getRepositoryImport } from "../../server/database"; 5 | 6 | export default async function (job: SandboxedJob) { 7 | const { 8 | connect, 9 | getRepository, 10 | }: { 11 | connect: () => Promise; 12 | getRepository: typeof getRepositoryImport; 13 | } = require("../../server/database"); 14 | const span = trace.getTracer("ano-file").startSpan("proc.removeCache"); 15 | span.setAttribute("repoId", job.data.repoId); 16 | try { 17 | await connect(); 18 | console.log( 19 | `[QUEUE] Cache of ${job.data.repoId} is going to be removed...` 20 | ); 21 | const repo = await getRepository(job.data.repoId); 22 | try { 23 | await repo.removeCache(); 24 | } catch (error) { 25 | span.recordException(error as Exception); 26 | throw error; 27 | } 28 | } catch (error) { 29 | span.recordException(error as Exception); 30 | } finally { 31 | console.log(`[QUEUE] Cache of ${job.data.repoId} is removed.`); 32 | span.end(); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/queue/processes/removeRepository.ts: -------------------------------------------------------------------------------- 1 | import { trace } from "@opentelemetry/api"; 2 | import { SandboxedJob } from "bullmq"; 3 | import Repository from "../../core/Repository"; 4 | import { getRepository as getRepositoryImport } from "../../server/database"; 5 | import { RepositoryStatus } from "../../core/types"; 6 | 7 | export default async function (job: SandboxedJob) { 8 | const { 9 | connect, 10 | getRepository, 11 | }: { 12 | connect: () => Promise; 13 | getRepository: typeof getRepositoryImport; 14 | } = require("../../server/database"); 15 | const span = trace.getTracer("ano-file").startSpan("proc.removeRepository"); 16 | span.setAttribute("repoId", job.data.repoId); 17 | try { 18 | await connect(); 19 | console.log(`[QUEUE] ${job.data.repoId} is going to be removed`); 20 | const repo = await getRepository(job.data.repoId); 21 | await repo.updateStatus(RepositoryStatus.REMOVING, ""); 22 | try { 23 | await repo.remove(); 24 | } catch (error) { 25 | if (error instanceof Error) { 26 | await repo.updateStatus(RepositoryStatus.ERROR, error.message); 27 | } else if (typeof error === "string") { 28 | await repo.updateStatus(RepositoryStatus.ERROR, error); 29 | } 30 | span.recordException(error as Error); 31 | throw error; 32 | } 33 | } catch (error) { 34 | span.recordException(error as Error); 35 | } finally { 36 | console.log(`[QUEUE] ${job.data.repoId} is removed`); 37 | span.end(); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/server/database.ts: -------------------------------------------------------------------------------- 1 | import mongoose, { ConnectOptions } from "mongoose"; 2 | import Repository from "../core/Repository"; 3 | import config from "../config"; 4 | import AnonymizedRepositoryModel from "../core/model/anonymizedRepositories/anonymizedRepositories.model"; 5 | import AnonymousError from "../core/AnonymousError"; 6 | import AnonymizedPullRequestModel from "../core/model/anonymizedPullRequests/anonymizedPullRequests.model"; 7 | import PullRequest from "../core/PullRequest"; 8 | 9 | const MONGO_URL = `mongodb://${config.DB_USERNAME}:${config.DB_PASSWORD}@${config.DB_HOSTNAME}:27017/`; 10 | 11 | export const database = mongoose.connection; 12 | 13 | export let isConnected = false; 14 | 15 | export async function connect() { 16 | mongoose.set("strictQuery", false); 17 | await mongoose.connect(MONGO_URL + "production", { 18 | authSource: "admin", 19 | appName: "Anonymous GitHub Server", 20 | compressors: "zstd", 21 | } as ConnectOptions); 22 | isConnected = true; 23 | 24 | return database; 25 | } 26 | 27 | export async function getRepository(repoId: string, opts: {} = {}) { 28 | if (!repoId || repoId == "undefined") { 29 | throw new AnonymousError("repo_not_found", { 30 | object: repoId, 31 | httpStatus: 404, 32 | }); 33 | } 34 | const data = await AnonymizedRepositoryModel.findOne({ repoId }).collation({ 35 | locale: "en", 36 | strength: 2, 37 | }); 38 | if (!data) 39 | throw new AnonymousError("repo_not_found", { 40 | object: repoId, 41 | httpStatus: 404, 42 | }); 43 | return new Repository(data); 44 | } 45 | export async function getPullRequest(pullRequestId: string) { 46 | if (!pullRequestId || pullRequestId == "undefined") { 47 | throw new AnonymousError("pull_request_not_found", { 48 | object: pullRequestId, 49 | httpStatus: 404, 50 | }); 51 | } 52 | const data = await AnonymizedPullRequestModel.findOne({ 53 | pullRequestId, 54 | }); 55 | if (!data) 56 | throw new AnonymousError("pull_request_not_found", { 57 | object: pullRequestId, 58 | httpStatus: 404, 59 | }); 60 | return new PullRequest(data); 61 | } 62 | -------------------------------------------------------------------------------- /src/server/routes/file.ts: -------------------------------------------------------------------------------- 1 | import * as express from "express"; 2 | import AnonymizedFile from "../../core/AnonymizedFile"; 3 | import AnonymousError from "../../core/AnonymousError"; 4 | import { getRepo, handleError } from "./route-utils"; 5 | 6 | export const router = express.Router(); 7 | 8 | router.get( 9 | "/:repoId/file/:path*", 10 | async (req: express.Request, res: express.Response) => { 11 | const anonymizedPath = decodeURI( 12 | new URL(req.url, `${req.protocol}://${req.hostname}`).pathname.replace( 13 | `/${req.params.repoId}/file/`, 14 | "" 15 | ) 16 | ); 17 | if (anonymizedPath.endsWith("/")) { 18 | return handleError( 19 | new AnonymousError("folder_not_supported", { 20 | httpStatus: 404, 21 | object: anonymizedPath, 22 | }), 23 | res 24 | ); 25 | } 26 | 27 | const repo = await getRepo(req, res, { 28 | nocheck: false, 29 | }); 30 | if (!repo) return; 31 | 32 | try { 33 | if (!(await repo.isReady())) { 34 | throw new AnonymousError("repository_not_ready", { 35 | object: this, 36 | httpStatus: 503, 37 | }); 38 | } 39 | const f = new AnonymizedFile({ 40 | repository: repo, 41 | anonymizedPath, 42 | }); 43 | if (!f.isFileSupported()) { 44 | throw new AnonymousError("file_not_supported", { 45 | httpStatus: 403, 46 | object: f, 47 | }); 48 | } 49 | if (req.query.download) { 50 | res.attachment( 51 | anonymizedPath.substring(anonymizedPath.lastIndexOf("/") + 1) 52 | ); 53 | } 54 | if (req.query.v) { 55 | // cache the file for a month 56 | res.header("Cache-Control", "max-age=18144000"); 57 | } else { 58 | // cache the file for 5min 59 | res.header("Cache-Control", "max-age=300"); 60 | } 61 | await f.send(res); 62 | await repo.countView(); 63 | } catch (error) { 64 | return handleError(error, res, req); 65 | } 66 | } 67 | ); 68 | 69 | export default router; 70 | -------------------------------------------------------------------------------- /src/server/routes/index.ts: -------------------------------------------------------------------------------- 1 | import pullRequestPrivate from "./pullRequest-private"; 2 | import pullRequestPublic from "./pullRequest-public"; 3 | import repositoryPrivate from "./repository-private"; 4 | import repositoryPublic from "./repository-public"; 5 | import conference from "./conference"; 6 | import file from "./file"; 7 | import webview from "./webview"; 8 | import user from "./user"; 9 | import option from "./option"; 10 | import admin from "./admin"; 11 | 12 | export default { 13 | pullRequestPrivate, 14 | pullRequestPublic, 15 | repositoryPrivate, 16 | repositoryPublic, 17 | file, 18 | webview, 19 | user, 20 | option, 21 | conference, 22 | admin, 23 | }; 24 | -------------------------------------------------------------------------------- /src/server/routes/option.ts: -------------------------------------------------------------------------------- 1 | import * as express from "express"; 2 | import config from "../../config"; 3 | export const router = express.Router(); 4 | 5 | router.get("/", async (req: express.Request, res: express.Response) => { 6 | res.json({ 7 | ENABLE_DOWNLOAD: config.ENABLE_DOWNLOAD, 8 | MAX_FILE_SIZE: config.MAX_FILE_SIZE, 9 | MAX_REPO_SIZE: config.MAX_REPO_SIZE, 10 | ANONYMIZATION_MASK: config.ANONYMIZATION_MASK, 11 | }); 12 | }); 13 | 14 | export default router; 15 | -------------------------------------------------------------------------------- /src/server/schedule.ts: -------------------------------------------------------------------------------- 1 | import * as schedule from "node-schedule"; 2 | import Conference from "../core/Conference"; 3 | import AnonymizedRepositoryModel from "../core/model/anonymizedRepositories/anonymizedRepositories.model"; 4 | import ConferenceModel from "../core/model/conference/conferences.model"; 5 | import Repository from "../core/Repository"; 6 | 7 | export function conferenceStatusCheck() { 8 | // check every 6 hours the status of the conferences 9 | const job = schedule.scheduleJob("0 */6 * * *", async () => { 10 | (await ConferenceModel.find({ status: { $eq: "ready" } })).forEach( 11 | async (data) => { 12 | const conference = new Conference(data); 13 | if (conference.isExpired() && conference.status == "ready") { 14 | try { 15 | await conference.expire(); 16 | } catch (error) { 17 | console.error(error); 18 | } 19 | } 20 | } 21 | ); 22 | }); 23 | } 24 | 25 | export function repositoryStatusCheck() { 26 | // check every 6 hours the status of the repositories 27 | const job = schedule.scheduleJob("0 */6 * * *", async () => { 28 | console.log("[schedule] Check repository status and unused repositories"); 29 | ( 30 | await AnonymizedRepositoryModel.find({ 31 | status: { $eq: "ready" }, 32 | isReseted: { $eq: false }, 33 | }) 34 | ).forEach((data) => { 35 | const repo = new Repository(data); 36 | try { 37 | repo.check(); 38 | } catch (error) { 39 | console.log(`Repository ${repo.repoId} is expired`); 40 | } 41 | const fourMonthAgo = new Date(); 42 | fourMonthAgo.setMonth(fourMonthAgo.getMonth() - 4); 43 | 44 | if (repo.model.lastView < fourMonthAgo) { 45 | repo.removeCache().then(() => { 46 | console.log( 47 | `Repository ${repo.repoId} not visited for 4 months remove the cached files` 48 | ); 49 | }); 50 | } 51 | }); 52 | }); 53 | } 54 | -------------------------------------------------------------------------------- /src/streamer/index.ts: -------------------------------------------------------------------------------- 1 | import { config as dotenv } from "dotenv"; 2 | dotenv(); 3 | 4 | import * as express from "express"; 5 | import * as compression from "compression"; 6 | 7 | import config from "../config"; 8 | import router from "./route"; 9 | import { handleError } from "../server/routes/route-utils"; 10 | import AnonymousError from "../core/AnonymousError"; 11 | 12 | const app = express(); 13 | app.use(express.json()); 14 | 15 | app.use(compression()); 16 | 17 | app.use("/api", router); 18 | 19 | app.get("/healthcheck", async (_, res) => { 20 | res.json({ status: "ok" }); 21 | }); 22 | 23 | app.all("*", (req, res) => { 24 | handleError( 25 | new AnonymousError("file_not_found", { 26 | httpStatus: 404, 27 | object: req.originalUrl, 28 | }), 29 | res, 30 | req 31 | ); 32 | }); 33 | app.listen(config.PORT, () => { 34 | console.log(`Server started on http://streamer:${config.PORT}`); 35 | }); 36 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "ts-node": { 3 | "transpileOnly": true 4 | }, 5 | "compilerOptions": { 6 | "types": ["node"], 7 | "lib": ["es6"], 8 | "target": "es6", 9 | "module": "CommonJS", 10 | "outDir": "build", 11 | "removeComments": true, 12 | "preserveConstEnums": true, 13 | "forceConsistentCasingInFileNames": true, 14 | "sourceMap": false, 15 | "skipLibCheck": true, 16 | "strict": true, 17 | "esModuleInterop": false, 18 | "incremental": true 19 | }, 20 | "include": ["src/**/*.ts", "index.ts", "src/cli/index.ts"], 21 | "exclude": ["node_modules", ".vscode"] 22 | } 23 | --------------------------------------------------------------------------------