├── .husky ├── pre-commit └── commit-msg ├── packages ├── custom-sort │ ├── src │ │ ├── index.css │ │ ├── GmDatabase │ │ │ ├── upgradeDatabase │ │ │ │ └── index.ts │ │ │ ├── GmTable │ │ │ │ └── index.ts │ │ │ ├── reservedKeys │ │ │ │ └── index.ts │ │ │ ├── ExtendProperty │ │ │ │ └── index.ts │ │ │ ├── LegacyStorage │ │ │ │ └── index.ts │ │ │ ├── setStorageVersion │ │ │ │ └── index.ts │ │ │ ├── CurrentStorage │ │ │ │ └── index.ts │ │ │ ├── GmStorage │ │ │ │ └── index.ts │ │ │ ├── getStorageVersion │ │ │ │ └── index.ts │ │ │ └── openDatabase │ │ │ │ └── index.ts │ │ ├── scriptIdentifier │ │ │ └── index.ts │ │ ├── PageContainer │ │ │ └── index.ts │ │ ├── teaserElementSelector │ │ │ └── index.ts │ │ ├── classAttr │ │ │ └── index.ts │ │ ├── PageLoadedMessage │ │ │ └── index.ts │ │ ├── reloadImage │ │ │ └── index.ts │ │ ├── removeEmbeddedPage │ │ │ └── index.ts │ │ ├── sortTeaser │ │ │ └── TeaserInfo │ │ │ │ └── index.ts │ │ ├── createPageContainer │ │ │ └── index.ts │ │ ├── getPageParam │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── conditionPresets │ │ │ └── index.ts │ │ ├── changeAnchorUrlParam │ │ │ └── index.ts │ │ ├── getInputValue │ │ │ └── index.ts │ │ ├── initialize │ │ │ └── index.ts │ │ └── getTeaserContainers │ │ │ └── index.ts │ ├── .eslintignore │ ├── .gitignore │ ├── README.md │ ├── config │ │ ├── userscript_header.js │ │ ├── prettier.config.js │ │ └── webpack.config.dev.ts │ ├── tsconfig.src.json │ ├── postcss.config.js │ ├── tsconfig.json │ ├── .editorconfig │ ├── tsconfig.build.json │ └── CHANGELOG.md ├── flow-youtube-chat │ ├── src │ │ ├── index.css │ │ ├── filterOption │ │ │ └── index.ts │ │ ├── flowDuration │ │ │ └── index.ts │ │ ├── unresolved_issues.md │ │ ├── scriptIdentifier │ │ │ └── index.ts │ │ ├── fycKey │ │ │ └── index.ts │ │ ├── settingsPanelSize │ │ │ └── index.ts │ │ ├── languages │ │ │ └── index.ts │ │ ├── type │ │ │ ├── UI │ │ │ │ └── index.ts │ │ │ ├── Primitive │ │ │ │ └── index.ts │ │ │ ├── ErrorType │ │ │ │ └── index.ts │ │ │ ├── RestType │ │ │ │ └── index.ts │ │ │ ├── AssignGenericFunction │ │ │ │ └── index.ts │ │ │ ├── TargetLowerBoundFunc │ │ │ │ └── index.ts │ │ │ ├── TypeWithMap │ │ │ │ └── index.ts │ │ │ └── UnknownType │ │ │ │ └── index.ts │ │ ├── settingUI │ │ │ ├── errorNode │ │ │ │ └── index.ts │ │ │ ├── stepTiming │ │ │ │ └── index.ts │ │ │ ├── EditableExpression │ │ │ │ ├── Identifier │ │ │ │ │ └── index.ts │ │ │ │ ├── Literal │ │ │ │ │ └── index.ts │ │ │ │ ├── LiteralArray │ │ │ │ │ └── index.ts │ │ │ │ ├── Compound │ │ │ │ │ └── index.ts │ │ │ │ ├── ArrayExpression │ │ │ │ │ └── index.ts │ │ │ │ ├── CallExpression │ │ │ │ │ └── index.ts │ │ │ │ ├── ExpressionType │ │ │ │ │ └── index.ts │ │ │ │ └── MemberExpression │ │ │ │ │ └── index.ts │ │ │ ├── editAction │ │ │ │ └── index.ts │ │ │ ├── textRowStyle │ │ │ │ └── index.ts │ │ │ ├── SettingDispatchable │ │ │ │ └── index.ts │ │ │ ├── SettingProps │ │ │ │ └── index.ts │ │ │ ├── computed │ │ │ │ └── index.ts │ │ │ ├── intNode │ │ │ │ └── index.ts │ │ │ ├── colorNode │ │ │ │ └── index.ts │ │ │ ├── numberNode │ │ │ │ └── index.ts │ │ │ ├── SettingKey │ │ │ │ └── index.ts │ │ │ ├── plainTextAreaNode │ │ │ │ └── index.ts │ │ │ ├── regexTextAreaNode │ │ │ │ └── index.ts │ │ │ ├── updateBool │ │ │ │ └── index.ts │ │ │ ├── SettingValue │ │ │ │ └── index.ts │ │ │ ├── textColorNode │ │ │ │ └── index.ts │ │ │ ├── updateInput │ │ │ │ └── index.ts │ │ │ ├── getExampleTextStyle │ │ │ │ └── index.ts │ │ │ ├── getState │ │ │ │ └── index.ts │ │ │ ├── mapSettingNodes │ │ │ │ └── index.ts │ │ │ ├── filter │ │ │ │ └── errorResult │ │ │ │ │ └── index.ts │ │ │ ├── configEffect │ │ │ │ └── index.ts │ │ │ └── checkboxNode │ │ │ │ └── index.ts │ │ ├── LogAnnotationKeys │ │ │ └── index.ts │ │ ├── maxEventLogBlockCount │ │ │ └── index.ts │ │ ├── AnimatingState │ │ │ └── index.ts │ │ ├── Logger │ │ │ └── index.ts │ │ ├── strictOptionEquivalence │ │ │ └── index.ts │ │ ├── preserveEventLogBlockCount │ │ │ └── index.ts │ │ ├── typedExpression │ │ │ ├── TypeBase │ │ │ │ └── index.ts │ │ │ └── TypedExpressionFunction │ │ │ │ └── index.ts │ │ ├── LogMeta │ │ │ └── index.ts │ │ ├── GMConfigItem │ │ │ └── index.ts │ │ ├── intervalTooSmall │ │ │ └── index.ts │ │ ├── setRecord │ │ │ └── index.ts │ │ ├── configKeys │ │ │ └── index.ts │ │ ├── languageLabels │ │ │ └── index.ts │ │ ├── ConfigObservable │ │ │ └── index.ts │ │ ├── processWithEither │ │ │ └── index.ts │ │ ├── restrictedExpression │ │ │ ├── JsExpFromExpression │ │ │ │ └── index.ts │ │ │ ├── ExpressionFromTypedExp │ │ │ │ └── index.ts │ │ │ ├── ExpressionFromJsExp │ │ │ │ └── index.ts │ │ │ ├── NumberLiteral │ │ │ │ └── index.ts │ │ │ ├── StringLiteral │ │ │ │ └── index.ts │ │ │ └── BooleanLiteral │ │ │ │ └── index.ts │ │ ├── chainTagged │ │ │ └── index.ts │ │ ├── UserConfigSetter │ │ │ └── index.ts │ │ ├── concatMapEffect │ │ │ └── index.ts │ │ ├── FlowChat │ │ │ └── index.ts │ │ ├── AppCommander │ │ │ └── index.ts │ │ ├── tapEffect │ │ │ └── index.ts │ │ ├── ChatUpdateConfig │ │ │ └── index.ts │ │ ├── TaggedValue │ │ │ └── index.ts │ │ ├── appendChatMessage │ │ │ └── index.ts │ │ ├── listeningBroadcastConfigKeys │ │ │ └── index.ts │ │ ├── filter │ │ │ └── filterContext │ │ │ │ └── index.ts │ │ ├── textShadow │ │ │ └── index.ts │ │ ├── SettingState │ │ │ └── index.ts │ │ ├── defaultToast │ │ │ └── index.ts │ │ ├── simpleConfig │ │ │ └── index.ts │ │ ├── updateSettingState │ │ │ └── index.ts │ │ ├── renderChat │ │ │ └── index.ts │ │ ├── UserConfigGetter │ │ │ └── index.ts │ │ ├── logWithMeta │ │ │ └── index.ts │ │ ├── setterFromKeysAndMap │ │ │ └── index.ts │ │ ├── mapObject │ │ │ └── index.ts │ │ ├── getChatFontSize │ │ │ └── index.ts │ │ ├── makeChatScreen │ │ │ └── index.ts │ │ ├── ConfigSubject │ │ │ └── index.ts │ │ ├── chainFilterMapElse │ │ │ └── index.ts │ │ ├── getLaneY │ │ │ └── index.ts │ │ ├── observePair │ │ │ └── index.ts │ │ ├── isEditable │ │ │ └── index.ts │ │ ├── appendEventLog │ │ │ └── index.ts │ │ ├── getFlowChatProgress │ │ │ └── index.ts │ │ ├── ChatData │ │ │ └── index.ts │ │ ├── videoToggleStream │ │ │ └── index.ts │ │ ├── getFlowChatRect │ │ │ └── index.ts │ │ ├── MappedConfigState │ │ │ └── index.ts │ │ ├── MainState │ │ │ └── index.ts │ │ ├── settingsComponent │ │ │ └── index.ts │ │ ├── mainCss │ │ │ └── index.ts │ │ └── index.ts │ ├── .eslintignore │ ├── config │ │ ├── userscript_header.js │ │ ├── prettier.config.js │ │ └── webpack.config.dev.ts │ ├── test.jpg │ ├── tsconfig.src.json │ ├── tsconfig.build.json │ ├── postcss.config.js │ ├── tsconfig.json │ ├── README.md │ ├── .editorconfig │ ├── filter_example.txt │ ├── plan.md │ ├── tsconfig.exclude.json │ ├── script_info.txt │ └── filter_logic.md ├── ui │ ├── lib │ │ ├── TextGetter │ │ │ ├── index.js │ │ │ ├── index.js.map │ │ │ ├── index.d.ts │ │ │ └── index.d.ts.map │ │ ├── WrappedApp │ │ │ ├── index.js │ │ │ ├── index.js.map │ │ │ ├── index.d.ts │ │ │ └── index.d.ts.map │ │ ├── AppProperties │ │ │ ├── index.js │ │ │ ├── index.js.map │ │ │ ├── index.d.ts │ │ │ └── index.d.ts.map │ │ ├── ExactTypeKey │ │ │ ├── index.js │ │ │ ├── index.js.map │ │ │ ├── index.d.ts │ │ │ └── index.d.ts.map │ │ ├── setter │ │ │ ├── Setter │ │ │ │ ├── index.js │ │ │ │ ├── index.js.map │ │ │ │ ├── index.d.ts │ │ │ │ └── index.d.ts.map │ │ │ ├── EditSetter │ │ │ │ ├── index.js │ │ │ │ ├── index.js.map │ │ │ │ ├── index.d.ts │ │ │ │ └── index.d.ts.map │ │ │ ├── setString │ │ │ │ ├── index.js │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js.map │ │ │ │ └── index.d.ts.map │ │ │ ├── setStrings │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.d.ts.map │ │ │ │ ├── index.js │ │ │ │ └── index.js.map │ │ │ ├── setEditInt │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.d.ts.map │ │ │ │ └── index.js │ │ │ ├── setEditColor │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.d.ts.map │ │ │ │ └── index.js │ │ │ ├── setEditNumber │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.d.ts.map │ │ │ │ └── index.js │ │ │ ├── setEditString │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── index.d.ts.map │ │ │ │ └── index.js.map │ │ │ ├── setFilteredString │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.d.ts.map │ │ │ │ ├── index.js │ │ │ │ └── index.js.map │ │ │ ├── setEditRegexes │ │ │ │ ├── index.d.ts │ │ │ │ └── index.d.ts.map │ │ │ ├── setEditStrings │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.d.ts.map │ │ │ │ └── index.js │ │ │ ├── index.js.map │ │ │ ├── index.d.ts.map │ │ │ └── index.js │ │ ├── AppPropertiesKey │ │ │ ├── index.js │ │ │ ├── index.js.map │ │ │ ├── index.d.ts │ │ │ └── index.d.ts.map │ │ ├── AppPropertiesValue │ │ │ ├── index.js │ │ │ ├── index.js.map │ │ │ ├── index.d.ts │ │ │ └── index.d.ts.map │ │ ├── ComputedProperties │ │ │ ├── index.js │ │ │ ├── index.js.map │ │ │ ├── index.d.ts │ │ │ └── index.d.ts.map │ │ ├── StateDispatchable │ │ │ ├── index.js │ │ │ ├── index.js.map │ │ │ ├── index.d.ts │ │ │ └── index.d.ts.map │ │ ├── node │ │ │ ├── RangeConfig │ │ │ │ ├── index.js │ │ │ │ ├── index.js.map │ │ │ │ ├── index.d.ts │ │ │ │ └── index.d.ts.map │ │ │ ├── option │ │ │ │ ├── index.js │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.d.ts.map │ │ │ │ └── index.js.map │ │ │ ├── settingRow │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.d.ts.map │ │ │ │ ├── index.js │ │ │ │ └── index.js.map │ │ │ ├── colorTextOutput │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── index.d.ts.map │ │ │ │ └── index.js.map │ │ │ ├── checkboxRow │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.d.ts.map │ │ │ │ ├── index.js │ │ │ │ └── index.js.map │ │ │ ├── colorPicker │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.d.ts.map │ │ │ │ ├── index.js │ │ │ │ └── index.js.map │ │ │ ├── textInput │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.d.ts.map │ │ │ │ └── index.js │ │ │ ├── textAreaRow │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.d.ts.map │ │ │ │ └── index.js │ │ │ ├── rangeRow │ │ │ │ ├── index.d.ts │ │ │ │ └── index.d.ts.map │ │ │ ├── tabContainer │ │ │ │ ├── index.d.ts │ │ │ │ └── index.d.ts.map │ │ │ ├── index.js.map │ │ │ ├── index.d.ts.map │ │ │ ├── index.js │ │ │ └── index.d.ts │ │ ├── ComputedPropertySetters │ │ │ ├── index.js │ │ │ ├── index.js.map │ │ │ ├── index.d.ts │ │ │ └── index.d.ts.map │ │ ├── appNode │ │ │ ├── AppNodeTextKey │ │ │ │ ├── index.js │ │ │ │ ├── index.js.map │ │ │ │ ├── index.d.ts │ │ │ │ └── index.d.ts.map │ │ │ ├── AppTextGetter │ │ │ │ ├── index.js │ │ │ │ ├── index.js.map │ │ │ │ ├── index.d.ts │ │ │ │ └── index.d.ts.map │ │ │ ├── intNode │ │ │ │ ├── index.js │ │ │ │ ├── index.d.ts.map │ │ │ │ ├── index.js.map │ │ │ │ └── index.d.ts │ │ │ ├── numberNode │ │ │ │ ├── index.js │ │ │ │ ├── index.d.ts.map │ │ │ │ ├── index.js.map │ │ │ │ └── index.d.ts │ │ │ ├── plainTextAreaNode │ │ │ │ ├── index.js │ │ │ │ ├── index.d.ts.map │ │ │ │ ├── index.js.map │ │ │ │ └── index.d.ts │ │ │ ├── regexTextAreaNode │ │ │ │ ├── index.js │ │ │ │ ├── index.d.ts.map │ │ │ │ ├── index.js.map │ │ │ │ └── index.d.ts │ │ │ ├── checkboxNode │ │ │ │ ├── index.js │ │ │ │ ├── index.js.map │ │ │ │ ├── index.d.ts │ │ │ │ └── index.d.ts.map │ │ │ ├── index.js.map │ │ │ ├── textAreaNode │ │ │ │ └── index.js │ │ │ ├── index.d.ts.map │ │ │ ├── numericNode │ │ │ │ └── index.js │ │ │ ├── colorNode │ │ │ │ └── index.d.ts │ │ │ └── index.js │ │ ├── getChecked │ │ │ ├── index.d.ts │ │ │ ├── index.d.ts.map │ │ │ ├── index.js │ │ │ └── index.js.map │ │ ├── getValue │ │ │ ├── index.d.ts │ │ │ ├── index.d.ts.map │ │ │ ├── index.js.map │ │ │ └── index.js │ │ ├── RootComponent │ │ │ ├── index.js │ │ │ ├── index.js.map │ │ │ ├── index.d.ts │ │ │ └── index.d.ts.map │ │ ├── panelBoxStyle │ │ │ ├── index.js │ │ │ ├── index.d.ts │ │ │ ├── index.d.ts.map │ │ │ └── index.js.map │ │ ├── errorText │ │ │ ├── index.d.ts │ │ │ ├── index.d.ts.map │ │ │ ├── index.js │ │ │ └── index.js.map │ │ ├── EditAction │ │ │ ├── index.js │ │ │ ├── index.js.map │ │ │ └── index.d.ts │ │ ├── wrapApp │ │ │ ├── index.d.ts │ │ │ ├── index.d.ts.map │ │ │ ├── index.js │ │ │ └── index.js.map │ │ ├── InputUpdater │ │ │ ├── index.js │ │ │ ├── index.js.map │ │ │ └── index.d.ts │ │ ├── BoolUpdater │ │ │ ├── index.js │ │ │ ├── index.js.map │ │ │ ├── index.d.ts │ │ │ └── index.d.ts.map │ │ └── index.js.map │ ├── tsconfig.build.json │ ├── tsconfig.src.json │ ├── .ncurc.json │ ├── src │ │ ├── setter │ │ │ ├── Setter │ │ │ │ └── index.ts │ │ │ ├── EditSetter │ │ │ │ └── index.ts │ │ │ ├── setString │ │ │ │ └── index.ts │ │ │ ├── setEditString │ │ │ │ └── index.ts │ │ │ ├── setStrings │ │ │ │ └── index.ts │ │ │ ├── setFilteredString │ │ │ │ └── index.ts │ │ │ └── setEditStrings │ │ │ │ └── index.ts │ │ ├── TextGetter │ │ │ └── index.ts │ │ ├── node │ │ │ ├── RangeConfig │ │ │ │ └── index.ts │ │ │ ├── option │ │ │ │ └── index.ts │ │ │ ├── colorTextOutput │ │ │ │ └── index.ts │ │ │ ├── checkboxRow │ │ │ │ └── index.ts │ │ │ ├── checkboxRow2 │ │ │ │ └── index.ts │ │ │ ├── settingRow │ │ │ │ └── index.ts │ │ │ ├── colorPicker │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── ComputedProperties │ │ │ └── index.ts │ │ ├── appNode │ │ │ ├── AppNodeTextKey │ │ │ │ └── index.ts │ │ │ ├── intNode │ │ │ │ └── index.ts │ │ │ ├── numberNode │ │ │ │ └── index.ts │ │ │ ├── plainTextAreaNode │ │ │ │ └── index.ts │ │ │ ├── regexTextAreaNode │ │ │ │ └── index.ts │ │ │ └── AppTextGetter │ │ │ │ └── index.ts │ │ ├── StateDispatchable │ │ │ └── index.ts │ │ ├── WrappedApp │ │ │ └── index.ts │ │ ├── panelBoxStyle │ │ │ └── index.ts │ │ ├── ExactTypeKey │ │ │ └── index.ts │ │ ├── getChecked │ │ │ └── index.ts │ │ ├── AppPropertiesKey │ │ │ └── index.ts │ │ ├── AppProperties │ │ │ └── index.ts │ │ ├── errorText │ │ │ └── index.ts │ │ ├── RootComponent │ │ │ └── index.ts │ │ ├── AppPropertiesValue │ │ │ └── index.ts │ │ ├── ComputedPropertySetters │ │ │ └── index.ts │ │ ├── getValue │ │ │ └── index.ts │ │ └── wrapApp │ │ │ └── index.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ ├── config │ │ ├── webpack.config.dev.ts │ │ └── webpack.config.prod.ts │ └── CHANGELOG.md ├── forward-to │ ├── tsconfig.lib.json │ ├── tsconfig.src.json │ ├── tsconfig.build.json │ ├── lib │ │ ├── index.js │ │ ├── index.d.ts │ │ ├── index.js.map │ │ └── index.d.ts.map │ ├── src │ │ └── index.ts │ ├── tsconfig.json │ ├── CHANGELOG.md │ └── config │ │ ├── webpack.config.dev.ts │ │ └── webpack.config.prod.ts ├── tap-non-null │ ├── tsconfig.build.json │ ├── tsconfig.lib.json │ ├── tsconfig.src.json │ ├── tsconfig.json │ ├── lib │ │ ├── index.js │ │ ├── index.d.ts │ │ ├── index.d.ts.map │ │ └── index.js.map │ ├── src │ │ └── index.ts │ ├── CHANGELOG.md │ └── config │ │ ├── webpack.config.dev.ts │ │ └── webpack.config.prod.ts ├── webpack-config │ ├── tsconfig.lib.json │ ├── tsconfig.src.json │ ├── lib │ │ ├── styleLoaderConfig │ │ │ ├── index.d.ts.map │ │ │ ├── index.d.ts │ │ │ ├── index.js.map │ │ │ └── index.js │ │ ├── baseConfig │ │ │ ├── index.d.ts │ │ │ ├── index.d.ts.map │ │ │ ├── index.js │ │ │ └── index.js.map │ │ ├── jsbaseConfig │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.d.ts.map │ │ │ └── index.js.map │ │ ├── tsbaseConfig │ │ │ ├── index.d.ts │ │ │ ├── index.d.ts.map │ │ │ ├── index.js │ │ │ └── index.js.map │ │ ├── umdLibConfig │ │ │ ├── index.d.ts │ │ │ ├── index.d.ts.map │ │ │ ├── index.js │ │ │ └── index.js.map │ │ ├── tsLoaderConfig │ │ │ ├── index.d.ts │ │ │ ├── index.d.ts.map │ │ │ ├── index.js.map │ │ │ └── index.js │ │ └── devConfig │ │ │ ├── index.js │ │ │ ├── index.d.ts.map │ │ │ ├── index.js.map │ │ │ └── index.d.ts │ ├── src │ │ ├── jsbaseConfig │ │ │ └── index.ts │ │ ├── umdLibConfig │ │ │ └── index.ts │ │ ├── baseConfig │ │ │ └── index.ts │ │ ├── tsLoaderConfig │ │ │ └── index.ts │ │ ├── styleLoaderConfig │ │ │ └── index.ts │ │ ├── tsbaseConfig │ │ │ └── index.ts │ │ └── devConfig │ │ │ └── index.ts │ ├── tsconfig.json │ └── CHANGELOG.md ├── cdn-from-dependency │ ├── tsconfig.lib.json │ ├── tsconfig.src.json │ ├── tsconfig.build.json │ ├── tsconfig.json │ ├── lib │ │ ├── index.d.ts │ │ ├── index.d.ts.map │ │ ├── index.js │ │ └── index.js.map │ ├── CHANGELOG.md │ ├── config │ │ ├── webpack.config.dev.ts │ │ └── webpack.config.prod.ts │ └── src │ │ └── index.ts └── eslint-config │ ├── .eslintrc.js │ └── tsWebpackConfig │ └── index.js ├── pnpm-workspace.yaml ├── tsconfig.build.json ├── tsconfig.bundle.json ├── tsconfig.lib.json ├── tsconfig.package.json ├── tsconfig.src.json ├── .changeset ├── config.json └── README.md ├── commitlint.config.js ├── .gitignore └── package.json /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | pnpm test 2 | -------------------------------------------------------------------------------- /packages/custom-sort/src/index.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/index.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/custom-sort/.eslintignore: -------------------------------------------------------------------------------- 1 | /dist/* 2 | -------------------------------------------------------------------------------- /.husky/commit-msg: -------------------------------------------------------------------------------- 1 | pnpm dlx commitlint --edit $1 2 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/.eslintignore: -------------------------------------------------------------------------------- 1 | /dist/* 2 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/filterOption/index.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - 'packages/**' 3 | -------------------------------------------------------------------------------- /packages/custom-sort/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ 3 | -------------------------------------------------------------------------------- /packages/custom-sort/src/GmDatabase/upgradeDatabase/index.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/custom-sort/README.md: -------------------------------------------------------------------------------- 1 | # custom-sort 2 | custom-sort 3 | -------------------------------------------------------------------------------- /packages/custom-sort/config/userscript_header.js: -------------------------------------------------------------------------------- 1 | /* jshint esversion: 6 */ 2 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/flowDuration/index.ts: -------------------------------------------------------------------------------- 1 | export default 6400; 2 | 3 | -------------------------------------------------------------------------------- /packages/ui/lib/TextGetter/index.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/WrappedApp/index.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/flow-youtube-chat/config/userscript_header.js: -------------------------------------------------------------------------------- 1 | /* jshint esversion: 6 */ 2 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/unresolved_issues.md: -------------------------------------------------------------------------------- 1 | filterPanel: re-replace var 2 | 3 | -------------------------------------------------------------------------------- /packages/ui/lib/AppProperties/index.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/ExactTypeKey/index.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/setter/Setter/index.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.build.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/ui/tsconfig.src.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.src.json", 3 | } 4 | -------------------------------------------------------------------------------- /packages/forward-to/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.lib.json", 3 | } 4 | -------------------------------------------------------------------------------- /packages/forward-to/tsconfig.src.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.src.json", 3 | } 4 | -------------------------------------------------------------------------------- /packages/ui/.ncurc.json: -------------------------------------------------------------------------------- 1 | { 2 | "reject": [ 3 | "@typescript/lib-dom" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /packages/ui/lib/AppPropertiesKey/index.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/AppPropertiesValue/index.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/ComputedProperties/index.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/StateDispatchable/index.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/node/RangeConfig/index.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/setter/EditSetter/index.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/custom-sort/tsconfig.src.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.src.json", 3 | } 4 | -------------------------------------------------------------------------------- /packages/forward-to/tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.build.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/tap-non-null/tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.build.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/tap-non-null/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.lib.json", 3 | } 4 | -------------------------------------------------------------------------------- /packages/tap-non-null/tsconfig.src.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.src.json", 3 | } 4 | -------------------------------------------------------------------------------- /packages/ui/lib/ComputedPropertySetters/index.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/appNode/AppNodeTextKey/index.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/appNode/AppTextGetter/index.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/webpack-config/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.lib.json", 3 | } 4 | -------------------------------------------------------------------------------- /packages/webpack-config/tsconfig.src.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.src.json", 3 | } 4 | -------------------------------------------------------------------------------- /packages/cdn-from-dependency/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.lib.json", 3 | } 4 | -------------------------------------------------------------------------------- /packages/cdn-from-dependency/tsconfig.src.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.src.json", 3 | } 4 | -------------------------------------------------------------------------------- /packages/cdn-from-dependency/tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.build.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/custom-sort/src/GmDatabase/GmTable/index.ts: -------------------------------------------------------------------------------- 1 | export type GmTable = Record; 2 | -------------------------------------------------------------------------------- /packages/custom-sort/src/scriptIdentifier/index.ts: -------------------------------------------------------------------------------- 1 | export default 'iwara-custom-sort-1340362664231628'; 2 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/scriptIdentifier/index.ts: -------------------------------------------------------------------------------- 1 | export default 'fyc-0615654655528523'; 2 | 3 | -------------------------------------------------------------------------------- /packages/custom-sort/src/GmDatabase/reservedKeys/index.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | version: '__version', 3 | }; 4 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/fycKey/index.ts: -------------------------------------------------------------------------------- 1 | export default (key: string): string => `FYC_${key}`; 2 | 3 | -------------------------------------------------------------------------------- /packages/custom-sort/src/PageContainer/index.ts: -------------------------------------------------------------------------------- 1 | export type PageContainer = HTMLIFrameElement | HTMLEmbedElement; 2 | -------------------------------------------------------------------------------- /packages/eslint-config/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: ['./baseConfig'], 4 | }; 5 | -------------------------------------------------------------------------------- /packages/custom-sort/config/prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | semi: false, 3 | arrowParens: 'avoid', 4 | }; 5 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/test.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gepz/userscript/HEAD/packages/flow-youtube-chat/test.jpg -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingsPanelSize/index.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | width: 660, 3 | height: 395, 4 | }; 5 | 6 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/tsconfig.src.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["../../tsconfig.src.json", "./tsconfig.exclude.json"] 3 | } 4 | -------------------------------------------------------------------------------- /packages/custom-sort/src/teaserElementSelector/index.ts: -------------------------------------------------------------------------------- 1 | export default '.node-teaser, .node-sidebar_teaser, .node-wide_teaser'; 2 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["../../tsconfig.bundle.json", "./tsconfig.exclude.json"] 3 | } 4 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/languages/index.ts: -------------------------------------------------------------------------------- 1 | export default [ 2 | 'FYC_EN', 3 | 'FYC_JA', 4 | 'FYC_ZH_CN', 5 | ] as const; 6 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/type/UI/index.ts: -------------------------------------------------------------------------------- 1 | enum UI { 2 | unknown, 3 | card, 4 | regex, 5 | } 6 | 7 | export default UI; 8 | 9 | -------------------------------------------------------------------------------- /packages/ui/src/setter/Setter/index.ts: -------------------------------------------------------------------------------- 1 | export default interface Setter { 2 | (value: V): (state: T) => S 3 | } 4 | 5 | -------------------------------------------------------------------------------- /packages/ui/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.package.json", 3 | "references": [{ "path": "./tsconfig.src.json" }] 4 | } 5 | -------------------------------------------------------------------------------- /packages/custom-sort/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /packages/forward-to/lib/index.js: -------------------------------------------------------------------------------- 1 | export default (observer) => (value) => { 2 | observer.next(value); 3 | }; 4 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/src/TextGetter/index.ts: -------------------------------------------------------------------------------- 1 | export default interface TextGetter { 2 | (key: Key): (state: State) => string; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.src.json", 3 | "compilerOptions": { 4 | "declarationDir": "build/dts", 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /packages/custom-sort/src/classAttr/index.ts: -------------------------------------------------------------------------------- 1 | export default (classNames: string[]): string => ( 2 | classNames.map((x) => `.${x}`).join('') 3 | ); 4 | -------------------------------------------------------------------------------- /packages/custom-sort/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.package.json", 3 | "references": [{ "path": "./tsconfig.src.json" }] 4 | } 5 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/config/prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | semi: false, 3 | arrowParens: 'avoid', 4 | useTabs: true, 5 | }; 6 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/errorNode/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | text, 3 | } from 'hyperapp'; 4 | 5 | export default text('error'); 6 | 7 | -------------------------------------------------------------------------------- /packages/tap-non-null/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.package.json", 3 | "references": [{ "path": "./tsconfig.src.json" }] 4 | } 5 | -------------------------------------------------------------------------------- /packages/ui/lib/getChecked/index.d.ts: -------------------------------------------------------------------------------- 1 | declare const _default: (e: Event) => boolean; 2 | export default _default; 3 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/getValue/index.d.ts: -------------------------------------------------------------------------------- 1 | declare const _default: (e: Event) => string; 2 | export default _default; 3 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/src/node/RangeConfig/index.ts: -------------------------------------------------------------------------------- 1 | export default interface RangeConfig { 2 | min: number, 3 | max: number, 4 | step: number, 5 | } 6 | 7 | -------------------------------------------------------------------------------- /packages/cdn-from-dependency/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.package.json", 3 | "references": [{ "path": "./tsconfig.src.json" }] 4 | } 5 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.package.json", 3 | "references": [{ "path": "./tsconfig.src.json" }] 4 | } 5 | -------------------------------------------------------------------------------- /packages/ui/lib/TextGetter/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/TextGetter/index.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /packages/ui/lib/WrappedApp/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/WrappedApp/index.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /packages/ui/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.lib.json", 3 | "compilerOptions": { 4 | "declarationDir": "lib", 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/LogAnnotationKeys/index.ts: -------------------------------------------------------------------------------- 1 | enum LogAnnotationKeys { 2 | name = 'name', 3 | } 4 | 5 | export default LogAnnotationKeys; 6 | 7 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/stepTiming/index.ts: -------------------------------------------------------------------------------- 1 | export default ( 2 | stepCount: number, 3 | ): string => `steps(${stepCount}, jump-end)`; 4 | 5 | -------------------------------------------------------------------------------- /packages/ui/lib/AppProperties/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/AppProperties/index.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /packages/ui/lib/ExactTypeKey/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ExactTypeKey/index.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/type/Primitive/index.ts: -------------------------------------------------------------------------------- 1 | enum Primitive { 2 | number, 3 | boolean, 4 | string, 5 | } 6 | 7 | export default Primitive; 8 | 9 | -------------------------------------------------------------------------------- /packages/ui/lib/AppPropertiesKey/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/AppPropertiesKey/index.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /packages/ui/lib/RootComponent/index.js: -------------------------------------------------------------------------------- 1 | export const makeComponent = (x) => (tag) => ({ 2 | tag, 3 | view: x(tag), 4 | }); 5 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/setter/Setter/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/setter/Setter/index.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /packages/ui/src/ComputedProperties/index.ts: -------------------------------------------------------------------------------- 1 | type ComputedProperties = Record unknown>; 2 | 3 | export default ComputedProperties; 4 | 5 | -------------------------------------------------------------------------------- /packages/custom-sort/src/GmDatabase/ExtendProperty/index.ts: -------------------------------------------------------------------------------- 1 | export type ExtendProperty> = T2 extends 2 | Record ? T2 : never; 3 | -------------------------------------------------------------------------------- /packages/ui/lib/AppPropertiesValue/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/AppPropertiesValue/index.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /packages/ui/lib/ComputedProperties/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ComputedProperties/index.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /packages/ui/lib/StateDispatchable/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/StateDispatchable/index.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /packages/ui/lib/node/RangeConfig/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/node/RangeConfig/index.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /packages/ui/lib/setter/EditSetter/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/setter/EditSetter/index.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /packages/flow-youtube-chat/README.md: -------------------------------------------------------------------------------- 1 | # flow-youtube-chat 2 | 3 | `pnpm build ` to generate final userscript at /dist/main/index.user.js 4 | `pnpm dev` to run dev server 5 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/EditableExpression/Identifier/index.ts: -------------------------------------------------------------------------------- 1 | export default interface Identifier { 2 | type: 'Identifier'; 3 | name: string; 4 | } 5 | 6 | -------------------------------------------------------------------------------- /packages/ui/lib/TextGetter/index.d.ts: -------------------------------------------------------------------------------- 1 | export default interface TextGetter { 2 | (key: Key): (state: State) => string; 3 | } 4 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/setter/Setter/index.d.ts: -------------------------------------------------------------------------------- 1 | export default interface Setter { 2 | (value: V): (state: T) => S; 3 | } 4 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/custom-sort/src/PageLoadedMessage/index.ts: -------------------------------------------------------------------------------- 1 | export default interface PageLoadedMessage { 2 | url: string, 3 | parentPageId: string, 4 | hasTeasers: boolean, 5 | } 6 | -------------------------------------------------------------------------------- /packages/ui/lib/ComputedPropertySetters/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ComputedPropertySetters/index.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /packages/ui/lib/appNode/AppNodeTextKey/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/appNode/AppNodeTextKey/index.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /packages/ui/lib/appNode/AppTextGetter/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/appNode/AppTextGetter/index.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /packages/ui/src/appNode/AppNodeTextKey/index.ts: -------------------------------------------------------------------------------- 1 | type AppNodeTextKey = 'inputNonNumberic' 2 | | 'invalidSetting' 3 | | 'invalidColor'; 4 | 5 | export default AppNodeTextKey; 6 | 7 | -------------------------------------------------------------------------------- /packages/ui/lib/setter/setString/index.js: -------------------------------------------------------------------------------- 1 | import { constant, } from 'effect/Function'; 2 | const setString = constant; 3 | export default setString; 4 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/forward-to/src/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Observer, 3 | } from 'rxjs'; 4 | 5 | export default (observer: Observer) => (value: T): void => { 6 | observer.next(value); 7 | }; 8 | -------------------------------------------------------------------------------- /packages/ui/lib/getValue/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/getValue/index.ts"],"names":[],"mappings":"yBAAgB,GAAG,KAAK,KAAG,MAAM;AAAjC,wBAWE"} -------------------------------------------------------------------------------- /packages/ui/lib/node/RangeConfig/index.d.ts: -------------------------------------------------------------------------------- 1 | export default interface RangeConfig { 2 | min: number; 3 | max: number; 4 | step: number; 5 | } 6 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/src/setter/EditSetter/index.ts: -------------------------------------------------------------------------------- 1 | import Setter from '@/setter/Setter'; 2 | 3 | export default interface EditSetter { 4 | (editing: boolean): Setter 5 | } 6 | 7 | -------------------------------------------------------------------------------- /tsconfig.bundle.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.src.json", 3 | "compilerOptions": { 4 | "composite": false, 5 | "incremental": true, 6 | "sourceMap": false 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/ui/lib/ComputedProperties/index.d.ts: -------------------------------------------------------------------------------- 1 | type ComputedProperties = Record unknown>; 2 | export default ComputedProperties; 3 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/getChecked/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/getChecked/index.ts"],"names":[],"mappings":"yBAOgB,GAAG,KAAK,KAAG,OAAO;AAAlC,wBAIU"} -------------------------------------------------------------------------------- /packages/ui/lib/panelBoxStyle/index.js: -------------------------------------------------------------------------------- 1 | export default (width) => ({ 2 | flex: `0 0 ${width}px`, 3 | width: `${width}px`, 4 | margin: '2px', 5 | }); 6 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/custom-sort/src/reloadImage/index.ts: -------------------------------------------------------------------------------- 1 | export default (image: HTMLImageElement): void => { 2 | const { 3 | src, 4 | } = image; 5 | 6 | image.src = ''; 7 | image.src = src; 8 | }; 9 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/maxEventLogBlockCount/index.ts: -------------------------------------------------------------------------------- 1 | import * as log from '@/Log'; 2 | 3 | const maxEntries = 10000; 4 | 5 | export default Math.floor(maxEntries / log.blockSize); 6 | 7 | -------------------------------------------------------------------------------- /packages/tap-non-null/lib/index.js: -------------------------------------------------------------------------------- 1 | import * as t from 'typed-assert'; 2 | export default (x, message) => { 3 | t.isNotVoid(x, message); 4 | return x; 5 | }; 6 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/appNode/AppNodeTextKey/index.d.ts: -------------------------------------------------------------------------------- 1 | type AppNodeTextKey = 'inputNonNumberic' | 'invalidSetting' | 'invalidColor'; 2 | export default AppNodeTextKey; 3 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/src/appNode/intNode/index.ts: -------------------------------------------------------------------------------- 1 | import numericNode from '@/appNode/numericNode'; 2 | import { 3 | setEditInt, 4 | } from '@/setter'; 5 | 6 | export default numericNode(setEditInt); 7 | 8 | -------------------------------------------------------------------------------- /packages/ui/lib/panelBoxStyle/index.d.ts: -------------------------------------------------------------------------------- 1 | import { StyleProp } from 'hyperapp'; 2 | declare const _default: (width: number) => StyleProp; 3 | export default _default; 4 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/setter/setString/index.d.ts: -------------------------------------------------------------------------------- 1 | import Setter from '../../setter/Setter'; 2 | declare const setString: Setter; 3 | export default setString; 4 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/src/StateDispatchable/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Effect, 3 | } from 'hyperapp'; 4 | 5 | type StateDispatchable = [s: S, ...e: Effect[]]; 6 | 7 | export default StateDispatchable; 8 | 9 | -------------------------------------------------------------------------------- /packages/webpack-config/lib/styleLoaderConfig/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/styleLoaderConfig/index.ts"],"names":[],"mappings":";;;;;;;;;;AAIA,wBAmB2B"} -------------------------------------------------------------------------------- /packages/forward-to/lib/index.d.ts: -------------------------------------------------------------------------------- 1 | import { Observer } from 'rxjs'; 2 | declare const _default: (observer: Observer) => (value: T) => void; 3 | export default _default; 4 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/src/appNode/numberNode/index.ts: -------------------------------------------------------------------------------- 1 | import numericNode from '@/appNode/numericNode'; 2 | import { 3 | setEditNumber, 4 | } from '@/setter'; 5 | 6 | export default numericNode(setEditNumber); 7 | 8 | -------------------------------------------------------------------------------- /packages/ui/lib/StateDispatchable/index.d.ts: -------------------------------------------------------------------------------- 1 | import { Effect } from 'hyperapp'; 2 | type StateDispatchable = [s: S, ...e: Effect[]]; 3 | export default StateDispatchable; 4 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/custom-sort/src/GmDatabase/LegacyStorage/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | GmStorage, 3 | } from '../GmStorage'; 4 | 5 | export type LegacyStorage = GmStorage<{ 6 | sortValue: string, 7 | pageCount: number, 8 | }>; 9 | -------------------------------------------------------------------------------- /packages/custom-sort/src/removeEmbeddedPage/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | PageContainer, 3 | } from '@/PageContainer'; 4 | 5 | export default (page: PageContainer): void => { 6 | page.src = ''; 7 | page.remove(); 8 | }; 9 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/AnimatingState/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Either as E, 3 | } from 'effect'; 4 | 5 | type AnimatingState = E.Either; 6 | 7 | export default AnimatingState; 8 | -------------------------------------------------------------------------------- /packages/ui/lib/appNode/intNode/index.js: -------------------------------------------------------------------------------- 1 | import numericNode from '../../appNode/numericNode'; 2 | import { setEditInt, } from '../../setter'; 3 | export default numericNode(setEditInt); 4 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/errorText/index.d.ts: -------------------------------------------------------------------------------- 1 | import Editable from '../Editable'; 2 | declare const _default: (subject: string) => (edit: Editable) => string; 3 | export default _default; 4 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/setter/EditSetter/index.d.ts: -------------------------------------------------------------------------------- 1 | import Setter from '../../setter/Setter'; 2 | export default interface EditSetter { 3 | (editing: boolean): Setter; 4 | } 5 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/setter/setStrings/index.d.ts: -------------------------------------------------------------------------------- 1 | import Setter from '../../setter/Setter'; 2 | declare const setStrings: Setter; 3 | export default setStrings; 4 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/src/appNode/plainTextAreaNode/index.ts: -------------------------------------------------------------------------------- 1 | import textAreaNode from '@/appNode/textAreaNode'; 2 | import { 3 | setEditRegexes, 4 | } from '@/setter'; 5 | 6 | export default textAreaNode(setEditRegexes); 7 | 8 | -------------------------------------------------------------------------------- /packages/ui/src/appNode/regexTextAreaNode/index.ts: -------------------------------------------------------------------------------- 1 | import textAreaNode from '@/appNode/textAreaNode'; 2 | import { 3 | setEditStrings, 4 | } from '@/setter'; 5 | 6 | export default textAreaNode(setEditStrings); 7 | 8 | -------------------------------------------------------------------------------- /packages/webpack-config/lib/baseConfig/index.d.ts: -------------------------------------------------------------------------------- 1 | import { Configuration } from 'webpack'; 2 | declare const _default: (rootDir: string) => Configuration; 3 | export default _default; 4 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.src.json", 3 | "compilerOptions": { 4 | "declarationMap": true, 5 | "outDir": "${configDir}/lib", 6 | "declarationDir": "${configDir}/lib", 7 | }, 8 | } 9 | -------------------------------------------------------------------------------- /tsconfig.package.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.base.json", 3 | "compilerOptions": { 4 | "module": "Node16", 5 | "moduleResolution": "Node16", 6 | }, 7 | "include": ["${configDir}/**/*.ts"], 8 | } 9 | -------------------------------------------------------------------------------- /packages/custom-sort/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/Logger/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Effect as Z, 3 | Array as A, 4 | } from 'effect'; 5 | 6 | export default interface Logger { 7 | (as: A.NonEmptyReadonlyArray): Z.Effect, 8 | } 9 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/strictOptionEquivalence/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Option as O, 3 | } from 'effect'; 4 | import { 5 | strict, 6 | } from 'effect/Equivalence'; 7 | 8 | export default O.getEquivalence(strict()); 9 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/type/ErrorType/index.ts: -------------------------------------------------------------------------------- 1 | type ErrorType = { 2 | tag: 'error', 3 | }; 4 | 5 | export default ErrorType; 6 | 7 | export const error: ErrorType = { 8 | tag: 'error', 9 | }; 10 | 11 | -------------------------------------------------------------------------------- /packages/tap-non-null/lib/index.d.ts: -------------------------------------------------------------------------------- 1 | declare const _default: >(x: T | undefined | null, message?: string) => T; 2 | export default _default; 3 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/node/option/index.js: -------------------------------------------------------------------------------- 1 | import { h, text, } from 'hyperapp'; 2 | export default (value, label, selected) => h('option', { 3 | value, 4 | selected, 5 | }, text(label)); 6 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/webpack-config/lib/jsbaseConfig/index.d.ts: -------------------------------------------------------------------------------- 1 | import { Configuration } from 'webpack'; 2 | declare const _default: (rootDir: string) => Configuration; 3 | export default _default; 4 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/webpack-config/lib/tsbaseConfig/index.d.ts: -------------------------------------------------------------------------------- 1 | import { Configuration } from 'webpack'; 2 | declare const _default: (rootDir: string) => Configuration; 3 | export default _default; 4 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/webpack-config/lib/umdLibConfig/index.d.ts: -------------------------------------------------------------------------------- 1 | import { Configuration } from 'webpack'; 2 | declare const _default: (libraryName: string) => Configuration; 3 | export default _default; 4 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/custom-sort/src/GmDatabase/setStorageVersion/index.ts: -------------------------------------------------------------------------------- 1 | import reservedKeys from '../reservedKeys'; 2 | 3 | export default (version: number): Promise => GM.setValue( 4 | reservedKeys.version, 5 | version, 6 | ); 7 | -------------------------------------------------------------------------------- /packages/custom-sort/tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.bundle.json", 3 | "compilerOptions": { 4 | "noPropertyAccessFromIndexSignature": false, 5 | "noUncheckedIndexedAccess": false, 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /packages/ui/lib/appNode/numberNode/index.js: -------------------------------------------------------------------------------- 1 | import numericNode from '../../appNode/numericNode'; 2 | import { setEditNumber, } from '../../setter'; 3 | export default numericNode(setEditNumber); 4 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/src/WrappedApp/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Dispatch, 3 | } from 'hyperapp'; 4 | 5 | export default interface WrappedApp { 6 | readonly node: HTMLElement, 7 | readonly dispatch: Dispatch, 8 | } 9 | 10 | -------------------------------------------------------------------------------- /packages/webpack-config/lib/jsbaseConfig/index.js: -------------------------------------------------------------------------------- 1 | import baseConfig from '../baseConfig'; 2 | import { merge, } from 'webpack-merge'; 3 | export default (rootDir) => merge(baseConfig(rootDir)); 4 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/webpack-config/lib/tsLoaderConfig/index.d.ts: -------------------------------------------------------------------------------- 1 | import { Configuration } from 'webpack'; 2 | declare const _default: (configFile: string) => Configuration; 3 | export default _default; 4 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/EditableExpression/Literal/index.ts: -------------------------------------------------------------------------------- 1 | import Editable from '@userscript/ui/Editable'; 2 | 3 | export default interface Literal { 4 | type: 'Literal'; 5 | value: Editable 6 | } 7 | 8 | -------------------------------------------------------------------------------- /packages/ui/lib/node/option/index.d.ts: -------------------------------------------------------------------------------- 1 | import { VNode } from 'hyperapp'; 2 | declare const _default: (value: string, label: string, selected: boolean) => VNode; 3 | export default _default; 4 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/editAction/index.ts: -------------------------------------------------------------------------------- 1 | import * as editAction from '@userscript/ui/EditAction'; 2 | 3 | import updateInput from '@/settingUI/updateInput'; 4 | 5 | export default editAction.make(updateInput); 6 | 7 | -------------------------------------------------------------------------------- /packages/ui/lib/WrappedApp/index.d.ts: -------------------------------------------------------------------------------- 1 | import { Dispatch } from 'hyperapp'; 2 | export default interface WrappedApp { 3 | readonly node: HTMLElement; 4 | readonly dispatch: Dispatch; 5 | } 6 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/appNode/plainTextAreaNode/index.js: -------------------------------------------------------------------------------- 1 | import textAreaNode from '../../appNode/textAreaNode'; 2 | import { setEditRegexes, } from '../../setter'; 3 | export default textAreaNode(setEditRegexes); 4 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/appNode/regexTextAreaNode/index.js: -------------------------------------------------------------------------------- 1 | import textAreaNode from '../../appNode/textAreaNode'; 2 | import { setEditStrings, } from '../../setter'; 3 | export default textAreaNode(setEditStrings); 4 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/node/settingRow/index.d.ts: -------------------------------------------------------------------------------- 1 | import { VNode } from 'hyperapp'; 2 | declare const _default: (label: string, error: string, content: VNode[]) => VNode; 3 | export default _default; 4 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/panelBoxStyle/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/panelBoxStyle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACV,MAAM,UAAU,CAAC;yBAEF,OAAO,MAAM,KAAG,SAAS;AAAzC,wBAIG"} -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/preserveEventLogBlockCount/index.ts: -------------------------------------------------------------------------------- 1 | import maxEventLogBlockCount from '@/maxEventLogBlockCount'; 2 | 3 | const preserveRatio = 0.2; 4 | 5 | export default Math.floor(maxEventLogBlockCount * preserveRatio); 6 | 7 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/typedExpression/TypeBase/index.ts: -------------------------------------------------------------------------------- 1 | import Type from '@/type/Type'; 2 | 3 | type TypeBase = { 4 | expected: Type, 5 | synthed: Type, 6 | actual: Type, 7 | }; 8 | 9 | export default TypeBase; 10 | 11 | -------------------------------------------------------------------------------- /packages/ui/lib/node/colorTextOutput/index.d.ts: -------------------------------------------------------------------------------- 1 | import { VNode, StyleProp } from 'hyperapp'; 2 | declare const _default: (textStyle: StyleProp) => (color: string) => VNode; 3 | export default _default; 4 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/webpack-config/lib/baseConfig/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/baseConfig/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACd,MAAM,SAAS,CAAC;yBAED,SAAS,MAAM,KAAG,aAAa;AAA/C,wBAYG"} -------------------------------------------------------------------------------- /packages/forward-to/lib/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,eAAe,CAAI,QAAqB,EAAE,EAAE,CAAC,CAAC,KAAQ,EAAQ,EAAE;IAC9D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/EditAction/index.js: -------------------------------------------------------------------------------- 1 | export const make = (updateInput) => (key, setter) => (c) => ({ 2 | oninput: updateInput(key)(setter(true))(c), 3 | onchange: updateInput(key)(setter(false))(c), 4 | }); 5 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/appNode/intNode/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/appNode/intNode/index.ts"],"names":[],"mappings":"saAO8lB,UAAa,EAAC,WAAc,EAAC,WAAc,EAAC,YAAe,MAAQ,eAAkB,MAAQ,QAAW;AAFtsB,wBAAuC"} -------------------------------------------------------------------------------- /packages/ui/lib/appNode/plainTextAreaNode/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/appNode/plainTextAreaNode/index.ts"],"names":[],"mappings":"ucAOgoB,UAAa,EAAC,YAAe,MAAQ,eAAkB,MAAQ,QAAW;AAF1sB,wBAA4C"} -------------------------------------------------------------------------------- /packages/ui/lib/appNode/regexTextAreaNode/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/appNode/regexTextAreaNode/index.ts"],"names":[],"mappings":"ucAOgoB,UAAa,EAAC,YAAe,MAAQ,eAAkB,MAAQ,QAAW;AAF1sB,wBAA4C"} -------------------------------------------------------------------------------- /packages/ui/lib/node/checkboxRow/index.d.ts: -------------------------------------------------------------------------------- 1 | import { VNode, Action } from 'hyperapp'; 2 | declare const _default: (label: string, checked: boolean, onchange: Action) => VNode; 3 | export default _default; 4 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/src/panelBoxStyle/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | StyleProp, 3 | } from 'hyperapp'; 4 | 5 | export default (width: number): StyleProp => ({ 6 | flex: `0 0 ${width}px`, 7 | width: `${width}px`, 8 | margin: '2px', 9 | }); 10 | 11 | -------------------------------------------------------------------------------- /packages/webpack-config/lib/jsbaseConfig/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/jsbaseConfig/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACd,MAAM,SAAS,CAAC;yBAMD,SAAS,MAAM,KAAG,aAAa;AAA/C,wBAEE"} -------------------------------------------------------------------------------- /packages/webpack-config/lib/tsbaseConfig/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tsbaseConfig/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACd,MAAM,SAAS,CAAC;yBAOD,SAAS,MAAM,KAAG,aAAa;AAA/C,wBASE"} -------------------------------------------------------------------------------- /packages/webpack-config/lib/umdLibConfig/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/umdLibConfig/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACd,MAAM,SAAS,CAAC;yBAGD,aAAa,MAAM,KAAG,aAAa;AAAnD,wBASG"} -------------------------------------------------------------------------------- /packages/custom-sort/src/sortTeaser/TeaserInfo/index.ts: -------------------------------------------------------------------------------- 1 | export interface TeaserInfo { 2 | initialIndex: number; 3 | viewCount: number; 4 | likeCount: number; 5 | imageFactor: number; 6 | galleryFactor: number; 7 | privateFactor: number; 8 | } 9 | -------------------------------------------------------------------------------- /packages/ui/lib/appNode/numberNode/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/appNode/numberNode/index.ts"],"names":[],"mappings":"saAOwlB,UAAa,EAAC,WAAc,EAAC,WAAc,EAAC,YAAe,MAAQ,eAAkB,MAAQ,QAAW;AAFhsB,wBAA0C"} -------------------------------------------------------------------------------- /packages/webpack-config/lib/tsLoaderConfig/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tsLoaderConfig/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACd,MAAM,SAAS,CAAC;yBAED,YAAY,MAAM,KAAG,aAAa;AAAlD,wBAeG"} -------------------------------------------------------------------------------- /packages/custom-sort/src/GmDatabase/CurrentStorage/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | GmStorage, 3 | } from '../GmStorage'; 4 | 5 | export type CurrentStorage = GmStorage<{ 6 | v1: { 7 | condition: string, 8 | pageCount: number, 9 | }, 10 | }>; 11 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/EditableExpression/LiteralArray/index.ts: -------------------------------------------------------------------------------- 1 | import Editable from '@userscript/ui/Editable'; 2 | 3 | export default interface LiteralArray { 4 | type: 'LiteralArray'; 5 | value: Editable 6 | } 7 | 8 | -------------------------------------------------------------------------------- /packages/forward-to/lib/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACT,MAAM,MAAM,CAAC;yBAEE,CAAC,EAAE,UAAU,QAAQ,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,KAAG,IAAI;AAA7D,wBAEE"} -------------------------------------------------------------------------------- /packages/ui/lib/appNode/AppNodeTextKey/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/appNode/AppNodeTextKey/index.ts"],"names":[],"mappings":"AAAA,KAAK,cAAc,GAAG,kBAAkB,GACtC,gBAAgB,GAChB,cAAc,CAAC;AAEjB,eAAe,cAAc,CAAC"} -------------------------------------------------------------------------------- /packages/ui/src/setter/setString/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | constant, 3 | } from 'effect/Function'; 4 | 5 | import Setter from '@/setter/Setter'; 6 | 7 | const setString: Setter = constant; 8 | 9 | export default setString; 10 | 11 | -------------------------------------------------------------------------------- /packages/ui/lib/errorText/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errorText/index.ts"],"names":[],"mappings":"AAQA,OAAO,QAAiB,MAAM,YAAY,CAAC;yBAE3B,CAAC,EAAE,SAAS,MAAM,MAAM,MAAM,QAAQ,CAAC,CAAC,CAAC,KAAG,MAAM;AAAlE,wBAKE"} -------------------------------------------------------------------------------- /packages/ui/lib/node/colorPicker/index.d.ts: -------------------------------------------------------------------------------- 1 | import { VNode, Action } from 'hyperapp'; 2 | declare const _default: (action: Partial>>) => (color: string) => VNode; 3 | export default _default; 4 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/setter/setEditInt/index.d.ts: -------------------------------------------------------------------------------- 1 | import Editable from '../../Editable'; 2 | import EditSetter from '../../setter/EditSetter'; 3 | declare const setEditInt: EditSetter>; 4 | export default setEditInt; 5 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/setter/setString/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/setter/setString/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,GACT,MAAM,iBAAiB,CAAC;AAIzB,MAAM,SAAS,GAA2B,QAAQ,CAAC;AAEnD,eAAe,SAAS,CAAC"} -------------------------------------------------------------------------------- /packages/ui/src/ExactTypeKey/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | IsEqual, 3 | } from 'type-fest'; 4 | 5 | type ExactTypeKey = { 6 | [K in keyof O]: IsEqual extends true ? K : never 7 | }[keyof O]; 8 | 9 | export default ExactTypeKey; 10 | 11 | -------------------------------------------------------------------------------- /packages/custom-sort/src/createPageContainer/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | PageContainer, 3 | } from '@/PageContainer'; 4 | 5 | export default (userAgent: string): PageContainer => ( 6 | document.createElement(userAgent.indexOf('Firefox') > -1 ? 'embed' : 'iframe') 7 | ); 8 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/EditableExpression/Compound/index.ts: -------------------------------------------------------------------------------- 1 | import type Expression from '@/settingUI/editableExpression/Expression'; 2 | 3 | export default interface Compound { 4 | type: 'Compound'; 5 | body: readonly Expression[]; 6 | } 7 | 8 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/textRowStyle/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | StyleProp, 3 | } from 'hyperapp'; 4 | 5 | const textRowStyle: StyleProp = { 6 | width: '70%', 7 | boxSizing: 'border-box', 8 | }; 9 | 10 | export default textRowStyle; 11 | 12 | -------------------------------------------------------------------------------- /packages/tap-non-null/lib/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"yBAEgB,CAAC,SAAS,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC,EAC1D,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,EACvB,UAAU,MAAM,KACf,CAAC;AAHJ,wBAME"} -------------------------------------------------------------------------------- /packages/ui/lib/ExactTypeKey/index.d.ts: -------------------------------------------------------------------------------- 1 | import { IsEqual } from 'type-fest'; 2 | type ExactTypeKey = { 3 | [K in keyof O]: IsEqual extends true ? K : never; 4 | }[keyof O]; 5 | export default ExactTypeKey; 6 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/node/colorTextOutput/index.js: -------------------------------------------------------------------------------- 1 | import { h, text, } from 'hyperapp'; 2 | export default (textStyle) => (color) => h('span', { 3 | style: { 4 | ...textStyle, 5 | color, 6 | }, 7 | }, text('Aa1あア亜')); 8 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/setter/setEditColor/index.d.ts: -------------------------------------------------------------------------------- 1 | import Editable from '../../Editable'; 2 | import EditSetter from '../../setter/EditSetter'; 3 | declare const setEditColor: EditSetter>; 4 | export default setEditColor; 5 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/LogMeta/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Option as O, 3 | FiberRef, 4 | } from 'effect'; 5 | 6 | type LogMeta = O.Option; 7 | 8 | export default LogMeta; 9 | 10 | export const logMeta = FiberRef.unsafeMake(O.none()); 11 | -------------------------------------------------------------------------------- /packages/tap-non-null/src/index.ts: -------------------------------------------------------------------------------- 1 | import * as t from 'typed-assert'; 2 | 3 | export default >( 4 | x: T | undefined | null, 5 | message?: string, 6 | ): T => { 7 | t.isNotVoid(x, message); 8 | return x; 9 | }; 10 | -------------------------------------------------------------------------------- /packages/ui/lib/appNode/checkboxNode/index.js: -------------------------------------------------------------------------------- 1 | import { checkboxRow, } from '../../node'; 2 | export default (getText, getState, updateBool) => (label) => (c) => (s) => checkboxRow(getText(label)(s), getState(label)(s), updateBool(label)(c)); 3 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/appNode/intNode/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/appNode/intNode/index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,EACL,UAAU,GACX,MAAM,UAAU,CAAC;AAElB,eAAe,WAAW,CAAC,UAAU,CAAC,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/getChecked/index.js: -------------------------------------------------------------------------------- 1 | import { decodeUnknownSync, } from 'effect/ParseResult'; 2 | import { instanceOf, } from 'effect/Schema'; 3 | export default (e) => decodeUnknownSync(instanceOf(HTMLInputElement))(e.currentTarget).checked; 4 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/setter/setEditNumber/index.d.ts: -------------------------------------------------------------------------------- 1 | import Editable from '../../Editable'; 2 | import EditSetter from '../../setter/EditSetter'; 3 | declare const setEditNumber: EditSetter>; 4 | export default setEditNumber; 5 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/setter/setEditString/index.d.ts: -------------------------------------------------------------------------------- 1 | import Editable from '../../Editable'; 2 | import EditSetter from '../../setter/EditSetter'; 3 | declare const setEditString: EditSetter>; 4 | export default setEditString; 5 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/setter/setFilteredString/index.d.ts: -------------------------------------------------------------------------------- 1 | import Setter from '../../setter/Setter'; 2 | declare const setFilteredString: (allowedStrings: readonly S[]) => Setter; 3 | export default setFilteredString; 4 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/src/appNode/AppTextGetter/index.ts: -------------------------------------------------------------------------------- 1 | import TextGetter from '@/TextGetter'; 2 | import AppNodeTextKey from '@/appNode/AppNodeTextKey'; 3 | 4 | type AppTextGetter = TextGetter; 5 | 6 | export default AppTextGetter; 7 | 8 | -------------------------------------------------------------------------------- /packages/ui/src/getChecked/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | instanceOf, 3 | decodeUnknownSync, 4 | } from 'effect/Schema'; 5 | 6 | export default (e: Event): boolean => decodeUnknownSync( 7 | instanceOf(HTMLInputElement), 8 | )( 9 | e.currentTarget, 10 | ).checked; 11 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/GMConfigItem/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Effect as Z, 3 | } from 'effect'; 4 | 5 | export default interface GMConfigItem { 6 | gmKey: string, 7 | getValue: Z.Effect, 8 | defaultValue: T1, 9 | toGm: (x: T1) => GM.Value, 10 | } 11 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/intervalTooSmall/index.ts: -------------------------------------------------------------------------------- 1 | import UserConfig from '@/UserConfig'; 2 | 3 | const overlapInterval = 0.999; 4 | export default (interval: number) => ( 5 | config: UserConfig, 6 | ): boolean => config.noOverlap && interval < overlapInterval; 7 | 8 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/setRecord/index.ts: -------------------------------------------------------------------------------- 1 | export default ( 2 | key: T1, 3 | ) => ( 4 | value: T2, 5 | ) => ( 6 | rec: Record, 7 | ): Record => ({ 8 | ...rec, 9 | [key]: value, 10 | }); 11 | 12 | -------------------------------------------------------------------------------- /packages/ui/lib/TextGetter/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/TextGetter/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,WAAW,UAAU,CAAC,GAAG,EAAE,KAAK;IAC5C,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC;CACtC"} -------------------------------------------------------------------------------- /packages/ui/lib/appNode/numberNode/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/appNode/numberNode/index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,EACL,aAAa,GACd,MAAM,UAAU,CAAC;AAElB,eAAe,WAAW,CAAC,aAAa,CAAC,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/node/RangeConfig/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/RangeConfig/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,WAAW,WAAW;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd"} -------------------------------------------------------------------------------- /packages/ui/lib/setter/setString/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/setter/setString/index.ts"],"names":[],"mappings":"AAIA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAErC,QAAA,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAY,CAAC;AAEnD,eAAe,SAAS,CAAC"} -------------------------------------------------------------------------------- /packages/custom-sort/src/getPageParam/index.ts: -------------------------------------------------------------------------------- 1 | const getNumberParam = (URL_: URL, name: string) => { 2 | const param = URL_.searchParams.get(name); 3 | return param ? Number.parseInt(param, 10) : 0; 4 | }; 5 | 6 | export default (URL_: URL): number => getNumberParam(URL_, 'page'); 7 | -------------------------------------------------------------------------------- /packages/custom-sort/src/index.ts: -------------------------------------------------------------------------------- 1 | import * as log from 'loglevel'; 2 | 3 | import initialize from '@/initialize'; 4 | 5 | (async () => { 6 | log.setLevel('debug'); 7 | try { 8 | await initialize(); 9 | } catch (error) { 10 | log.error(error); 11 | } 12 | })(); 13 | -------------------------------------------------------------------------------- /packages/eslint-config/tsWebpackConfig/index.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | parser: '@typescript-eslint/parser', 3 | rules: { 4 | 'import/no-extraneous-dependencies': [ 5 | 'error', 6 | { 7 | devDependencies: true, 8 | }, 9 | ], 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/EditableExpression/ArrayExpression/index.ts: -------------------------------------------------------------------------------- 1 | import type Expression from '@/settingUI/editableExpression/Expression'; 2 | 3 | export default interface ArrayExpression { 4 | type: 'ArrayExpression'; 5 | elements: readonly Expression[]; 6 | } 7 | -------------------------------------------------------------------------------- /packages/ui/lib/ComputedProperties/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ComputedProperties/index.ts"],"names":[],"mappings":"AAAA,KAAK,kBAAkB,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC;AAEvE,eAAe,kBAAkB,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/setter/setEditRegexes/index.d.ts: -------------------------------------------------------------------------------- 1 | import Editable from '../../Editable'; 2 | import EditSetter from '../../setter/EditSetter'; 3 | declare const setEditRegexes: EditSetter>; 4 | export default setEditRegexes; 5 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/setter/setEditStrings/index.d.ts: -------------------------------------------------------------------------------- 1 | import Editable from '../../Editable'; 2 | import EditSetter from '../../setter/EditSetter'; 3 | declare const setEditStrings: EditSetter>; 4 | export default setEditStrings; 5 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/appNode/plainTextAreaNode/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/appNode/plainTextAreaNode/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,EACL,cAAc,GACf,MAAM,UAAU,CAAC;AAElB,eAAe,YAAY,CAAC,cAAc,CAAC,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/appNode/regexTextAreaNode/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/appNode/regexTextAreaNode/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,EACL,cAAc,GACf,MAAM,UAAU,CAAC;AAElB,eAAe,YAAY,CAAC,cAAc,CAAC,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/node/option/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/option/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,EAEN,MAAM,UAAU,CAAC;yBAEF,CAAC,EACf,OAAO,MAAM,EACb,OAAO,MAAM,EACb,UAAU,OAAO,KAChB,KAAK,CAAC,CAAC,CAAC;AAJX,wBAOgB"} -------------------------------------------------------------------------------- /packages/ui/lib/panelBoxStyle/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/panelBoxStyle/index.ts"],"names":[],"mappings":"AAIA,eAAe,CAAC,KAAa,EAAa,EAAE,CAAC,CAAC;IAC5C,IAAI,EAAE,OAAO,KAAK,IAAI;IACtB,KAAK,EAAE,GAAG,KAAK,IAAI;IACnB,MAAM,EAAE,KAAK;CACd,CAAC,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/setter/setStrings/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/setter/setStrings/index.ts"],"names":[],"mappings":"AAUA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAErC,QAAA,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAIjD,CAAC;AAEF,eAAe,UAAU,CAAC"} -------------------------------------------------------------------------------- /tsconfig.src.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.base.json", 3 | "compilerOptions": { 4 | "rootDir": "${configDir}/src", 5 | "baseUrl": "${configDir}", 6 | "paths": { 7 | "@/*": ["${configDir}/src/*"] 8 | }, 9 | }, 10 | "include": ["${configDir}/src"], 11 | } 12 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/configKeys/index.ts: -------------------------------------------------------------------------------- 1 | import UserConfig from '@/UserConfig'; 2 | import defaultGMConfig from '@/defaultGMConfig'; 3 | 4 | // eslint-disable-next-line @typescript-eslint/consistent-type-assertions 5 | export default Object.keys(defaultGMConfig) as (keyof UserConfig)[]; 6 | 7 | -------------------------------------------------------------------------------- /packages/tap-non-null/lib/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAElC,eAAe,CACb,CAAuB,EACvB,OAAgB,EACb,EAAE;IACL,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACxB,OAAO,CAAC,CAAC;AACX,CAAC,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/appNode/AppTextGetter/index.d.ts: -------------------------------------------------------------------------------- 1 | import TextGetter from '../../TextGetter'; 2 | import AppNodeTextKey from '../../appNode/AppNodeTextKey'; 3 | type AppTextGetter = TextGetter; 4 | export default AppTextGetter; 5 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/src/node/option/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | h, 3 | VNode, 4 | text, 5 | } from 'hyperapp'; 6 | 7 | export default ( 8 | value: string, 9 | label: string, 10 | selected: boolean, 11 | ): VNode => h('option', { 12 | value, 13 | selected, 14 | }, text(label)); 15 | 16 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/languageLabels/index.ts: -------------------------------------------------------------------------------- 1 | import languages from '@/languages'; 2 | 3 | export default [ 4 | 'English(US)', 5 | '日本語', 6 | '简体中文', 7 | ] as const satisfies { 8 | // eslint-disable-next-line no-restricted-globals 9 | length: (typeof languages)['length'] 10 | }; 11 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/SettingDispatchable/index.ts: -------------------------------------------------------------------------------- 1 | import StateDispatchable from '@userscript/ui/StateDispatchable'; 2 | 3 | import SettingState from '@/SettingState'; 4 | 5 | type SettingDispatchable = StateDispatchable; 6 | 7 | export default SettingDispatchable; 8 | 9 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/SettingProps/index.ts: -------------------------------------------------------------------------------- 1 | import SettingKey from '@/settingUI/SettingKey'; 2 | import SettingValue from '@/settingUI/SettingValue'; 3 | 4 | type SettingProps = { 5 | [K in SettingKey]: SettingValue 6 | }; 7 | 8 | export default SettingProps; 9 | 10 | -------------------------------------------------------------------------------- /packages/ui/lib/RootComponent/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/RootComponent/index.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,CAA2D,EAC3D,EAAE,CAAC,CAAC,GAAgC,EAAoB,EAAE,CAAC,CAAC;IAC5D,GAAG;IACH,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC;CACb,CAAC,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/node/colorTextOutput/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/colorTextOutput/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,EACL,SAAS,EAEV,MAAM,UAAU,CAAC;yBAEF,CAAC,EACf,WAAW,SAAS,MAChB,OAAO,MAAM,KAAG,KAAK,CAAC,CAAC,CAAC;AAF9B,wBAOmB"} -------------------------------------------------------------------------------- /packages/ui/lib/setter/Setter/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/setter/Setter/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC,CAAC,EAAE,CAAC;IAClC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAA;CACzC"} -------------------------------------------------------------------------------- /packages/ui/lib/setter/setEditString/index.js: -------------------------------------------------------------------------------- 1 | import { constant, } from 'effect/Function'; 2 | import * as Ed from '../../Editable'; 3 | const setEditString = (editing) => (x) => constant(editing ? Ed.fromValueText(x)(x) 4 | : Ed.of(x)); 5 | export default setEditString; 6 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/ConfigObservable/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Observable, 3 | } from 'rxjs'; 4 | 5 | import UserConfig from '@/UserConfig'; 6 | 7 | type ConfigObservable = { 8 | [P in keyof UserConfig]: Observable; 9 | }; 10 | 11 | export default ConfigObservable; 12 | 13 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/processWithEither/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Either as E, 3 | pipe, 4 | } from 'effect'; 5 | 6 | export default ( 7 | f: ( 8 | r: E.Either 9 | ) => E.Either, 10 | ) => (x: T1): T2 => pipe( 11 | E.right(x), 12 | f, 13 | E.merge, 14 | ); 15 | -------------------------------------------------------------------------------- /packages/webpack-config/src/jsbaseConfig/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Configuration, 3 | } from 'webpack'; 4 | import baseConfig from '../baseConfig'; 5 | import { 6 | merge, 7 | } from 'webpack-merge'; 8 | 9 | export default (rootDir: string): Configuration => merge( 10 | baseConfig(rootDir), 11 | ); 12 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/computed/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Predicate as P, 3 | } from 'effect'; 4 | 5 | import SettingState from '@/SettingState'; 6 | 7 | export default ({ 8 | useStepTiming: (s: SettingState) => P.isTruthy( 9 | s.timingFunction.match(/^steps\(.+/), 10 | ), 11 | }); 12 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/type/RestType/index.ts: -------------------------------------------------------------------------------- 1 | import TaggedValue, { 2 | makeType, 3 | } from '@/TaggedValue'; 4 | import type Type from '@/type/Type'; 5 | 6 | type RestType = TaggedValue<'rest', Type>; 7 | 8 | export default RestType; 9 | 10 | export const of = makeType('rest'); 11 | 12 | -------------------------------------------------------------------------------- /packages/forward-to/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "compilerOptions": { 4 | "module": "Node16", 5 | "moduleResolution": "Node16", 6 | "resolveJsonModule": true 7 | }, 8 | "include": ["**/*.ts"], 9 | "references": [{ "path": "./tsconfig.src.json" }] 10 | } 11 | -------------------------------------------------------------------------------- /packages/ui/lib/setter/EditSetter/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/setter/EditSetter/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAErC,MAAM,CAAC,OAAO,WAAW,UAAU,CAAC,CAAC;IACnC,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;CACtC"} -------------------------------------------------------------------------------- /packages/webpack-config/lib/jsbaseConfig/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/jsbaseConfig/index.ts"],"names":[],"mappings":"AAGA,OAAO,UAAU,MAAM,eAAe,CAAC;AACvC,OAAO,EACL,KAAK,GACN,MAAM,eAAe,CAAC;AAEvB,eAAe,CAAC,OAAe,EAAiB,EAAE,CAAC,KAAK,CACtD,UAAU,CAAC,OAAO,CAAC,CACpB,CAAC"} -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/intNode/index.ts: -------------------------------------------------------------------------------- 1 | import intNode from '@userscript/ui/appNode/intNode'; 2 | 3 | import getText from '@/getText'; 4 | import editAction from '@/settingUI/editAction'; 5 | import getState from '@/settingUI/getState'; 6 | 7 | export default intNode(editAction, getText, getState); 8 | 9 | -------------------------------------------------------------------------------- /packages/ui/lib/node/settingRow/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/settingRow/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,EAEN,MAAM,UAAU,CAAC;yBAEF,CAAC,EACf,OAAO,MAAM,EACb,OAAO,MAAM,EACb,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,KAClB,KAAK,CAAC,CAAC,CAAC;AAJX,wBAcG"} -------------------------------------------------------------------------------- /packages/ui/lib/node/textInput/index.d.ts: -------------------------------------------------------------------------------- 1 | import { VNode, Action } from 'hyperapp'; 2 | import Editable from '../../Editable'; 3 | declare const _default: (action: Partial>>) => (value: Editable) => VNode; 4 | export default _default; 5 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/setter/setEditInt/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/setter/setEditInt/index.ts"],"names":[],"mappings":"AASA,OAAO,QAAiB,MAAM,YAAY,CAAC;AAC3C,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAE7C,QAAA,MAAM,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAoB5C,CAAC;AAEF,eAAe,UAAU,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/wrapApp/index.d.ts: -------------------------------------------------------------------------------- 1 | import { Effect as Z } from 'effect'; 2 | import RootComponent from '../RootComponent'; 3 | import WrappedApp from '../WrappedApp'; 4 | declare const _default: (comp: RootComponent, init: T) => Z.Effect>; 5 | export default _default; 6 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/webpack-config/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "compilerOptions": { 4 | "module": "Node16", 5 | "moduleResolution": "Node16", 6 | "resolveJsonModule": true 7 | }, 8 | "include": ["**/*.ts"], 9 | "references": [{ "path": "./tsconfig.src.json" }] 10 | } 11 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/restrictedExpression/JsExpFromExpression/index.ts: -------------------------------------------------------------------------------- 1 | import * as expEval from 'expression-eval'; 2 | 3 | import type Expression from '@/restrictedExpression/Expression'; 4 | 5 | type JsExpFromExpression = (x: Expression) => expEval.parse.Expression; 6 | 7 | export default JsExpFromExpression; 8 | 9 | -------------------------------------------------------------------------------- /packages/ui/lib/InputUpdater/index.js: -------------------------------------------------------------------------------- 1 | import { apply, pipe, } from 'effect/Function'; 2 | import getValue from '../getValue'; 3 | export const make = (getState, updateAt) => (key) => (setter) => (c) => (s, e) => pipe(getValue(e), setter, apply(getState(key)(s)), updateAt(key), (x) => x(c)(s)); 4 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/WrappedApp/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/WrappedApp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACT,MAAM,UAAU,CAAC;AAElB,MAAM,CAAC,OAAO,WAAW,UAAU,CAAC,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;CAChC"} -------------------------------------------------------------------------------- /packages/ui/lib/node/checkboxRow/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/checkboxRow/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,EACL,MAAM,EAEP,MAAM,UAAU,CAAC;yBAEF,CAAC,EACf,OAAO,MAAM,EACb,SAAS,OAAO,EAChB,UAAU,MAAM,CAAC,CAAC,CAAC,KAClB,KAAK,CAAC,CAAC,CAAC;AAJX,wBAWI"} -------------------------------------------------------------------------------- /packages/ui/lib/setter/setEditColor/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/setter/setEditColor/index.ts"],"names":[],"mappings":"AASA,OAAO,QAAiB,MAAM,YAAY,CAAC;AAC3C,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAE7C,QAAA,MAAM,YAAY,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CASU,CAAC;AAE1D,eAAe,YAAY,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/setter/setEditNumber/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/setter/setEditNumber/index.ts"],"names":[],"mappings":"AASA,OAAO,QAAiB,MAAM,YAAY,CAAC;AAC3C,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAE7C,QAAA,MAAM,aAAa,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAoB/C,CAAC;AAEF,eAAe,aAAa,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/setter/setEditString/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/setter/setEditString/index.ts"],"names":[],"mappings":"AAIA,OAAO,QAAiB,MAAM,YAAY,CAAC;AAC3C,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAE7C,QAAA,MAAM,aAAa,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAK/C,CAAC;AAEF,eAAe,aAAa,CAAC"} -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/chainTagged/index.ts: -------------------------------------------------------------------------------- 1 | import chainFilterMapElse from '@/chainFilterMapElse'; 2 | 3 | export default (tag: keyof T1) => ( 4 | f: (x: T2) => R, 5 | ) => ( 6 | t: T2[keyof T1], 7 | ) => chainFilterMapElse((x): x is T2 => x[tag] === t)(f); 8 | 9 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/colorNode/index.ts: -------------------------------------------------------------------------------- 1 | import colorNode from '@userscript/ui/appNode/colorNode'; 2 | 3 | import getText from '@/getText'; 4 | import editAction from '@/settingUI/editAction'; 5 | import getState from '@/settingUI/getState'; 6 | 7 | export default colorNode(editAction, getText, getState); 8 | 9 | -------------------------------------------------------------------------------- /packages/ui/lib/setter/setStrings/index.js: -------------------------------------------------------------------------------- 1 | import { Array as A, Predicate as P, String as Str, } from 'effect'; 2 | import { pipe, constant, } from 'effect/Function'; 3 | const setStrings = (x) => pipe(Str.split(x, /\r\n|\n/), A.filter(P.not(Str.isEmpty)), constant); 4 | export default setStrings; 5 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/webpack-config/lib/umdLibConfig/index.js: -------------------------------------------------------------------------------- 1 | export default (libraryName) => ({ 2 | output: { 3 | library: { 4 | name: libraryName, 5 | type: 'umd', 6 | export: 'default', 7 | }, 8 | }, 9 | devtool: 'source-map', 10 | }); 11 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/flow-youtube-chat/filter_example.txt: -------------------------------------------------------------------------------- 1 | 谁 2 | 请 3 | 绕 4 | 这 5 | 网 6 | 强 7 | 给 8 | 问 9 | 讲 10 | 啥 11 | 实 12 | 现 13 | 该 14 | 辈 15 | 脸 16 | 时 17 | 杀 18 | 啊 19 | 說 20 | 掰 21 | 孢 22 | 你 23 | ? 24 | ! 25 | 刚刚 26 | 剛剛 27 | 加油 28 | 知道 29 | 三小 30 | 太強 31 | 只有 32 | 可以 33 | 還沒 34 | 到了 35 | 發現 36 | 那麼 37 | 怎麼 38 | 39 | ([A-Za-z]\s?){3,} -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/UserConfigSetter/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Effect as Z, 3 | } from 'effect'; 4 | 5 | import UserConfig from '@/UserConfig'; 6 | 7 | type UserConfigSetter = { 8 | [P in keyof UserConfig]: ( 9 | val: UserConfig[P], 10 | ) => Z.Effect; 11 | }; 12 | 13 | export default UserConfigSetter; 14 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/numberNode/index.ts: -------------------------------------------------------------------------------- 1 | import numberNode from '@userscript/ui/appNode/numberNode'; 2 | 3 | import getText from '@/getText'; 4 | import editAction from '@/settingUI/editAction'; 5 | import getState from '@/settingUI/getState'; 6 | 7 | export default numberNode(editAction, getText, getState); 8 | 9 | -------------------------------------------------------------------------------- /packages/ui/lib/StateDispatchable/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/StateDispatchable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACP,MAAM,UAAU,CAAC;AAElB,KAAK,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEtD,eAAe,iBAAiB,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/node/checkboxRow/index.js: -------------------------------------------------------------------------------- 1 | import { h, text, } from 'hyperapp'; 2 | export default (label, checked, onchange) => h('div', {}, h('label', {}, [ 3 | text(label), 4 | h('input', { 5 | type: 'checkbox', 6 | checked, 7 | onchange, 8 | }), 9 | ])); 10 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/node/option/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/node/option/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,CAAC,EAED,IAAI,GACL,MAAM,UAAU,CAAC;AAElB,eAAe,CACb,KAAa,EACb,KAAa,EACb,QAAiB,EACP,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IACzB,KAAK;IACL,QAAQ;CACT,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/setter/setEditRegexes/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/setter/setEditRegexes/index.ts"],"names":[],"mappings":"AAWA,OAAO,QAAiB,MAAM,YAAY,CAAC;AAC3C,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAE7C,QAAA,MAAM,cAAc,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,MAAM,EAAE,CAAC,CAuC3D,CAAC;AAEF,eAAe,cAAc,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/setter/setEditStrings/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/setter/setEditStrings/index.ts"],"names":[],"mappings":"AAWA,OAAO,QAAiB,MAAM,YAAY,CAAC;AAC3C,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAE7C,QAAA,MAAM,cAAc,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,MAAM,EAAE,CAAC,CAY3D,CAAC;AAEF,eAAe,cAAc,CAAC"} -------------------------------------------------------------------------------- /packages/ui/src/node/colorTextOutput/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | h, 3 | VNode, 4 | StyleProp, 5 | text, 6 | } from 'hyperapp'; 7 | 8 | export default ( 9 | textStyle: StyleProp, 10 | ) => (color: string): VNode => h('span', { 11 | style: { 12 | ...textStyle, 13 | color, 14 | }, 15 | }, text('Aa1あア亜')); 16 | 17 | -------------------------------------------------------------------------------- /packages/webpack-config/lib/devConfig/index.js: -------------------------------------------------------------------------------- 1 | import path from 'path'; 2 | export default (rootDir) => ({ 3 | mode: 'development', 4 | devServer: { 5 | static: { 6 | directory: path.join(rootDir, 'dist'), 7 | }, 8 | compress: false, 9 | }, 10 | }); 11 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/webpack-config/lib/styleLoaderConfig/index.d.ts: -------------------------------------------------------------------------------- 1 | declare const _default: { 2 | module: { 3 | rules: { 4 | test: RegExp; 5 | use: { 6 | loader: string; 7 | }[]; 8 | }[]; 9 | }; 10 | }; 11 | export default _default; 12 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@2.3.1/schema.json", 3 | "changelog": "@changesets/cli/changelog", 4 | "commit": false, 5 | "fixed": [], 6 | "linked": [], 7 | "access": "restricted", 8 | "baseBranch": "main", 9 | "updateInternalDependencies": "patch", 10 | "ignore": [] 11 | } 12 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/concatMapEffect/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Effect as Z, 3 | } from 'effect'; 4 | import { 5 | OperatorFunction, 6 | concatMap, 7 | from, 8 | } from 'rxjs'; 9 | 10 | export default ( 11 | f: (x: T1) => Z.Effect, 12 | ): OperatorFunction => concatMap((x) => from(Z.runPromise(f(x)))); 13 | -------------------------------------------------------------------------------- /packages/ui/lib/appNode/AppTextGetter/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/appNode/AppTextGetter/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,cAAc,MAAM,0BAA0B,CAAC;AAEtD,KAAK,aAAa,CAAC,GAAG,EAAE,KAAK,IAAI,UAAU,CAAC,GAAG,GAAG,cAAc,EAAE,KAAK,CAAC,CAAC;AAEzE,eAAe,aAAa,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/errorText/index.js: -------------------------------------------------------------------------------- 1 | import { Option as O, } from 'effect'; 2 | import { constant, pipe, } from 'effect/Function'; 3 | import * as Ed from '../Editable'; 4 | export default (subject) => (edit) => pipe(edit, Ed.error, O.map((x) => `${subject}${x === '' ? '' : ': '}${x}`), O.getOrElse(constant(''))); 5 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/webpack-config/lib/umdLibConfig/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/umdLibConfig/index.ts"],"names":[],"mappings":"AAKA,eAAe,CAAC,WAAmB,EAAiB,EAAE,CAAC,CAAC;IACtD,MAAM,EAAE;QACN,OAAO,EAAE;YACP,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,KAAK;YACX,MAAM,EAAG,SAAS;SACnB;KACF;IACD,OAAO,EAAE,YAAY;CACtB,CAAC,CAAC"} -------------------------------------------------------------------------------- /packages/cdn-from-dependency/lib/index.d.ts: -------------------------------------------------------------------------------- 1 | declare const _default: (dependencies: T & Record, name: keyof typeof dependencies & string) => { 2 | name: string; 3 | ver: string; 4 | nameVer: string; 5 | begin: "https://"; 6 | end: ".min.js"; 7 | }; 8 | export default _default; 9 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/custom-sort/src/GmDatabase/GmStorage/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | ExtendProperty, 3 | } from '../ExtendProperty'; 4 | import { 5 | GmTable, 6 | } from '../GmTable'; 7 | 8 | type GmStorageField = GmTable | GM.Value; 9 | 10 | export type GmStorage< 11 | T = ExtendProperty, 12 | > = ExtendProperty; 13 | -------------------------------------------------------------------------------- /packages/custom-sort/src/conditionPresets/index.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'Default Condition': '(Math.asinh(ratio * 15) / 15 / (private * 1.8 + 1)' 3 | + ' + Math.log(likes) / 230) / (image + 8)', 4 | Newest: '-index', 5 | Oldest: 'index', 6 | 'Likes / Views': 'ratio', 7 | 'Most Liked': 'likes', 8 | 'Most Viewed': 'views', 9 | }; 10 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/restrictedExpression/ExpressionFromTypedExp/index.ts: -------------------------------------------------------------------------------- 1 | import type Expression from '@/restrictedExpression/Expression'; 2 | import type TypedExpression from '@/typedExpression/typedExpression'; 3 | 4 | type ExpressionFromTypedExp = (x: TypedExpression) => Expression; 5 | 6 | export default ExpressionFromTypedExp; 7 | 8 | -------------------------------------------------------------------------------- /packages/ui/lib/getChecked/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/getChecked/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,UAAU,GACX,MAAM,eAAe,CAAC;AAEvB,eAAe,CAAC,CAAQ,EAAW,EAAE,CAAC,iBAAiB,CACrD,UAAU,CAAC,gBAAgB,CAAC,CAC7B,CACC,CAAC,CAAC,aAAa,CAChB,CAAC,OAAO,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/node/colorPicker/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/colorPicker/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,EACL,MAAM,EACP,MAAM,UAAU,CAAC;yBAEF,CAAC,EACf,QAAQ,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAC1C,OAAO,MAAM,KAAE,KAAK,CAAC,CAAC,CAAC;AAF7B,wBAUG"} -------------------------------------------------------------------------------- /packages/ui/lib/node/textAreaRow/index.d.ts: -------------------------------------------------------------------------------- 1 | import { VNode, Action } from 'hyperapp'; 2 | import Editable from '../../Editable'; 3 | declare const _default: (rows: number, action: Partial>>) => (value: Editable) => VNode; 4 | export default _default; 5 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/setter/setFilteredString/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/setter/setFilteredString/index.ts"],"names":[],"mappings":"AASA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAErC,QAAA,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,EACzC,gBAAgB,SAAS,CAAC,EAAE,KAC3B,MAAM,CAAC,MAAM,EAAE,CAAC,CAMlB,CAAC;AAEF,eAAe,iBAAiB,CAAC"} -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/SettingKey/index.ts: -------------------------------------------------------------------------------- 1 | import AppPropertiesKey from '@userscript/ui/AppPropertiesKey'; 2 | 3 | import SettingState from '@/SettingState'; 4 | import computed from '@/settingUI/computed'; 5 | 6 | type SettingKey = AppPropertiesKey; 7 | 8 | export default SettingKey; 9 | 10 | -------------------------------------------------------------------------------- /packages/custom-sort/src/GmDatabase/getStorageVersion/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | z, 3 | } from 'zod'; 4 | 5 | import reservedKeys from '../reservedKeys'; 6 | 7 | const optionalNumber = z.optional(z.number()); 8 | 9 | export default async (): Promise => optionalNumber.parse( 10 | await GM.getValue(reservedKeys.version), 11 | ); 12 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/plainTextAreaNode/index.ts: -------------------------------------------------------------------------------- 1 | import plainTextAreaNode from '@userscript/ui/appNode/plainTextAreaNode'; 2 | 3 | import getText from '@/getText'; 4 | import editAction from '@/settingUI/editAction'; 5 | import getState from '@/settingUI/getState'; 6 | 7 | export default plainTextAreaNode(editAction, getText, getState); 8 | 9 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/regexTextAreaNode/index.ts: -------------------------------------------------------------------------------- 1 | import regexTextAreaNode from '@userscript/ui/appNode/regexTextAreaNode'; 2 | 3 | import getText from '@/getText'; 4 | import editAction from '@/settingUI/editAction'; 5 | import getState from '@/settingUI/getState'; 6 | 7 | export default regexTextAreaNode(editAction, getText, getState); 8 | 9 | -------------------------------------------------------------------------------- /packages/ui/lib/AppPropertiesKey/index.d.ts: -------------------------------------------------------------------------------- 1 | import { ConditionalKeys } from 'type-fest'; 2 | import ComputedProperties from '../ComputedProperties'; 3 | type AppPropertiesKey, T> = ConditionalKeys | ConditionalKeys T>; 4 | export default AppPropertiesKey; 5 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/webpack-config/src/umdLibConfig/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Configuration, 3 | } from 'webpack'; 4 | 5 | 6 | export default (libraryName: string): Configuration => ({ 7 | output: { 8 | library: { 9 | name: libraryName, 10 | type: 'umd', 11 | export: 'default', 12 | }, 13 | }, 14 | devtool: 'source-map', 15 | }); 16 | -------------------------------------------------------------------------------- /commitlint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ['@commitlint/config-conventional'], 3 | rules: { 4 | 'type-enum': [ 5 | 2, 6 | 'always', 7 | [ 8 | 'build', 9 | 'ci', 10 | 'docs', 11 | 'feat', 12 | 'fix', 13 | 'perf', 14 | 'refactor', 15 | 'revert', 16 | 'test', 17 | ], 18 | ], 19 | }, 20 | }; 21 | -------------------------------------------------------------------------------- /packages/ui/lib/BoolUpdater/index.js: -------------------------------------------------------------------------------- 1 | import { apply, flip, pipe, } from 'effect/Function'; 2 | import getChecked from '../getChecked'; 3 | export const make = (updateAt) => (key) => flip((s, e) => pipe( 4 | // eslint-disable-next-line @typescript-eslint/consistent-type-assertions 5 | getChecked(e), updateAt(key), flip, apply(s))); 6 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/custom-sort/src/changeAnchorUrlParam/index.ts: -------------------------------------------------------------------------------- 1 | export default ( 2 | anchor: HTMLAnchorElement, 3 | name: string, 4 | value: string, 5 | ): void => { 6 | const newURL = new URL(anchor.href, window.location.href); 7 | newURL.searchParams.set(name, value); 8 | // eslint-disable-next-line no-param-reassign 9 | anchor.href = newURL.href; 10 | }; 11 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/FlowChat/index.ts: -------------------------------------------------------------------------------- 1 | import AnimatingState from 'src/AnimatingState'; 2 | 3 | import ChatData from '@/ChatData'; 4 | 5 | export default interface FlowChat { 6 | data: ChatData, 7 | element: HTMLElement, 8 | lane: number, 9 | animationState: AnimatingState, 10 | width: number, 11 | height: number, 12 | y: number, 13 | } 14 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/AppCommander/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Effect as Z, 3 | } from 'effect'; 4 | 5 | import UserConfigSetter from '@/UserConfigSetter'; 6 | 7 | export default interface AppCommander { 8 | setConfig: UserConfigSetter, 9 | act: { 10 | clearFlowChats: Z.Effect, 11 | } 12 | provideLog: (x: Z.Effect) => Z.Effect 13 | } 14 | -------------------------------------------------------------------------------- /packages/webpack-config/lib/devConfig/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/devConfig/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,IAAI,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,aAAa,IAAI,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAEpF,UAAU,aAAc,SAAQ,oBAAoB;IAClD,SAAS,CAAC,EAAE,6BAA6B,CAAC;CAC3C;yBAEe,SAAS,MAAM,KAAG,aAAa;AAA/C,wBAQG"} -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/EditableExpression/CallExpression/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Option as O, 3 | } from 'effect'; 4 | 5 | 6 | import type Expression from '@/settingUI/editableExpression/Expression'; 7 | 8 | export default interface CallExpression { 9 | type: 'CallExpression'; 10 | argument: O.Option; 11 | callee: Expression; 12 | } 13 | -------------------------------------------------------------------------------- /packages/ui/lib/wrapApp/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wrapApp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,IAAI,CAAC,EACZ,MAAM,QAAQ,CAAC;AAQhB,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,UAAU,MAAM,cAAc,CAAC;yBAEtB,CAAC,EACf,MAAM,aAAa,CAAC,CAAC,CAAC,EACtB,MAAM,CAAC,KACN,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAH1B,wBAcE"} -------------------------------------------------------------------------------- /packages/ui/src/AppPropertiesKey/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | ConditionalKeys, 3 | } from 'type-fest'; 4 | 5 | import ComputedProperties from '@/ComputedProperties'; 6 | 7 | type AppPropertiesKey< 8 | State, 9 | C extends ComputedProperties, 10 | T> = ConditionalKeys | ConditionalKeys T>; 11 | 12 | export default AppPropertiesKey; 13 | 14 | -------------------------------------------------------------------------------- /packages/webpack-config/lib/devConfig/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/devConfig/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAQxB,eAAe,CAAC,OAAe,EAAiB,EAAE,CAAC,CAAC;IAClD,IAAI,EAAE,aAAa;IACnB,SAAS,EAAE;QACT,MAAM,EAAE;YACN,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;SACtC;QACD,QAAQ,EAAE,KAAK;KAChB;CACF,CAAC,CAAC"} -------------------------------------------------------------------------------- /packages/cdn-from-dependency/lib/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"yBAEgB,CAAC,EACf,cAAc,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACxC,MAAM,MAAM,OAAO,YAAY,GAAG,MAAM,KACvC;IACD,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,UAAU,CAAC;IAClB,GAAG,EAAE,SAAS,CAAC;CAChB;AATD,wBAkBE"} -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/tapEffect/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Effect as Z, 3 | } from 'effect'; 4 | import { 5 | OperatorFunction, 6 | concatMap, 7 | from, 8 | map, 9 | } from 'rxjs'; 10 | 11 | export default ( 12 | f: (x: T1) => Z.Effect, 13 | ): OperatorFunction => concatMap((x) => from(Z.runPromise(f(x))).pipe( 14 | map(() => x), 15 | )); 16 | -------------------------------------------------------------------------------- /packages/ui/lib/node/colorTextOutput/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/node/colorTextOutput/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,CAAC,EAGD,IAAI,GACL,MAAM,UAAU,CAAC;AAElB,eAAe,CACb,SAAoB,EACpB,EAAE,CAAC,CAAC,KAAa,EAAY,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;IAC1C,KAAK,EAAE;QACL,GAAG,SAAS;QACZ,KAAK;KACN;CACF,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC"} -------------------------------------------------------------------------------- /packages/custom-sort/src/getInputValue/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Observable, 3 | map, 4 | pluck, 5 | } from 'rxjs'; 6 | import { 7 | z, 8 | } from 'zod'; 9 | 10 | export default ( 11 | event$: Observable, 12 | ): Observable => event$.pipe( 13 | pluck('currentTarget'), 14 | map((x) => z.instanceof(HTMLInputElement).parse(x)), 15 | pluck('value'), 16 | ); 17 | -------------------------------------------------------------------------------- /packages/ui/lib/ExactTypeKey/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ExactTypeKey/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACR,MAAM,WAAW,CAAC;AAEnB,KAAK,YAAY,CAAC,CAAC,EAAE,IAAI,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK;CAC7D,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX,eAAe,YAAY,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/node/rangeRow/index.d.ts: -------------------------------------------------------------------------------- 1 | import { VNode, Action } from 'hyperapp'; 2 | import Editable from '../../Editable'; 3 | import RangeConfig from '../../node/RangeConfig'; 4 | declare const _default: (config: RangeConfig, action: Partial>>) => (value: Editable) => VNode; 5 | export default _default; 6 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/webpack-config/lib/tsLoaderConfig/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tsLoaderConfig/index.ts"],"names":[],"mappings":"AAIA,eAAe,CAAC,UAAkB,EAAiB,EAAE,CAAC,CAAC;IACrD,MAAM,EAAE;QACN,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,SAAS;gBACf,GAAG,EAAE;oBACH,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE;wBACP,UAAU;qBACX;iBACF;gBACD,OAAO,EAAE,cAAc;aACxB;SACF;KACF;CACF,CAAC,CAAC"} -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/ChatUpdateConfig/index.ts: -------------------------------------------------------------------------------- 1 | type ChatUpdateConfig = { 2 | render: boolean, 3 | setAnimation: true, 4 | setPlayState: false, 5 | } | { 6 | render: boolean, 7 | setAnimation: false, 8 | setPlayState: true, 9 | } | { 10 | render: boolean, 11 | setAnimation: false, 12 | setPlayState: false, 13 | }; 14 | 15 | export default ChatUpdateConfig; 16 | 17 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/TaggedValue/index.ts: -------------------------------------------------------------------------------- 1 | type TaggedValue = { 2 | tag: T1, 3 | value: T2, 4 | }; 5 | 6 | export default TaggedValue; 7 | 8 | export const makeType = >( 9 | tag: A['tag'], 10 | ) => ( 11 | value: A['value'], 12 | ): TaggedValue => ({ 13 | tag, 14 | value, 15 | }); 16 | 17 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/appendChatMessage/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Effect as Z, 3 | } from 'effect'; 4 | import { 5 | flip, 6 | } from 'effect/Function'; 7 | 8 | export default flip(( 9 | chat: HTMLElement, 10 | ): ( 11 | getEle: Z.Effect 12 | ) => Z.Effect => Z.flatMap( 13 | (x) => Z.sync(() => chat.querySelector('#content #message')?.append(x)), 14 | )); 15 | -------------------------------------------------------------------------------- /packages/ui/lib/RootComponent/index.d.ts: -------------------------------------------------------------------------------- 1 | import { VNode } from 'hyperapp'; 2 | export default interface RootComponent { 3 | tag: keyof HTMLElementTagNameMap; 4 | view: (s: T) => VNode; 5 | } 6 | export declare const makeComponent: (x: (tag: keyof HTMLElementTagNameMap) => (s: T) => VNode) => (tag: keyof HTMLElementTagNameMap) => RootComponent; 7 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/webpack-config/lib/styleLoaderConfig/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/styleLoaderConfig/index.ts"],"names":[],"mappings":"AAIA,eAAe,CAAC;IACd,MAAM,EAAE;QACN,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,QAAQ;gBACd,GAAG,EAAE;oBACH;wBACE,MAAM,EAAE,cAAc;qBACvB;oBACD;wBACE,MAAM,EAAE,YAAY;qBACrB;oBACD;wBACE,MAAM,EAAE,gBAAgB;qBACzB;iBACF;aACF;SACF;KACF;CACF,CAAyB,CAAC"} -------------------------------------------------------------------------------- /packages/flow-youtube-chat/plan.md: -------------------------------------------------------------------------------- 1 | ## Features: 2 | 3 | * Account Name filter 4 | * Repeat chat filter 5 | * Display Matrix 6 | * Emoji filter 7 | * Auto block user 8 | * Per site 9 | * auto reload 10 | * banned lane 11 | * Sticker 12 | * Performance tab 13 | * Reset default settings 14 | * Shadow color V2 15 | 16 | ## Typescript 4.9 17 | 18 | * "satisfies" 19 | * filterPanel 20 | * as const -------------------------------------------------------------------------------- /packages/ui/lib/node/textInput/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/textInput/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,EACL,MAAM,EACP,MAAM,UAAU,CAAC;AAElB,OAAO,QAAiB,MAAM,YAAY,CAAC;yBAE3B,CAAC,EACf,QAAQ,OAAO,CAAC,MAAM,CACtB,SAAS,GACP,UAAU,EACV,MAAM,CAAC,CAAC,CAAC,CACV,CAAC,MACE,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,CAAC,CAAC;AANxC,wBAmBG"} -------------------------------------------------------------------------------- /packages/ui/src/node/checkboxRow/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | h, 3 | VNode, 4 | Action, 5 | text, 6 | } from 'hyperapp'; 7 | 8 | export default ( 9 | label: string, 10 | checked: boolean, 11 | onchange: Action, 12 | ): VNode => h('div', {}, h('label', {}, [ 13 | text(label), 14 | h('input', { 15 | type: 'checkbox', 16 | checked, 17 | onchange, 18 | }), 19 | ])); 20 | -------------------------------------------------------------------------------- /packages/cdn-from-dependency/lib/index.js: -------------------------------------------------------------------------------- 1 | const getExactVersion = (str) => str.replace(/\D+/, ''); 2 | export default (dependencies, name) => { 3 | const ver = getExactVersion(dependencies[name]); 4 | return { 5 | name, 6 | ver, 7 | nameVer: `${name}@${ver}`, 8 | begin: 'https://', 9 | end: '.min.js', 10 | }; 11 | }; 12 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/EditableExpression/ExpressionType/index.ts: -------------------------------------------------------------------------------- 1 | type ExpressionType = 'Compound' 2 | | 'Identifier' 3 | | 'MemberExpression' 4 | | 'Literal' 5 | | 'ThisExpression' 6 | | 'CallExpression' 7 | | 'UnaryExpression' 8 | | 'BinaryExpression' 9 | | 'LogicalExpression' 10 | | 'ConditionalExpression' 11 | | 'ArrayExpression'; 12 | 13 | export default ExpressionType; 14 | 15 | -------------------------------------------------------------------------------- /packages/ui/lib/node/colorPicker/index.js: -------------------------------------------------------------------------------- 1 | import { identity, } from 'effect/Function'; 2 | import { h, } from 'hyperapp'; 3 | export default (action) => (color) => h('input', { 4 | style: { 5 | width: '36px', 6 | verticalAlign: 'middle', 7 | }, 8 | type: 'color', 9 | value: color, 10 | oninput: action.onchange ?? identity, 11 | }); 12 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist/ 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/ 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | 26 | *.tsbuildinfo 27 | build/ 28 | -------------------------------------------------------------------------------- /packages/custom-sort/src/initialize/index.ts: -------------------------------------------------------------------------------- 1 | import * as log from 'loglevel'; 2 | 3 | import initChild from '@/initChild'; 4 | import initParent from '@/initParent'; 5 | 6 | export default async (): Promise => { 7 | const isParent = (window === window.parent); 8 | log.debug(`${isParent ? 'Parent' : 'Child'}: ${window.location.href}`); 9 | await (isParent ? initParent() : initChild()); 10 | }; 11 | -------------------------------------------------------------------------------- /packages/ui/lib/setter/setFilteredString/index.js: -------------------------------------------------------------------------------- 1 | import { Array as A, Option as O, String as Str, } from 'effect'; 2 | import { pipe, } from 'effect/Function'; 3 | const setFilteredString = (allowedStrings) => (value) => (state) => pipe(value, O.liftPredicate((x) => A.containsWith(Str.Equivalence)(allowedStrings, x)), O.getOrElse(() => state)); 4 | export default setFilteredString; 5 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/restrictedExpression/ExpressionFromJsExp/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Effect as Z, 3 | } from 'effect'; 4 | 5 | import * as expEval from 'expression-eval'; 6 | 7 | import type Expression from '@/restrictedExpression/Expression'; 8 | 9 | type ExpressionFromJsExp = ( 10 | exp: expEval.parse.Expression 11 | ) => Z.Effect; 12 | 13 | export default ExpressionFromJsExp; 14 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/listeningBroadcastConfigKeys/index.ts: -------------------------------------------------------------------------------- 1 | import UserConfig from '@/UserConfig'; 2 | 3 | const listeningBroadcastConfigKeys: (keyof UserConfig)[] = [ 4 | 'lang', 5 | 'bannedWords', 6 | 'bannedWordRegexes', 7 | 'bannedUsers', 8 | 'filterExp', 9 | 'simplifyChatField', 10 | 'createBanButton', 11 | 'fieldScale', 12 | ]; 13 | 14 | export default listeningBroadcastConfigKeys; 15 | 16 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/typedExpression/TypedExpressionFunction/index.ts: -------------------------------------------------------------------------------- 1 | import type Expression from '@/restrictedExpression/Expression'; 2 | import Type from '@/type/Type'; 3 | import type TypedExpression from '@/typedExpression/typedExpression'; 4 | 5 | type TypedExpressionFunction = ( 6 | expression: Expression 7 | ) => (type: Type) => TypedExpression; 8 | 9 | export default TypedExpressionFunction; 10 | 11 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/tsconfig.exclude.json: -------------------------------------------------------------------------------- 1 | { 2 | "exclude": [ 3 | "node_modules", 4 | "dist", 5 | "lib", 6 | "**/*.spec.ts", 7 | "./src/filter/filterContextType", 8 | "./src/restrictedExpression", 9 | "./src/settingUI/editableExpression", 10 | "./src/settingUI/filter", 11 | "./src/settingUI/filterPanel", 12 | "./src/type", 13 | "./src/typedExpression", 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /packages/forward-to/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @userscript/forward-to 2 | 3 | ## 1.0.4 4 | 5 | ### Patch Changes 6 | 7 | - 5c48122: update dependencies 8 | 9 | ## 1.0.3 10 | 11 | ### Patch Changes 12 | 13 | - 585837b: update dependencies 14 | - refine chat detection 15 | 16 | ## 1.0.2 17 | 18 | ### Patch Changes 19 | 20 | - update package configs 21 | 22 | ## 1.0.1 23 | 24 | ### Patch Changes 25 | 26 | - 8e2a4ab: initial 27 | -------------------------------------------------------------------------------- /packages/ui/lib/AppPropertiesValue/index.d.ts: -------------------------------------------------------------------------------- 1 | import AppPropertiesKey from '../AppPropertiesKey'; 2 | import ComputedProperties from '../ComputedProperties'; 3 | type AppPropertiesValue, K extends AppPropertiesKey> = K extends keyof State ? State[K] : K extends keyof C ? ReturnType : never; 4 | export default AppPropertiesValue; 5 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/src/setter/setEditString/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | constant, 3 | } from 'effect/Function'; 4 | 5 | import Editable, * as Ed from '@/Editable'; 6 | import EditSetter from '@/setter/EditSetter'; 7 | 8 | const setEditString: EditSetter> = ( 9 | editing, 10 | ) => (x) => constant( 11 | editing ? Ed.fromValueText(x)(x) 12 | : Ed.of(x), 13 | ); 14 | 15 | export default setEditString; 16 | 17 | -------------------------------------------------------------------------------- /packages/tap-non-null/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @userscript/tap-non-null 2 | 3 | ## 1.0.4 4 | 5 | ### Patch Changes 6 | 7 | - 5c48122: update dependencies 8 | 9 | ## 1.0.3 10 | 11 | ### Patch Changes 12 | 13 | - 585837b: update dependencies 14 | - refine chat detection 15 | 16 | ## 1.0.2 17 | 18 | ### Patch Changes 19 | 20 | - update package configs 21 | 22 | ## 1.0.1 23 | 24 | ### Patch Changes 25 | 26 | - 8e2a4ab: initial 27 | -------------------------------------------------------------------------------- /packages/ui/lib/node/textAreaRow/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/textAreaRow/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,EACL,MAAM,EACP,MAAM,UAAU,CAAC;AAElB,OAAO,QAAiB,MAAM,YAAY,CAAC;yBAE3B,CAAC,EACf,MAAM,MAAM,EACZ,QAAQ,OAAO,CAAC,MAAM,CACtB,SAAS,GACP,UAAU,EACV,MAAM,CAAC,CAAC,CAAC,CACV,CAAC,MACE,OAAO,QAAQ,CAAC,SAAS,MAAM,EAAE,CAAC,KAAG,KAAK,CAAC,CAAC,CAAC;AAPnD,wBAyBG"} -------------------------------------------------------------------------------- /packages/ui/src/AppProperties/index.ts: -------------------------------------------------------------------------------- 1 | import AppPropertiesKey from '@/AppPropertiesKey'; 2 | import AppPropertiesValue from '@/AppPropertiesValue'; 3 | import ComputedProperties from '@/ComputedProperties'; 4 | 5 | type AppProperties> = { 6 | [K in AppPropertiesKey]: AppPropertiesValue 7 | } & State; 8 | 9 | export default AppProperties; 10 | 11 | -------------------------------------------------------------------------------- /packages/ui/src/errorText/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Option as O, 3 | } from 'effect'; 4 | import { 5 | constant, 6 | pipe, 7 | } from 'effect/Function'; 8 | 9 | import Editable, * as Ed from '@/Editable'; 10 | 11 | export default (subject: string) => (edit: Editable): string => pipe( 12 | edit, 13 | Ed.error, 14 | O.map((x) => `${subject}${x === '' ? '' : ': '}${x}`), 15 | O.getOrElse(constant('')), 16 | ); 17 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/filter/filterContext/index.ts: -------------------------------------------------------------------------------- 1 | import ChatData from '@/ChatData'; 2 | import filterOperators from '@/filter/filterOperators'; 3 | 4 | export default ( 5 | data: ChatData, 6 | ) => (({ 7 | ...filterOperators, 8 | authorName: data.authorName, 9 | message: data.message, 10 | messageText: data.messageText, 11 | paymentInfo: data.paymentInfo, 12 | authorID: data.authorID, 13 | }) as const); 14 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/type/AssignGenericFunction/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Option as O, 3 | } from 'effect'; 4 | 5 | 6 | import GenericMap from '@/type/GenericMap'; 7 | import type Type from '@/type/Type'; 8 | 9 | type AssignGenericFunction = ( 10 | typeMap: GenericMap 11 | ) => ( 12 | expected: T 13 | ) => ( 14 | synthed: T 15 | ) => O.Option; 16 | 17 | export default AssignGenericFunction; 18 | -------------------------------------------------------------------------------- /packages/ui/lib/AppPropertiesKey/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/AppPropertiesKey/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAChB,MAAM,WAAW,CAAC;AAEnB,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAEtD,KAAK,gBAAgB,CACnB,KAAK,EACL,CAAC,SAAS,kBAAkB,CAAC,KAAK,CAAC,EACnC,CAAC,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC;AAEvE,eAAe,gBAAgB,CAAC"} -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/textShadow/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Array as A, 3 | pipe, 4 | } from 'effect'; 5 | 6 | export default (shadowColor: string) => (offset: number): string => pipe( 7 | offset, 8 | (x) => `${x}px`, 9 | (x) => (a: string, b: string) => `${a}${x} ${b}${x} ${shadowColor}99`, 10 | (x) => A.join(', ')([ 11 | x('-', '-'), 12 | x('', '-'), 13 | x('-', ''), 14 | x('', ''), 15 | ]), 16 | ); 17 | -------------------------------------------------------------------------------- /packages/ui/config/webpack.config.dev.ts: -------------------------------------------------------------------------------- 1 | import devConfig from '@userscript/webpack-config/devConfig'; 2 | import path from 'path'; 3 | import { 4 | Configuration, 5 | } from 'webpack'; 6 | import { 7 | merge, 8 | } from 'webpack-merge'; 9 | 10 | import webpackConfigBase from './webpack.config.base'; 11 | 12 | export default merge( 13 | webpackConfigBase, 14 | devConfig(path.join(__dirname, '../')), 15 | ); 16 | -------------------------------------------------------------------------------- /packages/ui/lib/getValue/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/getValue/index.ts"],"names":[],"mappings":"AAAA,eAAe,CAAC,CAAQ,EAAU,EAAE;IAClC,mCAAmC;IACnC,8IAA8I;IAC9I,MAAM,MAAM,GAAG,CAAC,CAAC,aAAa,IAAM,CAAS,CAAC,UAAU,CAAiB,CAAC;IAC1E,IAAI,MAAM,YAAY,iBAAiB;WACjC,MAAM,YAAY,mBAAmB;WACrC,MAAM,YAAY,gBAAgB,EAAE,CAAC;QACzC,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,MAAM,KAAK,CAAC,sCAAsC,CAAC,CAAC;AACtD,CAAC,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/node/settingRow/index.js: -------------------------------------------------------------------------------- 1 | import { h, text, } from 'hyperapp'; 2 | export default (label, error, content) => h('div', {}, [ 3 | h('span', {}, text(label)), 4 | h('span', { 5 | style: { 6 | color: '#f55', 7 | marginLeft: '5px', 8 | whiteSpace: 'pre-wrap', 9 | }, 10 | }, text(error)), 11 | h('div', {}, content), 12 | ]); 13 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/wrapApp/index.js: -------------------------------------------------------------------------------- 1 | import { Effect as Z, } from 'effect'; 2 | import { pipe, } from 'effect/Function'; 3 | import { app, } from 'hyperapp'; 4 | export default (comp, init) => pipe(Z.sync(() => document.createElement(comp.tag)), Z.flatMap((node) => Z.sync(() => ({ 5 | node, 6 | dispatch: app({ 7 | init, 8 | view: comp.view, 9 | node, 10 | }), 11 | })))); 12 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/webpack-config/lib/baseConfig/index.js: -------------------------------------------------------------------------------- 1 | import path from 'path'; 2 | export default (rootDir) => ({ 3 | mode: 'production', 4 | resolve: { 5 | extensions: ['.jsx', '.js'], 6 | alias: { 7 | '@': path.resolve(rootDir, 'src/'), 8 | }, 9 | }, 10 | output: { 11 | filename: '[name]/index.js', 12 | publicPath: '', 13 | }, 14 | }); 15 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/webpack-config/lib/devConfig/index.d.ts: -------------------------------------------------------------------------------- 1 | import { Configuration as WebpackConfiguration } from "webpack"; 2 | import { Configuration as WebpackDevServerConfiguration } from "webpack-dev-server"; 3 | interface Configuration extends WebpackConfiguration { 4 | devServer?: WebpackDevServerConfiguration; 5 | } 6 | declare const _default: (rootDir: string) => Configuration; 7 | export default _default; 8 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/cdn-from-dependency/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @userscript/cdn-from-dependency 2 | 3 | ## 1.0.4 4 | 5 | ### Patch Changes 6 | 7 | - 5c48122: update dependencies 8 | 9 | ## 1.0.3 10 | 11 | ### Patch Changes 12 | 13 | - 585837b: update dependencies 14 | - refine chat detection 15 | 16 | ## 1.0.2 17 | 18 | ### Patch Changes 19 | 20 | - update package configs 21 | 22 | ## 1.0.1 23 | 24 | ### Patch Changes 25 | 26 | - 8e2a4ab: initial 27 | -------------------------------------------------------------------------------- /packages/forward-to/config/webpack.config.dev.ts: -------------------------------------------------------------------------------- 1 | import devConfig from '@userscript/webpack-config/devConfig'; 2 | import path from 'path'; 3 | import { 4 | Configuration, 5 | } from 'webpack'; 6 | import { 7 | merge, 8 | } from 'webpack-merge'; 9 | 10 | import webpackConfigBase from './webpack.config.base'; 11 | 12 | export default merge( 13 | webpackConfigBase, 14 | devConfig(path.join(__dirname, '../')), 15 | ); 16 | -------------------------------------------------------------------------------- /packages/ui/lib/AppProperties/index.d.ts: -------------------------------------------------------------------------------- 1 | import AppPropertiesKey from '../AppPropertiesKey'; 2 | import AppPropertiesValue from '../AppPropertiesValue'; 3 | import ComputedProperties from '../ComputedProperties'; 4 | type AppProperties> = { 5 | [K in AppPropertiesKey]: AppPropertiesValue; 6 | } & State; 7 | export default AppProperties; 8 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/EditAction/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/EditAction/index.ts"],"names":[],"mappings":"AAkBA,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,WAAqD,EACb,EAAE,CAAC,CAC3C,GAAG,EACH,MAAM,EACN,EAAE,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,CAAC;IACzB,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7C,CAAC,CAAC"} -------------------------------------------------------------------------------- /packages/ui/src/RootComponent/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | VNode, 3 | } from 'hyperapp'; 4 | 5 | export default interface RootComponent { 6 | tag: keyof HTMLElementTagNameMap, 7 | view: (s: T) => VNode 8 | } 9 | 10 | export const makeComponent = ( 11 | x: (tag: keyof HTMLElementTagNameMap) => (s: T) => VNode, 12 | ) => (tag: keyof HTMLElementTagNameMap): RootComponent => ({ 13 | tag, 14 | view: x(tag), 15 | }); 16 | 17 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/SettingState/index.ts: -------------------------------------------------------------------------------- 1 | import Editable from '@userscript/ui/Editable'; 2 | 3 | import Log from '@/Log'; 4 | import MappedConfigState from '@/MappedConfigState'; 5 | 6 | export default interface SettingState extends MappedConfigState { 7 | showPanel: boolean, 8 | mainTab: number, 9 | logTab: number, 10 | timingStepCount: Editable, 11 | eventLog: Log, 12 | panelRect: DOMRectReadOnly, 13 | } 14 | 15 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/updateBool/index.ts: -------------------------------------------------------------------------------- 1 | import * as boolUpdater from '@userscript/ui/BoolUpdater'; 2 | 3 | import AppCommander from '@/AppCommander'; 4 | import SettingState from '@/SettingState'; 5 | import SettingProps from '@/settingUI/SettingProps'; 6 | import updateAt from '@/settingUI/updateAt'; 7 | 8 | export default boolUpdater.make< 9 | SettingState, 10 | SettingProps, 11 | AppCommander 12 | >(updateAt); 13 | 14 | -------------------------------------------------------------------------------- /packages/tap-non-null/config/webpack.config.dev.ts: -------------------------------------------------------------------------------- 1 | import devConfig from '@userscript/webpack-config/devConfig'; 2 | import path from 'path'; 3 | import { 4 | Configuration, 5 | } from 'webpack'; 6 | import { 7 | merge, 8 | } from 'webpack-merge'; 9 | 10 | import webpackConfigBase from './webpack.config.base'; 11 | 12 | export default merge( 13 | webpackConfigBase, 14 | devConfig(path.join(__dirname, '../')), 15 | ); 16 | -------------------------------------------------------------------------------- /packages/ui/lib/ComputedPropertySetters/index.d.ts: -------------------------------------------------------------------------------- 1 | import ComputedProperties from '../ComputedProperties'; 2 | import StateDispatchable from '../StateDispatchable'; 3 | type ComputedPropertySetters, AppCommander> = { 4 | [K in keyof C]?: (v: ReturnType) => (c: AppCommander) => (s: State) => StateDispatchable; 5 | }; 6 | export default ComputedPropertySetters; 7 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/node/checkboxRow/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/node/checkboxRow/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,CAAC,EAGD,IAAI,GACL,MAAM,UAAU,CAAC;AAElB,eAAe,CACb,KAAa,EACb,OAAgB,EAChB,QAAmB,EACT,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE;IACzC,IAAI,CAAC,KAAK,CAAC;IACX,CAAC,CAAC,OAAO,EAAE;QACT,IAAI,EAAE,UAAU;QAChB,OAAO;QACP,QAAQ;KACT,CAAC;CACH,CAAC,CAAC,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/node/rangeRow/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/rangeRow/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,EACL,MAAM,EACP,MAAM,UAAU,CAAC;AAElB,OAAO,QAAiB,MAAM,YAAY,CAAC;AAC3C,OAAO,WAAW,MAAM,oBAAoB,CAAC;yBAE7B,CAAC,EACf,QAAQ,WAAW,EACnB,QAAQ,OAAO,CAAC,MAAM,CACtB,SAAS,GACP,UAAU,EACV,MAAM,CAAC,CAAC,CAAC,CACV,CAAC,MACE,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,CAAC,CAAC;AAPxC,wBAqCG"} -------------------------------------------------------------------------------- /packages/ui/src/AppPropertiesValue/index.ts: -------------------------------------------------------------------------------- 1 | import AppPropertiesKey from '@/AppPropertiesKey'; 2 | import ComputedProperties from '@/ComputedProperties'; 3 | 4 | type AppPropertiesValue< 5 | State, 6 | C extends ComputedProperties, 7 | K extends AppPropertiesKey, 8 | > = K extends keyof State ? State[K] 9 | : K extends keyof C ? ReturnType 10 | : never; 11 | 12 | export default AppPropertiesValue; 13 | 14 | -------------------------------------------------------------------------------- /packages/cdn-from-dependency/config/webpack.config.dev.ts: -------------------------------------------------------------------------------- 1 | import devConfig from '@userscript/webpack-config/devConfig'; 2 | import path from 'path'; 3 | import { 4 | Configuration, 5 | } from 'webpack'; 6 | import { 7 | merge, 8 | } from 'webpack-merge'; 9 | 10 | import webpackConfigBase from './webpack.config.base'; 11 | 12 | export default merge( 13 | webpackConfigBase, 14 | devConfig(path.join(__dirname, '../')), 15 | ); 16 | -------------------------------------------------------------------------------- /packages/custom-sort/src/getTeaserContainers/index.ts: -------------------------------------------------------------------------------- 1 | import teaserElementSelector from '@/teaserElementSelector'; 2 | 3 | export default (node: HTMLDocument): HTMLElement[] => { 4 | const containerSelector = '.views-responsive-grid, .node-playlist' 5 | + ' .field-name-field-videos'; 6 | 7 | return Array.from(node.querySelectorAll(containerSelector)) 8 | .filter((grid) => grid.querySelector(teaserElementSelector)); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/webpack-config/src/baseConfig/index.ts: -------------------------------------------------------------------------------- 1 | import path from 'path'; 2 | import { 3 | Configuration, 4 | } from 'webpack'; 5 | 6 | export default (rootDir: string): Configuration => ({ 7 | mode: 'production', 8 | resolve: { 9 | extensions: ['.jsx', '.js'], 10 | alias: { 11 | '@': path.resolve(rootDir, 'src/'), 12 | }, 13 | }, 14 | output: { 15 | filename: '[name]/index.js', 16 | publicPath: '', 17 | }, 18 | }); 19 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/SettingValue/index.ts: -------------------------------------------------------------------------------- 1 | import AppPropertiesValue from '@userscript/ui/AppPropertiesValue'; 2 | 3 | import SettingState from '@/SettingState'; 4 | import SettingKey from '@/settingUI/SettingKey'; 5 | import computed from '@/settingUI/computed'; 6 | 7 | type SettingValue> = AppPropertiesValue< 8 | SettingState, 9 | typeof computed, 10 | K 11 | >; 12 | 13 | export default SettingValue; 14 | 15 | -------------------------------------------------------------------------------- /packages/ui/src/setter/setStrings/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Array as A, 3 | Predicate as P, 4 | String as Str, 5 | } from 'effect'; 6 | import { 7 | pipe, 8 | constant, 9 | } from 'effect/Function'; 10 | 11 | import Setter from '@/setter/Setter'; 12 | 13 | const setStrings: Setter = (x) => pipe( 14 | Str.split(x, /\r\n|\n/), 15 | A.filter(P.not(Str.isEmpty)), 16 | constant, 17 | ); 18 | 19 | export default setStrings; 20 | -------------------------------------------------------------------------------- /packages/webpack-config/lib/baseConfig/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/baseConfig/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAKxB,eAAe,CAAC,OAAe,EAAiB,EAAE,CAAC,CAAC;IAClD,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE;QACP,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;QAC3B,KAAK,EAAE;YACL,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;SACnC;KACF;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,iBAAiB;QAC3B,UAAU,EAAE,EAAE;KACf;CACF,CAAC,CAAC"} -------------------------------------------------------------------------------- /packages/cdn-from-dependency/lib/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAEhE,eAAe,CACb,YAAwC,EACxC,IAAwC,EAOxC,EAAE;IACF,MAAM,GAAG,GAAG,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,OAAO;QACL,IAAI;QACJ,GAAG;QACH,OAAO,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE;QACzB,KAAK,EAAE,UAAU;QACjB,GAAG,EAAE,SAAS;KACf,CAAC;AACJ,CAAC,CAAC"} -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/defaultToast/index.ts: -------------------------------------------------------------------------------- 1 | // import Swal from 'sweetalert2'; 2 | 3 | // export default Swal.mixin({ 4 | // toast: true, 5 | // position: 'bottom-left', 6 | // timer: 2500, 7 | // timerProgressBar: true, 8 | // showConfirmButton: false, 9 | // didOpen: (toast) => { 10 | // toast.addEventListener('pointerenter', Swal.stopTimer); 11 | // toast.addEventListener('pointerleave', Swal.resumeTimer); 12 | // }, 13 | // }); 14 | -------------------------------------------------------------------------------- /packages/ui/lib/AppProperties/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/AppProperties/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAEtD,KAAK,aAAa,CAAC,KAAK,EAAE,CAAC,SAAS,kBAAkB,CAAC,KAAK,CAAC,IAAI;KAC9D,CAAC,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;CAC5E,GAAG,KAAK,CAAC;AAEV,eAAe,aAAa,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/setter/setEditString/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/setter/setEditString/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,GACT,MAAM,iBAAiB,CAAC;AAEzB,OAAiB,KAAK,EAAE,MAAM,YAAY,CAAC;AAG3C,MAAM,aAAa,GAAiC,CAClD,OAAO,EACP,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAClB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CACX,CAAC;AAEF,eAAe,aAAa,CAAC"} -------------------------------------------------------------------------------- /packages/webpack-config/src/tsLoaderConfig/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Configuration, 3 | } from 'webpack'; 4 | 5 | export default (configFile: string): Configuration => ({ 6 | module: { 7 | rules: [ 8 | { 9 | test: /\.tsx?$/, 10 | use: { 11 | loader: 'ts-loader', 12 | options: { 13 | configFile, 14 | }, 15 | }, 16 | exclude: /node_modules/, 17 | }, 18 | ], 19 | }, 20 | }); 21 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/textColorNode/index.ts: -------------------------------------------------------------------------------- 1 | import textColorNode from '@userscript/ui/appNode/textColorNode'; 2 | 3 | import getText from '@/getText'; 4 | import editAction from '@/settingUI/editAction'; 5 | import getExampleTextStyle from '@/settingUI/getExampleTextStyle'; 6 | import getState from '@/settingUI/getState'; 7 | 8 | export default textColorNode( 9 | editAction, 10 | getText, 11 | getState, 12 | getExampleTextStyle, 13 | ); 14 | 15 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/simpleConfig/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Effect as Z, 3 | } from 'effect'; 4 | import { 5 | identity, 6 | } from 'effect/Function'; 7 | 8 | import GMConfigItem from '@/GMConfigItem'; 9 | 10 | export default ( 11 | key: string, 12 | defaultValue: T, 13 | ): GMConfigItem => ({ 14 | gmKey: key, 15 | getValue: Z.promise(async () => GM.getValue(key, defaultValue)), 16 | defaultValue, 17 | toGm: identity, 18 | }); 19 | -------------------------------------------------------------------------------- /packages/ui/lib/appNode/checkboxNode/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/appNode/checkboxNode/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,WAAW,GACZ,MAAM,QAAQ,CAAC;AAEhB,eAAe,CAMb,OAAkC,EAClC,QAE0B,EAC1B,UAAmD,EACnD,EAAE,CAAC,CACH,KAAU,EACV,EAAE,CAAC,CACH,CAAe,EACf,EAAE,CAAC,CACH,CAAQ,EACM,EAAE,CAAC,WAAW,CAC5B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACjB,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAClB,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACrB,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/node/colorPicker/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/node/colorPicker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,GACT,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,CAAC,GAGF,MAAM,UAAU,CAAC;AAElB,eAAe,CACb,MAA8C,EAC9C,EAAE,CAAC,CAAC,KAAa,EAAW,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;IAC1C,KAAK,EAAE;QACL,KAAK,EAAE,MAAM;QACb,aAAa,EAAE,QAAQ;KACxB;IACD,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,MAAM,CAAC,QAAQ,IAAI,QAAQ;CACrC,CAAC,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/setter/setEditStrings/index.js: -------------------------------------------------------------------------------- 1 | import { Array as A, Option as O, Predicate as P, String as Str, } from 'effect'; 2 | import { pipe, constant, } from 'effect/Function'; 3 | import * as Ed from '../../Editable'; 4 | const setEditStrings = (editing) => (value) => pipe(value, Str.split(/\r\n|\n/), A.filter(P.not(Str.isEmpty)), (x) => constant(editing ? [x, O.some([value, O.none()])] 5 | : Ed.of(x))); 6 | export default setEditStrings; 7 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/src/ComputedPropertySetters/index.ts: -------------------------------------------------------------------------------- 1 | import ComputedProperties from '@/ComputedProperties'; 2 | import StateDispatchable from '@/StateDispatchable'; 3 | 4 | type ComputedPropertySetters< 5 | State, 6 | C extends ComputedProperties, 7 | AppCommander, 8 | > = { 9 | [K in keyof C]?: ( 10 | v: ReturnType 11 | ) => (c: AppCommander) => (s: State) => StateDispatchable 12 | }; 13 | 14 | export default ComputedPropertySetters; 15 | 16 | -------------------------------------------------------------------------------- /packages/ui/src/node/checkboxRow2/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | h, 3 | type ComponentType, 4 | } from 'preact'; 5 | 6 | const checkboxRow2: ComponentType<{ 7 | label: string, 8 | checked: boolean, 9 | onchange: (e: Event) => void 10 | }> = ({ 11 | label, checked, onchange, 12 | }) => h('div', {}, h('label', {}, [ 13 | label, 14 | h('input', { 15 | type: 'checkbox', 16 | checked, 17 | onchange, 18 | }), 19 | ])); 20 | 21 | export default checkboxRow2; 22 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/type/TargetLowerBoundFunc/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Either as E, 3 | } from 'effect'; 4 | 5 | import type GenericMap from '@/type/GenericMap'; 6 | import type Type from '@/type/Type'; 7 | import type TypeWithMap from '@/type/TypeWithMap'; 8 | 9 | type TargetLowerBoundFunc = ( 10 | target: TypeWithMap 11 | ) => ( 12 | source: TypeWithMap 13 | ) => E.Either; 14 | 15 | export default TargetLowerBoundFunc; 16 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/updateSettingState/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Effect as Z, 3 | pipe, 4 | } from 'effect'; 5 | import { 6 | Dispatch, 7 | Dispatchable, 8 | } from 'hyperapp'; 9 | 10 | import SettingState from '@/SettingState'; 11 | 12 | export default ( 13 | apps: Dispatch[], 14 | ) => ( 15 | dispatchable: Dispatchable, 16 | ): Z.Effect => pipe( 17 | apps, 18 | Z.forEach((x) => Z.sync(() => x(dispatchable))), 19 | ); 20 | -------------------------------------------------------------------------------- /packages/ui/src/node/settingRow/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | h, 3 | VNode, 4 | text, 5 | } from 'hyperapp'; 6 | 7 | export default ( 8 | label: string, 9 | error: string, 10 | content: VNode[], 11 | ): VNode => h('div', {}, [ 12 | h('span', {}, text(label)), 13 | h('span', { 14 | style: { 15 | color: '#f55', 16 | marginLeft: '5px', 17 | whiteSpace: 'pre-wrap', 18 | }, 19 | }, text(error)), 20 | h('div', {}, content), 21 | ]); 22 | 23 | -------------------------------------------------------------------------------- /packages/webpack-config/lib/tsbaseConfig/index.js: -------------------------------------------------------------------------------- 1 | import path from 'path'; 2 | import baseConfig from '../baseConfig'; 3 | import tsLoaderConfig from '../tsLoaderConfig'; 4 | import { merge, } from 'webpack-merge'; 5 | export default (rootDir) => merge(baseConfig(rootDir), tsLoaderConfig('tsconfig.build.json'), { 6 | resolve: { 7 | extensions: ['.tsx', '.ts'], 8 | }, 9 | entry: path.join(rootDir, './src/index.ts'), 10 | }); 11 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/renderChat/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Effect as Z, 3 | } from 'effect'; 4 | import { 5 | render, 6 | } from 'lit-html'; 7 | 8 | import FlowChat from '@/FlowChat'; 9 | import MainState from '@/MainState'; 10 | import chatNode from '@/chatNode'; 11 | 12 | export default (chat: FlowChat) => ( 13 | mainState: MainState, 14 | ): Z.Effect => chatNode(chat, mainState).pipe( 15 | Z.flatMap((node) => Z.sync(() => render(node, chat.element))), 16 | ); 17 | -------------------------------------------------------------------------------- /packages/ui/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @userscript/ui 2 | 3 | ## 1.1.3 4 | 5 | ### Patch Changes 6 | 7 | - 5c48122: update dependencies 8 | 9 | ## 1.1.2 10 | 11 | ### Patch Changes 12 | 13 | - 585837b: update dependencies 14 | - refine chat detection 15 | 16 | ## 1.1.1 17 | 18 | ### Patch Changes 19 | 20 | - update package configs 21 | 22 | ## 1.1.0 23 | 24 | ### Minor Changes 25 | 26 | - Add some modules 27 | 28 | ## 1.0.1 29 | 30 | ### Patch Changes 31 | 32 | - 8e2a4ab: initial 33 | -------------------------------------------------------------------------------- /packages/ui/lib/BoolUpdater/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/BoolUpdater/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,IAAI,EACJ,IAAI,GACL,MAAM,iBAAiB,CAAC;AAIzB,OAAO,UAAU,MAAM,cAAc,CAAC;AAetC,MAAM,CAAC,MAAM,IAAI,GAAG,CAKlB,QAEgE,EAKhE,EAAE,CAAC,CACH,GAAiC,EACjC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI;AACtB,yEAAyE;AACzE,UAAU,CAAC,CAAC,CAAwC,EACpD,QAAQ,CAAC,GAAG,CAAC,EACb,IAAI,EACJ,KAAK,CAAC,CAAC,CAAC,CACT,CAAC,CAAC"} -------------------------------------------------------------------------------- /packages/ui/src/node/colorPicker/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | identity, 3 | } from 'effect/Function'; 4 | import { 5 | h, 6 | VNode, 7 | Action, 8 | } from 'hyperapp'; 9 | 10 | export default ( 11 | action: Partial>>, 12 | ) => (color: string):VNode => h('input', { 13 | style: { 14 | width: '36px', 15 | verticalAlign: 'middle', 16 | }, 17 | type: 'color', 18 | value: color, 19 | oninput: action.onchange ?? identity, 20 | }); 21 | 22 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/UserConfigGetter/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Effect as Z, 3 | pipe, 4 | } from 'effect'; 5 | 6 | import UserConfig from '@/UserConfig'; 7 | import mapObject from '@/mapObject'; 8 | 9 | type UserConfigGetter = { 10 | [P in keyof UserConfig]: Z.Effect; 11 | }; 12 | 13 | export default UserConfigGetter; 14 | 15 | export const makeGetter = (c: UserConfig): UserConfigGetter => pipe( 16 | c, 17 | mapObject(([x]) => [x, Z.sync(() => c[x])]), 18 | ); 19 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/logWithMeta/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Effect as Z, 3 | Option as O, 4 | LogLevel, 5 | pipe, 6 | } from 'effect'; 7 | 8 | import LogMeta, { 9 | logMeta, 10 | } from '@/LogMeta'; 11 | 12 | export default ( 13 | level: LogLevel.LogLevel, 14 | ) => ( 15 | message: string, 16 | ) => ( 17 | data: unknown, 18 | ): Z.Effect => pipe( 19 | Z.log(message), 20 | Z.locally(logMeta, O.some(data)), 21 | (x) => LogLevel.locally(level)(x), 22 | ); 23 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/setterFromKeysAndMap/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Array as A, 3 | Effect as Z, 4 | pipe, 5 | } from 'effect'; 6 | 7 | import UserConfig from '@/UserConfig'; 8 | import UserConfigSetter from '@/UserConfigSetter'; 9 | 10 | export default (keys: (keyof UserConfig)[]) => ( 11 | f: (k: K) => (v: UserConfig[K]) => Z.Effect, 12 | ): UserConfigSetter => pipe( 13 | keys, 14 | A.map((x) => [x, f(x)]), 15 | Object.fromEntries, 16 | ); 17 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/updateInput/index.ts: -------------------------------------------------------------------------------- 1 | import * as inputUpdater from '@userscript/ui/InputUpdater'; 2 | 3 | import AppCommander from '@/AppCommander'; 4 | import SettingState from '@/SettingState'; 5 | import SettingProps from '@/settingUI/SettingProps'; 6 | import getState from '@/settingUI/getState'; 7 | import updateAt from '@/settingUI/updateAt'; 8 | 9 | export default inputUpdater.make< 10 | SettingState, 11 | SettingProps, 12 | AppCommander 13 | >(getState, updateAt); 14 | 15 | -------------------------------------------------------------------------------- /packages/ui/lib/AppPropertiesValue/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/AppPropertiesValue/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAEtD,KAAK,kBAAkB,CACrB,KAAK,EACL,CAAC,SAAS,kBAAkB,CAAC,KAAK,CAAC,EACnC,CAAC,SAAS,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,IAC3C,CAAC,SAAS,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAClC,CAAC,SAAS,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACpC,KAAK,CAAC;AAER,eAAe,kBAAkB,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/RootComponent/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/RootComponent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACN,MAAM,UAAU,CAAC;AAElB,MAAM,CAAC,OAAO,WAAW,aAAa,CAAC,CAAC;IACtC,GAAG,EAAE,MAAM,qBAAqB,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAA;CACzB;AAED,eAAO,MAAM,aAAa,GAAI,CAAC,EAC7B,GAAG,CAAC,GAAG,EAAE,MAAM,qBAAqB,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,MACvD,KAAK,MAAM,qBAAqB,KAAG,aAAa,CAAC,CAAC,CAGtD,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/setter/setStrings/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/setter/setStrings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,IAAI,CAAC,EACV,SAAS,IAAI,CAAC,EACd,MAAM,IAAI,GAAG,GACd,MAAM,QAAQ,CAAC;AAChB,OAAO,EACL,IAAI,EACJ,QAAQ,GACT,MAAM,iBAAiB,CAAC;AAIzB,MAAM,UAAU,GAAsC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAC/D,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EACvB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAC5B,QAAQ,CACT,CAAC;AAEF,eAAe,UAAU,CAAC"} -------------------------------------------------------------------------------- /packages/webpack-config/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @userscript/webpack-config 2 | 3 | ## 1.0.5 4 | 5 | ### Patch Changes 6 | 7 | - 5c48122: update dependencies 8 | 9 | ## 1.0.4 10 | 11 | ### Patch Changes 12 | 13 | - 585837b: update dependencies 14 | - refine chat detection 15 | 16 | ## 1.0.3 17 | 18 | ### Patch Changes 19 | 20 | - update package configs 21 | 22 | ## 1.0.2 23 | 24 | ### Patch Changes 25 | 26 | - add type: "module" 27 | 28 | ## 1.0.1 29 | 30 | ### Patch Changes 31 | 32 | - 8e2a4ab: initial 33 | -------------------------------------------------------------------------------- /packages/webpack-config/lib/tsLoaderConfig/index.js: -------------------------------------------------------------------------------- 1 | export default (configFile) => ({ 2 | module: { 3 | rules: [ 4 | { 5 | test: /\.tsx?$/, 6 | use: { 7 | loader: 'ts-loader', 8 | options: { 9 | configFile, 10 | }, 11 | }, 12 | exclude: /node_modules/, 13 | }, 14 | ], 15 | }, 16 | }); 17 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/mapObject/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Array as A, 3 | pipe, 4 | } from 'effect'; 5 | 6 | // eslint-disable-next-line @typescript-eslint/ban-types 7 | export default ( 8 | f: (x: [keyof T1, T1[keyof T1]]) => readonly [keyof T2, unknown], 9 | ) => (o: T1): T2 => pipe( 10 | // eslint-disable-next-line @typescript-eslint/consistent-type-assertions 11 | Object.entries(o) as [(keyof T1), T1[keyof T1]][], 12 | A.map(f), 13 | Object.fromEntries, 14 | ); 15 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/type/TypeWithMap/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Semigroup, 3 | } from '@effect/typeclass/Semigroup'; 4 | import { 5 | Option as O, 6 | } from 'effect'; 7 | 8 | 9 | import GenericMap from '@/type/GenericMap'; 10 | import type Type from '@/type/Type'; 11 | 12 | type TypeWithMap = { 13 | type: T, 14 | map: GenericMap 15 | }; 16 | 17 | export default TypeWithMap; 18 | 19 | export const of = (x: T) => ({ 20 | type: x, 21 | map: {}, 22 | }); 23 | -------------------------------------------------------------------------------- /packages/custom-sort/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @userscript/custom-sort 2 | 3 | ## 1.1.2 4 | 5 | ### Patch Changes 6 | 7 | - 5c48122: update dependencies 8 | - Updated dependencies [5c48122] 9 | - @userscript/forward-to@1.0.4 10 | - @userscript/tap-non-null@1.0.4 11 | 12 | ## 1.1.1 13 | 14 | ### Patch Changes 15 | 16 | - 585837b: update dependencies 17 | - refine chat detection 18 | - Updated dependencies [585837b] 19 | - Updated dependencies 20 | - @userscript/tap-non-null@1.0.3 21 | - @userscript/forward-to@1.0.3 22 | -------------------------------------------------------------------------------- /packages/ui/lib/ComputedPropertySetters/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ComputedPropertySetters/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAEpD,KAAK,uBAAuB,CAC1B,KAAK,EACL,CAAC,SAAS,kBAAkB,CAAC,KAAK,CAAC,EACnC,YAAY,IACV;KACD,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CACf,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAChB,CAAC,CAAC,EAAE,YAAY,KAAK,CAAC,CAAC,EAAE,KAAK,KAAK,iBAAiB,CAAC,KAAK,CAAC;CACjE,CAAC;AAEF,eAAe,uBAAuB,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/node/tabContainer/index.d.ts: -------------------------------------------------------------------------------- 1 | import { VNode, Action, StyleProp } from 'hyperapp'; 2 | export interface TabContainerStyle { 3 | container: StyleProp; 4 | label: StyleProp; 5 | labelFocus: StyleProp; 6 | tab: StyleProp; 7 | } 8 | declare const _default: (style: TabContainerStyle) => (ontabSelect: Action) => (labels: readonly string[]) => (tabs: readonly (() => readonly VNode[])[]) => (mainTab: number) => VNode; 9 | export default _default; 10 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/webpack-config/lib/tsbaseConfig/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tsbaseConfig/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,OAAO,UAAU,MAAM,eAAe,CAAC;AACvC,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EACL,KAAK,GACN,MAAM,eAAe,CAAC;AAEvB,eAAe,CAAC,OAAe,EAAiB,EAAE,CAAC,KAAK,CACtD,UAAU,CAAC,OAAO,CAAC,EACnB,cAAc,CAAC,qBAAqB,CAAC,EACrC;IACE,OAAO,EAAE;QACP,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;KAC5B;IACD,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC;CAC5C,CACF,CAAC"} -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/getChatFontSize/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Effect as Z, 3 | SynchronizedRef, 4 | } from 'effect'; 5 | 6 | import MainState from '@/MainState'; 7 | 8 | export default ({ 9 | config: { 10 | value: config, 11 | }, 12 | playerRect, 13 | }: MainState): Z.Effect => SynchronizedRef.get(playerRect).pipe( 14 | Z.map((rect) => Math.round((Math.max(config.fontSize - 0.2, 0.01) 15 | * rect.height / config.laneCount 16 | * (config.flowY2 - config.flowY1) 17 | ) * 100) / 100), 18 | ); 19 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/EditableExpression/MemberExpression/index.ts: -------------------------------------------------------------------------------- 1 | import ArrayExpression from '@/settingUI/editableExpression/ArrayExpression'; 2 | import type Expression from '@/settingUI/editableExpression/Expression'; 3 | import LiteralArray from '@/settingUI/editableExpression/LiteralArray'; 4 | 5 | export default interface MemberExpression { 6 | type: 'MemberExpression'; 7 | computed: boolean; 8 | object: Expression; 9 | property: Exclude; 10 | } 11 | 12 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/getExampleTextStyle/index.ts: -------------------------------------------------------------------------------- 1 | import * as Ed from '@userscript/ui/Editable'; 2 | import { 3 | StyleProp, 4 | } from 'hyperapp'; 5 | 6 | import SettingState from '@/SettingState'; 7 | import textShadow from '@/textShadow'; 8 | 9 | export default (s: SettingState): StyleProp => ({ 10 | fontFamily: Ed.value(s.font), 11 | fontWeight: Ed.value(s.fontWeight).toString(), 12 | textShadow: textShadow(Ed.value(s.shadowColor))( 13 | Ed.value(s.shadowFontWeight), 14 | ), 15 | }); 16 | 17 | -------------------------------------------------------------------------------- /packages/ui/lib/node/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAC7C,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAC7C,OAAO,eAAe,MAAM,wBAAwB,CAAC;AACrD,OAAO,MAAM,MAAM,eAAe,CAAC;AACnC,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAC3C,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAC7C,OAAO,SAAS,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EACL,WAAW,EACX,WAAW,EACX,eAAe,EACf,MAAM,EACN,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,WAAW,EACX,SAAS,GACV,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/node/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAC7C,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAC7C,OAAO,eAAe,MAAM,wBAAwB,CAAC;AACrD,OAAO,MAAM,MAAM,eAAe,CAAC;AACnC,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAC3C,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAC7C,OAAO,SAAS,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EACL,WAAW,EACX,WAAW,EACX,eAAe,EACf,MAAM,EACN,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,WAAW,EACX,SAAS,GACV,CAAC"} -------------------------------------------------------------------------------- /packages/webpack-config/src/styleLoaderConfig/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Configuration, 3 | } from 'webpack'; 4 | 5 | export default ({ 6 | module: { 7 | rules: [ 8 | { 9 | test: /\.css$/, 10 | use: [ 11 | { 12 | loader: 'style-loader', 13 | }, 14 | { 15 | loader: 'css-loader', 16 | }, 17 | { 18 | loader: 'postcss-loader', 19 | }, 20 | ], 21 | }, 22 | ], 23 | }, 24 | }) satisfies Configuration; 25 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/makeChatScreen/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Effect as Z, 3 | pipe, 4 | } from 'effect'; 5 | 6 | export default pipe( 7 | Z.sync(() => document.createElement('div')), 8 | Z.tap((x) => Z.sync(() => Object.assign< 9 | CSSStyleDeclaration, 10 | Partial 11 | >(x.style, { 12 | pointerEvents: 'none', 13 | zIndex: '30', 14 | position: 'absolute', 15 | overflow: 'hidden', 16 | height: '100%', 17 | width: '100%', 18 | }))), 19 | ) satisfies Z.Effect; 20 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/getState/index.ts: -------------------------------------------------------------------------------- 1 | import SettingState from '@/SettingState'; 2 | import SettingKey from '@/settingUI/SettingKey'; 3 | import SettingProps from '@/settingUI/SettingProps'; 4 | import computed from '@/settingUI/computed'; 5 | 6 | export default >(k: K): ( 7 | s: SettingState 8 | ) => SettingProps[K] => ( 9 | // eslint-disable-next-line @typescript-eslint/consistent-type-assertions 10 | (k in computed ? computed[k as never] : (s) => s[k as never]) 11 | ); 12 | 13 | -------------------------------------------------------------------------------- /packages/ui/lib/setter/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/setter/index.ts"],"names":[],"mappings":"AAEA,OAAO,YAAY,MAAM,uBAAuB,CAAC;AACjD,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAC7C,OAAO,aAAa,MAAM,wBAAwB,CAAC;AACnD,OAAO,cAAc,MAAM,yBAAyB,CAAC;AACrD,OAAO,aAAa,MAAM,wBAAwB,CAAC;AACnD,OAAO,cAAc,MAAM,yBAAyB,CAAC;AACrD,OAAO,iBAAiB,MAAM,4BAA4B,CAAC;AAC3D,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAGL,YAAY,EACZ,UAAU,EACV,aAAa,EACb,cAAc,EACd,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,UAAU,GACX,CAAC"} -------------------------------------------------------------------------------- /.changeset/README.md: -------------------------------------------------------------------------------- 1 | # Changesets 2 | 3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works 4 | with multi-package repos, or single-package repos to help you version and publish your code. You can 5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets) 6 | 7 | We have a quick list of common questions to get you started engaging with this project in 8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) 9 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/ConfigSubject/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Array as A, 3 | pipe, 4 | } from 'effect'; 5 | import { 6 | Subject, 7 | } from 'rxjs'; 8 | 9 | import UserConfig from '@/UserConfig'; 10 | 11 | type ConfigSubject = { 12 | [P in keyof UserConfig]: Subject; 13 | }; 14 | 15 | export default ConfigSubject; 16 | 17 | export const makeSubject = ( 18 | configKeys: (keyof UserConfig)[], 19 | ): ConfigSubject => pipe( 20 | configKeys, 21 | A.map((x) => [x, new Subject()]), 22 | Object.fromEntries, 23 | ); 24 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/chainFilterMapElse/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Either as E, 3 | } from 'effect'; 4 | import { 5 | Refinement, 6 | } from 'effect/Predicate'; 7 | 8 | export default ( 9 | r: Refinement, 10 | ) => ( 11 | f: (x: B) => R, 12 | ) => ( 13 | x: E.Either, 14 | ): E.Either, R | E> => (E.isLeft(x) ? E.left(x.left) 15 | : r(x.right) ? E.left(f(x.right)) 16 | // eslint-disable-next-line @typescript-eslint/consistent-type-assertions 17 | : E.right(x.right as Exclude)); 18 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/getLaneY/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Effect as Z, 3 | SynchronizedRef, 4 | } from 'effect'; 5 | 6 | import MainState from '@/MainState'; 7 | 8 | export default ( 9 | lane: number, 10 | { 11 | config: { 12 | value: config, 13 | }, 14 | playerRect, 15 | }: MainState, 16 | ): Z.Effect => SynchronizedRef.get(playerRect).pipe( 17 | Z.map((rect) => rect.height * (( 18 | ((lane / config.laneCount) + 0.005) 19 | * (config.flowY2 - config.flowY1) 20 | ) + config.flowY1)), 21 | ); 22 | -------------------------------------------------------------------------------- /packages/ui/lib/appNode/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/appNode/index.ts"],"names":[],"mappings":"AAEA,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,SAAS,MAAM,qBAAqB,CAAC;AAC5C,OAAO,OAAO,MAAM,mBAAmB,CAAC;AACxC,OAAO,UAAU,MAAM,sBAAsB,CAAC;AAC9C,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,iBAAiB,MAAM,6BAA6B,CAAC;AAC5D,OAAO,iBAAiB,MAAM,6BAA6B,CAAC;AAC5D,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,aAAa,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAGL,YAAY,EACZ,SAAS,EACT,OAAO,EACP,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,aAAa,GACd,CAAC"} -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/observePair/index.ts: -------------------------------------------------------------------------------- 1 | import forwardTo from '@userscript/forward-to'; 2 | import { 3 | Effect as Z, 4 | } from 'effect'; 5 | import { 6 | Subject, 7 | } from 'rxjs'; 8 | 9 | export default ( 10 | con: new (x: (a: T2) => void) => T, 11 | ): Z.Effect<{ 12 | subject: Subject; 13 | observer: T; 14 | }> => Z.sync(() => { 15 | const subject = new Subject(); 16 | return { 17 | subject, 18 | // eslint-disable-next-line new-cap 19 | observer: new con(forwardTo(subject)), 20 | }; 21 | }); 22 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/mapSettingNodes/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Array as A, 3 | pipe, 4 | } from 'effect'; 5 | import { 6 | VNode, 7 | } from 'hyperapp'; 8 | 9 | import AppCommander from '@/AppCommander'; 10 | import SettingState from '@/SettingState'; 11 | 12 | export default ( 13 | f: (xs: VNode[]) => T, 14 | ) => ( 15 | xs: ((c: AppCommander) => (s: SettingState) => VNode)[], 16 | ) => (c: AppCommander) => (s: SettingState) => pipe( 17 | xs, 18 | A.map((x) => x(c)(s)), 19 | f, 20 | ); 21 | -------------------------------------------------------------------------------- /packages/ui/lib/node/settingRow/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/node/settingRow/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,CAAC,EAED,IAAI,GACL,MAAM,UAAU,CAAC;AAElB,eAAe,CACb,KAAa,EACb,KAAa,EACb,OAAmB,EACT,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE;IAC1B,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC,MAAM,EAAE;QACR,KAAK,EAAE;YACL,KAAK,EAAE,MAAM;YACb,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,UAAU;SACvB;KACF,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACf,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC;CACtB,CAAC,CAAC"} -------------------------------------------------------------------------------- /packages/custom-sort/src/GmDatabase/openDatabase/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | GmDatabaseSchema, 3 | } from '../GmDatabaseSchema'; 4 | import { 5 | GmStorage, 6 | } from '../GmStorage'; 7 | import getStorageVersion from '../getStorageVersion'; 8 | import setStorageVersion from '../setStorageVersion'; 9 | 10 | export default async ( 11 | schema: GmDatabaseSchema, 12 | ): Promise => { 13 | const version = await getStorageVersion() ?? 0; 14 | if (version < schema.length) { 15 | setStorageVersion(schema.length); 16 | } 17 | }; 18 | -------------------------------------------------------------------------------- /packages/ui/lib/node/tabContainer/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/tabContainer/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,EACL,MAAM,EAEN,SAAS,EACV,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,SAAS,CAAC;IACtB,GAAG,EAAE,SAAS,CAAC;CAChB;yBAEe,CAAC,EACf,OAAO,iBAAiB,MAExB,aAAa,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,MAE9B,QAAQ,SAAS,MAAM,EAAE,MAEzB,MAAM,SAAS,CAAC,MAAM,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAE5C,SAAS,MAAM,KACd,KAAK,CAAC,CAAC,CAAC;AAVX,wBAsCG"} -------------------------------------------------------------------------------- /packages/cdn-from-dependency/src/index.ts: -------------------------------------------------------------------------------- 1 | const getExactVersion = (str: string) => str.replace(/\D+/, ''); 2 | 3 | export default ( 4 | dependencies: T & Record, 5 | name: keyof typeof dependencies & string, 6 | ): { 7 | name: string, 8 | ver: string, 9 | nameVer: string 10 | begin: 'https://', 11 | end: '.min.js', 12 | } => { 13 | const ver = getExactVersion(dependencies[name]); 14 | return { 15 | name, 16 | ver, 17 | nameVer: `${name}@${ver}`, 18 | begin: 'https://', 19 | end: '.min.js', 20 | }; 21 | }; 22 | -------------------------------------------------------------------------------- /packages/ui/lib/appNode/textAreaNode/index.js: -------------------------------------------------------------------------------- 1 | import errorText from '../../errorText'; 2 | import { textAreaRow, } from '../../node'; 3 | import settingRow from '../../node/settingRow'; 4 | export default (setter) => (editAction, getText, getState) => (label, rows) => (c) => (s) => settingRow(getText(label)(s), errorText(getText('invalidSetting')(s))(getState(label)(s)), [ 5 | textAreaRow(rows, 6 | // eslint-disable-next-line @typescript-eslint/consistent-type-assertions 7 | editAction(label, setter)(c))(getState(label)(s)), 8 | ]); 9 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "root", 3 | "private": true, 4 | "scripts": { 5 | "preinstall": "npx only-allow pnpm", 6 | "prepare": "husky", 7 | "test": "echo \"No test\"" 8 | }, 9 | "devDependencies": { 10 | "@changesets/cli": "^2.27.12", 11 | "@commitlint/cli": "^19.6.1", 12 | "@commitlint/config-conventional": "^19.6.0", 13 | "husky": "^9.1.7" 14 | }, 15 | "packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0" 16 | } 17 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/filter/errorResult/index.ts: -------------------------------------------------------------------------------- 1 | import errorNode from '@/settingUI/errorNode'; 2 | import type * as nodeFunction from '@/settingUI/filter/NodeFunction'; 3 | import ErrorType, * as errorType from '@/type/ErrorType'; 4 | import GenericMap from '@/type/GenericMap'; 5 | import Type from '@/type/Type'; 6 | 7 | export default ( 8 | type: Type | ErrorType, 9 | ) => ( 10 | typeMap: GenericMap, 11 | ): nodeFunction.Result => ({ 12 | type, 13 | constrainedType: errorType.error, 14 | nodes: [errorNode], 15 | typeMap, 16 | }); 17 | 18 | -------------------------------------------------------------------------------- /packages/ui/lib/errorText/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errorText/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,IAAI,CAAC,GACZ,MAAM,QAAQ,CAAC;AAChB,OAAO,EACL,QAAQ,EACR,IAAI,GACL,MAAM,iBAAiB,CAAC;AAEzB,OAAiB,KAAK,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAe,CAAI,OAAe,EAAE,EAAE,CAAC,CAAC,IAAiB,EAAU,EAAE,CAAC,IAAI,CACxE,IAAI,EACJ,EAAE,CAAC,KAAK,EACR,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,EACrD,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAC1B,CAAC"} -------------------------------------------------------------------------------- /packages/webpack-config/src/tsbaseConfig/index.ts: -------------------------------------------------------------------------------- 1 | import path from 'path'; 2 | import { 3 | Configuration, 4 | } from 'webpack'; 5 | import baseConfig from '../baseConfig'; 6 | import tsLoaderConfig from '../tsLoaderConfig'; 7 | import { 8 | merge, 9 | } from 'webpack-merge'; 10 | 11 | export default (rootDir: string): Configuration => merge( 12 | baseConfig(rootDir), 13 | tsLoaderConfig('tsconfig.build.json'), 14 | { 15 | resolve: { 16 | extensions: ['.tsx', '.ts'], 17 | }, 18 | entry: path.join(rootDir, './src/index.ts'), 19 | }, 20 | ); 21 | -------------------------------------------------------------------------------- /packages/ui/lib/BoolUpdater/index.d.ts: -------------------------------------------------------------------------------- 1 | import ExactTypeKey from '../ExactTypeKey'; 2 | import StateDispatchable from '../StateDispatchable'; 3 | export default interface BoolUpdater { 4 | (key: ExactTypeKey): (c: AppCommander) => (s: State, e: Event) => StateDispatchable; 5 | } 6 | export declare const make: (updateAt: (k: K) => (v: Props[K]) => (c: AppCommander) => (s: State) => StateDispatchable) => BoolUpdater; 7 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/node/textInput/index.js: -------------------------------------------------------------------------------- 1 | import { Option as O, } from 'effect'; 2 | import { constant, pipe, } from 'effect/Function'; 3 | import { h, } from 'hyperapp'; 4 | import * as Ed from '../../Editable'; 5 | export default (action) => (value) => h('input', { 6 | style: { 7 | verticalAlign: 'middle', 8 | width: '5.5em', 9 | borderColor: Ed.hasError(value) ? '#f55' : null, 10 | }, 11 | maxlength: 20, 12 | value: pipe(value, Ed.text, O.getOrElse(constant(Ed.value(value)))), 13 | ...action, 14 | }); 15 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/webpack-config/src/devConfig/index.ts: -------------------------------------------------------------------------------- 1 | import path from 'path'; 2 | import { Configuration as WebpackConfiguration } from "webpack"; 3 | import { Configuration as WebpackDevServerConfiguration } from "webpack-dev-server"; 4 | 5 | interface Configuration extends WebpackConfiguration { 6 | devServer?: WebpackDevServerConfiguration; 7 | } 8 | 9 | export default (rootDir: string): Configuration => ({ 10 | mode: 'development', 11 | devServer: { 12 | static: { 13 | directory: path.join(rootDir, 'dist'), 14 | }, 15 | compress: false, 16 | }, 17 | }); 18 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/isEditable/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Array as A, 3 | } from 'effect'; 4 | 5 | import SettingState from '@/SettingState'; 6 | import UserConfig from '@/UserConfig'; 7 | 8 | const exceptions = [ 9 | 'timingFunction', 10 | 'lang', 11 | ] satisfies (keyof UserConfig & keyof SettingState)[]; 12 | 13 | export default ( 14 | k: string, 15 | ) => ( 16 | v: unknown, 17 | ) => (typeof v === 'number' 18 | || typeof v === 'string' 19 | || (Array.isArray(v) && (typeof v[0] === 'string' || v.length === 0))) 20 | && !A.some((x) => x === k)(exceptions); 21 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/script_info.txt: -------------------------------------------------------------------------------- 1 | Youtubeのチャットをニコニコ風に画面上へ流すスクリプトです(再アップ) 2 | Make Youtube live chats flow on videos in danmaku-style. 3 | 4 | 元スクリプト(バージョン1.12.2)の作成者(Emubure)じゃないです。 5 | 元スクリプトはなんとなく削除されました… 6 | これはバグ修正済みの再アップ。 7 | 8 | Changelog(更新履歴)(JP) 9 | Changelog(更新履歴)(EN) 10 | Source code(Github) 11 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/appendEventLog/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | LogLevel, 3 | pipe, 4 | } from 'effect'; 5 | 6 | import Log, * as log from '@/Log'; 7 | import maxEventLogBlockCount from '@/maxEventLogBlockCount'; 8 | import preserveEventLogBlockCount from '@/preserveEventLogBlockCount'; 9 | 10 | export default ( 11 | text: string, 12 | level: LogLevel.LogLevel['label'], 13 | ) => (x: Log): Log => pipe( 14 | x.compressedBlocks.length === maxEventLogBlockCount ? log.removeBlock( 15 | Math.floor(preserveEventLogBlockCount), 16 | )(x) : x, 17 | log.append(text, level), 18 | ); 19 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/getFlowChatProgress/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Either as E, 3 | Option as O, 4 | } from 'effect'; 5 | import AnimatingState from 'src/AnimatingState'; 6 | 7 | import flowDuration from '@/flowDuration'; 8 | 9 | export default (animationState: AnimatingState): number => animationState.pipe( 10 | E.match({ 11 | onLeft: O.none, 12 | onRight: O.some, 13 | }), 14 | O.flatMapNullable((x) => x.currentTime), 15 | O.map((x) => (typeof x === 'number' ? x : x.to('ms').value)), 16 | O.map((x) => x / flowDuration), 17 | O.getOrElse(() => 0), 18 | ); 19 | -------------------------------------------------------------------------------- /packages/ui/lib/setter/setEditColor/index.js: -------------------------------------------------------------------------------- 1 | import { Option as O, Tuple as Tu, } from 'effect'; 2 | import { constant, } from 'effect/Function'; 3 | import validateColor from 'validate-color'; 4 | import * as Ed from '../../Editable'; 5 | const setEditColor = (editing) => (value) => (editing ? (validateColor(value) 6 | ? constant(Ed.fromValueText(value)(value)) 7 | : Ed.setText(value)) 8 | : (validateColor(value) 9 | ? constant(Ed.of(value)) 10 | : Tu.mapSecond(constant(O.some([value, O.some('')]))))); 11 | export default setEditColor; 12 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/src/setter/setFilteredString/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Array as A, 3 | Option as O, 4 | String as Str, 5 | } from 'effect'; 6 | import { 7 | pipe, 8 | } from 'effect/Function'; 9 | 10 | import Setter from '@/setter/Setter'; 11 | 12 | const setFilteredString = ( 13 | allowedStrings: readonly S[], 14 | ): Setter => (value) => (state) => pipe( 15 | value, 16 | O.liftPredicate( 17 | (x): x is S => A.containsWith(Str.Equivalence)(allowedStrings, x), 18 | ), 19 | O.getOrElse(() => state), 20 | ); 21 | 22 | export default setFilteredString; 23 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/ChatData/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Option as O, 3 | } from 'effect'; 4 | 5 | export default interface ChatData { 6 | chatType: 'normal' | 'membership' | 'ticker' | 'engagement', 7 | authorType: 'owner' | 'moderator' | 'member' | 'normal', 8 | authorID: O.Option, 9 | authorName: O.Option, 10 | timestamp: O.Option, 11 | messageElement: O.Option, 12 | message: O.Option, 13 | messageText: O.Option, 14 | paymentInfo: O.Option, 15 | textColor: O.Option, 16 | paidColor: O.Option, 17 | } 18 | -------------------------------------------------------------------------------- /packages/ui/lib/InputUpdater/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/InputUpdater/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,IAAI,GACL,MAAM,iBAAiB,CAAC;AAGzB,OAAO,QAAQ,MAAM,YAAY,CAAC;AAoBlC,MAAM,CAAC,MAAM,IAAI,GAAG,CAKlB,QAEa,EACb,QAEgE,EAKhE,EAAE,CAAC,CACH,GAAM,EACN,EAAE,CAAC,CACH,MAAgC,EAChC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CACxB,QAAQ,CAAC,CAAC,CAAC,EACX,MAAM,EACN,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EACvB,QAAQ,CAAC,GAAG,CAAC,EACb,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACf,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/getValue/index.js: -------------------------------------------------------------------------------- 1 | export default (e) => { 2 | // eslint-disable-next-line max-len 3 | // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/consistent-type-assertions, @typescript-eslint/dot-notation 4 | const target = e.currentTarget ?? e['__target']; 5 | if (target instanceof HTMLSelectElement 6 | || target instanceof HTMLTextAreaElement 7 | || target instanceof HTMLInputElement) { 8 | return target.value; 9 | } 10 | throw Error('Event target type isn\'t acceptable.'); 11 | }; 12 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/src/getValue/index.ts: -------------------------------------------------------------------------------- 1 | export default (e: Event): string => { 2 | // eslint-disable-next-line max-len 3 | // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/consistent-type-assertions, @typescript-eslint/dot-notation 4 | const target = e.currentTarget ?? ((e as any)['__target'] as EventTarget); 5 | if (target instanceof HTMLSelectElement 6 | || target instanceof HTMLTextAreaElement 7 | || target instanceof HTMLInputElement) { 8 | return target.value; 9 | } 10 | 11 | throw Error('Event target type isn\'t acceptable.'); 12 | }; 13 | 14 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/type/UnknownType/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | pipe, 3 | } from 'effect'; 4 | 5 | import AssignGenericFunction from '@/type/AssignGenericFunction'; 6 | import type Type from '@/type/Type'; 7 | 8 | type UnknownType = { 9 | tag: 'unknown', 10 | }; 11 | 12 | export default UnknownType; 13 | 14 | export const unknown: UnknownType = { 15 | tag: 'unknown', 16 | }; 17 | 18 | export const assignGeneric = ( 19 | f: AssignGenericFunction, 20 | ): AssignGenericFunction => ( 21 | typeMap, 22 | ) => ( 23 | expected, 24 | ) => ( 25 | synthed, 26 | ) => pipe(); 27 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/videoToggleStream/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Array as A, 3 | pipe, 4 | } from 'effect'; 5 | import { 6 | fromEvent, 7 | merge, 8 | Observable, 9 | map, 10 | } from 'rxjs'; 11 | 12 | export default (video: HTMLVideoElement): Observable => pipe( 13 | [['playing'], ['waiting', 'pause']], 14 | A.map((x, i) => [x, i === 0] as const), 15 | A.flatMap(([xs, b]) => pipe( 16 | xs, 17 | A.map((x) => [x, b] as const), 18 | )), 19 | A.map(([x, b]) => pipe( 20 | fromEvent(video, x), 21 | map(() => b), 22 | )), 23 | (x) => merge(...x), 24 | ); 25 | -------------------------------------------------------------------------------- /packages/ui/lib/setter/setEditInt/index.js: -------------------------------------------------------------------------------- 1 | import { Option as O, Tuple as Tu, } from 'effect'; 2 | import { pipe, constant, } from 'effect/Function'; 3 | import * as Ed from '../../Editable'; 4 | const setEditInt = (editing) => (value) => (state) => pipe(value, Number.parseInt, editing 5 | ? (x) => (Number.isNaN(x) || value.at(-1) === '.' 6 | ? pipe(state, Ed.setText(value)) : Ed.fromValueText(x)(value)) 7 | : (x) => (Number.isNaN(x) 8 | ? pipe(state, Tu.mapSecond(constant(O.some([value, O.some('')])))) : Ed.of(x))); 9 | export default setEditInt; 10 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/configEffect/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Effect as Z, 3 | } from 'effect'; 4 | import { 5 | Effect, 6 | } from 'hyperapp'; 7 | 8 | import AppCommander from '@/AppCommander'; 9 | import SettingState from '@/SettingState'; 10 | import UserConfig from '@/UserConfig'; 11 | 12 | export default ( 13 | k: T, 14 | v: UserConfig[T], 15 | ): (c: AppCommander) => Effect => ( 16 | c, 17 | // eslint-disable-next-line @typescript-eslint/consistent-type-assertions 18 | ) => () => Z.runPromise(c.provideLog(c.setConfig[k](v as never))); 19 | -------------------------------------------------------------------------------- /packages/ui/config/webpack.config.prod.ts: -------------------------------------------------------------------------------- 1 | import umdLibConfig from '@userscript/webpack-config/umdLibConfig'; 2 | import { 3 | Configuration, 4 | } from 'webpack'; 5 | import { 6 | BundleAnalyzerPlugin, 7 | } from 'webpack-bundle-analyzer'; 8 | import { 9 | merge, 10 | } from 'webpack-merge'; 11 | 12 | import webpackConfigBase from './webpack.config.base'; 13 | 14 | export default merge( 15 | webpackConfigBase, 16 | umdLibConfig('ui'), 17 | { 18 | plugins: [ 19 | new BundleAnalyzerPlugin({ 20 | analyzerMode: 'static', 21 | }), 22 | ], 23 | }, 24 | ); 25 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/restrictedExpression/NumberLiteral/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | pipe, 3 | } from 'effect'; 4 | 5 | import TaggedValue, { 6 | makeType, 7 | } from '@/TaggedValue'; 8 | import TypedNumber from '@/typedExpression/TypedNumber'; 9 | 10 | type NumberLiteral = TaggedValue<'numberLiteral', { 11 | value: number 12 | }>; 13 | 14 | export const of = makeType('numberLiteral'); 15 | 16 | export const fromTypedExp = ({ 17 | value, 18 | }: TypedNumber): NumberLiteral => pipe( 19 | { 20 | value: value.value, 21 | }, 22 | of, 23 | ); 24 | 25 | export default NumberLiteral; 26 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/restrictedExpression/StringLiteral/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | pipe, 3 | } from 'effect'; 4 | 5 | import TaggedValue, { 6 | makeType, 7 | } from '@/TaggedValue'; 8 | import TypedString from '@/typedExpression/TypedString'; 9 | 10 | type StringLiteral = TaggedValue<'stringLiteral', { 11 | value: string 12 | }>; 13 | 14 | export const of = makeType('stringLiteral'); 15 | 16 | export const fromTypedExp = ({ 17 | value, 18 | }: TypedString): StringLiteral => pipe( 19 | { 20 | value: value.value, 21 | }, 22 | of, 23 | ); 24 | 25 | export default StringLiteral; 26 | -------------------------------------------------------------------------------- /packages/ui/lib/setter/setEditNumber/index.js: -------------------------------------------------------------------------------- 1 | import { Option as O, Tuple as Tu, } from 'effect'; 2 | import { pipe, constant, } from 'effect/Function'; 3 | import * as Ed from '../../Editable'; 4 | const setEditNumber = (editing) => (value) => (state) => pipe(value, Number.parseFloat, editing 5 | ? (x) => (Number.isNaN(x) || value.at(-1) === '.' 6 | ? pipe(state, Ed.setText(value)) : Ed.fromValueText(x)(value)) 7 | : (x) => (Number.isNaN(x) 8 | ? pipe(state, Tu.mapSecond(constant(O.some([value, O.some('')])))) : Ed.of(x))); 9 | export default setEditNumber; 10 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/setter/setFilteredString/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/setter/setFilteredString/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,IAAI,CAAC,EACV,MAAM,IAAI,CAAC,EACX,MAAM,IAAI,GAAG,GACd,MAAM,QAAQ,CAAC;AAChB,OAAO,EACL,IAAI,GACL,MAAM,iBAAiB,CAAC;AAIzB,MAAM,iBAAiB,GAAG,CACxB,cAA4B,EACT,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAChD,KAAK,EACL,CAAC,CAAC,aAAa,CACb,CAAC,CAAC,EAAU,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAClE,EACD,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CACzB,CAAC;AAEF,eAAe,iBAAiB,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/wrapApp/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wrapApp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,IAAI,CAAC,GACZ,MAAM,QAAQ,CAAC;AAChB,OAAO,EACL,IAAI,GACL,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,GAAG,GACJ,MAAM,UAAU,CAAC;AAKlB,eAAe,CACb,IAAsB,EACtB,IAAO,EACkB,EAAE,CAAC,IAAI,CAChC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAC9C,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAChC,IAAI;IACJ,QAAQ,EAAE,GAAG,CAAC;QACZ,IAAI;QACJ,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI;KACL,CAAC;CACH,CACA,CAAC,CAAC,CACJ,CAAC"} -------------------------------------------------------------------------------- /packages/webpack-config/lib/styleLoaderConfig/index.js: -------------------------------------------------------------------------------- 1 | export default ({ 2 | module: { 3 | rules: [ 4 | { 5 | test: /\.css$/, 6 | use: [ 7 | { 8 | loader: 'style-loader', 9 | }, 10 | { 11 | loader: 'css-loader', 12 | }, 13 | { 14 | loader: 'postcss-loader', 15 | }, 16 | ], 17 | }, 18 | ], 19 | }, 20 | }); 21 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/forward-to/config/webpack.config.prod.ts: -------------------------------------------------------------------------------- 1 | import umdLibConfig from '@userscript/webpack-config/umdLibConfig'; 2 | import { 3 | Configuration, 4 | } from 'webpack'; 5 | import { 6 | BundleAnalyzerPlugin, 7 | } from 'webpack-bundle-analyzer'; 8 | import { 9 | merge, 10 | } from 'webpack-merge'; 11 | 12 | import webpackConfigBase from './webpack.config.base'; 13 | 14 | export default merge( 15 | webpackConfigBase, 16 | umdLibConfig('forwardTo'), 17 | { 18 | plugins: [ 19 | new BundleAnalyzerPlugin({ 20 | analyzerMode: 'static', 21 | }), 22 | ], 23 | }, 24 | ); 25 | -------------------------------------------------------------------------------- /packages/tap-non-null/config/webpack.config.prod.ts: -------------------------------------------------------------------------------- 1 | import umdLibConfig from '@userscript/webpack-config/umdLibConfig'; 2 | import { 3 | Configuration, 4 | } from 'webpack'; 5 | import { 6 | BundleAnalyzerPlugin, 7 | } from 'webpack-bundle-analyzer'; 8 | import { 9 | merge, 10 | } from 'webpack-merge'; 11 | 12 | import webpackConfigBase from './webpack.config.base'; 13 | 14 | export default merge( 15 | webpackConfigBase, 16 | umdLibConfig('tapNonNull'), 17 | { 18 | plugins: [ 19 | new BundleAnalyzerPlugin({ 20 | analyzerMode: 'static', 21 | }), 22 | ], 23 | }, 24 | ); 25 | -------------------------------------------------------------------------------- /packages/ui/lib/node/index.js: -------------------------------------------------------------------------------- 1 | import checkboxRow from '../node/checkboxRow'; 2 | import colorPicker from '../node/colorPicker'; 3 | import colorTextOutput from '../node/colorTextOutput'; 4 | import option from '../node/option'; 5 | import rangeRow from '../node/rangeRow'; 6 | import settingRow from '../node/settingRow'; 7 | import tabContainer from '../node/tabContainer'; 8 | import textAreaRow from '../node/textAreaRow'; 9 | import textInput from '../node/textInput'; 10 | export { checkboxRow, colorPicker, colorTextOutput, option, rangeRow, settingRow, tabContainer, textAreaRow, textInput, }; 11 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/restrictedExpression/BooleanLiteral/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | pipe, 3 | } from 'effect'; 4 | 5 | import TaggedValue, { 6 | makeType, 7 | } from '@/TaggedValue'; 8 | import TypedBoolean from '@/typedExpression/TypedBoolean'; 9 | 10 | type BooleanLiteral = TaggedValue<'booleanLiteral', { 11 | value: boolean 12 | }>; 13 | 14 | export const of = makeType('booleanLiteral'); 15 | 16 | export const fromTypedExp = ({ 17 | value, 18 | }: TypedBoolean): BooleanLiteral => pipe( 19 | { 20 | value: value.value, 21 | }, 22 | of, 23 | ); 24 | 25 | export default BooleanLiteral; 26 | -------------------------------------------------------------------------------- /packages/ui/lib/appNode/checkboxNode/index.d.ts: -------------------------------------------------------------------------------- 1 | import { VNode } from 'hyperapp'; 2 | import BoolUpdater from '../../BoolUpdater'; 3 | import ExactTypeKey from '../../ExactTypeKey'; 4 | import AppTextGetter from '../../appNode/AppTextGetter'; 5 | declare const _default: >(getText: AppTextGetter, getState: >(k: K) => (s: State) => boolean, updateBool: BoolUpdater) => (label: Key) => (c: AppCommander) => (s: State) => VNode; 6 | export default _default; 7 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/node/index.d.ts: -------------------------------------------------------------------------------- 1 | import checkboxRow from '../node/checkboxRow'; 2 | import colorPicker from '../node/colorPicker'; 3 | import colorTextOutput from '../node/colorTextOutput'; 4 | import option from '../node/option'; 5 | import rangeRow from '../node/rangeRow'; 6 | import settingRow from '../node/settingRow'; 7 | import tabContainer from '../node/tabContainer'; 8 | import textAreaRow from '../node/textAreaRow'; 9 | import textInput from '../node/textInput'; 10 | export { checkboxRow, colorPicker, colorTextOutput, option, rangeRow, settingRow, tabContainer, textAreaRow, textInput, }; 11 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/appNode/intNode/index.d.ts: -------------------------------------------------------------------------------- 1 | declare const _default: >>(editAction: import("../..").EditAction, getText: import("..").AppTextGetter, getState: >>(k: K) => (s: State) => import("../..").Editable) => (label: Key, min: number, max: number, step: number) => (c: AppCommander) => (s: State) => import("hyperapp").VNode; 2 | export default _default; 3 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/appNode/numberNode/index.d.ts: -------------------------------------------------------------------------------- 1 | declare const _default: >>(editAction: import("../..").EditAction, getText: import("..").AppTextGetter, getState: >>(k: K) => (s: State) => import("../..").Editable) => (label: Key, min: number, max: number, step: number) => (c: AppCommander) => (s: State) => import("hyperapp").VNode; 2 | export default _default; 3 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/setter/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/setter/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAC1C,OAAO,YAAY,MAAM,uBAAuB,CAAC;AACjD,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAC7C,OAAO,aAAa,MAAM,wBAAwB,CAAC;AACnD,OAAO,cAAc,MAAM,yBAAyB,CAAC;AACrD,OAAO,aAAa,MAAM,wBAAwB,CAAC;AACnD,OAAO,cAAc,MAAM,yBAAyB,CAAC;AACrD,OAAO,iBAAiB,MAAM,4BAA4B,CAAC;AAC3D,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EACL,UAAU,EACV,MAAM,EACN,YAAY,EACZ,UAAU,EACV,aAAa,EACb,cAAc,EACd,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,UAAU,GACX,CAAC"} -------------------------------------------------------------------------------- /packages/ui/src/wrapApp/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Effect as Z, 3 | } from 'effect'; 4 | import { 5 | pipe, 6 | } from 'effect/Function'; 7 | import { 8 | app, 9 | } from 'hyperapp'; 10 | 11 | import RootComponent from '@/RootComponent'; 12 | import WrappedApp from '@/WrappedApp'; 13 | 14 | export default ( 15 | comp: RootComponent, 16 | init: T, 17 | ): Z.Effect> => pipe( 18 | Z.sync(() => document.createElement(comp.tag)), 19 | Z.flatMap((node) => Z.sync(() => ({ 20 | node, 21 | dispatch: app({ 22 | init, 23 | view: comp.view, 24 | node, 25 | }), 26 | } 27 | ))), 28 | ); 29 | -------------------------------------------------------------------------------- /packages/cdn-from-dependency/config/webpack.config.prod.ts: -------------------------------------------------------------------------------- 1 | import umdLibConfig from '@userscript/webpack-config/umdLibConfig'; 2 | import { 3 | Configuration, 4 | } from 'webpack'; 5 | import { 6 | BundleAnalyzerPlugin, 7 | } from 'webpack-bundle-analyzer'; 8 | import { 9 | merge, 10 | } from 'webpack-merge'; 11 | 12 | import webpackConfigBase from './webpack.config.base'; 13 | 14 | export default merge( 15 | webpackConfigBase, 16 | umdLibConfig('cdnFromDependency'), 17 | { 18 | plugins: [ 19 | new BundleAnalyzerPlugin({ 20 | analyzerMode: 'static', 21 | }), 22 | ], 23 | }, 24 | ); 25 | -------------------------------------------------------------------------------- /packages/ui/lib/node/textAreaRow/index.js: -------------------------------------------------------------------------------- 1 | import { Array as A, Option as O, } from 'effect'; 2 | import { constant, pipe, } from 'effect/Function'; 3 | import { h, } from 'hyperapp'; 4 | import * as Ed from '../../Editable'; 5 | export default (rows, action) => (value) => h('textarea', { 6 | rows, 7 | style: { 8 | resize: 'none', 9 | boxSizing: 'border-box', 10 | width: '100%', 11 | borderColor: Ed.hasError(value) ? '#f55' : null, 12 | }, 13 | value: pipe(value, Ed.text, O.getOrElse(pipe(Ed.value(value), A.join('\n'), constant))), 14 | ...action, 15 | }); 16 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/appNode/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/appNode/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAC;AACzD,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,SAAS,MAAM,qBAAqB,CAAC;AAC5C,OAAO,OAAO,MAAM,mBAAmB,CAAC;AACxC,OAAO,UAAU,MAAM,sBAAsB,CAAC;AAC9C,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,iBAAiB,MAAM,6BAA6B,CAAC;AAC5D,OAAO,iBAAiB,MAAM,6BAA6B,CAAC;AAC5D,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,aAAa,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,SAAS,EACT,OAAO,EACP,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,aAAa,GACd,CAAC"} -------------------------------------------------------------------------------- /packages/custom-sort/config/webpack.config.dev.ts: -------------------------------------------------------------------------------- 1 | import devConfig from '@userscript/webpack-config/devConfig'; 2 | import path from 'path'; 3 | import { 4 | Configuration, 5 | } from 'webpack'; 6 | import { 7 | merge, 8 | } from 'webpack-merge'; 9 | 10 | import userscriptPlugin from './userscriptPlugin'; 11 | import webpackConfigBase from './webpack.config.base'; 12 | 13 | export default merge( 14 | webpackConfigBase, 15 | devConfig(path.join(__dirname, '../')), 16 | { 17 | devServer: { 18 | hot: false, 19 | }, 20 | devtool: 'eval-source-map', 21 | plugins: [userscriptPlugin(true)], 22 | }, 23 | ); 24 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/getFlowChatRect/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | pipe, 3 | } from 'effect'; 4 | 5 | import FlowChat from '@/FlowChat'; 6 | import UserConfig from '@/UserConfig'; 7 | import getFlowChatProgress from '@/getFlowChatProgress'; 8 | 9 | export default ( 10 | chat: FlowChat, 11 | config: UserConfig, 12 | playerRect: DOMRectReadOnly, 13 | ): DOMRectReadOnly => pipe( 14 | config, 15 | (x) => (playerRect.width * x.flowX2) 16 | - ((chat.width + (playerRect.width * ( 17 | x.flowX2 - x.flowX1 18 | ))) * getFlowChatProgress(chat.animationState)), 19 | (x) => new DOMRectReadOnly(x, chat.y, chat.width, chat.height), 20 | ); 21 | -------------------------------------------------------------------------------- /packages/ui/lib/appNode/numericNode/index.js: -------------------------------------------------------------------------------- 1 | import errorText from '../../errorText'; 2 | import rangeRow from '../../node/rangeRow'; 3 | import settingRow from '../../node/settingRow'; 4 | export default (setter) => (editAction, getText, getState) => (label, min, max, step) => (c) => (s) => settingRow(getText(label)(s), errorText(getText('inputNonNumberic')(s))(getState(label)(s)), [ 5 | rangeRow({ 6 | min, 7 | max, 8 | step, 9 | }, 10 | // eslint-disable-next-line @typescript-eslint/consistent-type-assertions 11 | editAction(label, setter)(c))(getState(label)(s)), 12 | ]); 13 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/ui/lib/appNode/plainTextAreaNode/index.d.ts: -------------------------------------------------------------------------------- 1 | declare const _default: >>(editAction: import("../..").EditAction, getText: import("..").AppTextGetter, getState: >>(k: K) => (s: State) => import("../..").Editable) => (label: Key, rows: number) => (c: AppCommander) => (s: State) => import("hyperapp").VNode; 2 | export default _default; 3 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/appNode/regexTextAreaNode/index.d.ts: -------------------------------------------------------------------------------- 1 | declare const _default: >>(editAction: import("../..").EditAction, getText: import("..").AppTextGetter, getState: >>(k: K) => (s: State) => import("../..").Editable) => (label: Key, rows: number) => (c: AppCommander) => (s: State) => import("hyperapp").VNode; 2 | export default _default; 3 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/flow-youtube-chat/config/webpack.config.dev.ts: -------------------------------------------------------------------------------- 1 | import devConfig from '@userscript/webpack-config/devConfig'; 2 | import path from 'path'; 3 | import { 4 | Configuration, 5 | } from 'webpack'; 6 | import { 7 | merge, 8 | } from 'webpack-merge'; 9 | 10 | import userscriptPlugin from './userscriptPlugin'; 11 | import webpackConfigBase from './webpack.config.base'; 12 | 13 | export default merge( 14 | webpackConfigBase, 15 | devConfig(path.join(__dirname, '../')), 16 | { 17 | devServer: { 18 | hot: false, 19 | }, 20 | devtool: 'eval-source-map', 21 | plugins: [userscriptPlugin(true)], 22 | }, 23 | ); 24 | -------------------------------------------------------------------------------- /packages/ui/lib/appNode/checkboxNode/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/appNode/checkboxNode/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACN,MAAM,UAAU,CAAC;AAElB,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,aAAa,MAAM,yBAAyB,CAAC;yBAMlD,KAAK,EACL,KAAK,EACL,YAAY,EACZ,GAAG,SAAS,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,EAExC,SAAS,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,EAClC,UAAU,CAAC,CAAC,SAAS,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,EAC/C,CAAC,EAAE,CAAC,KACD,CAAC,CAAC,EAAE,KAAK,KAAK,OAAO,EAC1B,YAAY,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,MAEnD,OAAO,GAAG,MAEV,GAAG,YAAY,MAEf,GAAG,KAAK,KACP,KAAK,CAAC,KAAK,CAAC;AAjBf,wBAqBE"} -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/MappedConfigState/index.ts: -------------------------------------------------------------------------------- 1 | import Editable from '@userscript/ui/Editable'; 2 | 3 | import UserConfig from '@/UserConfig'; 4 | // import Expression from '@/settingUI/editableExpression/Expression'; 5 | 6 | type MappedConfigState = { 7 | [P in keyof UserConfig]: UserConfig[P] extends number 8 | | string 9 | | readonly string[] 10 | ? P extends Exclude 11 | ? Editable 12 | : UserConfig[P] 13 | : P extends 'filterExp' 14 | ? undefined 15 | // ? Expression 16 | : UserConfig[P]; 17 | }; 18 | 19 | export default MappedConfigState; 20 | 21 | -------------------------------------------------------------------------------- /packages/ui/lib/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAI7C,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAE/C,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAK/C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAErC,OAAO,EAKL,WAAW,EAIX,UAAU,EAEV,YAAY,EAEZ,YAAY,EAKZ,OAAO,EACP,SAAS,EACT,UAAU,EACV,QAAQ,EACR,IAAI,EAEJ,aAAa,EACb,MAAM,EACN,OAAO,GACR,CAAC"} -------------------------------------------------------------------------------- /packages/ui/src/node/index.ts: -------------------------------------------------------------------------------- 1 | import checkboxRow from '@/node/checkboxRow'; 2 | import colorPicker from '@/node/colorPicker'; 3 | import colorTextOutput from '@/node/colorTextOutput'; 4 | import option from '@/node/option'; 5 | import rangeRow from '@/node/rangeRow'; 6 | import settingRow from '@/node/settingRow'; 7 | import tabContainer from '@/node/tabContainer'; 8 | import textAreaRow from '@/node/textAreaRow'; 9 | import textInput from '@/node/textInput'; 10 | 11 | export { 12 | checkboxRow, 13 | colorPicker, 14 | colorTextOutput, 15 | option, 16 | rangeRow, 17 | settingRow, 18 | tabContainer, 19 | textAreaRow, 20 | textInput, 21 | }; 22 | 23 | -------------------------------------------------------------------------------- /packages/ui/lib/InputUpdater/index.d.ts: -------------------------------------------------------------------------------- 1 | import StateDispatchable from '../StateDispatchable'; 2 | import { Setter } from '../setter'; 3 | export default interface InputUpdater { 4 | (key: K): (setter: Setter) => (c: AppCommander) => (s: State, e: Event) => StateDispatchable; 5 | } 6 | export declare const make: (getState: (k: K) => (s: State) => Props[K], updateAt: (k: K) => (v: Props[K]) => (c: AppCommander) => (s: State) => StateDispatchable) => InputUpdater; 7 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/flow-youtube-chat/filter_logic.md: -------------------------------------------------------------------------------- 1 | {1, 2} (unit) -> { 2 | a: {1} 1 -> {} ({2} 1 -> 2) -> [1, 2], 3 | b: {1} 1 -> {2} ({} 1 -> 2) -> [1, 2], 4 | c: {2} (1 -> 2) -> {} 1 -> [1, 2], 5 | } 6 | 7 | g: {1, 2} 2 -> 1 8 | h: {} str -> bool 9 | 10 | {} 11 | [unknown, string] 12 | x().a(5)(g) 13 | 14 | {} 15 | {} (unknown) -> [unknown, string] 16 | x().a() 17 | 18 | {} 19 | {} (unknown) -> {} (unknown) -> [unknown, string] 20 | x().a 21 | 22 | {} 23 | { 24 | a: {} (unknown) -> {} (unknown) -> [unknown, string] 25 | } 26 | x() 27 | 28 | {} 29 | (unknown) -> { 30 | a: {} (unknown) -> {} (unknown) -> [unknown, string] 31 | } 32 | x 33 | 34 | 35 | tesat.t -> tesat['t'] 36 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/MainState/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | SynchronizedRef, 3 | } from 'effect'; 4 | 5 | import FlowChat from '@/FlowChat'; 6 | import UserConfig from '@/UserConfig'; 7 | import UserConfigGetter from '@/UserConfigGetter'; 8 | import UserConfigSetter from '@/UserConfigSetter'; 9 | 10 | export default interface MainState { 11 | chatPlaying: SynchronizedRef.SynchronizedRef; 12 | playerRect: SynchronizedRef.SynchronizedRef; 13 | config: { 14 | value: UserConfig, 15 | getConfig: UserConfigGetter, 16 | setConfig: UserConfigSetter, 17 | }, 18 | flowChats: SynchronizedRef.SynchronizedRef; 19 | } 20 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingUI/checkboxNode/index.ts: -------------------------------------------------------------------------------- 1 | import checkboxNode from '@userscript/ui/appNode/checkboxNode'; 2 | 3 | import AppCommander from '@/AppCommander'; 4 | import SettingState from '@/SettingState'; 5 | import TextKey from '@/TextKey'; 6 | import getText from '@/getText'; 7 | import SettingKey from '@/settingUI/SettingKey'; 8 | import SettingProps from '@/settingUI/SettingProps'; 9 | import getState from '@/settingUI/getState'; 10 | import updateBool from '@/settingUI/updateBool'; 11 | 12 | export default checkboxNode< 13 | SettingState, 14 | SettingProps, 15 | AppCommander, 16 | SettingKey & TextKey 17 | >(getText, getState, updateBool); 18 | 19 | -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/settingsComponent/index.ts: -------------------------------------------------------------------------------- 1 | import RootComponent, { 2 | makeComponent, 3 | } from '@userscript/ui/RootComponent'; 4 | import { 5 | pipe, 6 | } from 'effect'; 7 | import { 8 | h, 9 | } from 'hyperapp'; 10 | 11 | import AppCommander from '@/AppCommander'; 12 | import SettingState from '@/SettingState'; 13 | import settingsPanel from '@/settingsPanel'; 14 | 15 | export default ( 16 | command: AppCommander, 17 | ): RootComponent => pipe( 18 | settingsPanel(command), 19 | (panel) => makeComponent((tag) => (s: SettingState) => h(tag, { 20 | style: { 21 | display: 'contents', 22 | }, 23 | }, panel(s)))('span'), 24 | ); 25 | -------------------------------------------------------------------------------- /packages/ui/lib/appNode/colorNode/index.d.ts: -------------------------------------------------------------------------------- 1 | import { VNode } from 'hyperapp'; 2 | import EditAction from '../../EditAction'; 3 | import Editable from '../../Editable'; 4 | import ExactTypeKey from '../../ExactTypeKey'; 5 | import AppTextGetter from '../../appNode/AppTextGetter'; 6 | declare const _default: >>(editAction: EditAction, getText: AppTextGetter, getState: >>(k: K) => (s: State) => Editable) => (label: Key) => (c: AppCommander) => (s: State) => VNode; 7 | export default _default; 8 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/src/setter/setEditStrings/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Array as A, 3 | Option as O, 4 | Predicate as P, 5 | String as Str, 6 | } from 'effect'; 7 | import { 8 | pipe, 9 | constant, 10 | } from 'effect/Function'; 11 | 12 | import Editable, * as Ed from '@/Editable'; 13 | import EditSetter from '@/setter/EditSetter'; 14 | 15 | const setEditStrings: EditSetter> = ( 16 | editing, 17 | ) => ( 18 | value, 19 | ) => pipe( 20 | value, 21 | Str.split(/\r\n|\n/), 22 | A.filter(P.not(Str.isEmpty)), 23 | (x) => constant( 24 | editing ? [x, O.some([value, O.none()])] 25 | : Ed.of(x), 26 | ), 27 | ); 28 | 29 | export default setEditStrings; 30 | -------------------------------------------------------------------------------- /packages/ui/lib/BoolUpdater/index.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/BoolUpdater/index.ts"],"names":[],"mappings":"AAMA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAGpD,MAAM,CAAC,OAAO,WAAW,WAAW,CAClC,KAAK,EACL,KAAK,EACL,YAAY;IAEZ,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CACnC,CAAC,EAAE,YAAY,KACZ,CACH,CAAC,EAAE,KAAK,EACR,CAAC,EAAE,KAAK,KACL,iBAAiB,CAAC,KAAK,CAAC,CAAA;CAC9B;AAED,eAAO,MAAM,IAAI,GACf,KAAK,EACL,KAAK,EACL,YAAY,EAEZ,UAAU,CAAC,CAAC,SAAS,MAAM,KAAK,EAAE,CAAC,EAAE,CAAC,KAAK,CACzC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,KACR,CAAC,CAAC,EAAE,YAAY,KAAK,CAAC,CAAC,EAAE,KAAK,KAAK,iBAAiB,CAAC,KAAK,CAAC,KAC/D,WAAW,CACd,KAAK,EACL,KAAK,EACL,YAAY,CASV,CAAC"} -------------------------------------------------------------------------------- /packages/ui/lib/EditAction/index.d.ts: -------------------------------------------------------------------------------- 1 | import InputUpdater from '../InputUpdater'; 2 | import StateDispatchable from '../StateDispatchable'; 3 | import EditSetter from '../setter/EditSetter'; 4 | export default interface EditAction { 5 | (key: K, setter: EditSetter): (c: AppCommander) => { 6 | oninput: (s: State, e: Event) => StateDispatchable; 7 | onchange: (s: State, e: Event) => StateDispatchable; 8 | }; 9 | } 10 | export declare const make: (updateInput: InputUpdater) => EditAction; 11 | //# sourceMappingURL=index.d.ts.map -------------------------------------------------------------------------------- /packages/ui/lib/appNode/index.js: -------------------------------------------------------------------------------- 1 | import checkboxNode from '../appNode/checkboxNode'; 2 | import colorNode from '../appNode/colorNode'; 3 | import intNode from '../appNode/intNode'; 4 | import numberNode from '../appNode/numberNode'; 5 | import numericNode from '../appNode/numericNode'; 6 | import plainTextAreaNode from '../appNode/plainTextAreaNode'; 7 | import regexTextAreaNode from '../appNode/regexTextAreaNode'; 8 | import textAreaNode from '../appNode/textAreaNode'; 9 | import textColorNode from '../appNode/textColorNode'; 10 | export { checkboxNode, colorNode, intNode, numberNode, numericNode, plainTextAreaNode, regexTextAreaNode, textAreaNode, textColorNode, }; 11 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/mainCss/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Effect as Z, 3 | pipe, 4 | } from 'effect'; 5 | 6 | export default pipe( 7 | Z.sync(() => document.createElement('style')), 8 | Z.tap((x) => Z.sync(() => { 9 | // eslint-disable-next-line no-param-reassign 10 | x.textContent = `.fyc_chat { 11 | line-height: 1; 12 | z-index: 30; 13 | position: absolute; 14 | user-select: none; 15 | white-space: nowrap; 16 | will-change: transform; 17 | } 18 | .fyc_button { 19 | display: inline-block; 20 | border-style: none; 21 | z-index: 4; 22 | font-weight: 500; 23 | color: var(--yt-spec-text-secondary); 24 | }`; 25 | })), 26 | ) satisfies Z.Effect; 27 | -------------------------------------------------------------------------------- /packages/ui/lib/setter/index.js: -------------------------------------------------------------------------------- 1 | import setEditColor from '../setter/setEditColor'; 2 | import setEditInt from '../setter/setEditInt'; 3 | import setEditNumber from '../setter/setEditNumber'; 4 | import setEditRegexes from '../setter/setEditRegexes'; 5 | import setEditString from '../setter/setEditString'; 6 | import setEditStrings from '../setter/setEditStrings'; 7 | import setFilteredString from '../setter/setFilteredString'; 8 | import setString from '../setter/setString'; 9 | import setStrings from '../setter/setStrings'; 10 | export { setEditColor, setEditInt, setEditNumber, setEditRegexes, setEditString, setEditStrings, setFilteredString, setString, setStrings, }; 11 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /packages/flow-youtube-chat/src/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Effect as Z, 3 | pipe, 4 | } from 'effect'; 5 | import { 6 | Dispatch, 7 | } from 'hyperapp'; 8 | import { 9 | BehaviorSubject, 10 | } from 'rxjs'; 11 | 12 | import SettingState from '@/SettingState'; 13 | import initialize from '@/initialize'; 14 | import provideLog from '@/provideLog'; 15 | 16 | Z.runPromise(pipe( 17 | // eslint-disable-next-line func-names 18 | Z.gen(function* () { 19 | const settingUpdateApps = new BehaviorSubject[]>([]); 20 | yield* initialize({ 21 | settingUpdateApps, 22 | provideLog: provideLog(settingUpdateApps), 23 | }); 24 | }), 25 | Z.withConcurrency(30), 26 | )); 27 | --------------------------------------------------------------------------------