Skip to content

Commit

Permalink
copying index.js now works
Browse files Browse the repository at this point in the history
  • Loading branch information
Marcel Schepaniak committed Jul 29, 2022
1 parent e8f042f commit ac23ced
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 52 deletions.
86 changes: 53 additions & 33 deletions auditorium/gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
*/

var fs = require('fs')
var path = require('path');
var gulp = require('gulp')
var clean = require('gulp-clean')
var browserify = require('browserify')
Expand All @@ -13,18 +14,21 @@ var buffer = require('vinyl-buffer')
var gap = require('gulp-append-prepend')
var Readable = require('stream').Readable
var linguasFile = require('linguas-file')
var CryptoJS = require('crypto-js')
var crypto = require('crypto');

var pkg = require('./package.json')

var defaultLocale = 'en'
var linguas = !process.env.SKIP_LOCALES
? linguasFile.parse(fs.readFileSync('./locales/LINGUAS', 'utf-8'))
: []
var linguas = !process.env.SKIP_LOCALES ?
linguasFile.parse(fs.readFileSync('./locales/LINGUAS', 'utf-8')) :
[]

gulp.task('clean:pre', function () {
return gulp
.src('./dist', { read: false, allowEmpty: true })
.src('./dist', {
read: false,
allowEmpty: true
})
.pipe(clean())
})

Expand All @@ -38,7 +42,7 @@ gulp.task('default', gulp.series(
}))
))

