Initial Commit from Ember CLI v6.9.1
_...,
,:^;,...;
-+===;. ,,--++====++-,,, .: /.....,
:::::~+++++#:,+#++++++++++++++++++#*..: /,......
(,,,,,,::=+++##++++++++++++++++++++++#. :....../
...,,,,,::++++++++++++++++++++++++++++++*..,...:
*..+...,#@@@@@@@@@++++++++++++++++++++++#*....*
@#,;##############@@@+*+#@@@@@@@@@@#*++#..<
*@##@@+,-*^^^*-+@####@@@######@@@#####@@,,,+
@#@* @#@@@@#@@+--*^^*--#@@@@@@#
@#@. @# @##+++@#, .@@#@@
#@# @@ +@@++++#@@ @@ :@@
:@#* @#@++++++@#* #@ @@+
:*+@@#;,.__.+@#@+,-^^.++@# @@++
;* :*@@@##@@@@;++r._j^.+@##@+,.__,,@@++.
/* ........+++++++++++++#@@@@@###@@#++++,
,: ...,@@@#++===----==@@@####,,....+++++
.: ......@@##@\ ; :@####@,,...... +++.
; .........@###, ; ;xx#@;,,..... *;+,
| ........,*;xxxx--^--=xxx,........ :+#;
; ......,,;xxxxxxxxxxxxx;,..... *+#
; ......,::xxxx;. ...... +. .
*; ......... +### .... / ,. /:| ,.
.+: ... ;##++##, . ,#. (..v..;*./
** ## ###* .:*&&&+. \.,....<,
#&+**==-..,,__ ;## ### :,*+&&&&&&&v+#&,,.._/
#&&&&*...,::,,. ##; ,##* .*****;:&&&&&&&&&
,+*+;~*..*** *.* ### ###* ******* *+#&;*
##,;## **** :, **
##### ## ### ###, ######## .##### ;## ##
####### ;## #### ,###. ########## ######## ### ####
### ### ### ########## #### #### ,## ### #######*
### ,### ##############: ## ### #### ,## :#### ### ##;
########## ########### ## .## ,### ####### ##### :######
###### .###### #### ## ### ### ######* :##### ####
############# #### ################ ######## ###
#####* *#* #: :### *###* *#### #*
This commit is contained in:
19
.editorconfig
Normal file
19
.editorconfig
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# EditorConfig helps developers define and maintain consistent
|
||||||
|
# coding styles between different editors and IDEs
|
||||||
|
# https://editorconfig.org/
|
||||||
|
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
end_of_line = lf
|
||||||
|
charset = utf-8
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
insert_final_newline = true
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
[*.hbs]
|
||||||
|
insert_final_newline = false
|
||||||
|
|
||||||
|
[*.{diff,md}]
|
||||||
|
trim_trailing_whitespace = false
|
||||||
8
.env.development
Normal file
8
.env.development
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# This file is committed to git and should not contain any secrets.
|
||||||
|
#
|
||||||
|
# Vite recommends using .env.local or .env.[mode].local if you need to manage secrets
|
||||||
|
# SEE: https://vite.dev/guide/env-and-mode.html#env-files for more information.
|
||||||
|
|
||||||
|
|
||||||
|
# Default NODE_ENV with vite build --mode=test is production
|
||||||
|
NODE_ENV=development
|
||||||
53
.github/workflows/ci.yml
vendored
Normal file
53
.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
name: CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
pull_request: {}
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ci-${{ github.head_ref || github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint:
|
||||||
|
name: "Lint"
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 10
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
- uses: pnpm/action-setup@v4
|
||||||
|
with:
|
||||||
|
version: 10
|
||||||
|
- name: Install Node
|
||||||
|
uses: actions/setup-node@v6
|
||||||
|
with:
|
||||||
|
node-version: 22
|
||||||
|
cache: pnpm
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
- name: Lint
|
||||||
|
run: pnpm lint
|
||||||
|
|
||||||
|
test:
|
||||||
|
name: "Test"
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 10
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
- uses: pnpm/action-setup@v4
|
||||||
|
with:
|
||||||
|
version: 10
|
||||||
|
- name: Install Node
|
||||||
|
uses: actions/setup-node@v6
|
||||||
|
with:
|
||||||
|
node-version: 22
|
||||||
|
cache: pnpm
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
- name: Run Tests
|
||||||
|
run: pnpm test
|
||||||
25
.gitignore
vendored
Normal file
25
.gitignore
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# compiled output
|
||||||
|
/dist/
|
||||||
|
/tmp/
|
||||||
|
|
||||||
|
# dependencies
|
||||||
|
/node_modules/
|
||||||
|
|
||||||
|
# misc
|
||||||
|
*.local
|
||||||
|
/.pnp*
|
||||||
|
/.eslintcache
|
||||||
|
/coverage/
|
||||||
|
/npm-debug.log*
|
||||||
|
/testem.log
|
||||||
|
/yarn-error.log
|
||||||
|
|
||||||
|
# ember-try
|
||||||
|
/.node_modules.ember-try/
|
||||||
|
/npm-shrinkwrap.json.ember-try
|
||||||
|
/package.json.ember-try
|
||||||
|
/package-lock.json.ember-try
|
||||||
|
/yarn.lock.ember-try
|
||||||
|
|
||||||
|
# broccoli-debug
|
||||||
|
/DEBUG/
|
||||||
13
.prettierignore
Normal file
13
.prettierignore
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# unconventional js
|
||||||
|
/blueprints/*/files/
|
||||||
|
|
||||||
|
# compiled output
|
||||||
|
/dist/
|
||||||
|
|
||||||
|
# misc
|
||||||
|
/coverage/
|
||||||
|
!.*
|
||||||
|
.*/
|
||||||
|
/pnpm-lock.yaml
|
||||||
|
ember-cli-update.json
|
||||||
|
*.html
|
||||||
37
.prettierrc.mjs
Normal file
37
.prettierrc.mjs
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
export default {
|
||||||
|
plugins: ['prettier-plugin-ember-template-tag'],
|
||||||
|
singleQuote: true,
|
||||||
|
overrides: [
|
||||||
|
{
|
||||||
|
files: ['*.js', '*.ts', '*.cjs', '.mjs', '.cts', '.mts', '.cts'],
|
||||||
|
options: {
|
||||||
|
trailingComma: 'es5',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ['*.html'],
|
||||||
|
options: {
|
||||||
|
singleQuote: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ['*.json'],
|
||||||
|
options: {
|
||||||
|
singleQuote: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ['*.hbs'],
|
||||||
|
options: {
|
||||||
|
singleQuote: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ['*.gjs', '*.gts'],
|
||||||
|
options: {
|
||||||
|
templateSingleQuote: false,
|
||||||
|
trailingComma: 'es5',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
5
.stylelintignore
Normal file
5
.stylelintignore
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# unconventional files
|
||||||
|
/blueprints/*/files/
|
||||||
|
|
||||||
|
# compiled output
|
||||||
|
/dist/
|
||||||
3
.stylelintrc.mjs
Normal file
3
.stylelintrc.mjs
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
export default {
|
||||||
|
extends: ['stylelint-config-standard'],
|
||||||
|
};
|
||||||
3
.template-lintrc.mjs
Normal file
3
.template-lintrc.mjs
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
export default {
|
||||||
|
extends: 'recommended',
|
||||||
|
};
|
||||||
3
.watchmanconfig
Normal file
3
.watchmanconfig
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"ignore_dirs": ["dist"]
|
||||||
|
}
|
||||||
55
README.md
Normal file
55
README.md
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
# marco
|
||||||
|
|
||||||
|
This README outlines the details of collaborating on this Ember application.
|
||||||
|
A short introduction of this app could easily go here.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
You will need the following things properly installed on your computer.
|
||||||
|
|
||||||
|
- [Git](https://git-scm.com/)
|
||||||
|
- [Node.js](https://nodejs.org/)
|
||||||
|
- [pnpm](https://pnpm.io/)
|
||||||
|
- [Google Chrome](https://google.com/chrome/)
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
- `git clone <repository-url>` this repository
|
||||||
|
- `cd marco`
|
||||||
|
- `pnpm install`
|
||||||
|
|
||||||
|
## Running / Development
|
||||||
|
|
||||||
|
- `pnpm start`
|
||||||
|
- Visit your app at [http://localhost:4200](http://localhost:4200).
|
||||||
|
- Visit your tests at [http://localhost:4200/tests](http://localhost:4200/tests).
|
||||||
|
|
||||||
|
### Code Generators
|
||||||
|
|
||||||
|
Make use of the many generators for code, try `pnpm ember help generate` for more details
|
||||||
|
|
||||||
|
### Running Tests
|
||||||
|
|
||||||
|
- `pnpm test`
|
||||||
|
|
||||||
|
### Linting
|
||||||
|
|
||||||
|
- `pnpm lint`
|
||||||
|
- `pnpm lint:fix`
|
||||||
|
|
||||||
|
### Building
|
||||||
|
|
||||||
|
- `pnpm vite build --mode development` (development)
|
||||||
|
- `pnpm build` (production)
|
||||||
|
|
||||||
|
### Deploying
|
||||||
|
|
||||||
|
Specify what it takes to deploy your app.
|
||||||
|
|
||||||
|
## Further Reading / Useful Links
|
||||||
|
|
||||||
|
- [ember.js](https://emberjs.com/)
|
||||||
|
- [Vite](https://vite.dev)
|
||||||
|
- Development Browser Extensions
|
||||||
|
- [ember inspector for chrome](https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi)
|
||||||
|
- [ember inspector for firefox](https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/)
|
||||||
18
app/app.js
Normal file
18
app/app.js
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
import '@warp-drive/ember/install';
|
||||||
|
import Application from '@ember/application';
|
||||||
|
import compatModules from '@embroider/virtual/compat-modules';
|
||||||
|
import Resolver from 'ember-resolver';
|
||||||
|
import config from 'marco/config/environment';
|
||||||
|
import { importSync, isDevelopingApp, macroCondition } from '@embroider/macros';
|
||||||
|
import setupInspector from '@embroider/legacy-inspector-support/ember-source-4.12';
|
||||||
|
|
||||||
|
if (macroCondition(isDevelopingApp())) {
|
||||||
|
importSync('./deprecation-workflow');
|
||||||
|
}
|
||||||
|
|
||||||
|
export default class App extends Application {
|
||||||
|
modulePrefix = config.modulePrefix;
|
||||||
|
podModulePrefix = config.podModulePrefix;
|
||||||
|
Resolver = Resolver.withModules(compatModules);
|
||||||
|
inspector = setupInspector(this);
|
||||||
|
}
|
||||||
0
app/components/.gitkeep
Normal file
0
app/components/.gitkeep
Normal file
22
app/config/environment.js
Normal file
22
app/config/environment.js
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
import { getGlobalConfig } from '@embroider/macros/src/addon/runtime';
|
||||||
|
|
||||||
|
const ENV = {
|
||||||
|
modulePrefix: 'marco',
|
||||||
|
environment: import.meta.env.DEV ? 'development' : 'production',
|
||||||
|
rootURL: '/',
|
||||||
|
locationType: 'history',
|
||||||
|
EmberENV: {},
|
||||||
|
APP: {},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ENV;
|
||||||
|
|
||||||
|
export function enterTestMode() {
|
||||||
|
ENV.locationType = 'none';
|
||||||
|
ENV.APP.rootElement = '#ember-testing';
|
||||||
|
ENV.APP.autoboot = false;
|
||||||
|
|
||||||
|
const config = getGlobalConfig()['@embroider/macros'];
|
||||||
|
|
||||||
|
if (config) config.isTesting = true;
|
||||||
|
}
|
||||||
24
app/deprecation-workflow.js
Normal file
24
app/deprecation-workflow.js
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
import setupDeprecationWorkflow from 'ember-cli-deprecation-workflow';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Docs: https://github.com/ember-cli/ember-cli-deprecation-workflow
|
||||||
|
*/
|
||||||
|
setupDeprecationWorkflow({
|
||||||
|
/**
|
||||||
|
false by default, but if a developer / team wants to be more aggressive about being proactive with
|
||||||
|
handling their deprecations, this should be set to "true"
|
||||||
|
*/
|
||||||
|
throwOnUnhandled: false,
|
||||||
|
workflow: [
|
||||||
|
/* ... handlers ... */
|
||||||
|
/* to generate this list, run your app for a while (or run the test suite),
|
||||||
|
* and then run in the browser console:
|
||||||
|
*
|
||||||
|
* deprecationWorkflow.flushDeprecations()
|
||||||
|
*
|
||||||
|
* And copy the handlers here
|
||||||
|
*/
|
||||||
|
/* example: */
|
||||||
|
/* { handler: 'silence', matchId: 'template-action' }, */
|
||||||
|
],
|
||||||
|
});
|
||||||
9
app/router.js
Normal file
9
app/router.js
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import EmberRouter from '@embroider/router';
|
||||||
|
import config from 'marco/config/environment';
|
||||||
|
|
||||||
|
export default class Router extends EmberRouter {
|
||||||
|
location = config.locationType;
|
||||||
|
rootURL = config.rootURL;
|
||||||
|
}
|
||||||
|
|
||||||
|
Router.map(function () {});
|
||||||
0
app/routes/.gitkeep
Normal file
0
app/routes/.gitkeep
Normal file
15
app/services/store.js
Normal file
15
app/services/store.js
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import { useLegacyStore } from '@warp-drive/legacy';
|
||||||
|
import { JSONAPICache } from '@warp-drive/json-api';
|
||||||
|
|
||||||
|
const Store = useLegacyStore({
|
||||||
|
linksMode: true,
|
||||||
|
cache: JSONAPICache,
|
||||||
|
handlers: [
|
||||||
|
// -- your handlers here
|
||||||
|
],
|
||||||
|
schemas: [
|
||||||
|
// -- your schemas here
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
export default Store;
|
||||||
1
app/styles/app.css
Normal file
1
app/styles/app.css
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/* Ember supports plain CSS out of the box. More info: https://cli.emberjs.com/release/advanced-use/stylesheets/ */
|
||||||
12
app/templates/application.gjs
Normal file
12
app/templates/application.gjs
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
import { pageTitle } from 'ember-page-title';
|
||||||
|
import { WelcomePage } from 'ember-welcome-page';
|
||||||
|
|
||||||
|
<template>
|
||||||
|
{{pageTitle "Marco"}}
|
||||||
|
|
||||||
|
{{outlet}}
|
||||||
|
|
||||||
|
{{! The following component displays Ember's default welcome message. }}
|
||||||
|
<WelcomePage @extension="gjs" />
|
||||||
|
{{! Feel free to remove this! }}
|
||||||
|
</template>
|
||||||
46
babel.config.mjs
Normal file
46
babel.config.mjs
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
import { dirname } from 'node:path';
|
||||||
|
import { fileURLToPath } from 'node:url';
|
||||||
|
import { setConfig } from '@warp-drive/core/build-config';
|
||||||
|
import { buildMacros } from '@embroider/macros/babel';
|
||||||
|
|
||||||
|
const macros = buildMacros({
|
||||||
|
configure: (config) => {
|
||||||
|
setConfig(config, {
|
||||||
|
// for universal apps this MUST be at least 5.6
|
||||||
|
compatWith: '5.6',
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export default {
|
||||||
|
plugins: [
|
||||||
|
[
|
||||||
|
'babel-plugin-ember-template-compilation',
|
||||||
|
{
|
||||||
|
compilerPath: 'ember-source/dist/ember-template-compiler.js',
|
||||||
|
transforms: [...macros.templateMacros],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'module:decorator-transforms',
|
||||||
|
{
|
||||||
|
runtime: {
|
||||||
|
import: import.meta.resolve('decorator-transforms/runtime-esm'),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'@babel/plugin-transform-runtime',
|
||||||
|
{
|
||||||
|
absoluteRuntime: dirname(fileURLToPath(import.meta.url)),
|
||||||
|
useESModules: true,
|
||||||
|
regenerator: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
...macros.babelMacros,
|
||||||
|
],
|
||||||
|
|
||||||
|
generatorOpts: {
|
||||||
|
compact: false,
|
||||||
|
},
|
||||||
|
};
|
||||||
103
eslint.config.mjs
Normal file
103
eslint.config.mjs
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
/**
|
||||||
|
* Debugging:
|
||||||
|
* https://eslint.org/docs/latest/use/configure/debug
|
||||||
|
* ----------------------------------------------------
|
||||||
|
*
|
||||||
|
* Print a file's calculated configuration
|
||||||
|
*
|
||||||
|
* npx eslint --print-config path/to/file.js
|
||||||
|
*
|
||||||
|
* Inspecting the config
|
||||||
|
*
|
||||||
|
* npx eslint --inspect-config
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
import globals from 'globals';
|
||||||
|
import js from '@eslint/js';
|
||||||
|
import { defineConfig, globalIgnores } from 'eslint/config';
|
||||||
|
|
||||||
|
import ember from 'eslint-plugin-ember/recommended';
|
||||||
|
import WarpDrive from 'eslint-plugin-warp-drive/recommended';
|
||||||
|
import eslintConfigPrettier from 'eslint-config-prettier';
|
||||||
|
import qunit from 'eslint-plugin-qunit';
|
||||||
|
import n from 'eslint-plugin-n';
|
||||||
|
|
||||||
|
import babelParser from '@babel/eslint-parser/experimental-worker';
|
||||||
|
|
||||||
|
const esmParserOptions = {
|
||||||
|
ecmaFeatures: { modules: true },
|
||||||
|
ecmaVersion: 'latest',
|
||||||
|
};
|
||||||
|
|
||||||
|
export default defineConfig([
|
||||||
|
globalIgnores(['dist/', 'coverage/', '!**/.*']),
|
||||||
|
js.configs.recommended,
|
||||||
|
eslintConfigPrettier,
|
||||||
|
ember.configs.base,
|
||||||
|
ember.configs.gjs,
|
||||||
|
...WarpDrive,
|
||||||
|
/**
|
||||||
|
* https://eslint.org/docs/latest/use/configure/configuration-files#configuring-linter-options
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
linterOptions: {
|
||||||
|
reportUnusedDisableDirectives: 'error',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ['**/*.js'],
|
||||||
|
languageOptions: {
|
||||||
|
parser: babelParser,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ['**/*.{js,gjs}'],
|
||||||
|
languageOptions: {
|
||||||
|
parserOptions: esmParserOptions,
|
||||||
|
globals: {
|
||||||
|
...globals.browser,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ['tests/**/*-test.{js,gjs}'],
|
||||||
|
plugins: {
|
||||||
|
qunit,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* CJS node files
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
files: ['**/*.cjs', 'config/**/*.js', 'ember-cli-build.js'],
|
||||||
|
plugins: {
|
||||||
|
n,
|
||||||
|
},
|
||||||
|
|
||||||
|
languageOptions: {
|
||||||
|
sourceType: 'script',
|
||||||
|
ecmaVersion: 'latest',
|
||||||
|
globals: {
|
||||||
|
...globals.node,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* ESM node files
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
files: ['**/*.mjs'],
|
||||||
|
plugins: {
|
||||||
|
n,
|
||||||
|
},
|
||||||
|
|
||||||
|
languageOptions: {
|
||||||
|
sourceType: 'module',
|
||||||
|
ecmaVersion: 'latest',
|
||||||
|
parserOptions: esmParserOptions,
|
||||||
|
globals: {
|
||||||
|
...globals.node,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]);
|
||||||
19
index.html
Normal file
19
index.html
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Marco</title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/app/styles/app.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<script type="module">
|
||||||
|
import Application from './app/app';
|
||||||
|
import environment from './app/config/environment';
|
||||||
|
|
||||||
|
Application.create(environment.APP);
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
87
package.json
Normal file
87
package.json
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
{
|
||||||
|
"name": "marco",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"private": true,
|
||||||
|
"description": "Small description for marco goes here",
|
||||||
|
"repository": "",
|
||||||
|
"license": "MIT",
|
||||||
|
"author": "",
|
||||||
|
"type": "module",
|
||||||
|
"imports": {
|
||||||
|
"#app/*": "./app/*",
|
||||||
|
"#config": "./app/config/environment",
|
||||||
|
"#components/*": "./app/components/*"
|
||||||
|
},
|
||||||
|
"exports": {
|
||||||
|
"./tests/*": "./tests/*",
|
||||||
|
"./*": "./app/*"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "vite build",
|
||||||
|
"format": "prettier . --cache --write",
|
||||||
|
"lint": "concurrently \"pnpm:lint:*(!fix)\" --names \"lint:\" --prefixColors auto",
|
||||||
|
"lint:css": "stylelint \"**/*.css\"",
|
||||||
|
"lint:css:fix": "concurrently \"pnpm:lint:css -- --fix\"",
|
||||||
|
"lint:fix": "concurrently \"pnpm:lint:*:fix\" --names \"fix:\" --prefixColors auto && pnpm format",
|
||||||
|
"lint:format": "prettier . --cache --check",
|
||||||
|
"lint:hbs": "ember-template-lint .",
|
||||||
|
"lint:hbs:fix": "ember-template-lint . --fix",
|
||||||
|
"lint:js": "eslint . --cache",
|
||||||
|
"lint:js:fix": "eslint . --fix",
|
||||||
|
"start": "vite",
|
||||||
|
"test": "vite build --mode development && testem ci --port 0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@babel/core": "^7.28.5",
|
||||||
|
"@babel/eslint-parser": "^7.28.5",
|
||||||
|
"@babel/plugin-transform-runtime": "^7.28.5",
|
||||||
|
"@babel/runtime": "^7.28.4",
|
||||||
|
"@ember/test-helpers": "^5.4.1",
|
||||||
|
"@ember/test-waiters": "^4.1.1",
|
||||||
|
"@embroider/core": "^4.4.2",
|
||||||
|
"@embroider/legacy-inspector-support": "^0.1.3",
|
||||||
|
"@embroider/macros": "^1.19.6",
|
||||||
|
"@embroider/router": "^3.0.6",
|
||||||
|
"@embroider/vite": "^1.5.0",
|
||||||
|
"@eslint/js": "^9.39.2",
|
||||||
|
"@glimmer/component": "^2.0.0",
|
||||||
|
"@rollup/plugin-babel": "^6.1.0",
|
||||||
|
"@warp-drive/core": "~5.8.0",
|
||||||
|
"@warp-drive/ember": "~5.8.0",
|
||||||
|
"@warp-drive/json-api": "~5.8.0",
|
||||||
|
"@warp-drive/legacy": "~5.8.0",
|
||||||
|
"@warp-drive/utilities": "~5.8.0",
|
||||||
|
"babel-plugin-ember-template-compilation": "^3.0.1",
|
||||||
|
"concurrently": "^9.2.1",
|
||||||
|
"decorator-transforms": "^2.3.1",
|
||||||
|
"ember-cli-deprecation-workflow": "^4.0.0",
|
||||||
|
"ember-modifier": "^4.2.2",
|
||||||
|
"ember-page-title": "^9.0.3",
|
||||||
|
"ember-qunit": "^9.0.4",
|
||||||
|
"ember-resolver": "^13.1.1",
|
||||||
|
"ember-source": "~6.11.0-alpha.6",
|
||||||
|
"ember-template-lint": "^7.9.3",
|
||||||
|
"ember-welcome-page": "^8.0.4",
|
||||||
|
"eslint": "^9.39.2",
|
||||||
|
"eslint-config-prettier": "^10.1.8",
|
||||||
|
"eslint-plugin-ember": "^12.7.5",
|
||||||
|
"eslint-plugin-n": "^17.23.1",
|
||||||
|
"eslint-plugin-qunit": "^8.2.5",
|
||||||
|
"eslint-plugin-warp-drive": "^5.8.0",
|
||||||
|
"globals": "^16.5.0",
|
||||||
|
"prettier": "^3.7.4",
|
||||||
|
"prettier-plugin-ember-template-tag": "^2.1.2",
|
||||||
|
"qunit": "^2.25.0",
|
||||||
|
"qunit-dom": "^3.5.0",
|
||||||
|
"stylelint": "^16.26.1",
|
||||||
|
"stylelint-config-standard": "^38.0.0",
|
||||||
|
"testem": "^3.17.0",
|
||||||
|
"vite": "^7.3.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 24"
|
||||||
|
},
|
||||||
|
"ember": {
|
||||||
|
"edition": "octane"
|
||||||
|
}
|
||||||
|
}
|
||||||
8891
pnpm-lock.yaml
generated
Normal file
8891
pnpm-lock.yaml
generated
Normal file
File diff suppressed because it is too large
Load Diff
3
public/robots.txt
Normal file
3
public/robots.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# https://www.robotstxt.org/
|
||||||
|
User-agent: *
|
||||||
|
Disallow:
|
||||||
26
testem.cjs
Normal file
26
testem.cjs
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
if (typeof module !== 'undefined') {
|
||||||
|
module.exports = {
|
||||||
|
test_page: 'tests/index.html?hidepassed',
|
||||||
|
cwd: 'dist',
|
||||||
|
disable_watching: true,
|
||||||
|
launch_in_ci: ['Chrome'],
|
||||||
|
launch_in_dev: ['Chrome'],
|
||||||
|
browser_start_timeout: 120,
|
||||||
|
browser_args: {
|
||||||
|
Chrome: {
|
||||||
|
ci: [
|
||||||
|
// --no-sandbox is needed when running Chrome inside a container
|
||||||
|
process.env.CI ? '--no-sandbox' : null,
|
||||||
|
'--headless',
|
||||||
|
'--disable-dev-shm-usage',
|
||||||
|
'--disable-software-rasterizer',
|
||||||
|
'--mute-audio',
|
||||||
|
'--remote-debugging-port=0',
|
||||||
|
'--window-size=1440,900',
|
||||||
|
].filter(Boolean),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
42
tests/helpers/index.js
Normal file
42
tests/helpers/index.js
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
import {
|
||||||
|
setupApplicationTest as upstreamSetupApplicationTest,
|
||||||
|
setupRenderingTest as upstreamSetupRenderingTest,
|
||||||
|
setupTest as upstreamSetupTest,
|
||||||
|
} from 'ember-qunit';
|
||||||
|
|
||||||
|
// This file exists to provide wrappers around ember-qunit's
|
||||||
|
// test setup functions. This way, you can easily extend the setup that is
|
||||||
|
// needed per test type.
|
||||||
|
|
||||||
|
function setupApplicationTest(hooks, options) {
|
||||||
|
upstreamSetupApplicationTest(hooks, options);
|
||||||
|
|
||||||
|
// Additional setup for application tests can be done here.
|
||||||
|
//
|
||||||
|
// For example, if you need an authenticated session for each
|
||||||
|
// application test, you could do:
|
||||||
|
//
|
||||||
|
// hooks.beforeEach(async function () {
|
||||||
|
// await authenticateSession(); // ember-simple-auth
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// This is also a good place to call test setup functions coming
|
||||||
|
// from other addons:
|
||||||
|
//
|
||||||
|
// setupIntl(hooks, 'en-us'); // ember-intl
|
||||||
|
// setupMirage(hooks); // ember-cli-mirage
|
||||||
|
}
|
||||||
|
|
||||||
|
function setupRenderingTest(hooks, options) {
|
||||||
|
upstreamSetupRenderingTest(hooks, options);
|
||||||
|
|
||||||
|
// Additional setup for rendering tests can be done here.
|
||||||
|
}
|
||||||
|
|
||||||
|
function setupTest(hooks, options) {
|
||||||
|
upstreamSetupTest(hooks, options);
|
||||||
|
|
||||||
|
// Additional setup for unit tests can be done here.
|
||||||
|
}
|
||||||
|
|
||||||
|
export { setupApplicationTest, setupRenderingTest, setupTest };
|
||||||
31
tests/index.html
Normal file
31
tests/index.html
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Marco Tests</title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/app/styles/app.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="qunit"></div>
|
||||||
|
<div id="qunit-fixture">
|
||||||
|
<div id="ember-testing-container">
|
||||||
|
<div id="ember-testing"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="/testem.js" integrity="" data-embroider-ignore></script>
|
||||||
|
|
||||||
|
<script type="module">import "ember-testing";</script>
|
||||||
|
|
||||||
|
<script type="module">
|
||||||
|
import { start } from './test-helper';
|
||||||
|
import.meta.glob("./**/*.{js,ts,gjs,gts}", { eager: true });
|
||||||
|
start();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
0
tests/integration/.gitkeep
Normal file
0
tests/integration/.gitkeep
Normal file
17
tests/test-helper.js
Normal file
17
tests/test-helper.js
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import '@warp-drive/ember/install';
|
||||||
|
import Application from 'marco/app';
|
||||||
|
import config, { enterTestMode } from 'marco/config/environment';
|
||||||
|
import * as QUnit from 'qunit';
|
||||||
|
import { setApplication } from '@ember/test-helpers';
|
||||||
|
import { setup } from 'qunit-dom';
|
||||||
|
import { start as qunitStart, setupEmberOnerrorValidation } from 'ember-qunit';
|
||||||
|
|
||||||
|
export function start() {
|
||||||
|
enterTestMode();
|
||||||
|
setApplication(Application.create(config.APP));
|
||||||
|
|
||||||
|
setup(QUnit.assert);
|
||||||
|
setupEmberOnerrorValidation();
|
||||||
|
|
||||||
|
qunitStart();
|
||||||
|
}
|
||||||
0
tests/unit/.gitkeep
Normal file
0
tests/unit/.gitkeep
Normal file
14
vite.config.mjs
Normal file
14
vite.config.mjs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import { defineConfig } from 'vite';
|
||||||
|
import { extensions, ember } from '@embroider/vite';
|
||||||
|
import { babel } from '@rollup/plugin-babel';
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
plugins: [
|
||||||
|
ember(),
|
||||||
|
// extra plugins here
|
||||||
|
babel({
|
||||||
|
babelHelpers: 'runtime',
|
||||||
|
extensions,
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user