function createLocalizedBundle (locale) {
function createLocalizedBundle(locale) {
var dest = './dist/' + locale + '/auditorium/'
var scriptTask = makeScriptTask(dest, locale)
scriptTask.displayName = 'script:' + locale
Expand All @@ -47,35 +51,43 @@ function createLocalizedBundle (locale) {
return gulp.parallel(scriptTask, vendorTask)
}

function makeScriptTask (dest, locale) {
function makeScriptTask(dest, locale) {
return function () {
var transforms = JSON.parse(JSON.stringify(pkg.browserify.transform))
// we are setting this at process level so that it propagates to
// dependencies that also require setting it
process.env.LOCALE = locale
process.env.SCRIPT_INTEGRITY_HASH = "unkown"
var b = browserify({
entries: './index.js',
// See: https://github.com/nikku/karma-browserify/issues/130#issuecomment-120036815
postFilter: function (id, file, currentPkg) {
if (currentPkg && currentPkg.name === pkg.name) {
currentPkg.browserify.transform = []
}
return true
},
transform: transforms.map(function (transform) {
if (transform === '@offen/l10nify' || (Array.isArray(transform) && transform[0] === '@offen/l10nify')) {
return ['@offen/l10nify']
}
if (transform === 'envify' || (Array.isArray(transform) && transform[0] === 'envify')) {
let scriptContent = fs.readFileSync("./index.js", "utf8");
process.env.SCRIPT_INTEGRITY_HASH = CryptoJS.SHA256(scriptContent);
return ['envify', { LOCALE: locale }]
}
return transform
entries: './index.js',
// See: https://github.com/nikku/karma-browserify/issues/130#issuecomment-120036815
postFilter: function (id, file, currentPkg) {
if (currentPkg && currentPkg.name === pkg.name) {
currentPkg.browserify.transform = []
}
return true
},
transform: transforms.map(function (transform) {
if (transform === '@offen/l10nify' || (Array.isArray(transform) && transform[0] === '@offen/l10nify')) {
return ['@offen/l10nify']
}
if (transform === 'envify' || (Array.isArray(transform) && transform[0] === 'envify')) {
let scriptContent = fs.readFileSync('./script/index.js', 'utf8')

console.log(scriptContent);
process.env.SCRIPT_INTEGRITY_HASH = crypto.createHash('sha256').update(scriptContent).digest('base64')
console.log(process.env.SCRIPT_INTEGRITY_HASH)

return ['envify', {
LOCALE: locale
}]
}
return transform
})
})
.transform('aliasify', {
global: true
})
})
.transform('aliasify', { global: true })

if (locale !== defaultLocale) {
b.add(configureDatepickerLocale(locale))
Expand All @@ -94,18 +106,23 @@ function makeScriptTask (dest, locale) {
.pipe(gap.prependText('/**'))
.pipe(rev())
.pipe(gulp.dest(dest))
.pipe(rev.manifest(dest + '/rev-manifest.json', { base: dest, merge: true }))
.pipe(rev.manifest(dest + '/rev-manifest.json', {
base: dest,
merge: true
}))
.pipe(gulp.dest(dest))
}
}

function makeVendorTask (dest) {
function makeVendorTask(dest) {
return function () {
var b = browserify()
return b
.require('plotly.js-basic-dist')
.require('zxcvbn')
.plugin('tinyify', { noFlat: true })
.plugin('tinyify', {
noFlat: true
})
.bundle()
.pipe(source('vendor.js'))
.pipe(buffer())
Expand All @@ -114,7 +131,10 @@ function makeVendorTask (dest) {
.pipe(gap.prependText('/**'))
.pipe(rev())
.pipe(gulp.dest(dest))
.pipe(rev.manifest(dest + '/rev-manifest.json', { base: dest, merge: true }))
.pipe(rev.manifest(dest + '/rev-manifest.json', {
base: dest,
merge: true
}))
.pipe(gulp.dest(dest))
}
}
Expand All @@ -123,15 +143,15 @@ function makeVendorTask (dest) {
// `react-datepicker`. Handling this at build time allows us to avoid including
// unused locales for non-English bundles. At development time, the default
// locale (en) will be included implicitly.
function configureDatepickerLocale (locale) {
function configureDatepickerLocale(locale) {
return Readable.from([`
const { registerLocale } = require('react-datepicker')
const locale = require('date-fns/locale/${locale}')
registerLocale('${locale}', locale)
`])
}

function configureCountriesLocale (locale) {
function configureCountriesLocale(locale) {
return Readable.from([`
const countries = require('i18n-iso-countries')
countries.registerLocale(require('i18n-iso-countries/langs/${locale}.json'))
Expand Down
5 changes: 0 additions & 5 deletions auditorium/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion auditorium/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
},
"dependencies": {
"classnames": "^2.3.1",
"crypto-js": "^4.1.1",
"date-fns": "^2.16.1",
"escape-html": "^1.0.3",
"i18n-iso-countries": "^7.4.0",
Expand Down
26 changes: 13 additions & 13 deletions build/Dockerfile.build
Original file line number Diff line number Diff line change
Expand Up @@ -10,33 +10,33 @@ ENV ADBLOCK true
ENV DISABLE_OPENCOLLECTIVE true
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true

FROM offen_node as auditorium
FROM offen_node as script
ARG skip_locales
ENV SKIP_LOCALES=$skip_locales
COPY ./auditorium/package.json ./auditorium/package-lock.json /code/deps/
COPY ./script/package.json ./script/package-lock.json /code/deps/
WORKDIR /code/deps
RUN npm ci
COPY ./auditorium /code/auditorium
COPY --from=script ./ /code/auditorium/script
COPY ./script /code/script
COPY ./banner.txt /code/banner.txt
COPY ./locales /code/auditorium/locales
WORKDIR /code/auditorium
RUN cp -a /code/deps/node_modules /code/auditorium/
COPY ./locales /code/script/locales
WORKDIR /code/script
RUN cp -a /code/deps/node_modules /code/script/
ENV NODE_ENV production
RUN npm run build
RUN npm run licenses

FROM offen_node as script
FROM offen_node as auditorium
ARG skip_locales
ENV SKIP_LOCALES=$skip_locales
COPY ./script/package.json ./script/package-lock.json /code/deps/
COPY ./auditorium/package.json ./auditorium/package-lock.json /code/deps/
WORKDIR /code/deps
RUN npm ci
COPY ./script /code/script
COPY ./auditorium /code/auditorium
COPY --from=script ./code/script/index.js /code/auditorium/script/index.js
COPY ./banner.txt /code/banner.txt
COPY ./locales /code/script/locales
WORKDIR /code/script
RUN cp -a /code/deps/node_modules /code/script/
COPY ./locales /code/auditorium/locales
WORKDIR /code/auditorium
RUN cp -a /code/deps/node_modules /code/auditorium/
ENV NODE_ENV production
RUN npm run build
RUN npm run licenses
Expand Down

0 comments on commit ac23ced

Please sign in to comment.